michael-lazar / finger2020

👉 😳 A tiny, secure finger daemon for single-user UNIX systems
MIT License
16 stars 2 forks source link

finger2020

A tiny, secure finger daemon for single-user unix systems.

photo

Les Earnest, the creator of the original finger program, at SAIL circa 1976 (source).

About

This finger service uses files to load contact information, and will not extract any sensitive information directly from the host system. So relax! Only one user profile is supported (hence, "single-user"). It's intended to be used by a sysop to broadcast server news and/or personal contact information over the internet.

Operation

This program is designed to be hosted behind a systemd socket or a comparable inetd-like service. The program will read a one-line query from stdin. The response string will be written to stdout, and all error/logging messages will be directed to stderr and should be setup to route to an appropriate system log manager.

Query Support

Only the user list and user status queries are supported. Queries with ambiguous user names will be rejected. Queries with hostnames will be rejected. The verbose flag (/W) is accepted but will be ignored.

Usage

# Query user list
echo -e "\r\n" | finger2020

# Query user information
echo -e "username\r\n" | finger2020

Configuration

Settings are defined through environment variables.

FINGER_NAME

A string that will represent the user's finger name. This can be any arbitrary value and does not need to correspond to a real user on the system.

FINGER_CONTACT

This file replaces the section of the query response that contains information that finger would typically pull from /etc/passwd and the GECOS field. Common values to include in this section include login name, real name, phone number, office, address, and recent system activity.

FINGER_PROJECT

This file typically contains a multi-line "profile page" with additional information about the user. The information documented in this file does not frequently change.

FINGER_PLAN

This file typically contains a brief description of what the user is currently working on. This file is intended to be updated frequently and there are no restrictions on what type of information the user can include.

FINGER_INFO_LABELS

Set to "true" or "false" to toggle showing the 'Project:' and 'Plan:' labels in the response.

Links