Commit Graph

63 Commits

Author SHA1 Message Date
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
Omar Polo 2d383cbd5f remove last occurrences of lex 2021-06-16 15:00:52 +00:00
Omar Polo 74f0778b9a drop the dependency on lex by implementing yylex by ourselves
The actual implementation is based off doas' parse.y.  This gave us
various benefits, like cleaner code, \ to break long lines, better
handling of quotes etc...
2021-06-16 14:43:16 +00:00
Omar Polo f48e3b85a9 move gg to regress 2021-05-24 13:48:55 +00:00
Omar Polo 8ad1c57024 fastcgi: a first implementation
Not production-ready yet, but it's a start.

This adds a third ``backend'' for gmid: until now there it served
local files or CGI scripts, now FastCGI applications too.

FastCGI is meant to be an improvement over CGI: instead of exec'ing a
script for every request, it allows to open a single connection to an
``application'' and send the requests/receive the responses over that
socket using a simple binary protocol.

At the moment gmid supports three different methods of opening a
fastcgi connection:

 - local unix sockets, with: fastcgi "/path/to/sock"
 - network sockets, with: fastcgi tcp "host" [port]
   port defaults to 9000 and can be either a string or a number
 - subprocess, with: fastcgi spawn "/path/to/program"
   the fastcgi protocol is done over the executed program stdin

of these, the last is only for testing and may be removed in the
future.

P.S.: the fastcgi rule is per-location of course :)
2021-05-09 18:23:36 +00:00
Omar Polo 11c986679a sort the auto index alphabetically 2021-04-25 12:06:54 +00:00
Omar Polo 548c2849fa hide output of etags
even the message "sh: etags: not such file or directory" or whatever
seems to be confusing for users, so silent it.

(maybe it would be better not to automatically generate the TAGS, but
it's so handy...)
2021-04-14 15:06:27 +00:00
Omar Polo 8b462a5d17 fix static target 2021-03-29 09:42:06 +00:00
Omar Polo a3c5f7451a
make sure -o is passed to ${CC} in suffix rule 2021-02-23 13:43:33 +01:00
Omar Polo 6b78d24c31
clean objects in compat dir 2021-02-23 13:43:33 +01:00
Omar Polo 3abf91b0b4 improve logs management 2021-02-07 15:30:28 +00:00
Omar Polo ad58806e30 drop unused target iri_test 2021-02-01 19:30:55 +00:00
Omar Polo d5f4d615cf generate compile_flags for clangd 2021-02-01 19:30:38 +00:00
Omar Polo 91d7870bb7 typo 2021-01-30 14:38:32 +00:00
Omar Polo 1b246dbd3c remove unused target
"test" was replaced by "regress" a while ago
2021-01-30 14:37:57 +00:00
Omar Polo 44ee1bac8b use starts_with in puny.c 2021-01-27 15:35:09 +00:00
Omar Polo 3300cbe06a initial punycode support 2021-01-27 10:47:49 +00:00
Omar Polo c6b9ddecf6 gg may need some compat 2021-01-23 17:39:12 +00:00
Omar Polo 31a4993a94 use gg instead of gg.py for the regression suite 2021-01-23 17:10:00 +00:00
Omar Polo 497977d501 add gg, a barebones Gemini client 2021-01-23 16:56:24 +00:00
Omar Polo 5c2e310ede brand new regress suite 2021-01-22 16:48:04 +00:00
Omar Polo ac69e83aab improve install target 2021-01-21 13:50: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 5bc29bc915 remove README.md target
leftover from when README.md was generated by gmid.1
2021-01-18 22:52:13 +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 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