Commit Graph

88 Commits

Author SHA1 Message Date
Omar Polo
603e4dd82f two more missing ge -> gemexp 2023-08-03 22:04:36 +00:00
Omar Polo
f59543490d rename ge -> gemexp
gemserv is already taken...
2023-07-25 20:15:40 +00:00
Omar Polo
e137cb0348 add missing -include titan.d 2023-07-25 16:11:01 +00:00
Omar Polo
2ff1e2a923 add titan(1) -- a draft titan client 2023-07-22 15:47:02 +00:00
Omar Polo
24f644dbb6 there's no more any `static' target 2023-06-24 13:10:31 +00:00
Omar Polo
c3d502d455 add a `lint' maintainer target to check the manpages 2023-06-24 13:01:31 +00:00
Omar Polo
5a34572282 use REGRESS_HOST to specify the host to listen to; use in CI
some CI envs don't like `listen on localhost' but tolerate INADDR_ANY
or IN6ADDR_ANY_INIT.
2023-06-23 22:00:21 +00:00
Omar Polo
f29d705e04 add missing -include of *.d files 2023-06-23 21:03:24 +00:00
Omar Polo
5dad390015 add `release' target 2023-06-14 07:15:00 +00:00
Omar Polo
1610f9541d rework the configure script
now it resembles less oconfigure and more the configure scripts I'm
using in my recent projects.  I'd argue it's more easy to use it.
2023-06-13 16:36:10 +00:00
Omar Polo
86693a33ab add a privsep crypto engine
Incorporate the OpenSMTPD' privsep crypto engine.  The idea behind
it is to never load the certificate' private keys in a networked
process, instead they are loaded in a separate process (the `crypto'
one) which signs payloads on the behalf of the server processes.
This way, we greatly reduce the risk of leaking the certificate'
private key should the server process be compromised.

This currently compiles only on LibreSSL (portable fix is in the
way).
2023-06-11 11:03:59 +00:00
Omar Polo
cbb7f9fc28 move logger() prototype to gmid.h and delete logger.h 2023-06-08 17:03:13 +00:00
Omar Polo
797c4609a9 make ge work again 2023-06-08 16:22:03 +00:00
Omar Polo
846842e138 sync DISTFILES 2023-06-08 15:41:47 +00:00
Omar Polo
68e38f49b2 use -MMD if the compiler supports it
it's better than the previous Makefile.depend approach since this
automatically adapts to the included headers without requiring
manual intervention to regen the list.
2023-06-08 14:43:29 +00:00
Omar Polo
3483609593 remove Makefile.depend 2023-06-08 14:37:29 +00:00
Omar Polo
c727f8dd75 reformat 2023-06-08 14:36:29 +00:00
Omar Polo
c26f2460e4 rework the daemon to do fork+exec
It uses the 'common' proc.c from various OpenBSD-daemons.

gmid grew organically bit by bit and it was also the first place where I
tried to implement privsep.  It wasn't done very well, in fact the
parent process (that retains root privileges) just fork()s a generation
of servers, all sharing *exactly* the same address space.  No good!

Now, we fork() and re-exec() ourselves, so that each process has a fresh
address space.

Some features (require client ca for example) are temporarly disabled,
will be fixed in subsequent commits.  The "ge" program is also
temporarly disabled as it needs tweaks to do privsep too.
2023-06-08 13:59:31 +00:00
Omar Polo
eae52ad493 switch to the more usual log.c 2023-06-06 11:46:40 +00:00
Omar Polo
281a8852b3 rename log.[ch] to logger.[ch] 2023-06-06 08:50:54 +00:00
Omar Polo
c68baad22a move config-related code to config.c
reuse it in ge too.
2023-06-06 08:18:57 +00:00
Omar Polo
e1e04caa4f +log.h 2023-06-05 20:27:27 +00:00
Omar Polo
34886b1e55 add tags target 2023-05-08 10:30:00 +00:00
Omar Polo
0b62f4842d drop landlock/seccomp and capsicum support
it reached a point where this stuff is not maintenable.  I'd like
to move forward with gmid, but the restriction of capsicum and the
linux environment at large that make landlock unusable (how can you
resolve DNS portably when under landlock?) -and don't get me started
on seccomp- makes it impossible for me to do any work.

