Finger Primer
The finger
protocol, first standardised way back in 1977, is a lightweight directory system
for querying resources on a local or remote shared system. Despite barely being used today, it’s so well-established that virtually every modern desktop operating system – Windows,
MacOS, Linux etc. – comes with a copy of finger
, giving it a similar ubiquity to web browsers! (If you haven’t yet, give it a go.)
If you were using a shared UNIX-like system in the 1970s through 1990s, you might run finger
to see who else was logged on at the same time as you, finger
chris
to get more information about Chris, or finger alice@example.net
to look up the details of Alice on the server example.net. Its ability to transcend the
boundaries of different systems meant that it was, after a fashion, an example of an early decentralised social network!
I first actively used finger
when I was a student at Aberystwyth University. The shared central computers osfa
and
osfb
supported it in what was a pretty typical way: users could add a .plan
and/or .project
file to their home directory and the contents of these
would be output to anybody using finger to look up that user, along with other information like what department they belonged to. I’m simulating from memory so this won’t be remotely
accurate, but broadly speaking it looked a little like this –
$ finger dlq9@aber.ac.uk Login: dlq9 Name: Dan Q Directory: /users/9/d/dlq9 Department: Computer Science Project: Working on my BEng Software Engineering. Plan: _______ ---' ____)____ ______) Finger me! _____) (____) ---.__(___)
It’s not just about a directory of people, though: you could finger
printers to see what their queues were like, finger
a time server to ask what time it was,
finger
a vending machine to see what drinks it
had available… even finger
for a weather forecast where you are (this one still works as shown below; try it for your own location!) –
$ finger oxford@graph.no -= Meteogram for Oxford, Oxfordshire, England, United Kingdom =- 'C Rain (mm) 12 11 10 ^^^=--=-- 9^^^ === 8 ^^^=== ====== ^^^ 7 ====== ===============^^^ =-- 6 =--=----- 5 4 3 | | | | | | | 1 mm 17 18 19 20 21 22 23 18/11 02 03 04 05 06 07_08_09_10_11_12_13_14 Hour W W W W W W W W W W W W W W W W W W W W W W Wind dir. 6 6 7 7 7 7 7 7 6 6 6 5 5 4 4 4 4 5 6 6 5 5 Wind(m/s) Legend left axis: - Sunny ^ Scattered = Clouded =V= Thunder # Fog Legend right axis: | Rain ! Sleet * Snow
If you’d just like to play with finger, then finger.farm is a great starting point. They provide free finger hosting and they’re easy to use (try
finger dan@finger.farm
to find me!). But I had something bigger in mind…
Fingering WordPress
What if you could finger
my blog. I.e. if you ran finger blog@danq.me
you’d see a summary of some of my recent posts, along with additional
addresses you could finger to read the full content of each. This could be the world’s first finger
-to-WordPress gateway; y’know, for
if you thought the world needed such a thing. Here’s how I did it:
-
Installed
efingerd
; I’m using the Debian binaries. - Opened a hole in the firewall on port 79 so the outside world could access it (
ufw allow 1965; utf reload
). - The default configuration for
efingerd
acts like a “typical”finger
server, but it’s highly programmable to make it “smarter”. I:- Blanked
/etc/efingerd/list
to prevent any output from “listing” the server (finger @danq.me
). - Replaced the contents of
/etc/efingerd/list
and/etc/efingerd/nouser
(which are run when a request matches, or doesn’t match, a user account name) with a call to my script:/usr/local/bin/finger-to-wordpress "$3"
.$3
holds the username that was requested, so we can act on it. - Created
/usr/local/bin/finger-to-wordpress
– a Ruby program that either (a) lists a selection of posts or (b) returns a specific post (stripping the HTML tags)
- Blanked
In future, I might use some extra tags or metadata to enhance finger
-friendly WordPress posts. The infrastructure’s in place already (I already have tags that I use to make
certain kinds of content available only via certain media – shh!). You might rightly as what the point is of this entire enterprise, of course, and you’d be well within your
rights to ask such a question. But I think the best answer available is “because Dan”.
If you want to see my blog in a whole new way, give it a go: run finger blog@danq.me
on your computer and follow the instructions.
@dan That is very silly :-D. Back in the day I wrote the XSLT to get the entirety of the Oxford University Computing Services website into a format where we could serve it over Gopher, and Firefox still supported it o/
Read more →
@alexdutton sadly Firefox doesn’t support Gopher out-of-the-box anymore, but there are plenty of tools that do (on Android, DiggieDog is my favourite Gopher client!).
Read more →
@dan I know I could look this up but… People are still maintaining gopher services?
Read more →
@dan Oh I love this! Really miss the noise of my 9.6k modem. Now imagine you could make #Mastodon look like this.. I’d be in heaven
mastodon
Read more →
@alexdutton Not just maintaining, but launching new ones! There’s a sort-of counterculture to the big, slow, corporate, privacy-destroying Web of today that’s lead rise to alternative protocols like Gemini and Spring ’83 (if you look into just one, let it be Gemini). There are a surprising number of #phlog (#Gopher blog) services out there!
Gopher
phlog
Read more →
In a conversation with a work colleague, I discovered that some Linux distros don’t come with
finger
as standard any more. Oh no! Luckily you can install it just about anywhere, but even if you can’t, here are three other ways you could try to read my blog via the Finger protocol:echo blog | nc danq.me 79
(using Netcat)cat <(echo blog) - | telnet danq.me 79
(using Telnet)lynx finger://danq.me/blog
(using Lynx, which still supports finger:// URLs as first-class citizens!)@dan Very cool.I think I found a bug though. Or maybe just something unimplemented.I was trying it out, and for normal finger-protocol requests it works fine. I.e., requests like:”blogrn”I tried it with whois-switch type finger-protocol request, but it doesn’t seem to work as I would expect it to work. I.e., requests like:”/W blogrn”At the very least, I would expect it to show the same as the previous request.
Read more →
@dan If you are using the classic “finger” program — I think you can make it do a whois-switch type finger-protocol request by doing something similar to:finger -l blog@danq.me
Read more →