Commit Graph

81 Commits

Author SHA1 Message Date
Solderpunk e06f8bddbc Fix infinite redirect bug.
Previously, URLs without trailing slashes in the path which
resolved to directories caused infinite redirects if there was
anything in the URL after the path (like a query).

Thanks to both Luke Emmet and Stephane Bortzmeyer for reporting
this!
2021-01-24 16:27:53 +01:00
makeworld c6c6e544d6 Use io.Copy over ioutil.ReadFile 2020-12-09 17:59:00 -05:00
Solderpunk 48aed1398d Log remote IP address when reading a request fails. 2020-07-03 11:16:07 +02:00
Solderpunk 37e177fbe0 Move .molly file parsing function into config.go. 2020-07-01 23:05:49 +02:00
Solderpunk 3cd4a072fd More and better error logging. 2020-07-01 22:58:07 +02:00
Solderpunk f7e588dfae More and better error logging. 2020-07-01 20:15:52 +02:00
Solderpunk 821a862036 Use standard library logging facilities for error log. 2020-07-01 19:57:39 +02:00
Solderpunk 2a263e5e70 Rewrite SCGI support to use prefixes, not regexps, and provide the same SCRIPT_PATH / PATH_INFO break as CGI. 2020-07-01 16:40:51 +02:00
Solderpunk d87ecfd20f gofmt. 2020-07-01 16:19:38 +02:00
Solderpunk f4f14320df Expand CGI path globs once on startup, not for each request. 2020-07-01 16:18:49 +02:00
Solderpunk 35bf4d16c3 Handle all requests which don't involve the filesystem before all which do. 2020-07-01 16:05:39 +02:00
Solderpunk 9bce54882a Consolidate some quick-failing path tests. 2020-07-01 16:05:09 +02:00
Solderpunk f291e5863c Enforce certificate zones before anything else. 2020-07-01 14:16:27 +02:00
Solderpunk 4ae154faed Convert CGIPath handling from regexs to prefixes. 2020-07-01 14:10:20 +02:00
Solderpunk cc5410494e Handle redirects using regular expressions, not just literal paths. 2020-07-01 11:13:38 +02:00
Solderpunk b30fc0923b Handle CGI requests with URI components after the script. 2020-07-01 10:38:31 +02:00
Solderpunk 68398ef0be Extensive refactor, trying to keep the main request handling function relatively simple. 2020-06-30 22:25:37 +02:00
Solderpunk fd31094cb6 Allow .molly files to set certificate zones. 2020-06-30 20:39:26 +02:00
Solderpunk 1794ff643b Allow .molly files to configure redirects. 2020-06-30 20:19:13 +02:00
Solderpunk d7663ab688 Removing debugging print. 2020-06-30 19:34:01 +02:00
Solderpunk e43fc7877c Big rearrange: resolve URL to filesystem earlier, so we can check for .molly files ASAP, so that they can handle redirects, certificate zones, etc. 2020-06-30 19:31:27 +02:00
Solderpunk 990b7071d0 gofmt fixes. 2020-06-30 19:13:02 +02:00
Solderpunk 44af303de6 Fix silly mistake in hasty port checking fix. 2020-06-30 19:11:49 +02:00
Solderpunk 4c27911e8f Check that request port matches configured server port. Should fix #9. 2020-06-30 17:27:53 +02:00
Solderpunk 4dbe52adf8 Permit .molly files to specify MIME overrides. 2020-06-30 17:01:19 +02:00
Solderpunk 18c056167f Make it possible to toggle handling of .molly files on and off via main config. 2020-06-29 17:17:43 +02:00
Solderpunk 77691d6983 Introduce error log. 2020-06-28 18:34:50 +02:00
Solderpunk 31161cf21c Permit multiple authorised certificates per zone. 2020-06-28 14:47:36 +02:00
Solderpunk a0dacf4bbd Basic implementation of certificate zones - only one authorised cert per zone. 2020-06-28 13:47:30 +02:00
Solderpunk 5377c2941f Allow overriding MIME types based on path regexes. 2020-06-28 00:12:32 +02:00
Solderpunk a07645dd2e Allow overriding directory listing options with .molly files. 2020-06-27 23:44:15 +02:00
Solderpunk 7066bad570 Use headings in .gmi files instead of filenames in directory listings. 2020-06-27 22:57:03 +02:00
Solderpunk 3f98a9edf1 Permit sorting of files in automatic directory listings by various factors. 2020-06-27 18:52:29 +02:00
Solderpunk 6da5ec79dd Fix typo. 2020-06-17 15:22:21 +02:00
Solderpunk 30a5369f8a Add missing return, fixes #4. 2020-06-13 09:08:04 +02:00
Solderpunk e57a3d5ecf Read header for directory listings from .mollyhead. 2020-06-11 22:43:13 +02:00
Solderpunk b0b18971f4 Run gofmt on everything for the first time ever! 2020-06-10 21:31:13 +02:00
Solderpunk 3e80488f92 Add DefaultLang config variable to set text/gemini lang parameter. Overridable via .molly file. 2020-06-10 21:22:15 +02:00
Solderpunk 7fb5ca052b Fix parent directory walking logic to work at the DocRoot. 2020-06-10 21:20:01 +02:00
Solderpunk cb1e0da7d5 Read .molly files from parent directories of served file, permitting overrides to text/gemini file extension. 2020-06-10 20:40:13 +02:00
Solderpunk 599bbf4b52 Proper tilde path clean up. 2020-06-10 19:43:49 +02:00
Solderpunk 8d2309f889 Quick hacky fix to tilde path transformation. 2020-06-08 23:03:19 +02:00
Solderpunk b8034c1576 Make text/gemini extension configurable. 2020-06-08 21:47:33 +02:00
Solderpunk 4681d3f971 Support multiple CGI paths. 2020-06-08 21:46:39 +02:00
Solderpunk 8f395d7932 Add link to parent directory in directory listings. 2020-06-08 20:01:03 +02:00
Solderpunk 301d3409f1 Support temporary and permanent redirects. 2020-06-08 19:59:16 +02:00
Solderpunk 433c43e98e Add file size and modification dates to automatically generated directory listings. 2020-06-06 21:28:12 +02:00
Solderpunk 11beddcfb1 Add rudimentary support for specifying redirects. 2020-06-06 13:36:10 +02:00
Solderpunk 548697b094 Get rid of debugging prints. 2020-06-06 13:35:47 +02:00
Solderpunk 2c99228610 Pass pointers to the log entry to functions which can set the status code, so changes are reflected in the main handle function. 2020-06-06 12:08:34 +02:00