An NMDC / ADC client protocol library for Golang. Written in golang Tags: nmdc =FEATURES= - Connect to NMDC and ADC hubs - SSL (NMDCS/ADCS) with option to ignore certificate validity - Autodetect NMDC/ADC protocol by timeout - Send public and private chat messages, UserCommand support - Protocol keepalives - Parse user details (including UserIP2 for NMDC) - Fast NMDC login via NoHello and QuickList - Both synchronous (callback) and asynchronous (channel) -based APIs, including example =GO GET= This package can be installed via go get: `go get code.ivysaur.me/libnmdc` [go-get]code.ivysaur.me/libnmdc git https://git.ivysaur.me/code.ivysaur.me/libnmdc.git[/go-get] =CHANGELOG= 2017-11-26 0.16 - Feature: Support connecting to ADC hubs - BREAKING: Simplify connection API - Vendor new dependency on github.com/cxmcc/tiger (MIT license) 2017-11-14 0.15 - Feature: Fallback reconnection if no data (not even keepalives) are recieved from the hub in 24 hours - Fix an issue with detecting protocol messages inside multi-line chat messages - Update examples and the default client version number 2017-02-09 0.14 - Fix an issue with crashing on malformed IP addresses supplied by the hub 2017-02-09 0.13 - Feature: Implement UserIP2 extension, to retrieve IP addresses of other users - Enhancement: Implement QuickList extension (reduce one network roundtrip during initial connection) - Enhancement: Implement NoHello extension (faster connection performance) - Enhancement: Implement ChatOnly extension - Fix an issue with not notifying client on all MyINFO updates 2017-02-05 0.12 - Fix an issue with mutex deadlock when accessing user information from a callback - Fix an issue with silent disconnection if a password was required but not present 2016-11-29 0.11 - BREAKING: Remove some exported methods - BREAKING: Fix an issue with missing sufficient parameters in the synchronous API - Enhancement: Improve output under godoc - Fix an issue with special characters appearing in recieved private messages - Fix an issue with parsing active/passive connection modes - Fix an issue with errors appearing on stdout 2016-10-08 r10 - Feature: Support `$UserCommand` 2016-08-27 r9 - Fix an issue with parsing MyINFO strings with zero-length speed descriptions - Fix an issue with not storing updated profile information 2016-05-10 r8 - Enhancement: Separate `ClientTag` and `ClientVersion` in `UserInfo` structs 2016-05-08 r7 - BREAKING: Remove direct access to `HubConnection.Users` map - Feature: Threadsafe user map accessor - Feature: Option to disable auto-reconnection - Feature: New `Disconnect()`, `UserCount()`, `UserExists()` functions - Enhancement: Support `$OpList`, add `IsOperator` member to `UserInfo` structs - Refactor into multiple files 2016-04-16 r6 - Fix an issue with calling `panic()` on certain types of abnormal network failure 2016-04-04 r5 - Enhancement: Support protocol keepalives - Enhancement: Support hub redirects (`$ForceMove`) 2016-04-03 r4 - Feature: Add synchronous API - Fix an issue with reading HubConnection's state parameter - Fix an issue with buffered protocol commands 2016-04-03 r3 - Feature: Add `SkipVerifyTLS` option - Fix an issue with calling `panic()` if connection failed 2016-04-02 r2 - Enhancement: Support NMDC-over-TLS (NMDCS) - Fix an issue recieving private messages - Fix an issue with calling `panic()` if connection failed - Fix an issue parsing URIs without a specified port - Move sample content into directory with excluded build 2016-02-12 r1 - Initial public release