~fd/finger-ring

It's like a webring, but over the finger protocol
Add mailing list link
Some semblance of documentation
Add systemd service with CAP_NET_BIND

refs

main
browse  log 

clone

read-only
https://git.sr.ht/~fd/finger-ring
read/write
git@git.sr.ht:~fd/finger-ring

You can also use your local clone with git send-email.

#The Finger Ring

A program that uses Finger to create a web/finger ring.

Try it out:

$ finger ersei@ersei.net

Problems? Send an email.

#Building

Building statically may be desired:

$ RUSTFLAGS='-C link-arg=-s' cargo build --release --target x86_64-unknown-linux-musl

Otherwise, build as usual for Rust programs.

$ cargo build --release

#Configuring

listen: '127.0.0.1:10079'
nonexistent: |-
  Hello {addr},
  You tried to finger non-existent user!!!
  Your attempt is logged and sent to C.I.A., K.G.B. and S.I.S.
  Expect a visit soon.

users:
  - name: 'user1'
    next: 'lily@lilysthings.org'
    description: |-
      User Name

      Hello {addr}, this is our dear user user1:
      Login: user1                          Name: User Name
      Directory: /home/user1                Shell: /bin/ksh
      Never logged in.
      No mail.
      Project:
      get computer to do the computer thing
      Plan:
                                                  ___           ___     
           _____        ___           ___        /  /\         /__/\    
          /  /::\      /  /\         /  /\      /  /:/         \  \:\   
         /  /:/\:\    /  /:/        /  /:/     /  /:/           \__\:\  
        /  /:/~/::\  /__/::\       /  /:/     /  /:/  ___   ___ /  /::\ 
       /__/:/ /:/\:| \__\/\:\__   /  /::\    /__/:/  /  /\ /__/\  /:/\:\
       \  \:\/:/~/:/    \  \:\/\ /__/:/\:\   \  \:\ /  /:/ \  \:\/:/__\/
        \  \::/ /:/      \__\::/ \__\/  \:\   \  \:\  /:/   \  \::/     
         \  \:\/:/       /__/:/       \  \:\   \  \:\/:/     \  \:\     
          \  \::/        \__\/         \__\/    \  \::/       \  \:\    
           \__\/                                 \__\/         \__\/    

      THE FINGERING next -> {next}

The program will automatically replace {addr} and {next} with the relevant values.

Change the listen parameter to listen on port 79. Do not run this program as root! Instead, set the proper capabilities for the program with a systemd service and CAP_NET_BIND:

[Unit]
Description=Finger Ring
Wants=networking.target
After=networking.target

[Service]
User=appliancering
Type=simple
ExecStart=/usr/bin/fingerringd --config /etc/fingerringd/fingerring.yaml
AmbientCapabilities = CAP_NET_BIND_SERVICE

[Install]
WantedBy = multi-user.target