An IRC protocol frontend for an NMDC server https://code.ivysaur.me/nmdc-ircfrontend/
Go to file
2020-05-06 18:57:07 +12:00
vendor vendor: commit Go vendor directory 2019-01-07 20:01:56 +13:00
.gitignore hg2git: convert ignores file 2019-01-07 20:01:21 +13:00
chatFormatting.go move chatformatting, quirks to separate package 2018-03-24 14:37:40 +13:00
clientTag_test.go client tags: assume atomic/yaaic are the latest abandonware versions 2018-03-24 15:36:41 +13:00
clientTag.go client tags: assume atomic/yaaic are the latest abandonware versions 2018-03-24 15:36:41 +13:00
go.mod convert build from godist.sh to Go Modules 2019-01-07 20:01:42 +13:00
go.sum convert build from godist.sh to Go Modules 2019-01-07 20:01:42 +13:00
LICENSE.txt Initial commit 2013-08-23 02:03:37 +01:00
main.go update help text to mention ADC support 2018-03-24 14:02:36 +13:00
quirks.go remove sendNamesOnWho quirk, use nickForGeneralMessages quirk on Yaaic as well as atomic 2018-03-24 15:40:20 +13:00
README.md doc/README: link to archived releases 2020-05-06 18:57:07 +12:00
REFERENCE.md doc: remove TODO.txt (moved to Gitea Issues) 2019-01-07 20:10:50 +13:00
server.go change "end of NAMES list" message to more closely match RocketChat's regexp 2018-03-24 16:20:48 +13:00
typedefs.go dev server version is 0.0, not 1.x.x-dev (easier numeric handling) 2018-03-24 15:36:56 +13:00

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 IRC CTCP 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, not SASL)
  • 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

2017-05-28 1.2.3

2017-05-27 1.2.2

2016-11-29 1.2.1

2016-08-27 1.2.0

2016-05-10 1.1.0

2016-05-08 1.0.0