~fd/finger-ring

It's like a webring, but over the finger protocol
Update flake.lock; fix IP address printing for IPv4-mapped IPv6 addresses; update config to show IPv6 example
Update docs, strip binary, update flake.lock
Add mailing list link

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: 'nextuser@example.com'
    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