An NNTP server for a circle of friends.
Find a file
2024-12-09 20:07:00 -03:00
groups Lots of changes. (See full log.) 2024-12-09 12:37:07 -03:00
images Fiat lux! 2024-12-05 18:23:19 -03:00
scripts README to learn to install it. 2024-12-09 20:07:00 -03:00
accounts.lisp README to learn to install it. 2024-12-09 20:07:00 -03:00
conf-home Lots of changes. (See full log.) 2024-12-09 12:37:07 -03:00
loop.asd Fiat lux! 2024-12-05 18:23:19 -03:00
loop.lisp README to learn to install it. 2024-12-09 20:07:00 -03:00
loop.nw README to learn to install it. 2024-12-09 20:07:00 -03:00
Makefile README to learn to install it. 2024-12-09 20:07:00 -03:00
noweb.sty Fiat lux! 2024-12-05 18:23:19 -03:00
peat Fiat lux! 2024-12-05 18:23:19 -03:00
README README to learn to install it. 2024-12-09 20:07:00 -03:00

(*) Introduction

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

  - you know how to manage a daemon with 

      https://cr.yp.to/daemontools.html

  - 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

  ~/quicklisp/local-projects/

and say 

  git clone https://git.antartida.xyz/loop/srv
  cd srv
  make build

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