https://github.com/yggverse/titanit
Titan it! File share server for Titan protocol with Gemini frontend
https://github.com/yggverse/titanit
file-share gemini gemini-protocol native-tls server socket titan titan-protocol titanit tls
Last synced: 3 months ago
JSON representation
Titan it! File share server for Titan protocol with Gemini frontend
- Host: GitHub
- URL: https://github.com/yggverse/titanit
- Owner: YGGverse
- License: mit
- Created: 2025-02-20T03:35:59.000Z (3 months ago)
- Default Branch: main
- Last Pushed: 2025-02-24T04:19:34.000Z (3 months ago)
- Last Synced: 2025-02-28T14:45:50.109Z (3 months ago)
- Topics: file-share, gemini, gemini-protocol, native-tls, server, socket, titan, titan-protocol, titanit, tls
- Language: Rust
- Homepage: https://crates.io/crates/titanit
- Size: 51.8 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Funding: .github/FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
README
# Titan it!

[](https://deps.rs/repo/github/YGGverse/titanit)
[](https://crates.io/crates/titanit)File share server for Titan protocol with Gemini frontend
> [!NOTE]
>
> Project in development!## Install
``` bash
cargo install titanit
```## Setup
Generate PKCS (PFX)
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
* `--chunk`, `-c` optional, buffer chunk size (`1024` by default)
* `--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`)
* `--welcome`, `-w` optional, filepath to welcome page template (in gemtext format)### Start
``` bash
titanit --bind 127.0.0.1:1965 \
--identity path/to/server.pfx
```### Titan it!
* `gemini://127.0.0.1` - landing page
* `titan://127.0.0.1` - new file upload