Blame


1 ae6870fa 2021-10-04 op => contrib.gmi contrib
2 7c6bf71d 2021-10-11 op => /quickstart.gmi Quickstart
3 ae6870fa 2021-10-04 op => /gmid.1.txt docs
4 ae6870fa 2021-10-04 op
5 ae6870fa 2021-10-04 op # gmid
6 ae6870fa 2021-10-04 op
7 ae6870fa 2021-10-04 op > A Gemini server
8 ae6870fa 2021-10-04 op
9 ae6870fa 2021-10-04 op ## Features
10 ae6870fa 2021-10-04 op
11 ae6870fa 2021-10-04 op * sandboxed by default on OpenBSD, FreeBSD and Linux
12 ae6870fa 2021-10-04 op * able to reload the configuration on-the-fly without loosing connections
13 ae6870fa 2021-10-04 op * punycode and IRI support
14 ae6870fa 2021-10-04 op * CGI and FastCGI support
15 ae6870fa 2021-10-04 op * virtual hosts and per-location rules
16 ae6870fa 2021-10-04 op * low memory footprint
17 ae6870fa 2021-10-04 op * event-based asynchronous I/O model
18 ae6870fa 2021-10-04 op * rich configuration file
19 ae6870fa 2021-10-04 op
20 ae6870fa 2021-10-04 op => gmid.1.txt Read the manpage.
21 ae6870fa 2021-10-04 op
22 ae6870fa 2021-10-04 op ## Install
23 ae6870fa 2021-10-04 op
24 ae6870fa 2021-10-04 op Some distros provide a package — thanks to the maintainers!
25 ae6870fa 2021-10-04 op
26 ae6870fa 2021-10-04 op => https://repology.org/project/gmid/versions [https] Repology: packaging status for gmid
27 ae6870fa 2021-10-04 op
28 ae6870fa 2021-10-04 op Source code and precompiled binaries for linux are available:
29 ae6870fa 2021-10-04 op
30 ae6870fa 2021-10-04 op => https://github.com/omar-polo/gmid/releases/download/1.7.4/gmid-1.7.4.tar.gz gmid-1.7.4.tar.gz
31 ae6870fa 2021-10-04 op
32 ae6870fa 2021-10-04 op => https://git.omarpolo.com/gmid/ git repository
33 ae6870fa 2021-10-04 op => gemini://git.omarpolo.com/gmid.git/ git repository via Gemini
34 ae6870fa 2021-10-04 op => https://github.com/omar-polo/gmid GitHub mirror
35 ae6870fa 2021-10-04 op
36 ae6870fa 2021-10-04 op => https://github.com/omar-polo/gmid/releases/download/1.7.4/gmid.linux.aarch64 gmid.linux.aarch64
37 ae6870fa 2021-10-04 op => https://github.com/omar-polo/gmid/releases/download/1.7.4/gmid.linux.amd64 gmid.linux.amd64
38 ae6870fa 2021-10-04 op
39 ae6870fa 2021-10-04 op When in doubt, compile from source: it’s easy and takes less than a minute on a raspberry pi 3. The dependencies are:
40 ae6870fa 2021-10-04 op
41 ae6870fa 2021-10-04 op * libevent
42 ae6870fa 2021-10-04 op * OpenSSL/LibreSSL
43 ae6870fa 2021-10-04 op * libtls (from either LibreSSL or LibreTLS)
44 ae6870fa 2021-10-04 op * yacc or GNU bison
45 ae6870fa 2021-10-04 op
46 ae6870fa 2021-10-04 op Once all the dependencies are installed, building is as easy as:
47 ae6870fa 2021-10-04 op
48 ae6870fa 2021-10-04 op ```Example of how to compile from source
49 ae6870fa 2021-10-04 op $ curl -LO https://github.com/omar-polo/gmid/releases/download/1.7.4/gmid-1.7.4.tar.gz
50 ae6870fa 2021-10-04 op $ tar xzvf gmid-1.7.4.tar.gz
51 ae6870fa 2021-10-04 op $ cd gmid-1.7.4
52 ae6870fa 2021-10-04 op $ ./configure
53 ae6870fa 2021-10-04 op $ make
54 ae6870fa 2021-10-04 op $ sudo make install # eventually
55 ae6870fa 2021-10-04 op ```
56 ae6870fa 2021-10-04 op
57 ae6870fa 2021-10-04 op 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.
58 ae6870fa 2021-10-04 op
59 ae6870fa 2021-10-04 op => https://github.com/omar-polo/gmid/releases/download/1.7.4/SHA256 SHA256
60 ae6870fa 2021-10-04 op => https://github.com/omar-polo/gmid/releases/download/1.7.4/SHA256 SHA256.gpg
61 ae6870fa 2021-10-04 op => https://github.com/omar-polo/gmid/releases/download/1.7.4/SHA256.sig SHA256.sig
62 ae6870fa 2021-10-04 op
63 ae6870fa 2021-10-04 op To verify the signatures with signify(1)
64 ae6870fa 2021-10-04 op
65 ae6870fa 2021-10-04 op ```Example of how to verify the signature with signify
66 ae6870fa 2021-10-04 op $ signify -C -p gmid-1.7.pub -x SHA256.sig
67 ae6870fa 2021-10-04 op Signature Verified
68 ae6870fa 2021-10-04 op gmid-1.7.pub: OK
69 ae6870fa 2021-10-04 op gmid-1.7.4.tar.gz: OK
70 ae6870fa 2021-10-04 op gmid-1.8.pub: OK
71 ae6870fa 2021-10-04 op gmid.linux.aarch64: OK
72 ae6870fa 2021-10-04 op gmid.linux.amd64: OK
73 ae6870fa 2021-10-04 op ```
74 ae6870fa 2021-10-04 op
75 ae6870fa 2021-10-04 op ## Change log for the last versions
76 ae6870fa 2021-10-04 op
77 ae6870fa 2021-10-04 op
78 ae6870fa 2021-10-04 op 1.7.4 “Space-dye Vest” fourth bugfix release — Released September 24, 2021
79 ae6870fa 2021-10-04 op
80 ae6870fa 2021-10-04 op This version incudes the following bugfix:
81 ae6870fa 2021-10-04 op
82 ae6870fa 2021-10-04 op * 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
83 ae6870fa 2021-10-04 op
84 ae6870fa 2021-10-04 op and the relative regression test.
85 ae6870fa 2021-10-04 op
86 ae6870fa 2021-10-04 op
87 ae6870fa 2021-10-04 op
88 ae6870fa 2021-10-04 op
89 ae6870fa 2021-10-04 op 1.7.3 “Space-dye Vest” third bugfix release — Released September 19, 2021
90 ae6870fa 2021-10-04 op
91 ae6870fa 2021-10-04 op ### Improvements
92 ae6870fa 2021-10-04 op
93 ae6870fa 2021-10-04 op * follows symlinks
94 ae6870fa 2021-10-04 op * improved documentation and added key generation example (thanks! Anna)
95 ae6870fa 2021-10-04 op
96 ae6870fa 2021-10-04 op ### Bugfix
97 ae6870fa 2021-10-04 op
98 ae6870fa 2021-10-04 op * fix syslog logging on FreeBSD. Reported by Karl Jeacle, thanks!
99 ae6870fa 2021-10-04 op * don't crash if ``-c'' is missing in configtest mode (-n). Reported by heph, thanks!
100 ae6870fa 2021-10-04 op * allow fstat64 on linux (needed by glibc on aarch64). Reported by pine, thanks!
101 ae6870fa 2021-10-04 op
102 ae6870fa 2021-10-04 op
103 ae6870fa 2021-10-04 op
104 ae6870fa 2021-10-04 op
105 ae6870fa 2021-10-04 op 1.7.2 “Space-dye Vest” second bugfix release — Released July 19, 2021
106 ae6870fa 2021-10-04 op
107 ae6870fa 2021-10-04 op This version incudes the following bugfix:
108 ae6870fa 2021-10-04 op
109 ae6870fa 2021-10-04 op * an un-initialized field in the configless code path leads to a crash on the first request.
110 ae6870fa 2021-10-04 op
111 ae6870fa 2021-10-04 op and the relative regression test.
112 ae6870fa 2021-10-04 op
113 ae6870fa 2021-10-04 op
114 ae6870fa 2021-10-04 op
115 ae6870fa 2021-10-04 op 1.7.1 “Space-dye Vest” bugfix release — Released July 11, 2021
116 ae6870fa 2021-10-04 op
117 ae6870fa 2021-10-04 op This version includes two bugfixes:
118 ae6870fa 2021-10-04 op * use ${MAKE} to recursively call make.
119 ae6870fa 2021-10-04 op * fix the misleading example in the manpage: macros may not be reserved words
120 ae6870fa 2021-10-04 op
121 ae6870fa 2021-10-04 op
122 ae6870fa 2021-10-04 op
123 ae6870fa 2021-10-04 op 1.7 “Space-dye Vest” — Released July 10, 2021
124 ae6870fa 2021-10-04 op
125 ae6870fa 2021-10-04 op Starting from this version gmid doesn't depend on lex anymore, but yacc is still needed.
126 ae6870fa 2021-10-04 op
127 ae6870fa 2021-10-04 op ### New features
128 ae6870fa 2021-10-04 op
129 ae6870fa 2021-10-04 op * initial fastcgi support! (it's still young!)
130 ae6870fa 2021-10-04 op * added user-defined macros, either via ‘-Dname=val’ or directly in the configuration file.
131 ae6870fa 2021-10-04 op * new ‘include’ keyword to load additional configuration files.
132 ae6870fa 2021-10-04 op * new ‘env’ rule to define environment vars for CGI scripts.
133 ae6870fa 2021-10-04 op * new ‘alias’ rule to define hostname aliases for a server.
134 ae6870fa 2021-10-04 op * allow ‘root’ to be specified per-location block.
135 ae6870fa 2021-10-04 op * pidfile support with the new ‘-P’ cli flag.
136 ae6870fa 2021-10-04 op * define ‘TLS_VERSION’, ‘TLS_CIPHER’ and ‘TLS_CIPHER_STRENGTH’ for CGI scripts.
137 ae6870fa 2021-10-04 op
138 ae6870fa 2021-10-04 op ### Improvements
139 ae6870fa 2021-10-04 op
140 ae6870fa 2021-10-04 op * remove limits on the number of virtual hosts and location blocks that can be defined.
141 ae6870fa 2021-10-04 op * print the datetime when logging to stderr.
142 ae6870fa 2021-10-04 op * use ‘text/x-patch’ for ‘.patch’ and ‘.diff’ files.
143 ae6870fa 2021-10-04 op * sort the auto index alphabetically.
144 ae6870fa 2021-10-04 op * various improvements to the log management.
145 ae6870fa 2021-10-04 op * drop the dependency on lex.
146 ae6870fa 2021-10-04 op * added ‘--help’ as synonym of ‘-h’ and ‘-V’/‘--version‘ to print the version.
147 ae6870fa 2021-10-04 op * 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.
148 ae6870fa 2021-10-04 op
149 ae6870fa 2021-10-04 op ### Bug fixes
150 ae6870fa 2021-10-04 op
151 ae6870fa 2021-10-04 op * correctly handle CGI scripts that replies with the maxium header length allowed.
152 ae6870fa 2021-10-04 op * fixed the static target.
153 ae6870fa 2021-10-04 op * fixed recursive mkdirs for configless mode (i.e. create ‘~/.local/share/gmid’)
154 ae6870fa 2021-10-04 op * logs sent to syslog now have proper priority (before every message ended up as LOG_CRIT). Found by Anna “CyberTailor”, thanks!
155 ae6870fa 2021-10-04 op * ensure ‘%p’ (path) is always absolute in ‘block return’ rules.
156 ae6870fa 2021-10-04 op * fix automatic certificate generation, it caused problems on some adroid devices. Found by Gnuserland, thanks!
157 ae6870fa 2021-10-04 op * document the ‘log’ rule.
158 ae6870fa 2021-10-04 op * 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!
159 ae6870fa 2021-10-04 op * various improvements to the configure script, notified and fixed by Anna “CyberTailor”, thanks!
160 ae6870fa 2021-10-04 op * added a timeout to the regression tests.
161 ae6870fa 2021-10-04 op
162 ae6870fa 2021-10-04 op ### Breaking changes
163 ae6870fa 2021-10-04 op
164 ae6870fa 2021-10-04 op * if duplicate rules are found in the configuration file, an error is now raised instead of silently using only the last value.
165 ae6870fa 2021-10-04 op * (sort of) ‘gg’ moved to ‘regress’ as it's only used in the regression suite.
166 ae6870fa 2021-10-04 op * (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.