ffa42c0183
Signed-off-by: kim (grufwub) <grufwub@gmail.com> |
3 years ago | |
---|---|---|
cmd | 4 years ago | |
core | 3 years ago | |
docs | 3 years ago | |
gemini | 3 years ago | |
gopher | 3 years ago | |
.gitignore | 3 years ago | |
LICENSE.md | 4 years ago | |
README.md | 3 years ago | |
build.sh | 3 years ago | |
generate_cert.sh | 4 years ago | |
get-mime-types.sh | 3 years ago | |
go.mod | 3 years ago | |
go.sum | 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 owngo-config
library
Further Docs
Future plans
-
improve the build scripts...
-
gemini vhosts
-
chroot setup script
-
Gemini enforce TLS client validity / certificate zones
-
SCGI