Finger Portal to WordPress Blog

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:

  1. Installed efingerd; I’m using the Debian binaries.
  2. Opened a hole in the firewall on port 79 so the outside world could access it (ufw allow 1965; utf reload).
  3. The default configuration for efingerd acts like a “typical” finger server, but it’s highly programmable to make it “smarter”. I:
    1. Blanked /etc/efingerd/list to prevent any output from “listing” the server (finger @danq.me).
    2. 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.
    3. Created /usr/local/bin/finger-to-wordpressa Ruby program that either (a) lists a selection of posts or (b) returns a specific post (stripping the HTML tags)

Screenshot showing this blog rendered as plain text as the result of running finger blog@danq.me at a Linux terminal.

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”.

Screenshot showing this blog post rendered as plain text as the result of running finger wp-finger@danq.me at a Linux terminal.

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.

Screenshot showing this blog rendered as plain text as the result of running finger blog@danq.me at a Linux terminal.× Screenshot showing this blog post rendered as plain text as the result of running finger wp-finger@danq.me at a Linux terminal.×

8 comments

  1. Alex Alex says:

    @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 →

  2. Dan Q Dan Q says:

    @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 →

  3. Alex Alex says:

    @dan I know I could look this up but… People are still maintaining gopher services?

    Read more →

  4. @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 →

  5. Dan Q Dan Q says:

    @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 →

  6. Dan Q Dan Q says:

    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!)
  7. @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 →

  8. @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 →

Reply here

Your email address will not be published. Required fields are marked *

Reply on your own site

Reply elsewhere

You can reply to this post on Facebook, Mastodon (@dan@danq.me), LinkedIn, Mastodon (@blog@danq.me).

Reply by email

I'd love to hear what you think. Send an email to b20779@danq.me; be sure to let me know if you're happy for your comment to appear on the Web!