-- Leo's gemini proxy

-- Connecting to 80h.dev:1965...

-- Connected

-- Sending request

-- Meta line: 20 text/gemini; lang=en

=== Gemserv ===

A gemini Server written in rust


Clone the repo with: git clone git://80h.dev/gemserv.git

Or clone it from srht: git clone https://git.sr.ht/~int80h/gemserv


=== Git Details ===


View 71 commits


Files



=== Readme ===

Gemserv


A gemini server written in rust.


Features


- Vhosts

- CGI

- User directories

- Reverse proxy

- Redirect

- SCGI


Installation and running


OpenSSL 1.1.0g or LibreSSL 2.7.0 or newer is required.


- 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.


NetBSD

If running on NetBSD you'll need to set the environmental variable OPENSSL_DIR

before compiling.


'export OPENSSL_DIR="/usr/pkg"'


Also to run you'll need to symlink libssl, and libcrypt to "/usr/lib" by

running:


'ln -s /usr/pkg/lib/libssl.so.1.1 /usr/lib'

'ln -s /usr/pkg/lib/libcrypt.so.1.1 /usr/lib'


Thanks to tiwesdaeg for figuring it out.


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


-- Response ended

-- Page fetched on Fri Jul 23 16:59:40 2021