Commit Graph

400 Commits

Author SHA1 Message Date
Seednode d869a375ab Removed redundant isImage check 2023-09-10 11:27:55 -05:00
Seednode 30eead7e2f Cleaned up pagination calculations 2023-09-09 23:27:40 -05:00
Seednode 53d14ff279 Remove file from filesystem and cache at same time during serveStaticFile() 2023-09-09 21:17:17 -05:00
Seednode 26475ed491 Moved warning for --russian earlier in init process 2023-09-09 21:00:58 -05:00
Seednode 8bbfd36a09 Added --russian flag, fixed issue where last image in cache would never be served 2023-09-09 20:57:50 -05:00
Seednode e4a4cb6bcd Remove unused debug statement, update usage info for --page-length 2023-09-09 19:47:44 -05:00
Seednode 425857af84 Fixed pagination for stats, was using query parameter instead of httprouter parameter 2023-09-09 00:25:04 -05:00
Seednode e170990e83 Added pagination to debug and stats endpoints 2023-09-09 00:06:28 -05:00
Seednode 5d86be871f Added initial PGO test 2023-09-08 00:20:06 -05:00
Seednode fc0c9974b1 Simplified alphanumeric regex 2023-09-07 16:20:48 -05:00
Seednode 2e842e6a0a Rearranged ServePage() to be more intuitive in order of operations 2023-09-06 17:31:05 -05:00
Seednode 05f8084089 Removed unused Stat type, removed unused regex for durations, replaced strings.Builder with string constant for favicon html 2023-09-06 11:53:19 -05:00
Seednode de9bc0af97 Added --profile flag for net/http/pprof 2023-09-06 10:15:11 -05:00
Seednode ec8b5c9c7f Import net/http/pprof 2023-09-06 09:06:44 -05:00
Seednode 6ff79b1817 Added option to force refreshInterval from command line, and added minimum interval of 500ms 2023-08-21 15:38:56 -05:00
Seednode 9b250416d9 Reworked port uint16-to-string conversion 2023-08-13 18:07:45 -05:00
Seednode 6678d0af36 Completely broke serveStats, whoops 2023-08-13 17:43:35 -05:00
Seednode 01629da407 Replaced uint64 with uint32 2023-08-13 17:29:28 -05:00
Seednode 77f14ea71b Replaced atomic convenience wrappers with suggested versions 2023-08-13 17:02:09 -05:00
Seednode 172db15454 Updated transitive dependencies 2023-08-08 17:12:34 -05:00
Seednode 53ee79b87f Reworked favicon and error page handlers 2023-08-05 21:38:28 -05:00
Seednode 5901e7e1e6 Updated transitive dependencies 2023-08-05 10:31:34 -05:00
Seednode 526e8e15d6 Added --maximum-files and --minimum-files flags, changed structure for stats struct 2023-08-02 13:29:37 -05:00
Seednode 7c93fc8c37 Added explicit timezone loading 2023-07-17 07:41:32 -05:00
Seednode 830e661223 Removed explicit w.WriteHeader(http.StatusOK) calls in favor of implicit 2023-06-22 05:10:40 -05:00
Seednode 40ed9889f9 Added HTTP 500 response on all failed requests, instead of not sending any response 2023-06-20 10:24:12 -05:00
Seednode 7ca86c19fd Added strings.ToLower() to all stable sorts to ensure intuitive ordering 2023-06-20 09:02:13 -05:00
Seednode 780bed087d HTML debug sort is now case-insensitive 2023-06-19 14:34:30 -05:00
Seednode c5e6723bfa Added formatting to HTML debug page, for easier reading 2023-06-13 19:40:29 -05:00
Seednode 911708b95c Open files to export as O_WRONLY instead of O_RDWR 2023-06-13 08:50:13 -05:00
Seednode 9a23387a6b Added favicon to HTML debug page 2023-06-09 15:56:03 -05:00
Seednode 9c668ea04d Significantly increased timeouts so clear_cache doesn't error out 2023-06-03 19:49:58 -05:00
Seednode d2368884b7 Formatting cleanup for return values 2023-06-03 18:45:32 -05:00
Seednode 7780b8eaa9 Added strings.TrimPrefix to refererUri so sorting works with the new setup 2023-06-03 18:37:06 -05:00
Seednode 3d8d4c3869 Fixed hyperlinks in /html endpoint 2023-06-03 18:14:53 -05:00
Seednode 72e41ba413 Added version endpoint 2023-06-03 15:51:08 -05:00
Seednode abae8ba4c1 Replaced net/http with julienschmidt/httprouter and removed (broken) video support, changed stats/debug endpoints 2023-06-03 13:29:49 -05:00
Seednode 29afaa3025 Changed wording of file count 2023-06-02 21:04:06 -05:00
Seednode 99ad647614 Added file count to HTML debug endpoint 2023-06-02 21:00:44 -05:00
Seednode 4679208eae Replace fmt.Println() + os.Exit(1) with log.Fatal() in error handler, error out if no useful paths are passed in 2023-05-31 13:01:24 -05:00
Seednode af9b79878f Switched back from go-chi to net/http, explicitly declared mux and http.Server 2023-05-31 12:43:07 -05:00
Seednode 8fc7084098 Recompressed favicons to save space, and replaced multiple favicon handler functions with a single catchall 2023-05-30 19:13:02 -05:00
Seednode 229aaa7da2 Added embedded favicons, and replaced default mux with go-chi 2023-05-30 18:47:26 -05:00
Seednode c31518d932 Added first served/last served/most served stats to /_/stats 2023-05-12 09:05:14 -05:00
Seednode 7184542cb6 Updated transitive dependencies 2023-05-11 23:22:31 -05:00
Seednode f6ac4b6e2b Added ?sort=asc when opening link via HTML debug page 2023-05-08 20:21:39 -05:00
Seednode 3e1fb6be6a Added video support 2023-05-08 20:05:10 -05:00
Seednode 2da8e79adb Updated transitive dependencies 2023-05-08 15:40:52 -05:00
Seednode 5f78094498 Simplified handler function structure 2023-05-08 13:12:51 -05:00
Seednode 4be011755b Added -b|--bind to bind to specific address 2023-05-08 11:45:57 -05:00
Seednode 5beb1fc858 --debug now requires --cache, exits with error if not provided 2023-05-08 11:16:19 -05:00
Seednode 5fdfaee80d Split /_/debug endpoint into /_/html and /_/json, formatted accordingly 2023-05-08 09:10:13 -05:00
Seednode 8dae3865c0 Renamed /_/index to /_/debug, and adjusted readme accordingly 2023-04-28 13:31:07 -05:00
Seednode 84af467feb Debug index output is now sorted 2023-04-28 13:26:47 -05:00
Seednode 9cd9c286c2 Added -d|--debug flag and /_/index endpoint 2023-04-28 13:19:07 -05:00
Seednode c85cd55598 Fixed redirect URIs with relative input paths (e.g. ../../test) and --cache enabled 2023-04-11 07:19:06 -05:00
Seednode 15e2cc52cc Added check for empty input paths 2023-04-11 04:44:18 -05:00
Seednode 290395d0eb Updated transitive dependencies 2023-04-10 15:53:01 -05:00
Seednode 63d040839b Updated transitive dependencies 2023-02-26 18:57:52 -06:00
Seednode 966df032a6 Added retry to new file selection, with 10s timeout 2023-02-18 14:08:11 -06:00
Seednode e2356c180f Readded checks in prepareDirectory to avoid redirect issue with sort=asc 2023-02-18 13:38:18 -06:00
Seednode d05550a991 Preallocate slices when possible, remove unnecessary check when sortOrder is provided 2023-02-18 13:00:08 -06:00
Seednode 537633a030 Added persistent stats file 2023-02-08 07:50:40 -06:00
Seednode 9087cf6b4d Replaced log.Fatal() with fmt.Println() and return for non-critical functions 2023-02-07 07:39:04 -06:00
Seednode 6a532e5511 Stats page should actually be sorted now 2023-02-06 12:23:59 -06:00
Seednode ae1a1bbc5e Added zstd compression for cache file 2023-02-05 14:34:22 -06:00
Seednode d2794c721f Removed commented-out old rand source initialization 2023-02-04 23:47:09 -06:00
Seednode 69c4ccfc97 Added support for persistent index file 2023-02-04 23:44:31 -06:00
Seednode 2f92089191 Replaced Run with RunE in rootcmd, to cascade errors back to main Execute() 2023-01-27 13:20:07 -06:00
Seednode 335f6bffde Combined root variable declarations into a block, changed increment/decrement functions to unexported 2023-01-27 13:17:13 -06:00
Seednode 635df29fbc All methods that might mutate state changed to unexported, and all fields set to unexported by default 2023-01-27 10:06:10 -06:00
Seednode 2a6c6b48d4 Reverted changes that entirely broke debug, keeping change to printf strings 2023-01-24 19:06:27 -06:00
Seednode 93fa3640ef Reverted changes that entirely broke debug, keeping change to printf strings 2023-01-24 19:06:15 -06:00
Seednode 3cb2e81ec7 Rearranged functions into alphabetical order 2023-01-24 12:03:26 -06:00
Seednode da5bdfe765 Replaced %v with more specific format string in printf calls 2023-01-24 10:13:09 -06:00
Seednode fa5ae95cb3 Renamed cache handler 2023-01-23 17:41:18 -06:00
Seednode 359ded19f2 Set all functions that modify state to unexported 2023-01-23 17:30:33 -06:00
Seednode 04d253c1e6 Log accesses to /_/stats and reduce verbosity of GenerateCache() 2023-01-21 16:37:32 -06:00
Seednode 66f6069d96 Directly call getFileList() when generating cache, instead of pickFile() 2023-01-21 16:20:35 -06:00
Seednode 3bf3c5b5ed Moved struct and method declarations to the appropriate source files 2023-01-21 16:08:59 -06:00
Seednode 7c40d62496 Sped up indexing when caching is enabled but filters are applied, added RWMutex to Index struct 2023-01-21 10:27:35 -06:00
Seednode 340b637baf Added Get() and Set() functions for file index 2023-01-21 09:35:23 -06:00
Seednode fcdb81a9b7 Fixed double-scanning with cache enabled 2023-01-20 22:42:44 -06:00
Seednode 6c888ba20a Added filesize and timestamps to debug JSON output 2023-01-20 18:14:07 -06:00
Seednode 0f4c4845b2 JSON output for stats is now pretty-printed and sorted alphabetically 2023-01-19 20:31:02 -06:00
Seednode 71bedaf9e8 Changed json keys to lower-case 2023-01-19 12:40:33 -06:00
Seednode ed748a9b8c Corrected usage message 2023-01-19 12:12:40 -06:00
Seednode 1a4496b788 Added stats endpoint 2023-01-19 12:07:15 -06:00
Seednode 979a9e4d4c Added 200 Ok response when clearing cache 2023-01-18 19:14:39 -06:00
Seednode 42734cda62 Added /clear_cache endpoint to regenerate cache on demand 2023-01-18 12:11:23 -06:00
Seednode b96ee8ac99 Removed mutually exclusive flag from cache and filter, now cache is bypassed if filters are supplied 2023-01-18 11:50:29 -06:00
Seednode 0906bd6769 Updated copyright year 2023-01-18 11:19:29 -06:00
Seednode 19fa332ced Cached mode now generates cache on first run, not first HTTP request, to improve initial response time 2023-01-18 11:18:01 -06:00
Seednode d343be7253 Added support for time.Duration refresh intervals, instead of just integer seconds 2023-01-18 09:58:14 -06:00
Seednode 8ddbe8b2c6 Replaced <= 0 with < 1 for readability's sake 2022-12-20 18:24:07 -06:00
Seednode cf79bc1d3d Moved determining real IP address to its own function 2022-12-20 18:17:33 -06:00
Seednode af9def38ba Accidentally referred to response headers, not request headers, when determining IP address 2022-12-20 17:54:27 -06:00
Seednode 3d560ef770 Added initial attempt at reporting proper IPs in logs 2022-12-20 17:48:05 -06:00
Seednode cfbffb6dab Fixed incorrect IsEmpty() check that would return true if exactly one of HasIncludes() or HasExcludes() returned true 2022-12-20 17:12:37 -06:00
Seednode f9d7be008d Combined declare/initialize steps for structs 2022-11-11 09:44:47 -06:00
Seednode d3c063017d Removed extraneous check in getRefreshInterval(), inverted value check in getSortOrder(), replaced string concatenation with strings.Builder in generateFilePath() 2022-11-11 09:19:53 -06:00
Seednode 0b34784b12 Images are now centered, both vertically and horizontally 2022-11-10 23:24:14 -06:00
Seednode eff8394453 Changed variable name from PascalCase to camelCase 2022-11-10 15:34:07 -06:00
Seednode 5f28361f47 Fixed issue where invalid include/exclude values were being accepted 2022-11-10 13:57:38 -06:00
Seednode ea4b1be5c3 Added basic input verification for sortOrder/refreshInterval 2022-11-10 10:09:39 -06:00
Seednode 28af94cba3 Refresh now happens X seconds after page finishes completely loading, not X seconds after the initial request is sent 2022-11-10 09:38:40 -06:00
Seednode 4b596743f7 Replaced error if/else checks with switch/case, to keep things consistent 2022-11-10 00:29:06 -06:00
Seednode 283b4fccec Unified error handling, fixed missing file checks, and added logging for requested (but not available) files 2022-11-10 00:26:21 -06:00
Seednode 0a251e8f5a Always append refresh query string, replaced string concatenation with strings.Builder in generateQueryParams() 2022-11-10 00:04:47 -06:00
Seednode 3e98201cdd Removed extraneous </img> tag and added doctype tag 2022-11-09 23:53:02 -06:00
Seednode f12b800a71 Replaced const string template with strings.Builder, to be hopefully somewhat more readable while still being moderately efficient 2022-11-09 23:33:13 -06:00
Seednode 43a515c896 Replaced image dimension string variable with Dimensions struct, replaced handrolled HTML generation with gohtml library, added height and width to img tags 2022-11-09 23:17:19 -06:00
Seednode ac67d710c8 Moved javascript after img tag 2022-11-09 21:25:04 -06:00
Seednode a9b2af3e18 Fixed improper handling of potentially empty string for strconv.Atoi() 2022-11-08 19:30:08 -06:00
Seednode ea2e17d265 Added automatic reload functionality via query parameters, and rewrote generateQueryParams() to hopefully be more readable 2022-11-08 19:24:49 -06:00
Seednode c213911969 Only generate filter struct once, further simplify switch/case om serveHtmlHandler() into a simple if/else 2022-11-05 11:17:31 -05:00
Seednode b6f7d9c104 Reworked functions to be more concise (e.g. now getNewFile and getNextFile work with or without sortOrder) 2022-11-05 11:00:42 -05:00
Seednode 70a1eaf91d Reverted previous change because the count was actually working fine, I just forgot my test instance was pointing at multiple directories 2022-11-02 09:17:07 -05:00
Seednode ea1d8d52c6 Maybe fixed incorrect total scanned file count displayed when -v is passed 2022-11-02 09:10:55 -05:00
Seednode c13eac975f Fixed length of extensions array, and added bmp to the support formats in the readme 2022-10-31 15:18:47 -05:00
Seednode 3450ea89e0 Fixed for loop requesting out-of-range index in pickFile() 2022-10-29 10:41:03 -05:00
Seednode f6924ba7b5 Added support for .bmp images 2022-10-29 10:32:01 -05:00
Seednode 297c561fab pickFile now iterates through entire file list, instead of stopping after an arbitrary number 2022-10-28 23:07:25 -05:00
Seednode 2274c51e84 Set --cache and --filter as mutually exclusive 2022-10-28 22:59:59 -05:00
Seednode 3d6e7b0493 Added limit on file checking retries 2022-10-28 21:08:08 -05:00
Seednode ad6d7e2cd3 Empty space on image pages is now clickable, and returns a new random image 2022-10-28 19:52:53 -05:00
Seednode 97e3b47b19 Only seed rng once, at initialization, and speed up picking random file by using rand.Intn instead of shuffling the slice 2022-10-28 19:49:49 -05:00
Seednode 920bdb2615 Slight formatting change to HTML output, for consistency's sake 2022-10-28 19:18:34 -05:00
Seednode 5c7bb60dcb Entire 404 page is now clickable, and attempts to open a new random file 2022-10-28 19:09:05 -05:00
Seednode 0434353942 Display image size in tab titles, to match behavior of images served directly 2022-10-28 18:32:03 -05:00
Seednode 8c763db461 Removed two debug print statements I accidentally left in 2022-10-28 17:26:26 -05:00
Seednode f21c01e085 Added flag to cache directory scan at startup 2022-10-28 17:19:04 -05:00
Seednode 44972fde78 Reordered variable initialization to match parameter orders 2022-10-25 09:40:27 -05:00
Seednode 3801421567 Display size of file served when verbose flag is passed 2022-10-25 00:11:55 -05:00
Seednode 0434d87b3e Added symlink handling 2022-10-25 00:06:57 -05:00
Seednode c52ace1fdb Print version on launch 2022-10-23 17:39:49 -05:00
Seednode 8d50f5a088 Second attempt at fixing Linux builds 2022-10-23 16:47:23 -05:00
Seednode f85749b030 Hopefully fixed Linux functionality 2022-10-23 16:29:58 -05:00
Seednode 8dbecba77e Testing initial Windows support 2022-10-23 16:16:40 -05:00
Seednode aa2413eafc Compile regex at start, instead of each page load 2022-10-23 13:45:49 -05:00
Seednode 76109342ed "Replaced switch with sequential if statements" 2022-10-23 13:08:08 -05:00
Seednode ae82762745 Merged -c|--count flag into -v|--verbose, reformatted verbose output 2022-10-20 17:55:25 -05:00
Seednode e39950de68 Switched redirect status code back from 307 to 303, and defined it as a const. 2022-10-20 17:12:29 -05:00
Seednode 8e4c9c5e32 -c|--c now also displays time spent scanning for files 2022-10-20 14:50:42 -05:00
Seednode 1cbc84d789 Attempting to add concurrency, may god have mercy on my soul 2022-10-20 14:22:01 -05:00
Seednode 9cc372d7c4 Added -c|--count flag to display number of files and directories matched and skipped 2022-10-20 11:17:40 -05:00
Seednode 31d16f65b8 Fixed issue where having empty include but non-empty exclude caused 404 2022-10-20 10:38:32 -05:00
Seednode c8a2e56e92 Skipped parsing query params if the corresponding flag isn't enabled 2022-10-19 20:39:57 -05:00
Seednode 6508f2d170 Added flags to enable/disable filtering and sorting 2022-10-19 20:37:12 -05:00
Seednode 7819cf3090 Added handling for errors so it doesn't just silently exit if the port is in use 2022-10-19 20:07:20 -05:00
Seednode fa7177849e Replaced some value passing with pointers, per suggestions from copyfighter 2022-10-19 19:41:42 -05:00
Seednode 5d9a815bf2 Replaced option to filter for a single stream with include and exclude options, each accepting multiple comma-delimited values 2022-10-19 19:27:11 -05:00
Seednode 41a7546334 Hopefully fixed Windows support 2022-10-18 17:30:04 -05:00
Seednode 0a546dd468 Changed port type from int to uint16 2022-10-18 16:54:01 -05:00
Seednode 022b14bfa2 Fixed unhandled error return value 2022-10-18 16:46:55 -05:00
Seednode c8971f5187 Replaced separate values for base, file number, and file extension with a struct, and added methods to increment/decrement that value 2022-10-18 16:40:13 -05:00
Seednode 0d9e74fbca Added sorting options (ascending, descending, defaults to random) 2022-10-18 13:42:32 -05:00
Seednode 84038440af Cleaned up responsewriter and request pointer handling, and added return values when missing after 404 responses 2022-10-03 21:35:02 -05:00
Seednode 919d1c2e8b Restructured code to hopefully be more readable 2022-09-26 12:31:45 -05:00
Seednode 7fe46868c5 Removed extraneous double quote in html generator 2022-09-25 17:33:25 -05:00
Seednode 8e1ab46302 Successive requires value of true, instead of any non-null value 2022-09-25 11:30:52 -05:00
Seednode 5f9dd5f607 Removed debug message from reworking successive argument 2022-09-24 21:00:03 -05:00
Seednode b51c8afc15 Moved successive and filter arguments to exclusively query parsms 2022-09-24 20:54:51 -05:00
Seednode 159207dd5f Completely reworked file list generation to fix Successive weighting 2022-09-24 20:28:34 -05:00
Seednode 5b8bec54e8 Added query param support for filtering 2022-09-24 18:59:10 -05:00
Seednode ed1ecfd278 Added argument to filter displayed results 2022-09-24 17:17:56 -05:00
Seednode d1f1b2e90b Use raw strings instead of quoted strings for regexp.MustCompile, replaced time.Now().Sub with time.Since, fixed clobbered filePath value, per staticcheck 2022-09-21 21:24:05 -05:00
Seednode 79331096a9 Rearranged some variable initializations 2022-09-18 13:32:58 -05:00
Seednode 9e05a12fd7 serveHtmlHandler could potentially return an empty response in default case 2022-09-18 13:17:29 -05:00
Seednode f3280a6b6c Display first image in directory on first load if --successive is enabled 2022-09-18 13:07:46 -05:00
Seednode 0b7b9983a5 Fixed bug where -v + -s stops -s from working 2022-09-17 13:38:07 -05:00
Seednode f332fb24a8 Added another slice length check 2022-09-17 13:12:22 -05:00
Seednode 094bb13cf3 Added slice length check 2022-09-17 12:42:25 -05:00
Seednode 40707bf9c8 Added option to display sequentially numbered files instead of randomly choosing, when possible 2022-09-17 11:07:37 -05:00
Seednode 103f8cb456 Modified usage info 2022-09-16 14:57:40 -05:00
Seednode 4395818492 Replaced --version with version subcommand 2022-09-16 14:48:30 -05:00
Seednode 26981c9669 Renamed functions for consistency 2022-09-16 14:45:54 -05:00
Seednode 4e74d99019 Reworked to allow use of back button to return to previous results, via HTTP redirects 2022-09-16 13:45:33 -05:00
Seednode 3febbedacc Fixed timestamp formatting 2022-09-11 20:48:52 -05:00
Seednode 67299a2808 Simplified timestamp functions 2022-09-11 20:05:55 -05:00
Seednode de398093b5 Display time spent displaying image when running in verbose mode 2022-09-11 19:01:56 -05:00
Seednode 35b46ed9e8 Replaced log.Print with fmt.Printf to allow finer control of newlines 2022-09-10 18:03:04 -05:00
Seednode bbe919be3b Removed unused utils.go 2022-09-10 16:35:05 -05:00
Seednode 469cb96883 Added option for -v|--verbose, to log file accesses to stdout 2022-09-10 16:17:55 -05:00
Seednode fbd4357afe Added deferred fd close for checkIfImage, and deferred getting filenames until after checking if file is an image 2022-09-10 13:09:39 -05:00
Seednode 5031692793 Moved from manually checking magic numbers to github.com/h2non/filetype 2022-09-09 19:00:02 -05:00
Seednode eba8c6f068 No longer picking random files from slice, shuffle slice once instead. Return 404 not found if no valid image files are found. 2022-09-09 17:21:03 -05:00
Seednode 6660e080f4 Replaced panic with error return value in normalizePaths() 2022-09-09 14:28:57 -05:00
Seednode 4a484eed83 Removed unused functions 2022-09-09 14:14:54 -05:00
Seednode 51ab23a234 Re-added missing HTML footer 2022-09-08 19:11:07 -05:00
Seednode d51fdbb546 Reverted to old state because something was broken 2022-09-08 19:02:33 -05:00
Seednode c61eeb004a Readded missing exit-handling function 2022-09-08 16:05:07 -05:00
Seednode 731f1a6791 Removed unused functions 2022-09-08 16:01:28 -05:00
Seednode 057e4ac21b Removed unused utils.go 2022-09-08 16:01:16 -05:00
Seednode 7d40d25b40 Added file not found response for invalid files 2022-09-08 15:57:52 -05:00
Seednode 6f1c0c3943 Reached first working version 2022-09-08 15:30:51 -05:00
Seednode d052fd6af9 Confirmed recursive and nonrecursive functions both work as expected 2022-09-08 13:12:50 -05:00
Seednode eee4917322 Added separate recursive path walker 2022-09-08 12:12:58 -05:00
Seednode 7ae3c72697 First attempt 2022-09-08 10:57:59 -05:00
Seednode 3d76fcd889 Initial commit 2022-09-08 10:12:06 -05:00