lua-identd  Why lua-identd?

Why lua-identd?

Oidentd is complex. Identd is a protocol best relegated. The only reason we still use either of these things is to keep "~" from showing up in front of our ident on IRC. Oidentd had a bug on FreeBSD that when it was built in one's own repos, vs utilized from FreeBSD's quarterly branch repos, it could not service IPv6 appropriately. In the end, oidentd hasn't seen updates in years, but it may have picked up development again recently. Even so, why run something that does all the actual work of an identd, when you aren't and shouldn't be using it for anything other than IRC likely. If you're worrying with IRC and are using a bouncer (likely ZNC), then why not have a program that'll run alongside it and handle it for you, without doing all the real checks behind the scenes.

Enter lua-identd. It's an identd written in lua for the express purpose of integrating with ZNC. It might support other ways as well in the future for those who wish to have something of the sorts with their own ways of doing things than using a ZNC.

For now, it's a small, networked process, that should be (hopefully) bug-free in regards to it's mandate, service ident requests from IRC servers for your ZNC. It does not daemonize itself. It is another program's responsibility to daemonize it. The following should give an idea of it's useage. Don't look at it as hard, the instructions below may seem lengthy but they are fairly in depth. About half of it could be omitted as hand holding or FAQ's. Let us know how it works for you (or doesn't) by submitting a bug request or commenting on our "thanks for the good work" issue.

Getting the code

The current release is 0.1.0.

You have a few options as to getting the code at the moment that will work:

We'd recommend using the Tarball, because in the future, it might include some easy setup scripts per your OS.

Setup instructions:

This is designed to be ran as root. We encourage you to overview the code and insure that it will not violate your machine.

To get this running the following things will be needed:

Optionally, to make the process easier, use luarocks to install the formerly specified.

If you're running FreeBSD, you may need to manually install cqueues like the following:

fetch https://github.com/wahern/cqueues/archive/rel-20171014.tar.gz
tar xvf rel-20171014.tar.gz
cd cqueues-rel-20171014
make all 5.3
make install

The cqueues example assumes a root user will run make install, if not you'll need to do some edits to get it to install into a different location. It does require the gmake program to be installed pkg install gmake.

If you need to install luarocks from source, the following directions are specific for FreeBSD and will only need slight tweaking if you're using a Linux Distribution:

# if freebsd, use fetch, otherwise use wget
fetch https://github.com/luarocks/luarocks/archive/v2.4.4.tar.gz
tar xvf v2.4.4.tar.gz
cd luarocks-2.4.4
# change with-lua-include if using custom built lua and/or
# not on FreeBSD
./configure --with-lua-include=/usr/local/include/lua53
make build
make install

Once again, this assumes the make install step will be ran as root, it's left up to the user to do differently if they wish to have luarocks and/or cqueues not install system-wide.

If you're running FreeBSD you'll likely want to make use of the program daemon that comes with FreeBSD. If you're running a Linux Distribution you'll probably wish to attain software such as daemonize which is of sorts like daemon. It is up to you to create either a rc.conf, SysV init, OpenRC init, or systemd unit file. For our purposes we'll assume a moderately featureful version of cron and that you either have daemon, or daemonize and use these in the stead of tying into a system init.

To run, if you used luarocks, you need to get luarocks to setup your script, you'll need to use the actual locations of where you placed lua-identd (lidentd.lua) and so forth (we'll use $lidentd_path as the var for it):

luarocks path > ./start-lidentd.sh
echo $lua53_binary $lidentd_path >> ./start-lidentd.sh

Then crontab -e and add a (either daemonize or daemon) line to cron like so:

@reboot daemon $path/start-lidentd.sh

where $path evaluates to exactly where you stuck ./start-lidentd.sh.

If you want PID files and/or Lock files etc, it's up to you to read the documentation of "daemon" (FreeBSD), daemonize (Linux), or whatever tool you deign to use for this purpose of starting lua-identd at boot.

To setup the lua-identd program, just open it up, and look for the "Configuration Below" and "Configuration ends here" lines, all between it is for user editing. idp is where znc will place it's ident lines (znc identfile module). port is the port that it'll run on (if you wish to run it non-root you'll need to configure port forwarding for IPv4 and IPv6 to a different port). address defaults to "::" which is basically all IPv6 and IPv4, which you should leave be unless you're using multiple znc processes and thus need multiple lidentd processes to listen on different addresses (which may indicate that you are absent of the knowledge of znc's ability to connect to multiple networks and support multiple users). log_config defines what dir it'll log in, and what level's it'll log, and what level it'll log to the logfile it'll manage, or print to screen.

To setup the ZNC, you'll need to do the following:

/msg *identfile setformat %ident%
/msg *identfile setfile /home/znc/.oidentd.conf

The selection of file names and so forth are completely arbitrary and you are welcome to change things up as the system should be flexible enough to handle differences. The location of the file the lidentd software depends to have the related ident servicing text that ZNC provides can be anywhere you choose. The log locations for the lidentd software can go anywhere you choose. Much of this is more example than absolute the final say so on what to do to get up and running. Do customize this to how you wish to run your system.

Remember, lua-identd is designed to be ran as root, anything different and you've got some nice configuration to handle on your own.