Kirk Strauser d75af48844 Sort directory listings, grouped by dirs then files
Heya! Thanks for putting Gemserv out there!
This changes directory listings so that all directories are listed (sorted), then all filenames are listed (sorted). You can see the output of this patch running at gemini://gemini.freeradical.zone/log/ . The downside is that now you’ll temporarily have 2 copies of the directory listing in RAM during the request: one in `list`, and a second copy divided across `dirs` and `files`. It seems unlikely that anyone’s currently using Gemserv to serve directories that just barely fit in RAM, so that seems pretty low risk. 🙂
- Kirk
2020-08-15 19:27:40 -04:00
2020-05-26 17:31:28 -04:00
2020-05-28 15:25:12 -04:00
2020-07-05 18:27:45 -04:00
2020-07-05 18:27:45 -04:00
2020-07-11 15:01:31 -04:00
2020-04-28 18:49:34 -04:00

# 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

Description
Miroir de https://git.sr.ht/~int80h/gemserv avec les modifications propres à Ti Nuage.
https://git.sr.ht/~int80h/gemserv
Readme 159 KiB
Languages
Rust 95.9%
Python 1.4%
Dockerfile 1%
Perl 0.9%
Shell 0.8%