2024-12-09 13:37:39 -03:00
|
|
|
(*) Introduction
|
2024-12-05 19:03:09 -03:00
|
|
|
|
2024-12-09 13:37:39 -03:00
|
|
|
LOOP is an NNTP server written in Common Lisp.
|
|
|
|
|
|
|
|
(*) Assumptions
|
|
|
|
|
|
|
|
We assume
|
|
|
|
|
|
|
|
- you run SBCL
|
|
|
|
|
|
|
|
- you have Quicklisp installed and knows how to use it
|
|
|
|
|
|
|
|
- you know how to use a TCP server such as
|
|
|
|
|
|
|
|
https://cr.yp.to/ucspi-tcp.html
|
2024-12-05 19:03:09 -03:00
|
|
|
|
2024-12-09 13:37:39 -03:00
|
|
|
- you know how to manage a daemon with
|
2024-12-05 19:03:09 -03:00
|
|
|
|
2024-12-09 13:37:39 -03:00
|
|
|
https://cr.yp.to/daemontools.html
|
2024-12-05 19:03:09 -03:00
|
|
|
|
2024-12-09 13:37:39 -03:00
|
|
|
- you have git and knows how to use it
|
|
|
|
|
|
|
|
(*) How to install it
|
|
|
|
|
|
|
|
LOOP is not in the Quicklisp repository, so we'll instruct you to
|
|
|
|
install it as a local project. Go to
|
2024-12-05 19:03:09 -03:00
|
|
|
|
|
|
|
~/quicklisp/local-projects/
|
|
|
|
|
2024-12-09 13:37:39 -03:00
|
|
|
and say
|
2024-12-05 19:03:09 -03:00
|
|
|
|
|
|
|
git clone https://git.antartida.xyz/loop/srv
|
|
|
|
cd srv
|
|
|
|
make build
|
|
|
|
|
2024-12-09 13:37:39 -03:00
|
|
|
Now you have the executable loop. Try it out:
|
|
|
|
|
|
|
|
--8<-------------------------------------------------------->8---
|
|
|
|
$ ./loop --help
|
|
|
|
NAME:
|
|
|
|
loop - An NNTP server for a circle of friends.
|
|
|
|
|
|
|
|
USAGE:
|
|
|
|
loop [options] [arguments ...]
|
|
|
|
|
|
|
|
OPTIONS:
|
|
|
|
--change-passwd <VALUE> <username> <new-password> changes password
|
|
|
|
--create-account <VALUE> <username> <invited-by> creates a new account
|
|
|
|
--help display usage information and exit
|
|
|
|
--logging turn on debug logging on stderr
|
|
|
|
--version display version and exit
|
|
|
|
-l, --list-accounts lists accounts
|
|
|
|
-r, --repl run a REPL on port 4006
|
|
|
|
-s, --server runs NNTP server reading from stdout
|
|
|
|
|
|
|
|
AUTHORS:
|
|
|
|
Circling Skies <loop@antartida.xyz>
|
|
|
|
|
|
|
|
LICENSE:
|
|
|
|
GPL v3
|
|
|
|
--8<-------------------------------------------------------->8---
|
|
|
|
|
|
|
|
You can talk to the NNTP server with -s:
|
|
|
|
|
|
|
|
--8<-------------------------------------------------------->8---
|
|
|
|
$ ./loop -s
|
|
|
|
200 Welcome! Say ``help'' for a menu.
|
|
|
|
quit
|
|
|
|
205 Good-bye.
|
|
|
|
--8<-------------------------------------------------------->8---
|
|
|
|
|
|
|
|
So now have your system run your TCP server of choice. For instance,
|
|
|
|
if you're using djb's tcpserver and would like LOOP to listen on port
|
|
|
|
1024, say
|
|
|
|
|
|
|
|
--8<-------------------------------------------------------->8---
|
|
|
|
$ tcpserver -v -HR 0.0.0.0 1024 ./loop -s
|
|
|
|
tcpserver: status: 0/40
|
|
|
|
--8<-------------------------------------------------------->8---
|
|
|
|
|
|
|
|
Using another terminal, telnet to your host on port 1024:
|
|
|
|
|
|
|
|
--8<-------------------------------------------------------->8---
|
|
|
|
$ telnet localhost 1024
|
|
|
|
Trying 127.0.0.1...
|
|
|
|
Connected to antartida.xyz.
|
|
|
|
Escape character is '^]'.
|
|
|
|
200 Welcome! Say ``help'' for a menu.
|
|
|
|
quit
|
|
|
|
205 Good-bye.
|
|
|
|
Connection closed by foreign host.
|
|
|
|
--8<-------------------------------------------------------->8---
|
|
|
|
|
|
|
|
Directory daemon/ in LOOP's source code has sample scripts to use with
|
|
|
|
djb's tcpserver and daemontools. If you never done this, it will be
|
|
|
|
better education if you learn to use daemontools and ucspi-tcp before
|
|
|
|
going live with LOOP community. It's easy and fun.
|
|
|
|
|
|
|
|
(*) Create your account
|
|
|
|
|
|
|
|
Accounts are kept in accounts.lisp. Create a first account with
|
|
|
|
|
|
|
|
./loop --create-account you
|