An open API service indexing awesome lists of open source software.

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

Awesome Lists containing this project

README

        

# Titan it!

![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 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