mirror of https://github.com/omar-polo/gmid.git
import the capsule/website
This commit is contained in:
parent
568419b2c1
commit
ae6870fa3b
|
@ -31,3 +31,6 @@ regress/puny-test
|
|||
regress/*.o
|
||||
regress/gg
|
||||
regress/gmid.pid
|
||||
|
||||
site/gmid.1.html
|
||||
site/gmid.1.txt
|
||||
|
|
|
@ -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 > $@
|
|
@ -0,0 +1,3 @@
|
|||
# gmid website/capsule
|
||||
|
||||
These are the sources for the gmid website and Gemini capsule.
|
|
@ -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
|
|
@ -0,0 +1,210 @@
|
|||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<title>gmid | contrib</title>
|
||||
<meta charset="utf8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<style>
|
||||
body {
|
||||
font-family: monospace;
|
||||
font-size: 14px;
|
||||
max-width: 780px;
|
||||
margin: 0 auto;
|
||||
padding: 20px;
|
||||
padding-bottom: 80px;
|
||||
}
|
||||
|
||||
h1::before {
|
||||
content: "# ";
|
||||
}
|
||||
|
||||
h2 {
|
||||
margin-top: 40px;
|
||||
}
|
||||
|
||||
h2::before {
|
||||
content: "## ";
|
||||
}
|
||||
|
||||
h3::before {
|
||||
content: "### ";
|
||||
}
|
||||
|
||||
blockquote {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
blockquote::before {
|
||||
content: "> ";
|
||||
}
|
||||
|
||||
blockquote p {
|
||||
font-style: italic;
|
||||
display: inline;
|
||||
}
|
||||
|
||||
p.link::before {
|
||||
content: "→ ";
|
||||
}
|
||||
|
||||
strong::before { content: "*" }
|
||||
strong::after { content: "*" }
|
||||
|
||||
hr {
|
||||
border: 0;
|
||||
height: 1px;
|
||||
background-color: #222;
|
||||
width: 100%;
|
||||
display: block;
|
||||
margin: 2em auto;
|
||||
}
|
||||
|
||||
img {
|
||||
border-radius: 5px;
|
||||
}
|
||||
|
||||
pre {
|
||||
overflow: auto;
|
||||
padding: 1rem;
|
||||
background-color: #f0f0f0;
|
||||
border-radius: 3px;
|
||||
}
|
||||
|
||||
pre.banner {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
code, kbd {
|
||||
color: #9d109d;
|
||||
}
|
||||
|
||||
img {
|
||||
display: block;
|
||||
margin: 0 auto;
|
||||
max-width: 100%;
|
||||
}
|
||||
|
||||
@media (prefers-color-scheme: dark) {
|
||||
body {
|
||||
background-color: #222;
|
||||
color: white;
|
||||
}
|
||||
|
||||
a {
|
||||
color: aqua;
|
||||
}
|
||||
|
||||
hr {
|
||||
background-color: #ddd;
|
||||
}
|
||||
|
||||
pre {
|
||||
background-color: #353535;
|
||||
}
|
||||
|
||||
code, kbd {
|
||||
color: #ff4cff;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 400px) {
|
||||
pre.banner { font-size: 9px; }
|
||||
}
|
||||
|
||||
@media (max-width: 500px) {
|
||||
pre.banner { font-size: 10px; }
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<header>
|
||||
<nav>
|
||||
<a href="/">Home</a> | contrib | <a href="gmid.1.html">docs</a>
|
||||
</nav>
|
||||
</header>
|
||||
<h1>contrib</h1>
|
||||
<p>
|
||||
This directory is for additional contributed files which may be
|
||||
useful.
|
||||
</p>
|
||||
<p>Contents:</p>
|
||||
<ul>
|
||||
<li><a href="#dockerfile">Dockerfile</a></li>
|
||||
<li><a href="#openbsd-rc">OpenBSD rc file</a></li>
|
||||
<li><a href="#systemd-unit-file">Systemd unit file</a></li>
|
||||
<li><a href="#vim-syntax-files">Vim syntax files</a></li>
|
||||
</ul>
|
||||
<hr />
|
||||
<h2 id="dockerfile">Dockerfile</h2>
|
||||
<p>
|
||||
<a href="https://git.omarpolo.com/gmid/tree/contrib/Dockerfile">
|
||||
<code>contrib/Dockerfile</code></a>
|
||||
is a simple Dockerfile. The resulting image is a classic alpine
|
||||
linux image with a statically linked gmid installed as
|
||||
<code>/bin/gmid</code>.
|
||||
</p>
|
||||
<p>To build the image:</p>
|
||||
<pre># docker build -f contrib/Dockerfile -t gmid .</pre>
|
||||
<p>and then run it with something along the lines of:</p>
|
||||
<pre># 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</pre>
|
||||
<h2 id="openbsd-rc">OpenBSD rc file</h2>
|
||||
<p>
|
||||
<a href="https://git.omarpolo.com/gmid/tree/contrib/gmid">contrib/gmid</a>
|
||||
is a sample service file for OpenBSD <code>rc(8)</code>.
|
||||
To install it:
|
||||
</p>
|
||||
<pre># cp contrib/gmid /etc/rc.d</pre>
|
||||
<p>
|
||||
then the usual
|
||||
<code>rcctl [start|stop|enable|restart] gmid</code>
|
||||
are available.
|
||||
</p>
|
||||
<h2 id="systemd-unit-file">Systemd unit file</h2>
|
||||
<p>
|
||||
<a href="https://git.omarpolo.com/gmid/tree/contrib/gmid.service">
|
||||
<code>contrib/gmid.service</code></a>
|
||||
is a simple service file for
|
||||
systemd. To install it:
|
||||
</p>
|
||||
<pre># cp contrib/gmid.service /lib/systemd/system/gmid.service</pre>
|
||||
<p>
|
||||
then the usual
|
||||
<code>systemctl [status|start|enable|stop] gmid</code>
|
||||
commands can be used to manage the server.
|
||||
</p>
|
||||
<p>Some things to keep in mind:</p>
|
||||
<ul>
|
||||
<li>
|
||||
the <code>ExecStart</code> path depends on the installation.
|
||||
</li>
|
||||
<li>
|
||||
decomment <code>User</code> and <code>Group</code> to start
|
||||
gmid without root priviledges. It's not needed, since gmid
|
||||
can lower its privileges, but may come in handy.
|
||||
</li>
|
||||
</ul>
|
||||
<h2 id="vim-syntax-files">Vim syntax files</h2>
|
||||
<p>
|
||||
<a href="https://git.omarpolo.com/gmid/tree/contrib/vim">
|
||||
<code>contrib/vim</code></a>
|
||||
contains a syntax highlighting for vim. To install it, just
|
||||
copy the files to <code>~/.vim</code>
|
||||
or <code>/usr/share/vim/vimfiles</code>, e.g.
|
||||
</p>
|
||||
<pre>$ mkdir -p ~/.vim
|
||||
$ cp -R contrib/vim/* ~/.vim/</pre>
|
||||
<p>To enable Syntastic checker, add to your vimrc:</p>
|
||||
<pre>let g:syntastic_gmid_checkers = ['gmid']</pre>
|
||||
<p>The end result is something like this:</p>
|
||||
<a href="vim-screenshot.png">
|
||||
<img src="vim-screenshot.png" alt="Screenshot of vim editing gmid.conf with syntax highlighting" />
|
||||
</a>
|
||||
</body>
|
||||
</html>
|
|
@ -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.
|
|
@ -0,0 +1,367 @@
|
|||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<title>gmid</title>
|
||||
<meta charset="utf8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<style>
|
||||
body {
|
||||
font-family: monospace;
|
||||
font-size: 14px;
|
||||
max-width: 780px;
|
||||
margin: 0 auto;
|
||||
padding: 20px;
|
||||
padding-bottom: 80px;
|
||||
}
|
||||
|
||||
h1::before {
|
||||
content: "# ";
|
||||
}
|
||||
|
||||
h2 {
|
||||
margin-top: 40px;
|
||||
}
|
||||
|
||||
h2::before {
|
||||
content: "## ";
|
||||
}
|
||||
|
||||
h3::before {
|
||||
content: "### ";
|
||||
}
|
||||
|
||||
blockquote {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
blockquote::before {
|
||||
content: "> ";
|
||||
}
|
||||
|
||||
blockquote p {
|
||||
font-style: italic;
|
||||
display: inline;
|
||||
}
|
||||
|
||||
p.link::before {
|
||||
content: "→ ";
|
||||
}
|
||||
|
||||
strong::before { content: "*" }
|
||||
strong::after { content: "*" }
|
||||
|
||||
hr {
|
||||
border: 0;
|
||||
height: 1px;
|
||||
background-color: #222;
|
||||
width: 100%;
|
||||
display: block;
|
||||
margin: 2em auto;
|
||||
}
|
||||
|
||||
img {
|
||||
border-radius: 5px;
|
||||
}
|
||||
|
||||
pre {
|
||||
overflow: auto;
|
||||
padding: 1rem;
|
||||
background-color: #f0f0f0;
|
||||
border-radius: 3px;
|
||||
}
|
||||
|
||||
pre.banner {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
code, kbd {
|
||||
color: #9d109d;
|
||||
}
|
||||
|
||||
img {
|
||||
display: block;
|
||||
margin: 0 auto;
|
||||
max-width: 100%;
|
||||
}
|
||||
|
||||
@media (prefers-color-scheme: dark) {
|
||||
body {
|
||||
background-color: #222;
|
||||
color: white;
|
||||
}
|
||||
|
||||
a {
|
||||
color: aqua;
|
||||
}
|
||||
|
||||
hr {
|
||||
background-color: #ddd;
|
||||
}
|
||||
|
||||
pre {
|
||||
background-color: #353535;
|
||||
}
|
||||
|
||||
code, kbd {
|
||||
color: #ff4cff;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 400px) {
|
||||
pre.banner { font-size: 9px; }
|
||||
}
|
||||
|
||||
@media (max-width: 500px) {
|
||||
pre.banner { font-size: 10px; }
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<header>
|
||||
<nav>
|
||||
Home | <a href="contrib.html">contrib</a> | <a href="gmid.1.html">docs</a>
|
||||
</nav>
|
||||
</header>
|
||||
<h1>gmid</h1>
|
||||
<blockquote>
|
||||
<p>A Gemini server</p>
|
||||
</blockquote>
|
||||
<h2>Features</h2>
|
||||
<ul>
|
||||
<li>sandboxed by default on OpenBSD, FreeBSD and Linux</li>
|
||||
<li>able to reload the configuration on-the-fly without loosing connections</li>
|
||||
<li>punycode and IRI support</li>
|
||||
<li>CGI and FastCGI support</li>
|
||||
<li>virtual hosts and per-location rules</li>
|
||||
<li>low memory footprint</li>
|
||||
<li>event-based asynchronous I/O model</li>
|
||||
<li>rich configuration file</li>
|
||||
</ul>
|
||||
<h2>Install</h2>
|
||||
<p>Some distros provide a package — thanks to the maintainers!</p>
|
||||
<p>
|
||||
<a href="https://repology.org/project/gmid/versions">
|
||||
<img src="https://repology.org/badge/vertical-allrepos/gmid.svg" alt="Packaging status">
|
||||
</a>
|
||||
</p>
|
||||
<p>Source code and precompiled binaries for linux are available:</p>
|
||||
<ul>
|
||||
<li>
|
||||
<a href="https://github.com/omar-polo/gmid/releases/download/1.7.4/gmid-1.7.4.tar.gz">gmid-1.7.4.tar.gz</a>
|
||||
</li>
|
||||
</ul>
|
||||
<ul>
|
||||
<li>
|
||||
<a href="https://git.omarpolo.com/gmid/">git repository</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="gemini://git.omarpolo.com/gmid.git/">git repository via Gemini</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="https://github.com/omar-polo/gmid">GitHub mirror</a>
|
||||
</li>
|
||||
</ul>
|
||||
<ul>
|
||||
<li>
|
||||
<a href="https://github.com/omar-polo/gmid/releases/download/1.7.4/gmid.linux.aarch64">gmid.linux.aarch64</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="https://github.com/omar-polo/gmid/releases/download/1.7.4/gmid.linux.amd64">gmid.linux.amd64</a>
|
||||
</li>
|
||||
</ul>
|
||||
<p>
|
||||
When in doubt, compile from source: it’s easy and takes less
|
||||
than a minute on a raspberry pi 3. The dependencies are:
|
||||
</p>
|
||||
<ul>
|
||||
<li>libevent</li>
|
||||
<li>OpenSSL/LibreSSL</li>
|
||||
<li>libtls (from either LibreSSL or LibreTLS)</li>
|
||||
<li>yacc or GNU bison</li>
|
||||
</ul>
|
||||
<p>Once all the dependencies are installed, building is as easy as:</p>
|
||||
<pre>$ 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</pre>
|
||||
<p>
|
||||
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.
|
||||
</p>
|
||||
<ul>
|
||||
<li>
|
||||
<a href="https://github.com/omar-polo/gmid/releases/download/1.7.4/SHA256">SHA256</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="https://github.com/omar-polo/gmid/releases/download/1.7.4/SHA256.gpg">SHA256.gpg</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="https://github.com/omar-polo/gmid/releases/download/1.7.4/SHA256.sig">SHA256.sig</a>
|
||||
</li>
|
||||
</ul>
|
||||
<p>To verify the signatures with signify(1)</p>
|
||||
<pre>$ 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</pre>
|
||||
<h2>Changelog for the last versions</h2>
|
||||
<p>1.7.4 “Space-dye Vest” fourth bugfix release — Released September 24, 2021</p>
|
||||
<p>This version includes the following bugfix:</p>
|
||||
<ul>
|
||||
<li>
|
||||
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
|
||||
</li>
|
||||
</ul>
|
||||
<p>and the relative regression test.</p>
|
||||
<hr />
|
||||
<p>1.7.3 “Space-dye Vest” third bugfix release — Released September 18, 2021</p>
|
||||
<h3>Improvements</h3>
|
||||
<ul>
|
||||
<li>follows symlinks</li>
|
||||
<li>improved documentation and added key generation example (thanks! Anna)</li>
|
||||
</ul>
|
||||
<h3>Bugfix</h3>
|
||||
<ul>
|
||||
<li>fix syslog logging on FreeBSD. Reported by Karl Jeacle, thanks!</li>
|
||||
<li>don't crash if <code>-c</code> is missing in configtest mode (<code>-n</code>). Reported by heph, thanks!</li>
|
||||
<li>allow fstat64 on linux (needed by glibc on aarch64). Reported by pine, thanks!</li>
|
||||
</ul>
|
||||
<hr />
|
||||
<p>1.7.2 “Space-dye Vest” second bugfix release — Released July 19, 2021</p>
|
||||
<p>This version includes the following bugfix:</p>
|
||||
<ul>
|
||||
<li>
|
||||
An un-initialized field in the configless code path leads to a
|
||||
crash on the first request.
|
||||
</li>
|
||||
</ul>
|
||||
<p>and the relative regression test.</p>
|
||||
<hr />
|
||||
<p>1.7.1 “Space-dye Vest” bugfix release — Released July 11, 2021</p>
|
||||
<p>This version includes two bugfixes:</p>
|
||||
<ul>
|
||||
<li>use <code>${MAKE}</code> to recursively call make.</li>
|
||||
<li>
|
||||
fix the misleading example in the manpage: macros name may not
|
||||
be reserved words.
|
||||
</li>
|
||||
</ul>
|
||||
<hr />
|
||||
<p>1.7 “Space-dye Vest” — Released July 10, 2021</p>
|
||||
<p>
|
||||
Starting from this version gmid doesn't depend on lex anymore,
|
||||
but yacc is still needed.
|
||||
</p>
|
||||
<h3>New Features</h3>
|
||||
<ul>
|
||||
<li>initial fastcgi support! (it’s still young!)</li>
|
||||
<li>
|
||||
added user-defined macros, either via <code>-Dname=val</code> or
|
||||
directly in the configuration file.
|
||||
</li>
|
||||
<li>new <code>include</code> keyword to load additional configuration files.</li>
|
||||
<li>new <code>env</code> rule to define environment vars for CGI scripts.</li>
|
||||
<li>new <code>alias</code> rule to define hostname aliases for a server.</li>
|
||||
<li>allow <code>root</code> to be specified per-location block.</li>
|
||||
<li>pidfile support with the new <code>-P</code> cli flag.</li>
|
||||
<li>
|
||||
define <code>TLS_VERSION</code>, <code>TLS_CIPHER</code> and
|
||||
<code>TLS_CIPHER_STRENGTH</code> for CGI scripts.
|
||||
</li>
|
||||
</ul>
|
||||
<h3>Improvements</h3>
|
||||
<ul>
|
||||
<li>
|
||||
remove limits on the number of virtual hosts and location
|
||||
blocks that can be defined.
|
||||
</li>
|
||||
<li>print the datetime when logging to stderr.</li>
|
||||
<li>
|
||||
use <code>text/x-patch</code> for <code>.patch</code> and <code>.diff</code> files.
|
||||
</li>
|
||||
<li>sort the auto index alphabetically.</li>
|
||||
<li>various improvements to the log management.</li>
|
||||
<li>drop the dependency on lex.</li>
|
||||
<li>
|
||||
added <code>--help</code> as synonym of <code>-h</code> and
|
||||
<code>-V</code>/<code>--version</code> to print the version.
|
||||
</li>
|
||||
<li>
|
||||
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 <code>$</code>-macros.
|
||||
</li>
|
||||
</ul>
|
||||
<h3>Bug fixes</h3>
|
||||
<ul>
|
||||
<li>
|
||||
correctly handle CGI scripts that replies with the maxium
|
||||
header length allowed.
|
||||
</li>
|
||||
<li>fixed the <code>static</code> target.</li>
|
||||
<li>
|
||||
fixed recursive mkdirs for configless mode (i.e. create
|
||||
<code>~/.local/share/gmid</code>)
|
||||
</li>
|
||||
<li>
|
||||
logs sent to syslog now have proper priority (before every
|
||||
message ended up as LOG_CRIT). Found by Anna
|
||||
“CyberTailor”, thanks!
|
||||
</li>
|
||||
<li>
|
||||
ensure <code>%p</code> (path) is always absolute in
|
||||
<code>block return</code> rules.
|
||||
</li>
|
||||
<li>
|
||||
fix automatic certificate generation, it caused problems on
|
||||
some adroid devices. Found by Gnuserland, thanks!
|
||||
</li>
|
||||
<li>document the <code>log</code> rule.</li>
|
||||
<li>
|
||||
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!
|
||||
</li>
|
||||
<li>
|
||||
various improvements to the configure script, notified and
|
||||
fixed by Anna “CyberTailor”, thanks!
|
||||
</li>
|
||||
<li>added a timeout to the regression tests.</li>
|
||||
</ul>
|
||||
<h3>Breaking changes</h3>
|
||||
<ul>
|
||||
<li>
|
||||
if duplicate rules are found in the configuration file, an
|
||||
error is now raised instead of silently using only the last
|
||||
value.
|
||||
</li>
|
||||
<li>
|
||||
(sort of) <code>gg</code> moved to <code>regress</code> as
|
||||
it's only used in the regression suite.
|
||||
</li>
|
||||
<li>
|
||||
(notice) the <code>mime "mime-type" "extension"</code> rule was deprecated and
|
||||
replaced by the new <code>map "mime-type" to-ext "extension"</code>. The
|
||||
<code>mime</code> rule will be removed in a future version
|
||||
because its syntax is incompatible with the new string
|
||||
auto-concat mechanism.
|
||||
</li>
|
||||
</ul>
|
||||
</body>
|
||||
</html>
|
|
@ -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" <<EOF
|
||||
/<style>
|
||||
a
|
||||
body { max-width: 960px; margin: 0 auto; }
|
||||
.
|
||||
wq
|
||||
EOF
|
Binary file not shown.
After Width: | Height: | Size: 31 KiB |
Loading…
Reference in New Issue