gmid/site/index.gmi

175 lines
6.6 KiB
Plaintext
Raw Normal View History

2021-10-04 12:42:35 +02:00
=> contrib.gmi contrib
2021-10-11 17:49:34 +02:00
=> /quickstart.gmi Quickstart
2021-10-04 12:42:35 +02:00
=> /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:
2021-10-15 11:12:54 +02:00
=> https://github.com/omar-polo/gmid/releases/download/1.7.5/gmid-1.7.5.tar.gz gmid-1.7.5.tar.gz
2021-10-04 12:42:35 +02:00
=> 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
2021-10-15 11:12:54 +02:00
=> https://github.com/omar-polo/gmid/releases/download/1.7.5/gmid.linux.aarch64 gmid.linux.aarch64
=> https://github.com/omar-polo/gmid/releases/download/1.7.5/gmid.linux.amd64 gmid.linux.amd64
2021-10-04 12:42:35 +02:00
When in doubt, compile from source: its 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
2021-10-15 11:12:54 +02:00
$ curl -LO https://github.com/omar-polo/gmid/releases/download/1.7.5/gmid-1.7.5.tar.gz
$ tar xzvf gmid-1.7.5.tar.gz
$ cd gmid-1.7.5
2021-10-04 12:42:35 +02:00
$ ./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.
2021-10-15 11:12:54 +02:00
=> https://github.com/omar-polo/gmid/releases/download/1.7.5/SHA256 SHA256
=> https://github.com/omar-polo/gmid/releases/download/1.7.5/SHA256 SHA256.gpg
=> https://github.com/omar-polo/gmid/releases/download/1.7.5/SHA256.sig SHA256.sig
2021-10-04 12:42:35 +02:00
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
2021-10-15 11:12:54 +02:00
gmid-1.7.5.tar.gz: OK
2021-10-04 12:42:35 +02:00
gmid-1.8.pub: OK
gmid.linux.aarch64: OK
gmid.linux.amd64: OK
```
## Change log for the last versions
2021-10-15 11:19:17 +02:00
1.7.5 “Space-dye Vest” fifth bugfix release — Released October 15, 2021
2021-10-15 11:12:54 +02:00
This version includes the following bugfix
* dont die when a connection is closed before being accepted by gmid (i.e. handle ECONNRESET)
2021-10-04 12:42:35 +02:00
1.7.4 “Space-dye Vest” fourth bugfix release — Released September 24, 2021
2021-10-15 11:12:54 +02:00
This version includes the following bugfix:
2021-10-04 12:42:35 +02:00
* 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.