# titanit ![Build](https://github.com/YGGverse/titanit/actions/workflows/build.yml/badge.svg) [![Dependencies](https://deps.rs/repo/github/YGGverse/titanit/status.svg)](https://deps.rs/repo/github/YGGverse/titanit) [![crates.io](https://img.shields.io/crates/v/titanit.svg)](https://crates.io/crates/titanit) File share server for Gemini & Titan protocols > [!NOTE] > > Project in development! ## Install ``` bash cargo install titanit ``` ## Setup ### Generate PKCS (PFX) ``` bash openssl genpkey -algorithm RSA -out server.pem -pkeyopt rsa_keygen_bits:2048 openssl req -new -key server.pem -out request.csr openssl x509 -req -in request.csr -signkey server.pem -out server.crt -days 365 openssl pkcs12 -export -out server.pfx -inkey server.pem -in server.crt ``` ## Launch ### Arguments * `--bind`, `-b` required, server `host:port` to listen incoming connections * `--identity`, `-i` required, filepath to server identity in PKCS (PFX) format * `--password`, `-p` optional, unlock encrypted `identity` by passphrase * `--size`, `-s` optional, max size limit in bytes (unlimited by default) * `--mime`, `-m` optional, uploads MIME type whitelist (comma separated, all by default) * `--directory`, `-d` optional, uploads target directory (`public` by default) * `--redirect`, `-r` optional, redirection URL on request handle complete (e.g. `gemini://localhost`) ### Start ``` bash titanit --bind 127.0.0.1:1965 \ --identity path/to/server.pfx ``` ### titan it! * `titan://127.0.0.1`