| Commit message (Collapse) | Author | Age | Files | Lines | |
|---|---|---|---|---|---|
| * | Fix memory leaks | Tom Lebreux | 2020-11-08 | 2 | -0/+5 |
| | | |||||
| * | config/routing: fix maybe-uninitialized errors | William Casarin | 2020-11-02 | 1 | -0/+2 |
| | | | | | | | | | | | | | | | | | | Trivial fix to silence compilation errors on gcc 9.3.0: src/config.c: In function ‘conf_ini_handler’: src/config.c:154:23: error: ‘routing’ may be used uninitialized in this function [-Werror=maybe-uninitialized] 154 | enum gmnisrv_routing routing; | ^~~~~~~ src/config.c:197:18: error: ‘spec’ may be used uninitialized in this function [-Werror=maybe-uninitialized] 197 | route->path = strdup(spec); | ^~~~~~~~~~~~ Signed-off-by: William Casarin <jb55@jb55.com> | ||||
| * | Implement URL rewrites with regex capture groups | Drew DeVault | 2020-11-01 | 3 | -18/+132 |
| | | |||||
| * | Change meaning of root (backwards incompatible!) | Drew DeVault | 2020-11-01 | 1 | -9/+10 |
| | | | | | | | | | | This takes the nginx approach to the "root" directive, which is simpler to implement and more consistent with more complex routing behaviors like regexp. The path component of the URL is now simply appended to the root to form the path to the file which should be served to the client. | ||||
| * | regexp.c: ditch unused test code | Drew DeVault | 2020-11-01 | 1 | -170/+0 |
| | | |||||
| * | Implement regex route matching | Drew DeVault | 2020-11-01 | 1 | -2/+16 |
| | | |||||
| * | Initial pass on regex routing support | Drew DeVault | 2020-10-29 | 2 | -2/+3058 |
| | | | | | | | | | | All this does is parse the regexes out of the config file. I've vendored libregexp from Bellard's quickjs project, because it's reasonably small and self-contained, and POSIX regexes don't support captures. We're eventually going to want captures for URL rewrites, so this'll do for now. | ||||
| * | Fail gracefully if mime database is not present | Drew DeVault | 2020-10-28 | 1 | -1/+7 |
| | | |||||
| * | config: free more routing information on finish | Drew DeVault | 2020-10-28 | 1 | -0/+11 |
| | | |||||
| * | Implement MIME database support | Drew DeVault | 2020-10-28 | 3 | -12/+102 |
| | | |||||
| * | server: handle write errors | Drew DeVault | 2020-10-28 | 1 | -1/+5 |
| | | |||||
| * | CGI: Fix SCRIPT_NAME variable | Drew DeVault | 2020-10-26 | 1 | -3/+6 |
| | | |||||
| * | CGI: set PATH_INFO | Drew DeVault | 2020-10-25 | 1 | -16/+48 |
| | | |||||
| * | Initial support for CGI scripts | Drew DeVault | 2020-10-25 | 2 | -0/+84 |
| | | |||||
| * | Initial implementation of a routing table | Drew DeVault | 2020-10-25 | 2 | -18/+126 |
| | | |||||
| * | Overhaul network I/O to be async for real | Drew DeVault | 2020-10-25 | 3 | -101/+241 |
| | | | | | | Had to totally cut off OpenSSL from the network fd because obviously OpenSSL is just going to wreck our shit | ||||
| * | add a missing "/" to autoindex paths | io mintz | 2020-10-15 | 1 | -2/+1 |
| | | | | | | | | | | | | | | | | | | | | | With the following directory structure: /srv/gmni: baz/ foo/ /srv/gmni/baz: a /srv/gmni/foo: bar/ /srv/gmni/foo/bar: b trying to access gemini://somesite/ with autoindex=on works, but accessing /foo fails because it tries to stat /srv/gmni/foobar instead of /srv/gmni/foo/bar. This commit fixes that by adding a trailing slash. | ||||
| * | serve: fix gcc-9.3.0 error in serve_autoindex | William Casarin | 2020-10-15 | 1 | -1/+1 |
| | | | | | | | | | | | | | | gcc 9.3.0 catches an off-by-one error with strncat in serve_autoindex where it might not write a 0 byte: In function ‘strncat’, inlined from ‘serve_autoindex’ at src/serve.c:60:3: /nix/store/...glibc-2.31-dev/include/bits/string_fortified.h:136:10: error: ‘__builtin___strncat_chk’ specified bound 4097 equals destination size [-Werror=stringop-overflow=] Signed-off-by: William Casarin <jb55@jb55.com> | ||||
| * | return false on request_validate errors | Chris Vittal | 2020-10-12 | 1 | -1/+4 |
| | | | | | | This will report proper errors to clients rather than continuing on with request processing. | ||||
| * | Bubble up client disconnect state | Drew DeVault | 2020-09-27 | 1 | -23/+36 |
| | | | | | This will fix the segfaults but won't fix slowlorris | ||||
| * | Break after processing polled client | Drew DeVault | 2020-09-27 | 1 | -0/+3 |
| | | | | | Otherwise we might not grok it, ya jive | ||||
| * | Only handle one client per poll iteration | Drew DeVault | 2020-09-27 | 1 | -8/+4 |
| | | | | | | This is a bit of a hack but it avoids some problems with invalid reads when a client gets disconnected | ||||
| * | mime: add .xml -> text/xml | Drew DeVault | 2020-09-27 | 1 | -0/+3 |
| | | |||||
| * | server.c: re-locate definitions to appropriate scope | Drew DeVault | 2020-09-26 | 1 | -7/+7 |
| | | |||||
| * | Set SO_REUSEADDR | Drew DeVault | 2020-09-26 | 1 | -1/+2 |
| | | |||||
| * | server.c: appease GCC's magic pixie bullshit | Drew DeVault | 2020-09-26 | 1 | -2/+2 |
| | | |||||
| * | server.c: import netinet/in.h | Drew DeVault | 2020-09-26 | 1 | -0/+1 |
| | | |||||
| * | Fix size of in{,6}_addr | Drew DeVault | 2020-09-26 | 1 | -2/+2 |
| | | |||||
| * | Document (and tweak) log format | Drew DeVault | 2020-09-26 | 1 | -3/+2 |
| | | |||||
| * | Remove [:tls] email directive | Drew DeVault | 2020-09-26 | 1 | -2/+0 |
| | | |||||
| * | Free up resources throughout | Drew DeVault | 2020-09-26 | 4 | -11/+34 |
| | | |||||
| * | disconnect_client: free more client resources | Drew DeVault | 2020-09-26 | 1 | -0/+7 |
| | | |||||
| * | Implement autoindex option | Drew DeVault | 2020-09-26 | 3 | -25/+169 |
| | | |||||
| * | Rehome some logic from server.c -> serve.c | Drew DeVault | 2020-09-26 | 2 | -119/+129 |
| | | |||||
| * | Bump client buffer size to BUFSIZ | Drew DeVault | 2020-09-26 | 1 | -1/+0 |
| | | |||||
| * | Log response body size in bytes | Drew DeVault | 2020-09-26 | 1 | -1/+4 |
| | | |||||
| * | Serve files from root | Drew DeVault | 2020-09-26 | 2 | -11/+112 |
| | | |||||
| * | disconnect_client: clean up bios | Drew DeVault | 2020-09-26 | 1 | -2/+3 |
| | | |||||
| * | Always log server messages to stderr | Drew DeVault | 2020-09-26 | 1 | -1/+1 |
| | | | | | So that you can just direct stdout to a file to get the request log. | ||||
| * | Parse requests and serve simple responses | Drew DeVault | 2020-09-26 | 1 | -17/+169 |
| | | |||||
| * | Use O_NONBLOCK for client file descriptors | Drew DeVault | 2020-09-26 | 1 | -2/+13 |
| | | |||||
| * | Implement TLS exchange with clients | Drew DeVault | 2020-09-24 | 4 | -12/+134 |
| | | | | | This probably leaves a bit to be desired tbh | ||||
| * | tls: move cert/key into host structure | Drew DeVault | 2020-09-24 | 1 | -9/+4 |
| | | | | | | | | | We'll later want to set these on the SSL object (rather than SSL_CTX), so move these into the host struct for later access. We'll prefer to set it on the SSL object so that we can automatically use an up-to-date certificate, per ~sircmpwn/gmni#26. | ||||
| * | Implement TLS store | Drew DeVault | 2020-09-24 | 3 | -3/+186 |
| | | | | | Includes hands-free certificate generation and loading | ||||
| * | Log bind addresses on startup | Drew DeVault | 2020-09-24 | 2 | -1/+6 |
| | | |||||
| * | Generalize logging | Drew DeVault | 2020-09-23 | 2 | -28/+66 |
| | | |||||
| * | Implement basic server event loop | Drew DeVault | 2020-09-23 | 1 | -4/+180 |
| | | |||||
| * | Generalize IPV6_V6ONLY usage | Drew DeVault | 2020-09-23 | 1 | -1/+1 |
| | | | | | Some platforms other than Linux may implement this socket option. | ||||
| * | Initialize sockets | Drew DeVault | 2020-09-23 | 3 | -1/+131 |
| | | |||||
| * | config: parse listen directives | Drew DeVault | 2020-09-23 | 1 | -3/+58 |
| | | |||||
