48 lines
1.6 KiB
Markdown
48 lines
1.6 KiB
Markdown
# cassini
|
|
|
|
cassini is a [gemini](https://gemini.circumlunar.space) ring written in go.
|
|
it's like a [webring](https://en.wikipedia.org/wiki/Webring), except it
|
|
connects the geminispace instead of the web.
|
|
|
|
this version of cassini is a edit-rewrite-fork-thing of the
|
|
[original](https://sr.ht/~nbsp/cassini), written a few years back, amended to
|
|
use SCGI instead of run as its own server, for tilde.town.
|
|
|
|
## usage
|
|
```sh
|
|
$ go build
|
|
$ ./cassini [-socket cassini.sock] [-list ring.txt] [-index index.gmi]
|
|
```
|
|
|
|
the optional `-list` argument allows you to specify the path of a plaintext file
|
|
containing the list of capsules. if unset, cassini will look for a `ring.txt` on
|
|
the same directory where it resides.
|
|
|
|
the optional `-index` argument allows you to specify a gemtext file to serve
|
|
when requesting the root directory of your domain. if unset, cassini will look
|
|
for an `index.gmi` on the same directory where it resides.
|
|
|
|
the plaintext file should contain a list of key-value pairs, where the key is a
|
|
unique username and the value is a gemini URL, like so:
|
|
|
|
```
|
|
user1 gemini://example.org/1
|
|
user2 gemini://example.net/~user2
|
|
user3 gemini://example.com/welcome.gmi
|
|
```
|
|
|
|
the index file can optionally contain the keyword `{{ list }}`, which will be
|
|
substituted for a list of all members in the list.
|
|
|
|
## linking
|
|
|
|
- `gemini://tilde.town/~nbsp/ring/next/<user>` to go to to the next capsule in
|
|
the ring
|
|
- `gemini://tilde.town/~nbsp/ring/previous/<user>` to go to to the next capsule
|
|
in the ring
|
|
- `gemini://tilde.town/~nbsp/ring/random` to jump to a random capsule
|
|
|
|
## license
|
|
|
|
AGPL version 3 only
|