Omar Polo
dbe262a45d
split usage string into two lines
2021-03-03 17:51:42 +00:00
Omar Polo
2c3e53dac6
give each server process its own socket for the executor
...
this fixes a bug introduced with the prefork mechanics: every server
process shared the same socket, and this would cause a race condition
when multiple server processes asked for a script cgi being executed.
This gives each server process its own socket to talk to the executor,
so the race cannot happen.
2021-03-03 17:22:01 +00:00
Omar Polo
376a540764
move log_init & vars to gmid.c, retain logger_main in log.c
...
this is to let the regression suite compile
2021-02-23 13:44:20 +01:00
Omar Polo
d278a0c3c5
moving logging to its own process
2021-02-23 13:40:59 +01:00
Omar Polo
52418c8d82
fix various compilation errors
...
Include gmid.h as first header in every file, as it then includes
config.h (that defines _GNU_SOURCE for instance).
Fix also a warning about unsigned vs signed const char pointers in
openssl.
2021-02-12 12:47:20 +00:00
Omar Polo
aa37287565
add newline after usage
2021-02-10 17:58:43 +00:00
Omar Polo
df58efff26
fix seccomp for the new event loop
...
add/remove syscalls from the BPF filter and move sandbox() after
libevent initialisation
2021-02-08 12:46:46 +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
102d2e9cce
missing argument for LOGI
2021-02-04 18:09:42 +00:00
Omar Polo
9543e3fbaf
avoid race-condition
...
what if we receive a SIGHUP right after unblock_signal (or during the
whole block_signals...unblock_signals) but *before* the wait_sighup?
Yeah.
2021-02-04 18:09:30 +00:00
Omar Polo
ca21e10043
reload configuration on SIGHUP
2021-02-04 13:23:15 +00:00
Omar Polo
e824d03efa
drop unnecessary check around close
2021-02-03 16:53:34 +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
9edb828251
drop privileges after the fork
2021-02-03 14:13:32 +00:00
Omar Polo
3c680bddab
configless: fixing the case of the implicit "."
...
I got bitten by the scope visibility rules. After the end of the
block, the path variable is no longer valid, and in fact later
load_vhosts fails to open that (because the buffer gets invalidated)
2021-02-02 09:30:24 +00:00
Omar Polo
bcf5d929e6
ensure absolute paths in config-less mode
2021-02-01 11:07:57 +00:00
Omar Polo
8503a1431d
set cloexec status on the socketpair fds
...
the executor forks to spawn the cgi scripts, and they inherit the
socket for communication with the listener process. Make that
impossible.
2021-01-31 11:07:12 +00:00
Omar Polo
ef0f2ae88c
remove unused function
2021-01-28 14:21:57 +00:00
Omar Polo
8904fa0e64
-v for verbose logging
2021-01-27 23:14:16 +00:00
Omar Polo
13ed2fb63f
improve configuration parsing error
2021-01-27 16:45:45 +00:00
Omar Polo
b736ca35f2
drop unused variable
2021-01-27 15:35:55 +00:00
Omar Polo
44ee1bac8b
use starts_with in puny.c
2021-01-27 15:35:09 +00:00
Omar Polo
72bbed9136
make configless mode works again. also accept every host
2021-01-27 15:00:55 +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
3300cbe06a
initial punycode support
2021-01-27 10:47:49 +00:00
Omar Polo
390a611893
sane defaults for the config-less mode
2021-01-27 10:43:55 +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
2030e31486
order
2021-01-25 09:45:09 +00:00
Omar Polo
252908e6bb
added support for location blocks
2021-01-24 18:53:26 +00:00
Omar Polo
501e489c90
initialize config
2021-01-24 12:45:22 +00:00
Omar Polo
8d6ae384be
move configuration init stuff in its own function
2021-01-24 10:39:48 +00:00
Omar Polo
f77a8c867e
add ends_with
2021-01-21 22:45:49 +00:00
Omar Polo
ea28a44931
const-ify parameter to strtonum
2021-01-21 16:15:10 +00:00
Omar Polo
a5a09e44b2
use strtonum
2021-01-21 16:07:12 +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
0ab65593e2
don't crash on wrong vhost or missing SNI
...
the new logging code was crashing if the client didn't support SNI or
if required an unknown vhost: this because we short-circuit in
handle_handshake to an error, so c->iri isn't populated yet (we don't
even read the request).
fixes #1
2021-01-21 08:26:21 +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
0fbe79b33c
improve mime handling
...
we still have an hardcoded list, but this implements the API needed to
modify the mappings.
2021-01-18 18:18:57 +00:00
Omar Polo
132cae8c6f
removing err/warn functions with our fatal
...
err/warn is not available on some systems (unfortunately!) and in any
case don't play well with our daemon mode (that closes std{in,out,err}).
Use our fatal that is daemon-aware.
2021-01-18 18:15:58 +00:00
Omar Polo
d3a08f4d17
reorganize: move bunch of functions to server.c
...
cgi.c wasn't really needed; it better to group all the server related
functions together, cgi or not. Now gmid.c contains only startup and
utility code.
2021-01-17 23:23:58 +00:00
Omar Polo
0170ba023f
re-enable daemon mode
...
with the split into two process, the call to daemon was lost
2021-01-17 11:56:50 +00:00
Omar Polo
7146dd552f
missing break
2021-01-17 09:34:06 +00:00
Omar Polo
d939d0f09e
switch to getcwd
2021-01-17 09:33:45 +00:00
Omar Polo
881a9dd9c2
split into two processes: listener and executor
...
this way, we can sandbox the listener with seccomp (todo) or capsicum
(already done) and still have CGI scripts. When we want to exec, we
tell the executor what to do, the executor executes the scripts and
send the fd backt to the listener.
2021-01-16 19:41:34 +00:00
Omar Polo
7edc455ab4
move cgi stuff to its own file
2021-01-15 19:08:28 +00:00