Skip to content
Feb 23, 2016


ZNC 1.6.3
Changes since ZNC 1.6.2


* New character encoding is now applied immediately, without reconnect.
* Fixed build with LibreSSL.
* Fixed error 404 when accessing the web UI with the configured URI prefix,
  but without the `/` in the end.
* `znc-buildmod` now exits with non-zero exit code when the .cpp file is not found.
* Fixed `znc-buildmod` on Cygwin.
* ExpandString got expanded. It now expands `%znc%` to
  `ZNC <version> -`, honoring the global "Hide version" setting.
* Default quit message is switched from `ZNC <version> -` to `%znc%`,
  which is the same, but "automatically" changes the shown version when ZNC gets upgraded.
  Before, the old version was recorded in the user's quit message, and stayed the same
  regardless of the current version of ZNC.


* modperl:
    * Fixed a memory leak.
* sasl:
    * Added an option to show which mechanisms failed or succeeded.
* webadmin:
    * Fixed an error message on invalid user settings to say what exactly was invalid.
    * No more autocomplete password in user settings. It led to an error when ZNC
      thought the user is going to change a password, but the passwords didn't match.
Feb 18, 2016
Feb 8, 2016
Nov 15, 2015


ZNC 1.6.2
Changes since ZNC 1.6.1


* Fixed a use-after-delete in webadmin. It was already partially fixed in ZNC 1.4; since 1.4 it has been still possible to trigger, but much harder.
* Fixed a startup failure when awaynick and simple_away were both loaded, and simple_away had arguments.
* Fixed a build failure when using an ancient OpenSSL version.
* Fixed a build failure when using OpenSSL which was built without SSLv3 support.
* Bindhost was sometimes used as ident.
* `CAP :END` wasn't parsed correctly, causing timeout during login for some clients.
* Fixed channel keys if client joined several channels in single command.
* Fixed memory leak when reading an invalid config.


* autovoice:
    * Check for autovoices when we are opped.
* controlpanel:
    * Fixed `DelCTCPReply` case-insensitivity.
* dcc:
    * Add missing return statement. It was harmless.
* modpython:
    * Fixed a memory leak.
* modules_online:
    * Wrong ident was used before.
* stickychan:
    * Fixed to unstick inaccessible channels to avoid infinite join loops.


* Fixed the nick passed to `CModule::OnChanMsg()` so it has channel permissions set.
* Fixed noisy `-Winconsistent-missing-override` compilation warnings.
* Initialized some fields in constructors of modules before `OnLoad()`.


* Various modules had commands with empty descriptions.
* perform:
    * Say "number" instead of "nr".
* route_replies:
    * Make the timeout error message more clear.
Nov 2, 2015
Aug 3, 2015


ZNC 1.6.1
Changes since ZNC 1.6.0


* Fixed the problem that channels were no longer removed from the config despite of chansaver being loaded.
* Fixed query buffer size for users who have the default channel buffer size set to 0.
* Fixed a startup failure when simple_away was loaded after awaynick.
* Fixed channel matching commands, such as DETACH, to be case insensitive.
* Specified the required compiler versions in the configure script.
* Fixed a rare conflict of HTTP-Basic auth and cookies.
* Hid local IP address from the 404 page.
* Fixed a build failure for users who have `-Werror=missing-declarations` in their `CXXFLAGS`.
* Fixed `CXXFLAGS=-DVERSION_EXTRA="foo"` which is used by some distros to package ZNC.
* Fixed `znc-buildmod` on Cygwin.


* chansaver:
    * Fixed random loading behavior due to an uninitialized member variable.
* modpython:
    * Fixed access to `CUser::GetUserClients()` and `CUser::GetAllClients()`.
* sasl:
    * Improved help texts for the SET and REQUIREAUTH commands.
* savebuff:
    * Fixed periodical writes on the disk when the module is loaded after startup.
* webadmin:
    * Fixed module checkboxes not to claim that all networks/users have loaded a module when there are no networks/users.
    * Added an explanation that ZNC was built without ICU support, when encoding settings are disabled for that reason.
    * Improved the breadcrumbs.
    * Mentioned ExpandString in CTCP replies.
    * Added an explanation how to delete port which is used to access webadmin.


* Fixed `CThreadPool` destructor to handle spurious wakeups.
* Fixed `make distclean` to remove `zncconfig.h`.
* Improved the error message about `--datadir`.
* Fixed a compilation warning when `HAVE_LIBSSL` is not defined.
* Fixed 'comparision' typos in CString documentation.
* Added a non-minified version of the jQuery source code to make Linux distributions (Debian) happy, even though the jQuery license does not require this.
Jul 25, 2015
Feb 12, 2015


ZNC 1.6.0
Changes since ZNC 1.4


* Switch versioning scheme to <major>.<minor>.<patch>.
* 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:
* 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+.


* 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.


* 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
** 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 and 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.


* 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 for nightlies too.
* Revise CChan::JoinUser() & AttachUser().
* Modules: use public API.
* Modules: use AddCommand().
* Add
May 8, 2014


ZNC 1.4
Changes since ZNC 1.2

This release is done to fix a denial of service attack through webadmin. After authentication, users can crash ZNC through a use-after-delete.
Additionally, a number of fixes and nice, low-risk additions from our development branch is included.

In detail, these are:


* Reduce users' confusion during --makeconf.
* Warn people that making ZNC listen on port 6667 might cause problems with some web browsers.
* Always generate a SSL certificate during --makeconf.
* Stop asking for a bind host / listen host in --makeconf. People who don't want wildcard binds can configure this later.
* Don't create ~/.znc/modules if it doesn't exist yet.