So, I prefer removing the crap, resuming working on gmid by cleaning
stuff and consolidating the features, improving various things
etc... and then eventually see how to introduce some sandboxing
again on other systems.  Patches to resume sandboxing are, as always,
welcome!
2023-05-08 10:27:32 +00:00
Omar Polo
4b93be289b rework `make dist' 2022-10-31 22:53:16 +00:00
Omar Polo
24232204eb update depends 2022-09-10 12:24:39 +00:00
Omar Polo
3eabd37fe7 adjust install/uninstall target
gmid.1 was moved as gmid.8 and now we have `ge' too
2022-09-08 21:18:04 +00:00
Omar Polo
0126d91d1d add ge: gemini export! 2022-09-07 20:47:33 +00:00
Omar Polo
d29a2ee224 get rid of the CGI support
I really want to get rid of the `executor' process hack for CGI scripts
and its escalation to allow fastcgi and proxying to work on non-OpenBSD.

This drops the CGI support and the `executor' process entirely and is
the first step towards gmid 2.0.  It also allows to have more secure
defaults.

On non-OpenBSD systems this means that the sandbox will be deactivated
as soon as fastcgi or proxying are used: you can't open sockets under
FreeBSD' capsicum(4) and I don't want to go thru the pain of making it
work under linux' seccomp/landlock.  Patches are always welcome however.

For folks using CGI scripts (hey, I'm one of you!) not all hope is lost:
fcgiwrap or OpenBSD' slowcgi(8) are ways to run CGI scripts as they were
FastCGI applications.

fixes for the documentation and to the non-OpenBSD sandboxes will
follow.
2022-09-06 16:11:09 +00:00
Anna “CyberTailor”
07fbbf0610 include contrib/ in dist 2022-07-07 10:38:49 +02:00
Omar Polo
b48eb0db52 add missing manpage for gg 2022-07-04 15:04:46 +00:00
Omar Polo
5734723f92 typo 2022-07-04 14:09:52 +00:00
Omar Polo
870063d344 include Makefile.depend too 2022-07-04 13:53:51 +00:00
Omar Polo
96e3c01314 refactor the makefile / configure
steal more (good) stuff from mandoc-portable :)
2022-07-04 13:44:38 +00:00
Omar Polo
a3ebbccb8e the install target ought to depend on gg too 2022-07-04 09:52:44 +00:00
Omar Polo
bf2850b938 install gmid.conf.5 too 2022-04-07 17:51:26 +00:00
Omar Polo
2a7f69f4ee fix make static': compile gg' too! 2022-03-29 12:21:08 +00:00
Omar Polo
57d2fca4b4 add target test' alias for regress' 2022-03-26 11:57:27 +00:00
Anna “CyberTailor”
e20755180f add gg to make regress dependencies 2022-02-03 11:13:44 +01:00
Omar Polo
135307cfb0 install gg too 2022-01-30 13:35:45 +00:00
Omar Polo
7ac42a178b typo 2022-01-30 13:05:13 +00:00
Omar Polo
7c956fefc2 track file dependency using -MMD if available
While here, move the SRCS variable to the configure and add the
-includes in Makefile.local; it de-clutters the Makefile a bit.
2022-01-03 18:05:54 +00:00
Omar Polo
613c827165 add `gg' to the list of things to clean 2022-01-03 17:12:07 +00:00
Omar Polo
8dfacf0242 remove TAGS and compile_flags.txt from the list of default actions 2022-01-03 17:11:45 +00:00
Omar Polo
8e7e7cacf2 fix regress when TESTS is more than one word 2022-01-02 13:54:54 +00:00
Omar Polo
ec5c5ced4a make clean: don't clean regress, add cleanall for that 2022-01-02 11:49:48 +00:00
Omar Polo
72b033ef18 add ability to proxy requests
Add to gmid the ability to forwad a request to another gemini server and
thus acting like a reverse proxy.  The current syntax for the config
file is

	server "example.com" {
		...
		proxy relay-to host:port
	}

Further options (like the use of custom certificates) are planned.

cf. github issue #7
2021-12-29 20:36:54 +00:00
Omar Polo
5c7abf0151 reimplement gg
This is a better version of gg.  Initially it grew with flags directly
needed to the specific test cases I wanted to write, so it's ugly to use
but handy for tests.

This is a new and re-thought implementation that it is (hopefully)
easier to use both and "curl-like for gemini" but also for scripts and
tests cases.

One completely new feature is the proxying support with -P to send the
request to the given host.
2021-12-29 18:01:08 +00:00
Omar Polo
3096da4ef4 allow to run only a subset of the runtime tests
with
	make TESTS='test_1 test_2 ...' regress

now it's possible to run only that specified subset of tests.  It's
really useful during debugging :)
2021-10-07 08:55:44 +00:00
Anna “CyberTailor”
8518014cb9 fix "warning: jobserver unavailable: using -j1"
https://www.gnu.org/software/make/manual/html_node/Error-Messages.html
2021-07-11 09:23:53 +02:00