code.ivysaur.me
nmdc-ircfrontend
An IRC protocol frontend for an NMDC server.
This program 'wraps' an NMDC server to make it available to IRC clients. It implements the IRC server protocol, but is not itself an IRC server, deferring to the upstream NMDC server in all salient cases. From a layering perspective it occupies the same position as the web interface.
The intent of this project is to expand client library and application support on platforms where the NMDC community has not been able to spend effort (e.g. Apple iOS client, ruby/rust/erlang libraries, greater choice in web interfaces).
TLS (SSL) support is not integrated. To host the IRC frontend over TLS, please use a reverse proxy in much the same manner as for NMDCS.
License
This program uses some code from the AGPLv3 project https://github.com/eXeC64/Rosella , from which it inherits the Affero GPLv3 license. Anyone hosting a modified version of this software is required to release their changes under the terms of the AGPLv3.
Features
- Seamless roundtrip transition between NMDC
/me
and IRCCTCP ACTION
- IRC client's "Real Name" exposed as NMDC Description
- IRC client's
CTCP VERSION
exposed as NMDC client tag, with heuristic truncation - NMDC server's title exposed as IRC channel topic
- Login with passworded nick (classic
PASS
, notSASL
) - Full nick list integration including op status
- Support IRC client changing nick via NMDC upstream reconnection
- Automatic join to single-enforced chatroom
- Multithreaded
- Single binary deployment
Usage
Usage of nmdc-ircfrontend:
-autojoin
Automatically join clients to the channel (default true)
-bind string
The address:port to bind to and listen for clients on (default ":6667")
-hubsecurity string
Nick used for administrative events (default "Hub-Security")
-servername string
Server name displayed to clients (default "nmdc-ircfrontend")
-upstream string
Upstream NMDC/ADC server (default "127.0.0.1:411")
-verbose
Display debugging information
Compatibility
This section was last updated on or around the release of 1.3.0. Current compatibility may differ.
NMDC's smaller community has standardised around comparatively few protocol implementations by means of necessity. In comparison, there are a lot of IRC client implementations with slightly differing interpretations of the protocol.
For passworded DC usernames, your IRC PASS username must be the same as your IRC nickname.
Tested working:
- AndChat
- AndroIRC
- Atomic
- Hexchat
- HoloIRC
- Irssi
- LiteIRC
- Mango IRC
- mIRC 7
- Mutter
- Revolution IRC
- Weechat
- Yaaic
Unusable:
- Rocket.chat 0.6x IRC plugin (can join room and recieve PMs after some regex tweaking)
Changelog
2018-03-24 1.3.0
- Feature: Support ADC hubs
- Compatibility: Fix missing userlist in LiteIRC (since 1.2.2)
- Compatibility: Avoid sending empty room list (fixes Yaaic, atomic, Revolution IRC)
- Update libnmdc to 0.17
- ⬇️ nmdc-ircfrontend-1.3.0-win64.7z (818.71 KiB)
- ⬇️ nmdc-ircfrontend-1.3.0-win32.7z (766.17 KiB)
- ⬇️ nmdc-ircfrontend-1.3.0-src.zip (23.00 KiB)
- ⬇️ nmdc-ircfrontend-1.3.0-linux64.tar.xz (937.04 KiB)
- ⬇️ nmdc-ircfrontend-1.3.0-linux32.tar.xz (876.77 KiB)
2017-05-28 1.2.3
- Fix a regression with userlist display on HexChat (other IRC client compatibility unknown)
- ⬇️ nmdc-ircfrontend-1.2.3-win64.7z (751.55 KiB)
- ⬇️ nmdc-ircfrontend-1.2.3-win32.7z (687.16 KiB)
- ⬇️ nmdc-ircfrontend-1.2.3-src.zip (21.03 KiB)
- ⬇️ nmdc-ircfrontend-1.2.3-linux64.tar.xz (865.07 KiB)
- ⬇️ nmdc-ircfrontend-1.2.3-linux32.tar.xz (799.88 KiB)
2017-05-27 1.2.2
- Update libnmdc to 0.14
- Fix a crash that could occur if the server is scanned by a non-irc client
- ⬇️ nmdc-ircfrontend-1.2.2-win64.7z (751.37 KiB)
- ⬇️ nmdc-ircfrontend-1.2.2-win32.7z (686.93 KiB)
- ⬇️ nmdc-ircfrontend-1.2.2-src.zip (19.78 KiB)
- ⬇️ nmdc-ircfrontend-1.2.2-linux64.tar.xz (865.31 KiB)
- ⬇️ nmdc-ircfrontend-1.2.2-linux32.tar.xz (799.69 KiB)
2016-11-29 1.2.1
- Update libnmdc to 0.11
- Fix an issue with -devel version tag in 1.2.0 release binaries
- ⬇️ nmdc-ircfrontend-1.2.1-win64.7z (750.20 KiB)
- ⬇️ nmdc-ircfrontend-1.2.1-win32.7z (685.56 KiB)
- ⬇️ nmdc-ircfrontend-1.2.1-src.zip (20.88 KiB)
- ⬇️ nmdc-ircfrontend-1.2.1-linux64.tar.xz (855.09 KiB)
- ⬇️ nmdc-ircfrontend-1.2.1-linux32.tar.xz (798.09 KiB)
2016-08-27 1.2.0
- Feature: Support WHOIS (display NMDC user's description + client software)
- Feature:
-version
command-line option - Compatibility: Demote 'Lite IRC' to 'Usable with bugs' section
- Update libnmdc to r9 (fix protocol issues)
- Update golang to 1.7 (smaller binary size)
- ⬇️ nmdc-ircfrontend-1.2.0-win64.7z (747.07 KiB)
- ⬇️ nmdc-ircfrontend-1.2.0-win32.7z (682.37 KiB)
- ⬇️ nmdc-ircfrontend-1.2.0-src.zip (20.84 KiB)
- ⬇️ nmdc-ircfrontend-1.2.0-linux64.tar.xz (851.35 KiB)
- ⬇️ nmdc-ircfrontend-1.2.0-linux32.tar.xz (794.09 KiB)
2016-05-10 1.1.0
- Feature: Support renaming own client during connection (
/nick
) - Enhancement: Option to set Hub-Security nick (needed for initial CTCP, upgraded after upstream connection)
- Compatibility: Apply user-agent-specific hacks for mIRC and Atomic clients not nicely handling PRIVMSG with blank sender
- Compatibility: Better heuristic detection for client tag extraction
- Fix an issue causing the default client tag (nmdc-ircfrontend) to briefly appear in the NMDC user list, by (briefly) delaying the upstream join unless CTCP VERSION response comes in
- Fix an issue generating malformed version numbers in NMDC client tag
- ⬇️ nmdc-ircfrontend-1.1.0-win64.7z (896.08 KiB)
- ⬇️ nmdc-ircfrontend-1.1.0-win32.7z (819.77 KiB)
- ⬇️ nmdc-ircfrontend-1.1.0-src.zip (20.46 KiB)
- ⬇️ nmdc-ircfrontend-1.1.0-linux64.tar.xz (989.59 KiB)
- ⬇️ nmdc-ircfrontend-1.1.0-linux32.tar.xz (924.09 KiB)
2016-05-08 1.0.0
- Initial public release
- ⬇️ nmdc-ircfrontend-1.0.0-win64.7z (890.16 KiB)
- ⬇️ nmdc-ircfrontend-1.0.0-win32.7z (817.71 KiB)
- ⬇️ nmdc-ircfrontend-1.0.0-src.zip (20.98 KiB)
- ⬇️ nmdc-ircfrontend-1.0.0-linux64.tar.xz (987.32 KiB)
- ⬇️ nmdc-ircfrontend-1.0.0-linux32.tar.xz (922.65 KiB)