astraeus [-c <config_file>] [-v] [-help]
Astraeus is my "good enough" Gemini server, written in pure OCaml. It is fairly featureful, including:
The server uses Lwt and Tls_lwt in order to operate its network layer, and manages to maintain both relatively low memory footprint and relatively high performance. While simple security guard rails are in place (rejecting any paths including "..", timeouts, etc), user & group isolation of the process is always recommended.
More information on SIGI can be found at its specification below:
Below is an example configuration file for Astraeus, utilizing s-expressions.
; The socket binding address. (bind 127.0.0.1 1965) ; The TCP socket backlog maximum, default is 128. (backlog 128) ; Whether or not to enable SIGI support for all hosts. (sigi false) ; The default virtual host to use, this is optional. If this is omitted, ; "53 Proxy Request Refused" will be raised for any unknown hosts. (default-host localhost) ; The virtual hosts: (virtual-host name path privkey pubkeys...) ; Path roots MUST NOT end with a forward slash (/), ; otherwise errors may occur. (virtual-host localhost root private.pem public.pem) (virtual-host another.localhost geml geml.private.pem geml.public.pem)
This program is free software: you can redistribute it and/or modify it under the terms of the Affero GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Affero GNU General Public License for more details.
You should have received a copy of the Affero GNU General Public License along with this program. If not, see <https://www.gnu.org/licenses/>.