ZNC 1.6.0 Changes since ZNC 1.4 New === * Switch versioning scheme to ... * Add settings for which SSL/TLS protocols to use (SSLProtocols), which ciphers to enable (SSLCiphers). By default TLSv1+ are enabled, SSLv2/3 are disabled. Default ciphers are what Mozilla advices: https://wiki.mozilla.org/Security/Server_Side_TLS#Intermediate_compatibility_.28default.29 * Validate SSL certificates. * Allow clients to specify an ID as part of username (user[@identifier][/network]). Currently not used, but modules can use it. * Add alias module for ZNC-side command interception and processing. * Support character encodings with separate settings for networks, and for clients. It replaces older charset module, which didn't work well with webadmin, log and other modules. * Support X-Forwarded-For HTTP header, used with new TrustedProxy setting. * Add URIPrefix option for HTTP listeners, used with reverse proxy. * Store query buffers per query the same way it's done for channels, add new option AutoClearQueryBuffer. * Add DisableChan command to *status, it was available only in webadmin before. * Allow wildcards in arguments of Help commands of *status and various modules. * Support IRCv3.2 batches, used for buffer playbacks. * Support IRCv3.2 self-message. * Remove awaynick module. It's considered bad etiquette. * Add JoinDelay setting, which allows a delay between connection to server, and joining first channel. By default it joins immediately after connect. * Make Detach, EnableChan and DisableChan commands of *status accept multiple channels. * znc-buildmod: Build output to the current working directory. * Wrap long lines in tables (e.g. in Help or ListAvailMods commands). * Support ECDHE if available in OpenSSL. * Report ZNC version more consistently, add HideVersion setting, which hides ZNC version from public. * Bump compiler requirements to support C++11. This means GCC 4.7+, Clang 3.2+, SWIG 3.0.0+. Fixes ===== * Disable TLS compression. * Disallow setting ConnectDelay to zero, don't hammer server with our failed connects. * Simplify --makeconf. * Fix logic to find an available nick when connecting to server. * Fix handling of CTCP flood. * Allow network specific quit messages. * Make various text labels gender-neutral. * Fix finding SWIG 3 on FreeBSD. * Handle multi-receiver NOTICE and PRIVMSG. * Make channels follow user-level settings when appropriate. * Write disabled status to config for disabled channels. * Fix double output in messages from modules. * Fix memory leak in gzip compression in HTTP server. * Use random DNS result instead of choosing the same one every time. * Fix HTTP basic auth. * Mention network in message shown if client didn't send PASS. Modules ======= * autoattach: ** Make it also a network module. * autoreply: ** Use NOTICE instead of PRIVMSG. * autoop: ** Add support for multiple hostmasks per user. * awaystore: ** Store CTCP ACTIONs too. ** Reset timer and return from away when a client does a CTCP ACTION. ** Allows use of strftime formatting in away messages. * bouncedcc: ** Fix quotes in file names. ** Fix check for "Connected" state. * buffextras: ** Make it also a network module. * chansaver: ** Fix saving channel keys. ** Add support for loading as a global module. * controlpanel: ** Add AddChan, DelChan commands, useful for admins to edit other users' channels, was available only in webadmin before. ** Check if adding a new channel succeeded. ** Revise Help output. ** Allow wildcards for GetChan and SetChan. * flooddetach: ** Show current value in Lines and Secs commands. ** Add Silent [yes|no] command, similar to route_replies. * listsockets: ** Show traffic stats. * log: ** Use only lower case characters in log filenames. ** Use directories and YYYY-MM-DD filename by default. ** Add support for logging rules. E.g. /msg *log setrules #znc !#* * modperl: ** Fix some int_t types. * modpython: ** Fix calling overloaded methods with parameter CString&. ** Support CZNC::GetUserMap(). ** Set has_args and args_help_text from module. ** Release python/swig ownership when adding object created in python to ZNC container. ** Fix some int_t types. ** Enable default arguments feature of SWIG 3.0.4. No functionality change, it just makes generated code a bit more beautiful. * nickserv: ** Support tddirc.net. ** Remove commands Ghost, Recover, Release, Group. The same functionality is available via new alias module. * q: ** Add JoinOnInvite, JoinAfterCloaked options. ** Don't cloak host on first module load if already connected to IRC. ** Add web configuration. ** Use HMAC-SHA-256 instead of HMAC-MD5. * route_replies: ** Handle numerics 307 and 379 in /whois reply. Handle IRCv3.2 METADATA numerics. * sample: ** Make it a network module, which are easier to write. * sasl: ** Remove DH-BLOWFISH and DH-AES. See http://nullroute.eu.org/~grawity/irc-sasl-dh.html and http://kaniini.dereferenced.org/2014/12/26/do-not-use-DH-AES-or-DH-BLOWFISH.html for details. * savebuff: ** Do not skip channels with AutoClearChanBuffer=true. ** Handle empty password in SetPass the same way as during startup. * simple_away: ** Apply auto-away on load if no user is connected. * stickychan: ** Don't join channels when not connected. * watch: ** Add support for detached-only clients, and detached-only channels. * webadmin: ** Combine "List Users" and "Add User". ** Module argument autocomplete="off", for nickserv module, which contains password in argument before first save. ** For every module show in which other levels that module is loaded (global/user/network). ** Open links to wiki pages about modules in separate window/tab. ** Support renaming a network (it was already possible outside of webadmin, via /znc MoveNetwork). However, it doesn't support moving networks between users yet, for that use /znc command. ** Add missing page title on Traffic page. ** Improve navigation: "Save and continue". ** Clarify that timestamp format is useless with server-time. Internal ======== * Move Csocket to git submodule. * Unit tests, via GTest. * Allow lambdas for module command callbacks. * New modules hooks: OnSendToClient, OnSendToIRC, OnJoining, OnMode2, OnChanBufferPlayLine2, OnPrivBufferPlayLine2. * Add methods to CString: StartsWith, EndsWith, Join, Find, Contains, and Convert. * Add limited support for using threads in modules: CModuleJob class. * Inherit CClient and CIRCSock from a common class CIRCSocket. * Add CZNC::CreateInstance to make porting ZNC to MSVC a bit easier. * Add CUtils::Get/SetMessageTags(). * Add CIRCNetwork::FindChans(). * Add CChan::SendBuffer(client, buffer) overload. * Add CIRCNetwork::LoadModule() helper. * Add CClient::IsPlaybackActive(). * Web: Discard sessions in LRU order. * Introduce CaseSensitivity enum class. * Fix CNick::Parse(). * Remove redundant CWebSocket::GetModule(). * Switch from CSmartPtr to std::shared_ptr. * Fix GetClients() const correctness. * Make self-signed cert with SHA-256, provide DH parameters in --makepem. * Use override keyword. * Show username of every http request in -D output. * Split CUserTimer into CIRCNetworkPingTimer and CIRCNetworkJoinTimer. * Give a reason for disabled features during ./configure, where it makes sense. * Use make-tarball.sh for nightlies too. * Revise CChan::JoinUser() & AttachUser(). * Modules: use public API. * Modules: use AddCommand(). * Add ChangeLog.md.