An IRC protocol frontend for an NMDC server https://code.ivysaur.me/nmdc-ircfrontend/
Go to file
. 17db8d3f51 hgignore
--HG--
branch : nmdc-ircfrontend
2016-05-08 14:42:36 +12:00
.hgignore hgignore 2016-05-08 14:42:36 +12:00
godist.sh track godist.sh 2016-05-08 14:42:23 +12:00
LICENSE.txt Initial commit 2013-08-23 02:03:37 +01:00
main.go change default port to 6667 (the 6697 is meant for tls) 2016-05-08 14:33:21 +12:00
README.txt doc update 2016-05-08 14:41:11 +12:00
server.go serverside pings 2016-05-08 14:21:29 +12:00
TODO.txt doc update 2016-05-08 14:41:11 +12:00
typedefs.go serverside pings 2016-05-08 14:21:29 +12:00

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.

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.

Tags: NMDC 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
- 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")
  -servername string
        Server name displayed to clients (default "nmdc-ircfrontend")
  -upstream string
        Upstream NMDC server (default "127.0.0.1:411")
  -verbose
        Display debugging information`

=COMPATIBILITY=

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.

[b]Everything works:[/b]
- Hexchat
- Mango IRC
- AndroIRC
- Lite IRC
- Mutter
- Weechat

[b]Usable, with bugs:[/b]
- HoloIRC - Can't parse client tag, upstream bug https://github.com/tilal6991/HoloIRC/issues/140
- AndChat - Duplicate usernames appear, upstream bug https://github.com/znc/znc/issues/424
- Irssi - Ignorable warning "critical nicklist_set_host: assertion 'host != NULL' failed"

[b]Unusable:[/b]
- Yaaic - doesn't properly understand/parse the room join
- Atomic - doesn't properly understand/parse the room join, crashes on `PRIVMSG` with blank sender

=CHANGELOG=

2016-05-08 1.0.0
- Initial public release