* Fix a use-after-delete in webadmin.
* Honor the BindHost whitelist when configuring BindHosts in controlpanel module.
* Ignore trailing whitespace in <code>/znc jump</code> arguments.
* Change formatting of startup messages so that we never overwrite part of a message when printing the result of an action.
* Fix configure on non-bash shells.
* Send the correct error for invalid CAP subcommands.
* Make sure znc-buildmod includes zncconfig.h at the beginning of module code.


* Make awaystore automatically call the Ping command when the Back command is used.
* Add SSL information and port number to servers in network list in webadmin.
* Disable password autocompletion when editing users in webadmin.
* Make nickserv  module work on and
* Remove accidental timeout for run commands in shell module.
* certauth now uses a case insensitive comparison on hexadecimal fingerprints.


* Correct double output.
* Add support for the MaxNetworks global setting.
* Add support for the BindHost per-network setting.

modperl and modpython

* Make <code>OnAddNetwork</code> and <code>OnDeleteNetwork</code> module hooks work.
* Don't create .pyc files during compilation.
* Fix modperl on MacOS X. Twice.
* Require at least SWIG 2.0.12 on MacOS X.


* Don't redefine _FORTIFY_SOURCE if compiler already defines it.
* Cache list of available timezones instead of re-reading it whenever it is needed.
* Improve const-correctness.
* Fix various low-priority compiler warnings.
* Change in-memory storage format for ServerThrottle.
* Use native API on Win32 to replace a file with another file.
* Add src/version.cpp to .gitignore.
Nov 4, 2013


ZNC 1.2
Changes since ZNC 1.0


* ZNC has been relicensed to Apache 2.0
* Show password block in --makepass in new format
* Return MaxJoins setting, it helps against server sending ZNC too many lines
  at once and disconnecting with "Max SendQ exceeded"
* Make /znc detach case insensitive, allow "/detach #chan1,#chan2" syntax
* No longer store 381 in the buffer


* CModule::OnMode(): Fix a stupid NULL pointer dereference
* Fix NULL pointer dereference in webadmin.
* Fix a crash when you delete a user with more than one attached client
* Fix a random crash with module hooks
* Revert "Rewrite the JOIN channel logic, dropping MaxJoins"
* Fix build on some systems
* Fix build of shallow git clone
* Fix build of git tags
* Fix OOT builds with swig files in source dir
* Don't send NAMES and TOPIC for detached channels when a client connects
* Fix memory leak
* Consistency between Del* and Rem* in command names
* Fix changing client nick when client connects.
* Timezone GMT+N is really GMT+N now. It behaved like -N before.
* Escape special characters in debug output (znc --debug)
* Don't disconnect networkless users without PINGing them first.
* Don't lose dlerror() message.
* Fix use-after-free which may happen during shutdown
* Fix "Error: Success" message in SSL
* Fixed double forward slashes and incorrect active module highlighting.
* make clean: Only delete files that can be regenerated
* Don't make backup of znc.conf readable by everyone.
* makepem: create pem only rw for the user, on non-win32
* Don't ever try to overwrite /usr/bin/git
* Fix user modes
* Request secure cookie transmission for HTTPS
* "make clean" removes .depend/
* Fix support for /msg @#chan :hi
* Fix saving config on some cygwin installations
* Fix error message for invalid network name


* Return old fakeonline module (accidentally removed in 1.0) as modules_online
* autoattach: add string searching
* autocycle: Convert to a network module
* chansaver: Fix chansaver to not rewrite the config each time a user joins a
  channel on startup
* cert: Make default type of cert mod to be network.
* watch: Don't handle multiple matching patterns for each target
* route_replies: Add some WHOIS numerics
* block_motd: Allow block_motd to be loaded per-network and globally
* notify_connect: Fixed syntax on attach/detach messages to be more consistent
* cyrusauth: Fix user creation

* Support network module manipulation
* Increases general verbosity of command results.
* Fix bug for "Disconnect" help
* Standardize error wordings


* Allow loading webadmin as user module.
* Show instructions on how to use networks in Add Network too
* clarify that + is SSL
* Show example timezone in webadmin
* Enable embedding network modules.
* Enable embedding modules to network pages.
* Change save network to show the network and not redirect user


* Implement DH-AES encrypted password scheme.
* Add missing length check
* Description line for DH-BLOWFISH
* Fixing unaligned accesses


* Fix loading old configs which refered to "away" module
* Fix displaying IPv6 addresses


* Add time stamp to buffered messages
* Use ASCII for nick prefix and make it configurable


* Make NickServ nickname configurable.
* Add support for NickServ on and Azzurra
* nickserv: don't confuse people so much


* Add -sanitize option to log module.
* Convert / and \ character to - in nicks for filenames.
* Create files with the same permissions as the whole log directory.


* Don't try to build charset module if iconv is not found
* Fix: Converted raw string include NULL character in charset module


* A bit more debug output on modperl
* Fix perl modules being shown incorrectly in the webadmin


* Fix PartyLine so that forced channels may not be left at all - users will be
rejoined at once.
* Fix partyline rejoin on user deletion


* Require SWIG 2.0.8 for modperl/modpython (removes hacks to make older SWIG
* Web interface now supports gzip compression
* Update server-time to new specs with ISO 8601
* Add a generic threads abstraction
* Add CString::StripControls to strip controls (Colors, C0) from strings
* Change PutModule to handle multiple lines
* Debug output: Only print queued lines if they are really just queued
* Add initial unit tests, runnable by "make test"
* Add nick comparison function CNick::NickEquals
* Force including zncconfig.h at the beginning of every .cpp
* Add OnAddNetwork, OnDeleteNetwork module hooks
Something went wrong with that request. Please try again.