https://github.com/treer/gemserv
my unofficial github copy of https://git.sr.ht/~int80h/gemserv (pulls from upstream are manual, so may lag)
https://github.com/treer/gemserv
gemini-protocol
Last synced: 8 months ago
JSON representation
my unofficial github copy of https://git.sr.ht/~int80h/gemserv (pulls from upstream are manual, so may lag)
- Host: GitHub
- URL: https://github.com/treer/gemserv
- Owner: Treer
- License: mit
- Created: 2021-07-30T11:42:43.000Z (almost 5 years ago)
- Default Branch: master
- Last Pushed: 2022-02-15T15:48:00.000Z (over 4 years ago)
- Last Synced: 2025-04-01T15:09:36.168Z (about 1 year ago)
- Topics: gemini-protocol
- Language: Rust
- Homepage:
- Size: 120 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README
- License: LICENSE
Awesome Lists containing this project
README
# Gemserv
A gemini server written in rust.
## Features
- Vhosts
- CGI
- User directories
- Reverse proxy
- Redirect
- SCGI
- Reload config on SIGHUP
## Installation and running
To run either run "cargo run /path/to/config" or if no configuration is
specified it will look for "/usr/local/etc/gemserv.conf"
### Prebuilt binaries
You can download prebuilt binaries for linux on the release page.
### Install from crates.io:
cargo install gemserv
### Install from docker
docker pull 080h/gemserv
### Build from source:
- Clone the repo
- If you want to use all features run 'cargo build --release' or if you only
want to serve static files run 'cargo build --release --no-default-features'
- Modify the config.toml to your needs
- Run './target/release/gemserv config.toml'
## Init scripts
In the init-scripts directory there's OpenRC(Courtesy of Tastytea) and systemd
service files.
## CGI and SCGI
There's example SCGI scripts for python and perl in the cgi-scripts directory.
In the configuration file there's "cgi" which is an optional bool to turn cgi
on. If it's true it'll run scripts from any directory. To limit it to only one
directory set "cgipath"
If "cgi" is false or not set the server will respond "Not Found" to any
executable file.
Scripts have 5 seconds to complete or they will be terminated.
### CGI Environments
These variables are preset for you. If you need more you can define them in the
config file under "cgienv"
- GEMINI_URL
- SERVER_NAME
- SERVER_PROTOCOL
- SERVER_SOFTWARE
- SCRIPT_NAME
- REMOTE_ADDR
- REMOTE_HOST
- REMOTE_PORT
- QUERY_STRING
- PATH_INFO
TLS variables
- AUTH_TYPE
- TLS_CLIENT_HASH
- REMOTE_USER
## Changelog
### [0.6.5] - 20220209
Bug fix: Another traversal bug.
### [0.6.4] - 20220202
Fixed a file system traversal bug. All previous versions are unsafe.