Omar Polo
d090dc8491
define config_path as global variable
2021-02-08 12:44:34 +00:00
Omar Polo
abc007d2b3
rewrite main loop using libevent
2021-02-08 10:01:45 +00:00
Omar Polo
b63e30ff44
define TLS_CLIENT_NOT_BEFORE/NOT_AFTER in CGI scripts
2021-02-07 21:47:01 +00:00
Omar Polo
9f006a2127
[cgi] split the query in words if needed and add them to the argv
2021-02-07 18:55:04 +00:00
Omar Polo
3abf91b0b4
improve logs management
2021-02-07 15:30:28 +00:00
Omar Polo
a709ddf5eb
added prefork option
2021-02-07 12:05:32 +00:00
Omar Polo
e3ddf39095
add the ``entrypoint'' option
2021-02-06 18:28:43 +00:00
Omar Polo
6abda252e9
added ``block return'' and ``strip'' options
2021-02-06 17:22:37 +00:00
Omar Polo
ca21e10043
reload configuration on SIGHUP
2021-02-04 13:23:15 +00:00
Omar Polo
4e2e2ab1d3
refactor executor_main
...
now it's symmetrical to listener_main().
2021-02-03 16:37:53 +00:00
Omar Polo
d672b8fba1
refactoring startup logic
2021-02-03 16:28:00 +00:00
Omar Polo
9b8f5ed2c0
revert commit 346f28eeaa
...
keep mark_nonblock in utils.c, as otherwise the build for the regress
suite will fail (mark_nonblock needs fatal which is in gmid.c, and
we can't link gmid.o with the regress suite...)
2021-02-03 14:16:39 +00:00
Omar Polo
346f28eeaa
move mark_nonblock to utils.c
2021-02-02 23:03:33 +00:00
Omar Polo
fe40638928
mark various functions as static
...
By marking all those function as static, the compiler is free to do
more optimizations. In addition, those functions are not used outside
server.c
2021-02-02 23:01:09 +00:00
Omar Polo
5f715ce43f
print the header in the directory listing
2021-02-02 09:48:32 +00:00
Omar Polo
35744950aa
simplify handle_cgi
...
Now that I got rid of the enum+switch, adding more state is easier.
Before, we used an hack to remember if we had read the CGI reply or
not (c->code = -1).
This introduces a new state, handle_cgi_reply that reads the CGI
script reply, logs it, and only then switches to handle_cgi.
handle_cgi itself is cleaner, now it only reads into c->sbuf and send
what it had red.
We even get, almost for free, the 42 error. If read exists with -1 or
0 from in handle_cgi_reply, we return a proper error to the client.
We can extend this further in the future and also try to validate the
CGI reply (for now we're only looking for a \n).
2021-02-01 22:04:51 +00:00
Omar Polo
92da82858b
document the DFA
2021-02-01 20:24:14 +00:00
Omar Polo
112802ea31
client state machine: function pointers instead of enum+switch
2021-02-01 20:00:33 +00:00
Omar Polo
2fafa2d23e
bring the CGI implementation in par with GLV-1.12556
2021-02-01 11:11:43 +00:00
Omar Polo
6016a593a3
invert the location precedence: first match wins
...
It's how httpd(8) does it, and it allows us to call fnmatch less time
2021-01-30 12:04:20 +00:00
Omar Polo
a2fd801327
puny_decode: set an error string
2021-01-29 17:11:03 +00:00
Omar Polo
35cf19e3f3
punycode: refactoring
...
use the correct term "label" instead of "component" when speaking
about the parts of a hostname. Also, fix the sizes for max hostname
and label.
2021-01-28 16:25:59 +00:00
Omar Polo
473e4531d5
delete unused constant
2021-01-28 16:24:48 +00:00
Omar Polo
ef0f2ae88c
remove unused function
2021-01-28 14:21:57 +00:00
Omar Polo
13ed2fb63f
improve configuration parsing error
2021-01-27 16:45:45 +00:00
Omar Polo
fe5967cd02
const-ify strings in struct location
2021-01-27 15:53:30 +00:00
Omar Polo
44ee1bac8b
use starts_with in puny.c
2021-01-27 15:35:09 +00:00
Omar Polo
c4f682f855
trim_req_iri: set error string
2021-01-27 15:05:16 +00:00
Omar Polo
46af8c6cfe
drop the daemon config in favour of the -f flag
...
Now it daemonize by default when running with a config, unless the -f
flag is given.
2021-01-27 12:04:37 +00:00
Omar Polo
7957cbd9aa
const-ify puny_decode (and add puny.c)
2021-01-27 11:21:23 +00:00
Omar Polo
3300cbe06a
initial punycode support
2021-01-27 10:47:49 +00:00
Omar Polo
8443bff77a
rework the configless mode: change flags and generate certs
2021-01-25 14:08:31 +00:00
Omar Polo
ae08ec7da5
chroot & drop privileges
2021-01-25 10:30:07 +00:00
Omar Polo
252908e6bb
added support for location blocks
2021-01-24 18:53:26 +00:00
Omar Polo
c8b7433918
added support for location blocks
2021-01-24 14:11:40 +00:00
Omar Polo
07b0a14218
void-ify some functions
...
their return value is no longer used, it's only confusing at this point.
2021-01-24 09:54:44 +00:00
Omar Polo
a87f662565
refactoring state management
...
instead of having a flag to discern between two different behaviours
in S_SENDING, split that state into S_SENDING_FILE and S_SENDING_CGI
(this will also make it easier in the future to add other sending
states). While there, also get rid of `goodbye' and make start_reply
advance the state machine by itself.
2021-01-24 09:49:09 +00:00
Omar Polo
e7a2a99b5a
added index option
2021-01-24 09:14:01 +00:00
Omar Polo
f890c8c54d
use a helper to handle no-body replies
2021-01-22 13:58:54 +00:00
Omar Polo
36162ed86d
rename goodbye -> close_conn
2021-01-22 13:45:27 +00:00
Omar Polo
f77a8c867e
add ends_with
2021-01-21 22:45:49 +00:00
Omar Polo
b2a6b61371
rename mimes to mime ; pass config esplicitly to mime* functions
2021-01-21 15:01:37 +00:00
Omar Polo
33ac26a0e5
fix prototypes
2021-01-21 14:49:11 +00:00
Omar Polo
12042ad700
add a configure script and some compat
...
tested on openbsd, alpine and void
2021-01-21 11:57:46 +00:00
Omar Polo
0be51733ef
improve logs
...
now we log the full IRI requested (before was only the path) and the
response line (even for CGI).
2021-01-20 18:54:44 +00:00
Omar Polo
2debfe2b1f
drop useless field
...
was probably added to distinguish between AF_INET and AF_INET6, to use
different functions for logging. But it wasn't really used, and now
we use getnameinfo anyway.
2021-01-19 18:49:36 +00:00
Omar Polo
6119e13e8a
moving "default type" from global options to server options
2021-01-19 11:28:41 +00:00
Omar Polo
05c23a54ea
add "lang" server option
2021-01-19 10:58:29 +00:00
Omar Polo
a010b0ddc5
move mimes into the struct config
2021-01-18 18:48:37 +00:00
Omar Polo
982069a120
add "mime" and "default type" option for the configuration
2021-01-18 18:43:47 +00:00