This is an experimental implementation of the Finger protocol as it existed in 1977 in RFC 742.
Phalanges is released under the 3-clause BSD license.
Phalanges uses simple-build-tool to manage its external dependencies:
- Scala 2.8.1
- simple-build-tool 0.7.4
- Netty 3.2.4Final
- Configgy 2.0.2
- Specs 1.6.7
- Mockito 1.8.5
- Metrics 2.0.0-BETA10
First, update external dependencies and compile:
$ sbt clean update compile
Then edit and/or copy configuration files to where phalanges expects them to be:
$ sudo cp config/phalanges.conf /etc
$ sudo touch /etc/unknown.conf
User information is stored and loaded from config/user_map.json
by default.
By default, phalanges runs on 127.0.0.1 port 79. Because of this, you must run phalanges with sudo or as root:
$ sudo sbt run
While there are no known security issues, running experimental software that accepts external network connections is highly risky. If you would like to use phalanges on a public interface, consider running it on a high port and using NAT or a well-tested TCP proxy to expose it to the outside world.
You should now be able to use a finger client to query phalanges:
$ finger @127.0.0.1
[127.0.0.1]
Login Name
mcroydon Matt Croydon
robot A. Robot
$ finger mcroydon@127.0.0.1
[127.0.0.1]
mcroydon Matt Croydon
Plan:
Implement archaic protocols.
$ finger unknown@127.0.0.1
[127.0.0.1]
The user unknown was not found.
Phalanges logs its actions to logs/phalanges.log
by default. It also keeps track of the number of indexes and
users served since last reboot. This information can be found at http://127.0.0.1:9999/report/
by default.
Phalanges uses Metrics to instrument usage. There are currently meters for index and user requests served::
4/9/11 4:33:31 PM ==============================================================
com.postneo.phalanges.FingerHandler:
indexes:
count = 9
mean rate = 0.30 served/s
1-minute rate = 0.00 served/s
5-minute rate = 0.50 served/s
15-minute rate = 0.80 served/s
users:
count = 3
mean rate = 0.10 served/s
1-minute rate = 0.00 served/s
5-minute rate = 0.08 served/s
15-minute rate = 0.03 served/s
If you would like to monitor your metrics via JConsole, make sure you use sudo jconsole
so that you're running
JConsole as the same user as your app.
You can execute specs tests with sbt:
$ sbt clean update test
- Make storage backend configurable and create additional storage backends.
- Load user list from disk or datastore.
- Figure out how to use local configs and get rid of
/etc/unknown.conf
.