summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2023-05-06don't start in-FS paths with ./tjpcc
this was tricky, it didn't fail until I got it on a FreeBSD host
2023-05-05README improvementstjpcc
2023-05-03now we should allow empty addresstjpcc
2023-05-03use sha256 for client cert fingerprints, and log them when availabletjpcc
2023-05-03include spartan in the protocols list in READMEtjpcc
2023-05-03TitanUpload middleware in contrib/fstjpcc
2023-05-03hide private files from the FStjpcc
- ResolveFile acts like ErrNotFound - ResolveDirectory acts like ErrNotFound - RenderDirectoryListing strips out dot-prefixed entries
2023-05-03linter fixestjpcc
2023-05-03add JoinDefaultPort for servers' configurationtjpcc
2023-05-02send request bodies into CGI handlerstjpcc
2023-05-02fix tests and examples to match the router.Handler() changetjpcc
2023-05-02simple handler dispatcher for hostname-based virtual hostingtjpcc
2023-05-01fix the router.Handler signaturetjpcc
2023-05-01name change in the CGI SERVER_SOFTWARE env vartjpcc
2023-05-01docstring fixtjpcc
2023-05-01exercise router code in an exampletjpcc
2023-05-01still log requests for which we failed to find a handlertjpcc
2023-05-01fixes to /*remainder route segmentstjpcc
2023-05-01include the time spent in the handler for the 'dur' log keyv1.0.0tjpcc
2023-05-01make spartan.Client.RoundTrip match the API of other clients.tjpcc
- Request.Meta is already used as an *io.LimitedReader in spartan servers, so by following this convention the RoundTrip method doesn't need anything more than the *Request. - Make a new public method for setting the body on a spartan request.
2023-05-01more README updatestjpcc
- lowercase the name everywhere - include a link back to gus
2023-05-01explain the nametjpcc
2023-05-01sliderule ascii arttjpcc
2023-05-01name change gus -> slideruletjpcc
2023-04-30spartan handler for a CGI directorytjpcc
2023-04-29spartan FS servertjpcc
2023-04-29spartan =: prompt line support in gemtexttjpcc
2023-04-29initial spartan client supporttjpcc
2023-04-29tests and bugfixes to spartan request parsingtjpcc
2023-04-29initial spartan server supporttjpcc
2023-04-29include a CSS class in htmlconv outputtjpcc
2023-02-15Switch Handler to an interface.tjpcc
HandlerFunc is much better as a function returning a Handler, rather than a newtype for the function type itself. This way there is no confusion creating a type-inferenced variable with HandlerFunc(func(... and then using a HandlerFunc where a Handler is expected. Much better to only have one public type.
2023-02-14no need to combine sub-router params any moretjpcc
2023-02-14Router improvements.tjpcc
- test coverage for Router, not just PathTree - Router.Mount() now flattens routes into the parent router - Router.Use() implemented to set middleware on a router itself
2023-02-02Mount() adds a subrouter under a prefix pattern.tjpcc
...though I'm already eyeing a better approach.
2023-02-02Initial Router work.tjpcc
- Router type, supports: adding handlers, serving, fetching the matching handler for a route. - Private PathTree type handles the modified radix trie.
2023-01-30include gemini scheme in a URLtjpcc
2023-01-30mention release signing and the key usedtjpcc
2023-01-30finger protocoltjpcc
2023-01-28fix tests for #15 changetjpcc
2023-01-28middleware to turn away non-gemini requests. fixes #3.tjpcc
2023-01-28permanently redirect from /dir to /dir/ on gemini. fixes #15tjpcc
2023-01-28README updatestjpcc
2023-01-28gopher support.tjpcc
Some of the contrib packages were originally built gemini-specific and had to be refactored into generic core functionality and thin protocol-specific wrappers for each of gemini and gopher.
2023-01-26test coverage and resulting bugfixestjpcc
2023-01-25test coverage for the cgi contribtjpcc
2023-01-24testing and linting and linter fixestjpcc
2023-01-24Add support for titan:// to the gemini servertjpcc
Titan is a gemini add-on protocol so it really didn't make sense to build it out in a separate package. The most significant difference in titan for the purposes of implementation here is that requests can have bodies following the URL line. Since gus.Request is a struct, the only way to smuggle in the new field (a reader for the body) was to stash it in the context.
2023-01-23logging library up to top leveltjpcc
2023-01-20update READMEs for contrib/tlsauthtjpcc