You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
kim (grufwub) ffa42c0183 bump version to release v3.1.8
Signed-off-by: kim (grufwub) <grufwub@gmail.com>
3 years ago
cmd add initial support for gemini, version bump to v3.0.0-alpha 4 years ago
core bump version to release v3.1.8 3 years ago
docs update example config 3 years ago
gemini improve error logging 3 years ago
gopher use new version of go-errors (much improved syntax, *hopefully* more performant) 3 years ago
.gitignore update gitignore 3 years ago
LICENSE.md move LICENSE to LICENSE.md 4 years ago
README.md update README format 3 years ago
build.sh update compiled binaries 3 years ago
generate_cert.sh consolidate scripts to build.sh, move out of scripts/ 4 years ago
get-mime-types.sh add comments 3 years ago
go.mod update go-bufpools version 3 years ago
go.sum remove old library versions from go module files 3 years ago

README.md

Gophi

A server with Gopher & Gemini protocol support in GoLang!

Unix (like) OSes only. Cross-compiled to way too many architectures. Build-script now much improved, but still not pretty...

I work on open-source projects like this and many others for free. If you would like to help support my work that would be hugely appreciated 💕 donate here

Binary releases at:

  • gemini://iim.gay/files/gophi/

  • gopher://iim.gay/1/files/gophi/

For now, Gophi compilation is reliant on a version of Go that has latest POSIX syscall fixes cherry picked, e.g. my fork

Features

  • Built with security, concurrency and efficiency in mind

  • LRU file caching with user-controlled cache size, max cached file size, refresh frequency and max file age before being marked as stale

  • Buffer pools to minimize allocations

  • CGI/1.1 support

  • URL encoding with query support

  • Path access restrictions with regex (see usage)

  • Request remapping with regex (see usage)

  • User server spaces (see usage)

  • Separate system and access logging

  • Chroot and dropping permissions to provided user+group (see extra notes for why you may want to do this over manually executing binary in a chroot)

  • Only 1 external dependency, go-toml brought in by my own go-config library

Further Docs

Usage

Example Configuration

CGI compliance

Gopher specific information

Gemini specific information

Extra notes

Future plans

  • improve the build scripts...

  • gemini vhosts

  • chroot setup script

  • Gemini enforce TLS client validity / certificate zones

  • SCGI