commit ae6870fa3bf25561a3f6bd8465ba86307af5d5bb from: Omar Polo date: Mon Oct 04 10:42:35 2021 UTC import the capsule/website commit - 568419b2c1f71620095acd9bf3be6aaa2bbe43ee commit + ae6870fa3bf25561a3f6bd8465ba86307af5d5bb blob - e4a5ff4006151dfd6ad11756657c4811ac086b7c blob + d0d7cba7892bd86a5907b4ad29568b52e794ccaa --- .gitignore +++ .gitignore @@ -31,3 +31,6 @@ regress/puny-test regress/*.o regress/gg regress/gmid.pid + +site/gmid.1.html +site/gmid.1.txt blob - /dev/null blob + 77c7b22fb5ba30873a253a19d9c7de114d68b823 (mode 644) --- /dev/null +++ site/Makefile @@ -0,0 +1,9 @@ +.PHONY: all + +all: gmid.1.html gmid.1.txt + +gmid.1.html: ../gmid.1 + ./mdoc2html.sh $? $@ + +gmid.1.txt: ../gmid.1 + MANWIDTH=72 man -Tutf8 -l $? | col -b > $@ blob - /dev/null blob + 83650fee1a8ea3a4f9ad4f11608aaa3d644b3bf3 (mode 644) --- /dev/null +++ site/README.md @@ -0,0 +1,3 @@ +# gmid website/capsule + +These are the sources for the gmid website and Gemini capsule. blob - /dev/null blob + 4f453a063285875b311a99210d6c815f88c6fe10 (mode 644) --- /dev/null +++ site/contrib.gmi @@ -0,0 +1,66 @@ +=> / Home +=> /gmid.1.txt docs + +# Contrib + +This directory is for additional contributed files which may be useful. + +## Dockerfile + +=> https://git.omarpolo.com/gmid/tree/contrib/Dockerfile contrib/Dockerfile + +A sample Dockerfile. The resulting image is a classic alpine linux image with a statically linked gmid installed as /bin/gmid. +To build the image: + +```instructions to build the image +# docker build -f contrib/Dockerfile -t gmid . +``` +and then run it with something along the lines of: +```instruction to run the image +# docker run --rm -it -p 1965:1965 \ + -v gmid.conf:/etc/gmid.conf:ro \ + -v path/to/keys:/tls:ro \ + -v /var/gemini:/var/gemini:ro \ + gmid -c /etc/gmid.conf +``` + +## OpenBSD rc file + +=> https://git.omarpolo.com/gmid/tree/contrib/gmid contrib/gmid + +contrib/gmid is a sample service file for OpenBSD rc(8). To install it: +```command to install the rc file +# cp contrib/gmid /etc/rc.d +``` +then the usual ‘rcctl [start|stop|enable|restart] gmid’ are available. + +## Systemd unit file + +=> https://git.omarpolo.com/gmid/tree/contrib/gmid.service gmid.service + +A simple service file for systemd. To install it +```instructions to install the system file +# cp contrib/gmid.service /lib/systemd/system/gmid.service +``` +then the usual ‘systemctl [status|start|enable|stop] gmid’ commands can be used to manage the server. + +Some things to keep in mind: +* the ExecStart path depends on the installation +* decomment “User” and “Group” to start gmid without root priviledges. It’s not needed, since gmid can lower its privileges, but may come in handy. + +## Vim syntax files + +=> https://git.omarpolo.com/gmid/tree/contrib/vim contrib/vim + +contrib/vim contains a syntax highlighting for vim. To install it, just copy the files to ~/.vim or to /usr/share/vim/vimfiles, e.g.: +```install the vim syntax highlight in your home +$ mkdir -p ~/.vim +$ cp -R contrib/vim/* ~/.vim/ +``` + +To enable Syntastic checker, add to your vimrc: +``` +let g:syntastic_gmid_checkers = ['gmid'] +``` + +=> vim-screenshot.png Screenshot of vim editing gmid.conf blob - /dev/null blob + c9b5c2f01d0721ee1db02c32bb82c091593e53ae (mode 644) --- /dev/null +++ site/contrib.html @@ -0,0 +1,210 @@ + + + + gmid | contrib + + + + + +
+ +
+

contrib

+

+ This directory is for additional contributed files which may be + useful. +

+

Contents:

+ +
+

Dockerfile

+

+ + contrib/Dockerfile + is a simple Dockerfile. The resulting image is a classic alpine + linux image with a statically linked gmid installed as + /bin/gmid. +

+

To build the image:

+
# docker build -f contrib/Dockerfile -t gmid .
+

and then run it with something along the lines of:

+
# docker run --rm -it -p 1965:1965      \
+        -v gmid.conf:/etc/gmid.conf:ro  \
+        -v path/to/keys:/tls:ro         \
+        -v /var/gemini:/var/gemini:ro   \
+        gmid -c /etc/gmid.conf
+

OpenBSD rc file

+

+ contrib/gmid + is a sample service file for OpenBSD rc(8). + To install it: +

+
# cp contrib/gmid /etc/rc.d
+

+ then the usual + rcctl [start|stop|enable|restart] gmid + are available. +

+

Systemd unit file

+

+ + contrib/gmid.service + is a simple service file for + systemd. To install it: +

+
# cp contrib/gmid.service /lib/systemd/system/gmid.service
+

+ then the usual + systemctl [status|start|enable|stop] gmid + commands can be used to manage the server. +

+

Some things to keep in mind:

+ +

Vim syntax files

+

+ + contrib/vim + contains a syntax highlighting for vim. To install it, just + copy the files to ~/.vim + or /usr/share/vim/vimfiles, e.g. +

+
$ mkdir -p ~/.vim
+$ cp -R contrib/vim/* ~/.vim/
+

To enable Syntastic checker, add to your vimrc:

+
let g:syntastic_gmid_checkers = ['gmid']
+

The end result is something like this:

+ + Screenshot of vim editing gmid.conf with syntax highlighting + + + blob - /dev/null blob + bb7efef5c92cd99b8e422f5257857fe5bd168300 (mode 644) --- /dev/null +++ site/index.gmi @@ -0,0 +1,165 @@ +=> contrib.gmi contrib +=> /gmid.1.txt docs + +# gmid + +> A Gemini server + +## Features + +* sandboxed by default on OpenBSD, FreeBSD and Linux +* able to reload the configuration on-the-fly without loosing connections +* punycode and IRI support +* CGI and FastCGI support +* virtual hosts and per-location rules +* low memory footprint +* event-based asynchronous I/O model +* rich configuration file + +=> gmid.1.txt Read the manpage. + +## Install + +Some distros provide a package — thanks to the maintainers! + +=> https://repology.org/project/gmid/versions [https] Repology: packaging status for gmid + +Source code and precompiled binaries for linux are available: + +=> https://github.com/omar-polo/gmid/releases/download/1.7.4/gmid-1.7.4.tar.gz gmid-1.7.4.tar.gz + +=> https://git.omarpolo.com/gmid/ git repository +=> gemini://git.omarpolo.com/gmid.git/ git repository via Gemini +=> https://github.com/omar-polo/gmid GitHub mirror + +=> https://github.com/omar-polo/gmid/releases/download/1.7.4/gmid.linux.aarch64 gmid.linux.aarch64 +=> https://github.com/omar-polo/gmid/releases/download/1.7.4/gmid.linux.amd64 gmid.linux.amd64 + +When in doubt, compile from source: it’s easy and takes less than a minute on a raspberry pi 3. The dependencies are: + +* libevent +* OpenSSL/LibreSSL +* libtls (from either LibreSSL or LibreTLS) +* yacc or GNU bison + +Once all the dependencies are installed, building is as easy as: + +```Example of how to compile from source +$ curl -LO https://github.com/omar-polo/gmid/releases/download/1.7.4/gmid-1.7.4.tar.gz +$ tar xzvf gmid-1.7.4.tar.gz +$ cd gmid-1.7.4 +$ ./configure +$ make +$ sudo make install # eventually +``` + +A SHA256 file is available. However, that only checks for accidental corruption: you can use signify (SHA256.sig and the public key gmid-1.7.pub) or GPG. The hash of the signify public key is also included in the SHA256 file and thus signed with my GPG. The signify public key for the next release ‘gmid-1.8.pub’ is also included. + +=> https://github.com/omar-polo/gmid/releases/download/1.7.4/SHA256 SHA256 +=> https://github.com/omar-polo/gmid/releases/download/1.7.4/SHA256 SHA256.gpg +=> https://github.com/omar-polo/gmid/releases/download/1.7.4/SHA256.sig SHA256.sig + +To verify the signatures with signify(1) + +```Example of how to verify the signature with signify +$ signify -C -p gmid-1.7.pub -x SHA256.sig +Signature Verified +gmid-1.7.pub: OK +gmid-1.7.4.tar.gz: OK +gmid-1.8.pub: OK +gmid.linux.aarch64: OK +gmid.linux.amd64: OK +``` + +## Change log for the last versions + + +1.7.4 “Space-dye Vest” fourth bugfix release — Released September 24, 2021 + +This version incudes the following bugfix: + +* fix a possible out-of-bound access when handling a request for a non-existent file in the root directory of a vhost that's matched by the cgi option + +and the relative regression test. + + + + +1.7.3 “Space-dye Vest” third bugfix release — Released September 19, 2021 + +### Improvements + +* follows symlinks +* improved documentation and added key generation example (thanks! Anna) + +### Bugfix + +* fix syslog logging on FreeBSD. Reported by Karl Jeacle, thanks! +* don't crash if ``-c'' is missing in configtest mode (-n). Reported by heph, thanks! +* allow fstat64 on linux (needed by glibc on aarch64). Reported by pine, thanks! + + + + +1.7.2 “Space-dye Vest” second bugfix release — Released July 19, 2021 + +This version incudes the following bugfix: + +* an un-initialized field in the configless code path leads to a crash on the first request. + +and the relative regression test. + + + +1.7.1 “Space-dye Vest” bugfix release — Released July 11, 2021 + +This version includes two bugfixes: +* use ${MAKE} to recursively call make. +* fix the misleading example in the manpage: macros may not be reserved words + + + +1.7 “Space-dye Vest” — Released July 10, 2021 + +Starting from this version gmid doesn't depend on lex anymore, but yacc is still needed. + +### New features + +* initial fastcgi support! (it's still young!) +* added user-defined macros, either via ‘-Dname=val’ or directly in the configuration file. +* new ‘include’ keyword to load additional configuration files. +* new ‘env’ rule to define environment vars for CGI scripts. +* new ‘alias’ rule to define hostname aliases for a server. +* allow ‘root’ to be specified per-location block. +* pidfile support with the new ‘-P’ cli flag. +* define ‘TLS_VERSION’, ‘TLS_CIPHER’ and ‘TLS_CIPHER_STRENGTH’ for CGI scripts. + +### Improvements + +* remove limits on the number of virtual hosts and location blocks that can be defined. +* print the datetime when logging to stderr. +* use ‘text/x-patch’ for ‘.patch’ and ‘.diff’ files. +* sort the auto index alphabetically. +* various improvements to the log management. +* drop the dependency on lex. +* added ‘--help’ as synonym of ‘-h’ and ‘-V’/‘--version‘ to print the version. +* c-like handling of strings in the configuration file: when two or more strings are next to each-others, are automatically joined into a single string. This is particularly useful with $-macros. + +### Bug fixes + +* correctly handle CGI scripts that replies with the maxium header length allowed. +* fixed the static target. +* fixed recursive mkdirs for configless mode (i.e. create ‘~/.local/share/gmid’) +* logs sent to syslog now have proper priority (before every message ended up as LOG_CRIT). Found by Anna “CyberTailor”, thanks! +* ensure ‘%p’ (path) is always absolute in ‘block return’ rules. +* fix automatic certificate generation, it caused problems on some adroid devices. Found by Gnuserland, thanks! +* document the ‘log’ rule. +* the seccomp filter was reworked and now it's known to work properly on a vast range of architectures (to be more specific: all the architectures supported by alpine linux), see github issue #4. Prompted and tested by @begss, thanks! +* various improvements to the configure script, notified and fixed by Anna “CyberTailor”, thanks! +* added a timeout to the regression tests. + +### Breaking changes + +* if duplicate rules are found in the configuration file, an error is now raised instead of silently using only the last value. +* (sort of) ‘gg’ moved to ‘regress’ as it's only used in the regression suite. +* (notice) the “mime "mime-type" "extension"” rule was deprecated and replaced by the new “map "mime-type" to-ext "extension"”. The ‘mime’ rule will be removed in a future version because its syntax is incompatible with the new string auto-concat mechanism. blob - /dev/null blob + c97b689c4a97599581fd355ff459afe012298e1f (mode 644) --- /dev/null +++ site/index.html @@ -0,0 +1,367 @@ + + + + gmid + + + + + +
+ +
+

gmid

+
+

A Gemini server

+
+

Features

+ +

Install

+

Some distros provide a package — thanks to the maintainers!

+

+ + Packaging status + +

+

Source code and precompiled binaries for linux are available:

+ + + +

+ When in doubt, compile from source: it’s easy and takes less + than a minute on a raspberry pi 3. The dependencies are: +

+ +

Once all the dependencies are installed, building is as easy as:

+
$ curl -LO https://github.com/omar-polo/gmid/releases/download/1.7.4/gmid-1.7.4.tar.gz
+$ tar xzvf gmid-1.7.4.tar.gz
+$ cd gmid-1.7.4
+$ ./configure
+$ make
+$ sudo make install # eventually
+

+ A SHA256 file is available. However, that only checks for + accidental corruption: you can use signify (SHA256.sig and the + public key gmid-1.7.pub) or GPG. The hash of the signify public + key is also included in the SHA256 file and thus signed with my + GPG. The signify public key for the next release ‘gmid-1.8.pub’ + is also included. +

+ +

To verify the signatures with signify(1)

+
$ signify -C -p gmid-1.7.pub -x SHA256.sig
+Signature Verified
+gmid-1.7.pub: OK
+gmid-1.7.4.tar.gz: OK
+gmid-1.8.pub: OK
+gmid.linux.aarch64: OK
+gmid.linux.amd64: OK
+

Changelog for the last versions

+

1.7.4 “Space-dye Vest” fourth bugfix release — Released September 24, 2021

+

This version includes the following bugfix:

+ +

and the relative regression test.

+
+

1.7.3 “Space-dye Vest” third bugfix release — Released September 18, 2021

+

Improvements

+ +

Bugfix

+ +
+

1.7.2 “Space-dye Vest” second bugfix release — Released July 19, 2021

+

This version includes the following bugfix:

+ +

and the relative regression test.

+
+

1.7.1 “Space-dye Vest” bugfix release — Released July 11, 2021

+

This version includes two bugfixes:

+ +
+

1.7 “Space-dye Vest” — Released July 10, 2021

+

+ Starting from this version gmid doesn't depend on lex anymore, + but yacc is still needed. +

+

New Features

+ +

Improvements

+ +

Bug fixes

+ +

Breaking changes

+ + + blob - /dev/null blob + fae8467457c9a06fc1a4bcb090b88e82f9362eab (mode 755) --- /dev/null +++ site/mdoc2html.sh @@ -0,0 +1,21 @@ +#!/bin/sh +# +# usage: mdoc2html.sh src out +# +# converts the manpage `src' to the HTML file `out', tweaking the +# style + +set -e + +: ${1:?missing input file} +: ${2:?missing output file} + +man -Thtml -l "$1" > "$2" + +exec ed "$2" < +a + body { max-width: 960px; margin: 0 auto; } +. +wq +EOF blob - /dev/null blob + 8cc182e49c306faf9dffaf5af06bdf1f6fbc5096 (mode 644) Binary files /dev/null and site/vim-screenshot.png differ