1# ZNC 1.8.2 (2020-07-07)
2
3## New
4* Polish translation
5* List names of translators in TRANSLATORS.md file in source, as this contribution isn't directly reflected in git log
6* During --makeconf warn about listening on port 6697 too, not only about 6667
7
8## Fixes
9* webadmin: When confirming deletion of a network and selecting No, redirect to the edituser page instead of listusers page
10* Make more client command results translateable, which were missed before
11
12
13
14# ZNC 1.8.1 (2020-05-07)
15
16Fixed bug introduced in ZNC 1.8.0:
17
18Authenticated users can trigger an application crash (with a NULL pointer dereference) if echo-message is not enabled and there is no network. CVE-2020-13775
19
20
21
22# ZNC 1.8.0 (2020-05-01)
23
24## New
25* Output of various commands (e.g. `/znc help`) was switched from a table to a list
26* Support IP while verifying SSL certificates
27* Make it more visible that admins have lots of privileges
28
29## Fixes
30* Fix parsing of channel modes when the last parameter starts with a colon, improving compatibility with InspIRCd v3
31* Fix null dereference on startup when reading invalid config
32* Don't show server passwords on ZNC startup
33* Fix build with newer OpenSSL
34* Fix in-source CMake build
35* Fix echo-message for `status`
36
37## Modules
38* controlpanel: Add already supported NoTrafficTimeout User variable to help output
39* modpython:
40    * Use FindPython3 in addition to pkg-config in CMake to simplify builds on Gentoo when not using emerge
41    * Support python 3.9
42* modtcl: Added GetNetworkName
43* partyline: Module is removed
44* q: Module is removed
45* route_replies: Handle more numerics
46* sasl: Fix sending of long authentication information
47* shell: Unblock signals when spawning child processes
48* simple_away: Convert to UTC time
49* watch: Better support multiple clients
50* webadmin: Better wording for TrustPKI setting
51
52## Internal
53* Refactor the way how SSL certificate is checked to simplify future socket-related refactors
54* Build integration test and ZNC itself with the same compiler (https://bugs.gentoo.org/699258)
55* Various improvements for translation CI
56* Normalize variable name sUserName/sUsername
57* Make de-escaping less lenient
58
59
60
61# ZNC 1.7.5 (2019-09-23)
62
63* modpython: Add support for Python 3.8
64* modtcl: install .tcl files when building with CMake
65* nickserv: report success of Clear commands
66* Update translations, add Italian, Bulgarian, fix name of Dutch
67* Update error messages to be clearer
68* Add a deprecation warning to ./configure to use CMake instead in addition to an already existing warning in README
69
70
71
72# ZNC 1.7.4 (2019-06-19)
73
74## Fixes
75* This is a security release to fix CVE-2019-12816 (remote code execution by existing non-admin users). Thanks to Jeriko One for the bugreport.
76* Send "Connected!" messages to client to the correct nick.
77
78# Internal
79* Increase znc-buildmod timeout in the test.
80
81
82
83# ZNC 1.7.3 (2019-03-30)
84
85## Fixes
86This is a security release to fix CVE-2019-9917. Thanks to LunarBNC for the bugreport.
87
88## New
89Docker only: the znc image now supports --user option of docker run.
90
91
92
93# ZNC 1.7.2 (2019-01-19)
94
95## New
96* Add French translation
97* Update translations
98
99## Fixes
100* Fix compilation without deprecated APIs in OpenSSL
101* Distinguish Channel CTCP Requests and Replies
102* admindebug: Enforce need of TTY to turn on debug mode
103* controlpanel: Add missing return to ListNetMods
104* webadmin: Fix adding the last allowed network
105
106## Internal
107* Add more details to DNS error logs
108
109
110
111# ZNC 1.7.1 (2018-07-17)
112
113## Security critical fixes
114* CVE-2018-14055: non-admin user could gain admin privileges and shell access by injecting values into znc.conf.
115* CVE-2018-14056: path traversal in HTTP handler via ../ in a web skin name.
116
117## Core
118* Fix znc-buildmod to not hardcode the compiler used to build ZNC anymore in CMake build
119* Fix language selector. Russian and German were both not selectable.
120* Fix build without SSL support
121* Fix several broken strings
122* Stop spamming users about debug mode. This feature was added in 1.7.0, now reverted.
123
124## New
125* Add partial Spanish, Indonesian, and Dutch translations
126
127## Modules
128* adminlog: Log the error message again (regression of 1.7.0)
129* admindebug: New module, which allows admins to turn on/off --debug in runtime
130* flooddetach: Fix description of commands
131* modperl: Fix memory leak in NV handling
132* modperl: Fix functions which return VCString
133* modpython: Fix functions which return VCString
134* webadmin: Fix fancy CTCP replies editor for Firefox. It was showing the plain version even when JS is enabled
135
136## Internal
137* Deprecate one of the overloads of CMessage::GetParams(), rename it to CMessage::GetParamsColon()
138* Don't throw from destructor in the integration test
139* Fix a warning with integration test / gmake / znc-buildmod interaction.
140
141
142
143# ZNC 1.7.0 (2018-05-01)
144
145## New
146* Add CMake build. Minimum supported CMake version is 3.1. For now ZNC can be built with either CMake or autoconf. In future autoconf is going to be removed.
147    * Currently `znc-buildmod` requires python if CMake was used; if that's a concern for you, please open a bug.
148* Increase minimum GCC version from 4.7 to 4.8. Minimum Clang version stays at 3.2.
149* Make ZNC UI translateable to different languages (only with CMake), add partial Russian and German translations.
150    * If you want to translate ZNC to your language, please join https://crowdin.com/project/znc-bouncer
151* Configs written before ZNC 0.206 can't be read anymore
152* Implement IRCv3.2 capabilities `away-notify`, `account-notify`, `extended-join`
153* Implement IRCv3.2 capabilities `echo-message`, `cap-notify` on the "client side"
154* Update capability names as they are named in IRCv3.2: `znc.in/server-time-iso`→`server-time`, `znc.in/batch`→`batch`. Old names will continue working for a while, then will be removed in some future version.
155* Make ZNC request `server-time` from server when available
156* Increase accepted line length from 1024 to 2048 to give some space to message tags
157* Separate buffer size settings for channels and queries
158* Support separate `SSLKeyFile` and `SSLDHParamFile` configuration in addition to existing `SSLCertFile`
159* Add "AuthOnlyViaModule" global/user setting
160* Added pyeval module
161* Added stripcontrols module
162* Add new substitutions to ExpandString: `%empty%` and `%network%`.
163* Stop defaulting real name to "Got ZNC?"
164* Make the user aware that debug mode is enabled.
165* Added `ClearAllBuffers` command
166* Don't require CSRF token for POSTs if the request uses HTTP Basic auth.
167* Set `HttpOnly` and `SameSite=strict` for session cookies
168* Add SNI SSL client support
169* Add support for CIDR notation in allowed hosts list and in trusted proxy list
170* Add network-specific config for cert validation in addition to user-supplied fingerprints: `TrustAllCerts`, defaults to false, and `TrustPKI`, defaults to true.
171* Add `/attach` command for symmetry with `/detach`. Unlike `/join` it allows wildcards.
172* Timestamp format now supports sub-second precision with `%f`. Used in awaystore, listsockets, log modules and buffer playback when client doesn't support server-time
173* Build on macOS using ICU, Python, and OpenSSL from Homebrew, if available
174* Remove `--with-openssl=/path` option from ./configure. SSL is still supported and is still configurable
175
176## Fixes
177* Revert tables to how they were in ZNC 1.4
178* Remove flawed Add/Del/ListBindHost(s). They didn't correctly do what they were intended for, but users often confused them with the SetBindHost option. SetBindHost still works.
179* Fix disconnection issues when being behind NAT by decreasing the interval how often PING is sent and making it configurable via a setting to change ping timeout time
180* Change default flood rates to match RFC1459, prevent excess flood problems
181* Match channel names and hostmasks case-insensitively in autoattach, autocycle, autoop, autovoice, log, watch modules
182* Fix crash in shell module which happens if client disconnects at a wrong time
183* Decrease CPU usage when joining channels during startup or reconnect, add config write delay setting
184* Always send the users name in NOTICE when logging in.
185* Don't try to quit multiple times
186* Don't send PART to client which sent QUIT
187* Send failed logins to NOTICE instead of PRIVMSG
188* Stop creating files with odd permissions on Solaris
189* Save channel key on JOIN even if user was not on the channel yet
190* Stop buffering and echoing CTCP requests and responses to other clients with self-message, except for /me
191* Support discovery of tcl 8.6 during `./configure`
192
193## Modules
194* adminlog:
195    * Make path configurable
196* alias:
197    * Add `Dump` command to copy your config between users
198* awaystore:
199    * Add `-chans` option which records channel highlights
200* blockmotd:
201    * Add `GetMotd` command
202* clearbufferonmsg:
203    * Add options which events trigger clearation of buffers.
204* controlpanel:
205    * Add the `DelServer` command.
206    * Add `$user` and `$network` aliases for `$me` and `$net` respectively
207    * Allow reseting channel-specific `AutoClearChanBuffer` and `BufferSize` settings by setting them to `-`
208    * Change type of values from "double" to "number", which is more obvious for non-programmers
209* crypt:
210    * Fix build with LibreSSL
211    * Cover notices, actions and topics
212    * Don't use the same or overlapping NickPrefix as StatusPrefix
213    * Add DH1080 key exchange
214    * Add Get/SetNickPrefix commands, hide the internal keyword from ListKeys
215* cyrusauth:
216    * Improve UI
217* fail2ban:
218    * Make timeout and attempts configurable, add BAN, UNBAN and LIST commands
219* flooddetach:
220    * Detach on nick floods
221* keepnick:
222    * Improve behaviour by listening to ircd-side numeric errors
223* log:
224    * Add `-timestamp` option
225    * Add options to hide joins, quits and nick changes.
226    * Stop forcing username and network name to be lower case in filenames
227    * Log user quit messages
228* missingmotd:
229    * Include nick in IRC numeric 422 command, reduce client confusion
230* modperl:
231    * Provide `operator ""` for `ZNC::String`
232    * Honor `PERL5LIB` env var
233    * Fix functions like `HasPerm()` which accept `char`
234    * When a broken module couldn't be loaded, it couldn't be loaded anymore even if it was fixed later.
235    * Force strings to UTF-8 in modperl to fix double encoding during concatenation/interpolation.
236* modpython:
237    * Require ZNC to be built with encodings support
238    * Disable legacy encoding mode when modpython is loaded.
239    * Support `CQuery` and `CServer`
240* nickserv:
241    * Use `/nickserv identify` by default instead of `/msg nickserv`.
242    * Support messages from X3 services
243* notify_connect:
244    * Show client identification
245* sasl:
246    * Add web interface
247    * Enable all known mechanisms by default
248    * Make the first requirement for SET actually mandatory, return information about settings if no input for SET
249* schat:
250    * Require explicit path to certificate.
251* simple_away:
252    * Use ExpandString for away reason, rename old `%s` to `%awaytime%`
253    * Add `MinClients` option
254* stickychan:
255    * Save registry on every stick/unstick action, auto-save if channel key changes
256    * Stop checking so often, increase delay to once every 3 minutes
257* webadmin:
258    * Make server editor and CTCP replies editor more fancy, when JS is enabled
259    * Make tables sortable.
260    * Allow reseting chan buffer size by entering an empty value
261    * Show per-network traffic info
262    * Make the traffic info page visible for non-admins, non-admins can see only their traffic
263
264## Internal
265* Stop pretending that ZNC ABI is stable, when it's not. Make module version checks more strict and prevent crashes when loading a module which are built for the wrong ZNC version.
266* Add an integration test
267* Various HTML changes
268* Introduce a CMessage class and its subclasses
269* Add module callbacks which accept CMessage, deprecate old callbacks
270* Add `OnNumericMessage` module callback, which previously was possible only with `OnRaw`, which could give unexpected results if the message has IRCv3.2 tags.
271* Modernize code to use more C++11 features
272* Various code cleanups
273* Fix CSS of `_default_` skin for Fingerprints section
274* Add `OnUserQuitMessage()` module hook.
275* Add `OnPrivBufferStarting()` and `OnPrivBufferEnding()` hooks
276* `CString::WildCmp()`: add an optional case-sensitivity argument
277* Do not call `OnAddUser()` hook during ZNC startup
278* Allow modules to override CSRF protection.
279* Rehash now reloads only global settings
280* Remove `CAP CLEAR`
281* Add `CChan::GetNetwork()`
282* `CUser`: add API for removing and clearing allowed hosts
283* `CZNC`: add missing SSL-related getters and setters
284* Add a possibility (not an "option") to disable launch after --makeconf
285* Move Unix signal processing to a dedicated thread.
286* Add clang-format configuration, switch tabs to spaces.
287* `CString::StripControls()`: Strip background colors when we reset foreground
288* Make chan modes and permissions to be char instead of unsigned char.
289
290## Cosmetic
291* Alphabetically sort the modules we compile using autoconf/Makefile
292* Alphabetically sort output of `znc --help`
293* Change output during startup to be more compact
294* Show new server name when reconnecting to a different server with `/znc jump`
295* Hide passwords in listservers output
296* Filter out ZNC passwords in output of `znc -D`
297* Switch znc.in URLs to https
298
299
300
301# ZNC 1.6.6 (2018-03-05)
302
303* Fix use-after-free in `znc --makepem`. It was broken for a long time, but
304  started segfaulting only now. This is a useability fix, not a security fix,
305  because self-signed (or signed by a CA) certificates can be created
306  without using `--makepem`, and then combined into znc.pem.
307* Fix build on Cygwin.
308
309
310
311# ZNC 1.6.5 (2017-03-12)
312
313## Fixes
314
315* Fixed a regression of 1.6.4 which caused a crash in modperl/modpython.
316* Fixed the behavior of `verbose` command in the sasl module.
317
318
319
320# ZNC 1.6.4 (2016-12-10)
321
322## Fixes
323
324* Fixed build with OpenSSL 1.1.
325* Fixed build on Cygwin.
326* Fixed a segfault after cloning a user. The bug was introduced in ZNC 1.6.0.
327* Fixed a segfault when deleting a user or network which is waiting for DNS
328  during connection. The bug was introduced in ZNC 1.0.
329* Fixed a segfault which could be triggered using alias module.
330* Fixed an error in controlpanel module when setting the bindhost of another user.
331* Fixed route_replies to not cause client to disconnect by timeout.
332* Fixed compatibility with the Gitter IRC bridge.
333
334## Internal
335* Fixed `OnInvite` for modpython and modperl.
336* Fixed external location of GoogleTest for `make test`.
337
338
339
340# ZNC 1.6.3 (2016-02-23)
341
342## Core
343* New character encoding is now applied immediately, without reconnect.
344* Fixed build with LibreSSL.
345* Fixed error 404 when accessing the web UI with the configured URI prefix,
346  but without the `/` in the end.
347* `znc-buildmod` now exits with non-zero exit code when the .cpp file is not found.
348* Fixed `znc-buildmod` on Cygwin.
349* ExpandString got expanded. It now expands `%znc%` to
350  `ZNC <version> - http://znc.in`, honoring the global "Hide version" setting.
351* Default quit message is switched from `ZNC <version> - http://znc.in` to `%znc%`,
352  which is the same, but "automatically" changes the shown version when ZNC gets upgraded.
353  Before, the old version was recorded in the user's quit message, and stayed the same
354  regardless of the current version of ZNC.
355
356## Modules
357* modperl:
358    * Fixed a memory leak.
359* sasl:
360    * Added an option to show which mechanisms failed or succeeded.
361* webadmin:
362    * Fixed an error message on invalid user settings to say what exactly was invalid.
363    * No more autocomplete password in user settings. It led to an error when ZNC
364      thought the user is going to change a password, but the passwords didn't match.
365
366
367
368# ZNC 1.6.2 (2015-11-15)
369
370## Fixes
371
372* 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.
373* Fixed a startup failure when awaynick and simple_away were both loaded, and simple_away had arguments.
374* Fixed a build failure when using an ancient OpenSSL version.
375* Fixed a build failure when using OpenSSL which was built without SSLv3 support.
376* Bindhost was sometimes used as ident.
377* `CAP :END` wasn't parsed correctly, causing timeout during login for some clients.
378* Fixed channel keys if client joined several channels in single command.
379* Fixed memory leak when reading an invalid config.
380
381## Modules
382
383* autovoice:
384    * Check for autovoices when we are opped.
385* controlpanel:
386    * Fixed `DelCTCPReply` case-insensitivity.
387* dcc:
388    * Add missing return statement. It was harmless.
389* modpython:
390    * Fixed a memory leak.
391* modules_online:
392    * Wrong ident was used before.
393* stickychan:
394    * Fixed to unstick inaccessible channels to avoid infinite join loops.
395
396## Internal
397
398* Fixed the nick passed to `CModule::OnChanMsg()` so it has channel permissions set.
399* Fixed noisy `-Winconsistent-missing-override` compilation warnings.
400* Initialized some fields in constructors of modules before `OnLoad()`.
401
402## Cosmetic
403
404* Various modules had commands with empty descriptions.
405* perform:
406    * Say "number" instead of "nr".
407* route_replies:
408    * Make the timeout error message more clear.
409
410
411
412# ZNC 1.6.1 (2015-08-04)
413
414## Fixes
415
416* Fixed the problem that channels were no longer removed from the config despite of chansaver being loaded.
417* Fixed query buffer size for users who have the default channel buffer size set to 0.
418* Fixed a startup failure when simple_away was loaded after awaynick.
419* Fixed channel matching commands, such as DETACH, to be case insensitive.
420* Specified the required compiler versions in the configure script.
421* Fixed a rare conflict of HTTP-Basic auth and cookies.
422* Hid local IP address from the 404 page.
423* Fixed a build failure for users who have `-Werror=missing-declarations` in their `CXXFLAGS`.
424* Fixed `CXXFLAGS=-DVERSION_EXTRA="foo"` which is used by some distros to package ZNC.
425* Fixed `znc-buildmod` on Cygwin.
426
427## Modules
428
429* chansaver:
430    * Fixed random loading behavior due to an uninitialized member variable.
431* modpython:
432    * Fixed access to `CUser::GetUserClients()` and `CUser::GetAllClients()`.
433* sasl:
434    * Improved help texts for the SET and REQUIREAUTH commands.
435* savebuff:
436    * Fixed periodical writes on the disk when the module is loaded after startup.
437* webadmin:
438    * Fixed module checkboxes not to claim that all networks/users have loaded a module when there are no networks/users.
439    * Added an explanation that ZNC was built without ICU support, when encoding settings are disabled for that reason.
440    * Improved the breadcrumbs.
441    * Mentioned ExpandString in CTCP replies.
442    * Added an explanation how to delete port which is used to access webadmin.
443
444## Internal
445
446* Fixed `CThreadPool` destructor to handle spurious wakeups.
447* Fixed `make distclean` to remove `zncconfig.h`.
448* Improved the error message about `--datadir`.
449* Fixed a compilation warning when `HAVE_LIBSSL` is not defined.
450* Fixed 'comparision' typos in CString documentation.
451* 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.
452
453
454
455# ZNC 1.6.0 (2015-02-12)
456
457## New
458
459* Switch versioning scheme to <major>.<minor>.<patch>.
460* 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
461* Validate SSL certificates.
462* Allow clients to specify an ID as part of username (user[@identifier][/network]). Currently not used, but modules can use it.
463* Add alias module for ZNC-side command interception and processing.
464* 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.
465* Support X-Forwarded-For HTTP header, used with new TrustedProxy setting.
466* Add URIPrefix option for HTTP listeners, used with reverse proxy.
467* Store query buffers per query the same way it's done for channels, add new option AutoClearQueryBuffer.
468* Add DisableChan command to *status, it was available only in webadmin before.
469* Allow wildcards in arguments of Help commands of *status and various modules.
470* Support IRCv3.2 batches, used for buffer playbacks.
471* Support IRCv3.2 self-message.
472* Remove awaynick module. It's considered bad etiquette.
473* Add JoinDelay setting, which allows a delay between connection to server, and joining first channel. By default it joins immediately after connect.
474* Make Detach, EnableChan and DisableChan commands of *status accept multiple channels.
475* znc-buildmod: Build output to the current working directory.
476* Wrap long lines in tables (e.g. in Help or ListAvailMods commands).
477* Support ECDHE if available in OpenSSL.
478* Report ZNC version more consistently, add HideVersion setting, which hides ZNC version from public.
479* Bump compiler requirements to support C++11. This means GCC 4.7+, Clang 3.2+, SWIG 3.0.0+.
480
481
482## Fixes
483
484* Disable TLS compression.
485* Disallow setting ConnectDelay to zero, don't hammer server with our failed connects.
486* Simplify --makeconf.
487* Fix logic to find an available nick when connecting to server.
488* Fix handling of CTCP flood.
489* Allow network specific quit messages.
490* Make various text labels gender-neutral.
491* Fix finding SWIG 3 on FreeBSD.
492* Handle multi-receiver NOTICE and PRIVMSG.
493* Make channels follow user-level settings when appropriate.
494* Write disabled status to config for disabled channels.
495* Fix double output in messages from modules.
496* Fix memory leak in gzip compression in HTTP server.
497* Use random DNS result instead of choosing the same one every time.
498* Fix HTTP basic auth.
499* Mention network in message shown if client didn't send PASS.
500
501
502## Modules
503
504* autoattach:
505    * Make it also a network module.
506* autoreply:
507    * Use NOTICE instead of PRIVMSG.
508* autoop:
509    * Add support for multiple hostmasks per user.
510* awaystore:
511    * Store CTCP ACTIONs too.
512    * Reset timer and return from away when a client does a CTCP ACTION.
513    * Allows use of strftime formatting in away messages.
514* bouncedcc:
515    * Fix quotes in file names.
516    * Fix check for "Connected" state.
517* buffextras:
518    * Make it also a network module.
519* chansaver:
520    * Fix saving channel keys.
521    * Add support for loading as a global module.
522* controlpanel:
523    * Add AddChan, DelChan commands, useful for admins to edit other users' channels, was available only in webadmin before.
524    * Check if adding a new channel succeeded.
525    * Revise Help output.
526    * Allow wildcards for GetChan and SetChan.
527* flooddetach:
528    * Show current value in Lines and Secs commands.
529    * Add Silent [yes|no] command, similar to route_replies.
530* listsockets:
531    * Show traffic stats.
532* log:
533    * Use only lower case characters in log filenames.
534    * Use directories and YYYY-MM-DD filename by default.
535    * Add support for logging rules. E.g. /msg *log setrules #znc !#*
536* modperl:
537    * Fix some int_t types.
538* modpython:
539    * Fix calling overloaded methods with parameter CString&.
540    * Support CZNC::GetUserMap().
541    * Set has_args and args_help_text from module.
542    * Release python/swig ownership when adding object created in python to ZNC container.
543    * Fix some int_t types.
544    * Enable default arguments feature of SWIG 3.0.4. No functionality change, it just makes generated code a bit more beautiful.
545* nickserv:
546    * Support tddirc.net.
547    * Remove commands Ghost, Recover, Release, Group. The same functionality is available via new alias module.
548* q:
549    * Add JoinOnInvite, JoinAfterCloaked options.
550    * Don't cloak host on first module load if already connected to IRC.
551    * Add web configuration.
552    * Use HMAC-SHA-256 instead of HMAC-MD5.
553* route_replies:
554    * Handle numerics 307 and 379 in /whois reply. Handle IRCv3.2 METADATA numerics.
555* sample:
556    * Make it a network module, which are easier to write.
557* sasl:
558    * 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.
559* savebuff:
560    * Do not skip channels with AutoClearChanBuffer=true.
561    * Handle empty password in SetPass the same way as during startup.
562* simple_away:
563    * Apply auto-away on load if no user is connected.
564* stickychan:
565    * Don't join channels when not connected.
566* watch:
567    * Add support for detached-only clients, and detached-only channels.
568* webadmin:
569    * Combine "List Users" and "Add User".
570    * Module argument autocomplete="off", for nickserv module, which contains password in argument before first save.
571    * For every module show in which other levels that module is loaded (global/user/network).
572    * Open links to wiki pages about modules in separate window/tab.
573    * 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.
574    * Add missing page title on Traffic page.
575    * Improve navigation: "Save and continue".
576    * Clarify that timestamp format is useless with server-time.
577
578
579## Internal
580
581* Move Csocket to git submodule.
582* Unit tests, via GTest.
583* Allow lambdas for module command callbacks.
584* New modules hooks: OnSendToClient, OnSendToIRC, OnJoining, OnMode2, OnChanBufferPlayLine2, OnPrivBufferPlayLine2.
585* Add methods to CString: StartsWith, EndsWith, Join, Find, Contains, and Convert.
586* Add limited support for using threads in modules: CModuleJob class.
587* Inherit CClient and CIRCSock from a common class CIRCSocket.
588* Add CZNC::CreateInstance to make porting ZNC to MSVC a bit easier.
589* Add CUtils::Get/SetMessageTags().
590* Add CIRCNetwork::FindChans().
591* Add CChan::SendBuffer(client, buffer) overload.
592* Add CIRCNetwork::LoadModule() helper.
593* Add CClient::IsPlaybackActive().
594* Web: Discard sessions in LRU order.
595* Introduce CaseSensitivity enum class.
596* Fix CNick::Parse().
597* Remove redundant CWebSocket::GetModule().
598* Switch from CSmartPtr to std::shared_ptr.
599* Fix GetClients() const correctness.
600* Make self-signed cert with SHA-256, provide DH parameters in --makepem.
601* Use override keyword.
602* Show username of every http request in -D output.
603* Split CUserTimer into CIRCNetworkPingTimer and CIRCNetworkJoinTimer.
604* Give a reason for disabled features during ./configure, where it makes sense.
605* Use make-tarball.sh for nightlies too.
606* Revise CChan::JoinUser() & AttachUser().
607* Modules: use public API.
608* Modules: use AddCommand().
609* Add ChangeLog.md.
610
611
612
613# ZNC 1.4 (2014-05-08)
614
615This release is done to fix a denial of service attack through webadmin. After authentication, users can crash ZNC through a use-after-delete.
616Additionally, a number of fixes and nice, low-risk additions from our development branch is included.
617
618In detail, these are:
619
620
621## New
622
623* Reduce users' confusion during --makeconf.
624* Warn people that making ZNC listen on port 6667 might cause problems with some web browsers.
625* Always generate a SSL certificate during --makeconf.
626* Stop asking for a bind host / listen host in --makeconf. People who don't want wildcard binds can configure this later.
627* Don't create ~/.znc/modules if it doesn't exist yet.
628
629
630## Fixes
631
632* Fix a use-after-delete in webadmin. CVE-2014-9403
633* Honor the BindHost whitelist when configuring BindHosts in controlpanel module.
634* Ignore trailing whitespace in /znc jump arguments.
635* Change formatting of startup messages so that we never overwrite part of a message when printing the result of an action.
636* Fix configure on non-bash shells.
637* Send the correct error for invalid CAP subcommands.
638* Make sure znc-buildmod includes zncconfig.h at the beginning of module code.
639
640
641## Modules
642
643* Make awaystore automatically call the Ping command when the Back command is used.
644* Add SSL information and port number to servers in network list in webadmin.
645* Disable password autocompletion when editing users in webadmin.
646* Make nickserv  module work on StarChat.net and ircline.org.
647* Remove accidental timeout for run commands in shell module.
648* certauth now uses a case insensitive comparison on hexadecimal fingerprints.
649
650### controlpanel
651
652* Correct double output.
653* Add support for the MaxNetworks global setting.
654* Add support for the BindHost per-network setting.
655
656### modperl and modpython
657
658* Make OnAddNetwork and OnDeleteNetwork module hooks work.
659* Don't create .pyc files during compilation.
660* Fix modperl on MacOS X. Twice.
661* Require at least SWIG 2.0.12 on MacOS X.
662
663
664## Internal
665
666* Don't redefine _FORTIFY_SOURCE if compiler already defines it.
667* Cache list of available timezones instead of re-reading it whenever it is needed.
668* Improve const-correctness.
669* Fix various low-priority compiler warnings.
670* Change in-memory storage format for ServerThrottle.
671* Use native API on Win32 to replace a file with another file.
672* Add src/version.cpp to .gitignore.
673
674
675
676# ZNC 1.2 (2013-11-04)
677
678## New
679
680* ZNC has been relicensed to Apache 2.0
681* Show password block in --makepass in new format
682* Return MaxJoins setting, it helps against server sending ZNC too many lines
683  at once and disconnecting with "Max SendQ exceeded"
684* Make /znc detach case insensitive, allow "/detach #chan1,#chan2" syntax
685* No longer store 381 in the buffer
686
687
688## Fixes
689
690* CModule::OnMode(): Fix a stupid NULL pointer dereference
691* Fix NULL pointer dereference in webadmin.
692* Fix a crash when you delete a user with more than one attached client
693* Fix a random crash with module hooks
694* Revert "Rewrite the JOIN channel logic, dropping MaxJoins"
695* Fix build on some systems
696* Fix build of shallow git clone
697* Fix build of git tags
698* Fix OOT builds with swig files in source dir
699* Don't send NAMES and TOPIC for detached channels when a client connects
700* Fix memory leak
701* Consistency between Del* and Rem* in command names
702* Fix changing client nick when client connects.
703* Timezone GMT+N is really GMT+N now. It behaved like -N before.
704* Escape special characters in debug output (znc --debug)
705* Don't disconnect networkless users without PINGing them first.
706* Don't lose dlerror() message.
707* Fix use-after-free which may happen during shutdown
708* Fix "Error: Success" message in SSL
709* Fixed double forward slashes and incorrect active module highlighting.
710* make clean: Only delete files that can be regenerated
711* Don't make backup of znc.conf readable by everyone.
712* makepem: create pem only rw for the user, on non-win32
713* Don't ever try to overwrite /usr/bin/git
714* Fix user modes
715* Request secure cookie transmission for HTTPS
716* "make clean" removes .depend/
717* Fix support for /msg @#chan :hi
718* Fix saving config on some cygwin installations
719* Fix error message for invalid network name
720
721
722## Modules
723
724* Return old fakeonline module (accidentally removed in 1.0) as modules_online
725* autoattach: add string searching
726* autocycle: Convert to a network module
727* chansaver: Fix chansaver to not rewrite the config each time a user joins a
728  channel on startup
729* cert: Make default type of cert mod to be network.
730* watch: Don't handle multiple matching patterns for each target
731* route_replies: Add some WHOIS numerics
732* block_motd: Allow block_motd to be loaded per-network and globally
733* notify_connect: Fixed syntax on attach/detach messages to be more consistent
734* cyrusauth: Fix user creation
735
736### controlpanel
737
738* Support network module manipulation
739* Increases general verbosity of command results.
740* Fix bug for "Disconnect" help
741* Standardize error wordings
742
743### webadmin
744
745* Allow loading webadmin as user module.
746* Show instructions on how to use networks in Add Network too
747* clarify that + is SSL
748* Show example timezone in webadmin
749* Enable embedding network modules.
750* Enable embedding modules to network pages.
751* Change save network to show the network and not redirect user
752
753### sasl
754
755* Implement DH-AES encrypted password scheme.
756* Add missing length check
757* Description line for DH-BLOWFISH
758* Fixing unaligned accesses
759
760### awaystore
761
762* Fix loading old configs which referred to "away" module
763* Fix displaying IPv6 addresses
764
765### crypt
766
767* Add time stamp to buffered messages
768* Use ASCII for nick prefix and make it configurable
769
770### nickserv
771
772* Make NickServ nickname configurable.
773* Add support for NickServ on wenet.ru and Azzurra
774* nickserv: don't confuse people so much
775
776### log
777
778* Add -sanitize option to log module.
779* Convert / and \ character to - in nicks for filenames.
780* Create files with the same permissions as the whole log directory.
781
782### charset
783
784* Don't try to build charset module if iconv is not found
785* Fix: Converted raw string include NULL character in charset module
786
787### modperl
788
789* A bit more debug output on modperl
790* Fix perl modules being shown incorrectly in the webadmin
791
792### partyline
793
794* Fix PartyLine so that forced channels may not be left at all - users will be
795rejoined at once.
796* Fix partyline rejoin on user deletion
797
798
799## Internal
800
801* Require SWIG 2.0.8 for modperl/modpython (removes hacks to make older SWIG
802  work)
803* Web interface now supports gzip compression
804* Update server-time to new specs with ISO 8601
805* Add a generic threads abstraction
806* Add CString::StripControls to strip controls (Colors, C0) from strings
807* Change PutModule to handle multiple lines
808* Debug output: Only print queued lines if they are really just queued
809* Add initial unit tests, runnable by "make test"
810* Add nick comparison function CNick::NickEquals
811* Force including zncconfig.h at the beginning of every .cpp
812* Add OnAddNetwork, OnDeleteNetwork module hooks
813
814# ZNC 1.0 (2012-11-07)
815
816## The Big News
817Multiple networks per user
818Think about new users as "user groups", while new networks are similar to old users.
819
820To login to ZNC, use user/network:password as password, or user/network as username. Also, you can switch between different networks on the fly using the /znc JumpNetwork command.
821
822When you first run ZNC 1.0, it will automatically convert your config and create a network called "default" for each user. Settings from each user are moved into these "default" networks. When you log into ZNC without setting a network, the "default" network will automatically be chosen for you.
823
824Users can create new networks up to an admin-configurable limit. By default, this limit is one network per user.
825
826Existing user-per-network setups can be migrated to the new multinetwork setup using the /znc MoveNetwork command.
827
828You can see a list of networks via /znc ListNetworks and /znc ListAllUserNetworks.
829
830## Timezones
831Timezone can now be configured by name, e.g. "GMT-9", or "Europe/Madrid". Old TimezoneOffset setting (which was the number of hours between the server's timezone and the user's timezone) is deprecated and should not be used anymore. Its old value is lost. The reason for this change is that the old TimezoneOffset was not trivial to count and often broke during switches to/from daylight savings time.
832
833So if you previously used the TimezoneOffset option, you now have to configure your timezone again (via the webadmin or controlpanel module).
834
835## No more ZNC-Extra
836Most modules from ZNC-Extra are now enabled in the usual installation. It was pointless to have them shipped in the tarball, but requiring user to add some weird flags to ./configure.
837
838Antiidle, fakeonline and motdfile modules are dropped.
839
840Away module is renamed to awaystore to better explain its meaning.
841
842## Fixes
843* Don't try IPv6 servers when IPv6 isn't available. Use threads for non-blocking DNS instead of c-ares.
844* Fix debug output of identfile.
845* Don't forward WHO replies with multi-prefix to clients which don't support multi-prefix
846* Send nick changes to clients before we call the OnNick module hook
847* Don't connect to SSLed IRC servers when ZNC is compiled without SSL support
848* Fix check for visibility support in the compiler
849* Fix compilation on cygwin again, including modperl and modpython
850* Support parting several channels at once
851* Fix a crash in admin (now controlpanel) module
852* Fix webadmin to deny setting a bindhost that is not on the global list of allowed bindhosts.
853* Fix using empty value for defaults in user page in webadmin.
854
855## Minor Stuff
856* Rename admin module to controlpanel to make it clearer that it's not the same as admin flag of a user.
857* Add protection from flood. If you send multiple lines at once, they will be slowed down, so that the server will not disconnect ZNC due to flood. It can be configured and can be completely turned off. Default settings are: 1 line per second, first 4 lines are sent at once.
858* Modules can support several types now: a module can be loaded as a user module, as a network module and as a global module, if the module supports these types.
859* Rename (non-)KeepBuffer to AutoClearChanBuffer
860* Process starttls numeric
861* Improvements to modperl, modpython, modtcl.
862* Add timestamps to znc --debug
863* Listeners editor in webadmin
864* Add sasl module which uses SASL to authenticate to NickServ.
865* Rename saslauth to cyrusauth, to make it clearer that it's not needed to do SASL authentication to NickServ.
866* Modules get a way to describe their arguments.
867* webadmin: allow editing of the bindhost without global list.
868* Don't send our password required notice until after CAP negotiation
869* Rewrite the JOIN channel logic, dropping MaxJoins
870* Support messages directed to specific user prefixes (like /msg @#channel Hello)
871* Show link to http://znc.in/ from web as a link. It was plain text before.
872* Webadmin: use HTML5 numeric inputs for numbers.
873* Add SSL/IPv6/DNS info to znc --version
874* Clarify that only admins can load the shell module.
875* cyrusauth: Allow creating new users on first login
876* Clear channel buffers when keep buffer is disabled if we're online
877* send_raw: Add a command to send a line to the current client
878* webadmin: Implement clone user
879* autoreply: Honor RFC 2812.
880* Add 381 to the buffer ("You are now an IRC Operator")
881* identfile: Pause the connection queue while we have a locked file
882* Add ShowBindHost command
883* autoop: Check for autoops when we get op status
884* Improvements and fixes to the partyline module
885* partyline Drop support for fixed channels
886* Check that there're modules available on startup. Check if ZNC is installed or not.
887* Modified description field for bouncedcc module to explain what the module actually does.
888* nickserv: add support for nickserv requests on wenet.ru and rusnet.
889* send 422 event if MOTD buffer is empty
890* route_replies: Handle much more replies
891* Clear text colors before appending timestamps to buffer lines, add space before AppendTimestamp for colorless lines.
892* Don't replace our motd with a different servers motd
893* webadmin: Add a "Disabled" checkbox for channels
894* Send a 464 ERR_PASSWDMISMATCH to clients that did not supply a password
895* Separate compilation and linking for modules.
896* Trim spaces from end of commands to autoattach.
897* nickserv: add ghost, recover and release
898* Warn if config was saved in a newer ZNC version.
899* Backup znc.conf when upgrading ZNC.
900
901## Internal Stuff
902* #include <znc/...h> instead of #include "...h"
903* Add string formatting function with named params.
904* Python, perl: support global, user, network modules.
905* Csock: able use non-int number of secs for timer.
906* CString("off").ToBool() shouldn't be true
907* Python: Override __eq__ to allow comparison of strings
908* python: Allow iterating over CModules
909* Add methods to CModule to get the web path
910* Rework modperl to better integrate with perl.
911* Store all 005 values in a map.
912* Python: Use znc.Socket if no socket class is specified in CreateSocket()
913* CZNC::WriteConfig(): Better --debug output
914* Slight refactor of CBuffer & CBufLine.
915* Implemented an OnInvite hook
916* Allow a client to become "away"
917* Create a connection queue
918* Set default TrimPrefix to ":"
919* Add a config writer
920* Wrap MODULECALL macros in a do-while
921* Don't require CTimer's label to be unique if its empty
922* Allow loading python modules with modpython (ex. modname/__init__.py)
923* bNoChange in On{,De}{Op,Voice} wast incorrect
924* Drop znc-config, change znc-buildmod so it doesn't need znc-config
925
926# ZNC 0.206 (2012-04-05)
927
928## Fixes
929* Identfile: don't crash when ZNC is shutting down.
930* CTCPReplies setting with empty value now blocks those CTCP requests to the client.
931* Show more sane error messages instead of "Error: Success".
932* Imapauth: Follow RFC more closely.
933* "No" is a false value too.
934
935## Minor stuff
936* Add Show command to identfile, which should help you understand what's going on, if identfile is blocking every connection attempt for some reason.
937* Make TLS certs valid for 10 years.
938* Ask for port > 1024 in --makeconf.
939* Reset JoinTries counter when we enable a channel.
940
941# ZNC 0.204 (2012-01-22)
942
943This release fixes CVE-2012-0033,
944http://www.openwall.com/lists/oss-security/2012/01/08/2
945https://bugs.gentoo.org/show_bug.cgi?id=CVE-2012-0033
946https://bugzilla.redhat.com/show_bug.cgi?id=CVE-2012-0033
947
948## Fixes
949* Fix a crash in bouncedcc module with DCC RESUME.
950* Fix modperl compilation.
951* Don't use mkdir during install.
952* Fix compilation failures, which happened sometimes when an older ZNC was already installed.
953* Check for the swig2.0 binary too, instead of only swig.
954
955## Minor stuff
956* Unload modules in reverse order.
957* Don't send server redirects (numeric 010) to clients.
958* Make it possible to filter the result of the help command.
959* Drop @DEFS@ from the build system so that we don't force HAVE_CONFIG_H upon others.
960* Move autocycle to extra.
961* Handle raw 482 in route_replies.
962* Improve identfile's debug messages.
963* Send a MODE request when JOINing.
964* Block raw 301 in antiidle.
965
966# ZNC 0.202 (2011-09-21)
967
968This is a bugfix-mostly release.
969
970## Fixes
971* Fix a crash when a user changes the buffer size of a channel.
972* Fix a NULL pointer dereference in buffer-related module hooks.
973* Fix the autocycle module to not fight with ChanServ.
974* Fix the getchan command in the admin module.
975* Don't timeout bouncedcc connections so that idling DCC chats are possible.
976* Fix build error when compiling against uclibc(++).
977
978## Minor stuff
979* Improve the timeout message in the route_replies module.
980* Add the -r parameter to the man page of ZNC.
981* Install .py files along with .pyc.
982
983# ZNC 0.200 (2011-08-20)
984
985## The Big News
986* Move ident spoofing from ZNC core into new identfile module.
987* Move dcc handling from ZNC core into new modules bouncedcc and dcc.
988* Remove the obsolete fixfreenode module.
989* New module: cert
990* Move away into ZNC-Extra.
991
992## Fixes
993* In ZNC 0.098 there was a memleak whenever someone JOINs a channel.
994* Compile even when OpenSSL was built with no-ssl2.
995* Correctly handle excessive web sessions.
996* Correctly save non-ASCII characters to the NV.
997* Fix znc-buildmod when ZNC was compiled out of tree.
998* Don't always use IPv6 when verifying the listener in --makeconf.
999
1000## Minor Things
1001* Remove a pointless MODE request which ZNC sent on every JOIN.
1002* Raise ZNC's timeouts.
1003* Log's logging path becomes configurable.
1004* Add a replay command to away.
1005* Add a get command to notes.
1006* Add -disableNotesOnLogin argument to notes.
1007* Add hostmask handling to autoattach.
1008* Make it possible for modules to provide additional info, e.g. providing a homepage URL.
1009* Various improvements to modpython.
1010* Hardcode a default entry for the CN in znc --makepem.
1011* Work around Mac OS' and Solaris' brokenness.
1012* Make ZNC compile without getopt_long(). This fixes compilation on e.g. Solaris 9 and hopefully Irix.
1013* Check for errors like "no space left on disk" while writing the config file.
1014* Improve the error handling when reading the config.
1015* Move module data files to own directory in the source and in installation prefix.
1016* Handle Listeners after SSLCertFile during startup.
1017* Check for required SWIG version in ./configure.
1018* Make it possible to use ExpandString-stuff in QuitMsg.
1019* znc-buildmod: Print ZNC's version number.
1020* Add config option ProtectWebSessions which makes it possible to disable the IP check for web sessions.
1021
1022## Internal Stuff
1023* Build modules with hidden symbol visibility.
1024* Clean up includes. This might break external modules.
1025* New CModCommand for simplifiying module commands.
1026* Add the OnIRCConnectionError(CIRCSock *pIRCSock) module hook
1027* Remove config-related module hooks.
1028* Fix CString::Escape_n()
1029* Make the CUser::IsIRCConnected method check if ZNC already successfully logged in to IRC.
1030* and more...
1031
1032# ZNC 0.098 (2011-03-28)
1033
1034
1035## New stuff
1036* Add a list of features to the output of /znc version. (cce5824)
1037* Add modpython. (a564e2) (88c84ef) (1854e1) (9745dcb) (644632) (4c6d52c) (b7700fe) (0f2265c)
1038* Verify during --makeconf that the specified listener works. (11ffe9d)
1039* Add TimestampFormat and StatusPrefix settings to admin. (853ddc5)
1040* Add DCCBindHost, channel keys and some more to webadmin. (570fab6) (eb26386) (1e0585c)
1041* Add a web interface to listsockets. (144cdf)
1042* Add a web interface to perform. (c8910c) (89edf703) (ba183e46)
1043* Don't reply to CTCP floods. (142eeb)
1044* Accept wildcards for /znc DetachChan, EnableChan, ClearBuffer and SetBuffer. (e66b24)
1045* Added reconnect and disconnect commands to admin. (65ae83)
1046* Moved from SourceForge to GitHub. (daa610) (ed17804) (86c0e97) (e6bff0c) (087f01)
1047* Don't force --foreground when compiling with --enable-debug. (778449) (fbd8d6)
1048* Add functions for managing CTCPReplies to admin. (3f0e200)
1049* Allow omitting user names with some commands in admin. (4faad67)
1050* Some fixed with ISpoofFile and SSLCertFile paths which use "~". (cd7822) (f69aeff) (ce10cee)
1051
1052## Fixes
1053* Send more than a single channel per JOIN command. (3327a97) (6a1d27)
1054* Properly unload perl modules so that their code is reread on next load. (ce45917)
1055* Make certauth remember its module list across restarts again. (451b7e32)
1056* Ignore dereferenced sockets in listsockets. (50b57b)
1057* Fix a cross-compilation problem in configure. (d9b4ba1)
1058* Bind web sessions to IP addresses. (577a097) (4556cc)
1059* Limit the number of web sessions per IP. (913a3c8) (bf6dc45)
1060* Build on cygwin again. (37b70a)
1061* Allow admins to ignore MaxBufferSize in webadmin. (b37e23)
1062* Fix some compiler warning generated by clang. (c7c12f0)
1063* Call modules for mode-changes done by not-in-channel nicks. (a53306)
1064* Fix installation with checkinstall and the permissions of some static data. (4c7808) (3d3235)
1065
1066## Minor stuff
1067* Properly report errors in admin's addserver command. (ed924cb)
1068* Improvements of modperl. (1baa019) (12b1cf6) (7237b9) (ece2c88)
1069* Check for modperl that we have at least Perl 5.10. (0bc606)
1070* Verify in configure that tcl actually works. (89bd527)
1071* Add a warning header to znc.conf that warns about editing the file. (2472ea) (8cadb6)
1072* Improve the ISpoof debug output. (128af8e)
1073* Improve HTTP client-side caching for static files. (9ef41ae) (4e5f9e8)
1074* Removed all generated/copied scripts from the repo. (fde73c60) (9574d6) (e2ce2cf) (5a6a7b)
1075* Only allow admins to use email. (81c864)
1076* Make clearbufferonmsg clear the buffer a little less often. (ddd302fbf)
1077* Make the output from /znc help smaller. (0d928c)
1078* Add a web interface to send_raw. (d8b181) (a93a586)
1079
1080## Internal stuff
1081* Some optimizations with lots of users and channels. (b359f) (5e070e)
1082* Various changes to the Makefiles. (33e1ccc) (0ad5cf) (df3409) (e17348c) (936b43) (18234a) (0cc8beb) (d21a1be) (517307b) (40632f) (afa16df) (4be0572) (452e3f) (9fec8f) (f76f1e7) (6b396f)
1083* Added a third argument to the OnPart module hook. (a0c0b7) (1d10335) (e4b48d5)
1084* Added vim modelines to some files. (dc8a39)
1085* Added an auto-generated zncconfig.h (8a1c2a4) (aeeb1eb3) (f4927709) (40a1bb) (3ecbf13) (87037f) (b6c8e1)
1086* Update to latest Csocket. (cc552f)
1087* Handle paths like "~/foo" in CFile. (cb2e50a)
1088* Add some generic interface for module commands. (ebd7e53) (8e59fb9) (31bbffa)
1089* CUser::m_sUserName was made const. (d44e590)
1090
1091# ZNC 0.096 (2010-11-06)
1092
1093## New stuff
1094* Added a new module: clearbufferonmsg. (r2107) (r2151)
1095* Added an optional server name argument to /znc jump. (r2109)
1096* Big overhaul for modperl. (r2119) (r2120) (r2122) (r2123) (r2125) (r2127) (r2133) (r2136) (r2138) (r2140) (r2142) (r2143) (r2144) (r2146) (r2147) (r2156) (r2160)
1097* Modules can now directly influence other modules' web pages. (r2128) (r2129) (r2130) (r2131) (r2132) (r2134) (r2135)
1098
1099## Fixes
1100* The route_replies module now handles "354" who replies. (r2112)
1101* Fixed a bogus "invalid password" error during login with some clients. (r2117)
1102* Reject long input lines on incoming connections. (r2124)
1103* The lastseen module should only link to webadmin if the latter is loaded. (r2126)
1104* Fixed cases where HTTP requests were incorrectly dropped. (r2148) (r2149)
1105* Fixed partyline to work with servers that don't send a 005 CHANTYPES. (r2162)
1106* Fixed error message from configure if dlopen() isn't found. (r2166)
1107
1108## Minor stuff
1109* Renamed "vhost" to "bindhost" to better describe what the option does. (r2113)
1110* Honor timezone offset in the simple_away module. (r2114)
1111* Load global modules as soon as their config line is read. (r2118)
1112* Use poll() instead of select() by default. (r2153) (r2165)
1113* Ignore the channel key "*" in the chansaver module. (r2155)
1114
1115## Internal stuff
1116* Fixed some function prototypes. (r2108)
1117* Rearranged ZNC's CAP handling to IRCds. (r2137)
1118* Added more doxygen comments. (r2139) (r2145) (r2150) (r2152) (r2154) (r2157)
1119* Removed some useless typedefs. (r2158)
1120* Clean up the lastseen module. (r2163) (r2164)
1121
1122# ZNC 0.094 (2010-08-20)
1123
1124## New stuff
1125* Add new global setting MaxBufferSize instead of hardcoding a value. (r2020) (r2025)
1126* Support CAP. (r2022) (r2024) (r2027) (r2041) (r2048) (r2070) (r2071) (r2097) (r2098) (r2099) (r2100)
1127* Add new module certauth which works similar to certfp. (r2029)
1128* route_replies now also supports routing channel ban lists, ban exemptions and invite exceptions. (r2035)
1129* Add a -nostore flag to the away module. (r2044)
1130* Add a new config option SSLCertFile. (r2086) (r2088)
1131
1132## Fixes
1133* Fix configure to automatically disable modperl if perl is not found. (r2017)
1134* Include the port number in cookie names to make them unique across different znc instances on the same box. (r2030)
1135* Make sure that we have at least c-ares 1.5.0. (r2055)
1136* Make znc work on solaris. (r2064) (r2065) (r2067) (r2068)
1137* Improve configure's and make's output. (r2079) (r2080) (r2094) (r2101)
1138* Complain about truncated config files. (r2083)
1139* Fix some std::out_of_range error triggerable by people with a valid login. (r2087) (r2093) (r2095)
1140* Make fakeonline behave while we are not connected to an IRC server. (r2091)
1141* Always attach to channels when joining them. (r2092)
1142* Fix a NULL pointer dereference in route_replies. (r2102) (r2103)
1143
1144## Minor stuff
1145* Allow leading and trailing spaces in config entries. (r2010)
1146* Various minor changes. (r2012) (r2014) (r2021)
1147* Use pkg-config for finding openssl, if it's available. We still fall back to the old code if this fails. (r2018)
1148* znc no longer accepts an alternative file name for znc.conf as its argument. (r2037)
1149* Generate correct HTTP status codes in webmods and make sure this doesn't happen again. (r2039) (r2040)
1150* Rewrite our PING/PONG handling. (r2043)
1151* Raise the size of the query buffer to 250. (r2089)
1152* Update to latest Csocket. (r2096)
1153
1154## Internal stuff
1155* Remove the fake module usage in WebMods. (r2011)
1156* Remove fake modules completely. (r2012) (r2015)
1157* Make CTable more robust. (r2031)
1158* Move the OnKick() module call so it is issued when the nick still is visible in the channel. (r2038)
1159* Remove CZNC::GetUser() since CZNC::FindUser() does the same. (r2046)
1160* Minor changes to webmod skins. (r2061) (r2062)
1161* Add new macros GLOBALMODULECALL and ALLMODULECALL. (r2074) (r2075) (r2076)
1162* Remove a bogus CClient* argument from some module calls. (r2077)
1163* Mark some functions as const. (r2081) (r2082) (r2084) (r2085)
1164
1165# ZNC 0.092 (2010-07-03)
1166
1167This is a bugfix-only release, mainly for fixing CVE-2010-2488.
1168
1169## Fixes
1170* ZNC wrongly counted outgoing connections towards the AnonIPLimit config option. (r2050)
1171* The traffic stats caused a NULL pointer dereference if there were any unauthenticated connections. CVE-2010-2488 (r2051)
1172* Csocket had a bug where a wrong error message was generated and one that caused busy loops with c-ares. (r2053)
1173
1174# ZNC 0.090 (2010-06-06)
1175
1176## Upgrading from previous versions
1177
1178## Errors during start-up
1179The shell, email and imapauth modules have been moved from the regular module set to the "extra" set, you have to use --enable-extra with ./configure to compile them.
1180
1181So, to fix these errors, edit the znc.conf file in ~/.znc/configs and don't load those modules, or recompile znc with extra.
1182
1183### WebMods
1184While previously only the "webadmin" provided an HTTP server/interface, the HTTP server is now integrated into ZNC's core. This means that all modules (not only webadmin) can now provide web pages. Examples shipping with ZNC are lastseen, stickychan and notes. Old-style module arguments to webadmin will be automatically converted to the new syntax.
1185
1186Please note that the WebMods interface uses session cookies instead of 'Basic' HTTP authentication.
1187
1188All URLs to webadmin's settings pages have changed. Please adjust your scripts etc. if necessary.
1189
1190### Running without installing
1191If you want to run ZNC without doing make install, i.e. if you want to run it from the source dir, you will have to add --enable-run-from-source as an argument to ./configure. You do not have to care about this if you use a --prefix= or if you install ZNC system-wide.
1192
1193### I upgraded and WebAdmin/WebMods is acting weird, Log Out does not work.
1194Starting with 0.090, ZNC uses cookies instead of HTTP Basic authentication. If your browser is still sending the Basic credentials to ZNC, e.g. because you have saved them in a bookmark, or password manager, or simply haven't restarted your browser in a while, those will continue to work, even after you click the Log Out button.
1195
1196To fix this, remove any user:pass@host portions from your bookmarks, remove all entries for ZNC's web interface from your password manager, and restart your browser.
1197
1198## New stuff
1199* Webmods - Every module can now provide its own webpages. (r1784) (r1785) (r1787) (r1788) (r1789) (r1790) (r1791) (r1792) (r1793) (r1795) (r1796) (r1797) (r1800) (r1801) (r1802) (r1804) (r1805) (r1806) (r1824) (r1825) (r1826) (r1827) (r1843) (r1844) (r1868) (r1886) (r1888) (r1915) (r1916) (r1931) (r1934) (r1870) (r1871) (r1872) (r1873) (r1874) (r1875) (r1876) (r1879) (r1887) (r1891) (r1967) (r1982) (r1984) (r1996) (r1997) (r2000) (r2002) (r2003)
1200* Webmods and thus webadmin now use cookies for managing sessions instead of HTTP authentication. (r1799) (r1819) (r1823) (r1839) (r1840) (r1857) (r1858) (r1859) (r1861) (r1862)
1201* WebMod-enabled lastseen, stickychan modules. (r1880) (r1881) (r1889) (r1918)
1202* Partyline now also handles notices, /me and CTCP. (r1758)
1203* Partyline now saves channel topics across restarts. (r1898) (r1901)
1204* Added a "number of channels" column to /znc listusers. (r1769)
1205* Added an optional user name argument to /znc listchans. (r1770)
1206* Support for the general CAP protocol and the multi-prefix and userhost-in-names caps on connections to the IRC server. (r1812)
1207* ZNC can now listen on IPv4-only, IPv6-only or on both-IP sockets. Renamed "Listen" config option to "Listener". (r1816) (r1817) (r1977)
1208* Added LoadModule, UnLoadModule, ListMods commands to the Admin module. (r1845) (r1864)
1209* Added ability to set/get TimezoneOffset to the Admin module. (r1906)
1210* Added "Connect to IRC + automatically re-connect" checkbox to webadmin. (r1851)
1211* Remember "automatically connect + reconnect" flag across restarts by writing it to the config file. (r1852)
1212* Added AddPort, DelPort, ListPorts command to *status. (r1899) (r1913)
1213* Added optional quit message argument to disconnect command. (r1926)
1214* Added new charset module to extra. (r1942) (r1947) (r1977) (r1985) (r1994)
1215* Added a traffic info page to webadmin. (r1958) (r1959)
1216
1217## Fixes
1218* Don't let ZNC connect to itself. (r1760)
1219* Added a missing error message to /znc updatemod. (r1772)
1220* Generate cryptographically stronger certificates in --makepem. (r1774)
1221* Autoattach now triggers on channel actions. (r1778)
1222* --disable-tcl now really disables TCL instead of enabling it. (r1782)
1223* User name comparison in blockuser is now case-sensitive. (r1786)
1224* Fixed /names when route_replies is loaded. (r1811)
1225* autoreply now ignores messages from self. (r1828)
1226* Don't forward our own QUIT messages to clients. (r1860)
1227* Do not create empty directories if one does ./znc --datadir=NON_EXISTING_DIR. (r1878)
1228* Query to Raw send the command to IRC instead of to the client. (r1892)
1229* Fixed desync in Partyline after addfixchan or delfixchan. (r1904)
1230* Save passwords for Nickserv module as NV instead of keeping them as arguments. (r1914)
1231* CSRF Protection. (r1932) (r1933) (r1935) (r1936) (r1938) (r1940) (r1944)
1232* Fixed a rare configure failure with modperl. (r1946)
1233* disconkick now only sends kicks for channels the client actually joined. (r1952)
1234* More sanity checks while rewriting znc.conf. (r1962)
1235* Fixed static compilation with libcrypto which needs libdl by checking for libdl earlier. (r1969)
1236* Fixed modtcl with newer tcl versions. (r1970)
1237* Better error message if pkg-config is not found. (r1983)
1238* Fixed a possible race condition in autoop which could cause bogous "invalid password" messages. (r1998)
1239
1240## Minor stuff
1241* Fixed a memory leak and some coding style thanks to cppcheck. (r1761) (r1762) (r1763) (r1764) (r1776) (r1777)
1242* Updated to latest Csocket. (r1766) (r1767) (r1814) (r1905) (r1930)
1243* Cleanup to /znc help. (r1771)
1244* Removed --disable-modules. Modules are now always enabled. (r1794) (r1829)
1245* saslauth: Error out "better" on invalid module arguments. (r1809)
1246* Changed the default ConnectDelay from 30s to 5s. (r1822)
1247* Misc style/skin fixes to webadmin/webmods. (r1853) (r1854) (r1856) (r1883) (r1884) (r1885) (r1890) (r1900) (r1907) (r1908) (r1909) (r1911) (r1912) (r1917) (r1945) (r2005)
1248* Do not expose ZNC's version number through the web interface unless there's an active user session. (r1877)
1249* Updated AUTHORS file. (r1902) (r1910) (r1999)
1250* Moved some modules into/out of extra. (r1919) (r1922) (r1923)
1251* Added ./configure --enable-run-from-script, without it ZNC will no longer look for modules in ./modules/. (r1927) (r1928) (r2001)
1252* Made a dedicated page to confirm user deletion in webadmin. (r1937) (r1939) (r1941) (r1943)
1253* Use spaces for separating ip addresses from ports. (r1955)
1254* ZNC's built-in MOTD now goes through ExpandString. (r1956)
1255* Check for root before generating a new config file. (r1988)
1256* Added a flag for adding irc-only / http-only ports via /znc addport. (r1990) (r1992)
1257
1258## Internal stuff
1259* Minor cleanup to various places. (r1757) (r1759) (r1846) (r1847) (r1863) (r1865) (r1920) (r1921) (r2004)
1260* Changes in configure. (r1893) (r1894) (r1895) (r1896) (r1897)
1261* Flakes messed with the version number. (r1768)
1262* CString::Split() now Trim()s values before pushing them if bTrimWhiteSpace is true. (r1798)
1263* Added new module hooks for config entries. (r1803) (r1848) (r1849) (r1850)
1264* New module hook OnAddUser(). (r1820) (r1821)
1265* Cleanup to ISUPPORT parser. (r1807)
1266* Use Split() instead of Token() where possible. (r1808)
1267* Modularize CIRCSock::ForwardRaw353(). (r1810)
1268* Use a better seed for srand(). (r1813)
1269* Changes to debug output. (r1815) (r1836) (r1837) (r1855) (r1882)
1270* Support for delayed HTTP request processing. (r1830) (r1833) (r1834) (r1835) (r1838) (r1841) (r1842)
1271* Fixed CSmartPtr's operator==. (r1818)
1272* Better port/listener management exposed through CZNC. (r1866) (r1867)
1273* Move CListener and CRealListener into their own files. (r1924)
1274* Move the HTTP/IRC switching to CIncomingConnection. (r1925)
1275* Add IsIRCAway() to CUser. (r1903)
1276* Move some common pid file code into new InitPidFile(). (r1929)
1277* Templates can now sort loops based on a key. (r1948) (r1949) (r1951) (r1953) (r1954)
1278* A lot of work went into this release, we would like to thank everyone who contributed code, helped testing or provided feedback.
1279
1280# ZNC 0.080 (2010-02-18)
1281
1282## New stuff
1283* Update to latest Csocket. (r1682) (r1727) (r1735) (r1751) (r1752) (r1753)
1284* Only allow admins to load modtcl unless -DMOD_MODTCL_ALLOW_EVERYONE is used. (r1684)
1285* Include /me's in the query buffer. (r1687)
1286* Some tweaks to savebuff to differentiate it more from buffextras. (r1691) (r1692)
1287* send_raw can now also send to clients. (r1697)
1288* Move the "Another client authenticated as you"-message into new module clientnotify. (r1698)
1289* Imported block_motd module into extra. (r1700)
1290* Imported flooddetach into extra. (r1701) (r1717)
1291* Added new setting ServerThrottle which sets a timeout between connections to the same server. (r1702) (r1705)
1292* Only ask for the more common modules in --makeconf. (r1706)
1293* Use UTF-8 as default charset for webadmin. (r1716)
1294* Revamped default webadmin skin. It's very grayish, but looks way more like 2010 than the old default skin does. (r1720)
1295* New font style for the "ice" webadmin skin. (r1721)
1296* Added a summary line to /znc listchans. (r1729)
1297* The admin module can now handle more settings and got some missing permission checks added. (r1743) (r1744) (r1745) (r1746) (r1747)
1298
1299## Fixes
1300* Apply new ConnectDelay settings immediately after a rehash. (r1679)
1301* Do a clean shutdown just before a restart. (r1681)
1302* Fix a theoretical crash in modtcl. (r1685)
1303* Users should use the correct save and download path after Clone(). (r1686)
1304* Several improvements to znc-buildmod. (r1688) (r1689) (r1690) (r1695)
1305* Fix a crash with modperl by loading modules differently. (r1714)
1306* Fix HTTP Cache-Control headers for static files served by webadmin. (r1719)
1307* Send the nicklist to a user who is being force-rejoined in partyline. (r1731)
1308* Set the issuer name in CUtils::GenerateCert(). (r1732)
1309* Fixed some inconsistency with /znc reloadmod. (r1749)
1310* Added a work-around for SSL connections which incorrectly errored out during handshake. (r1750)
1311
1312## Minor stuff
1313* Don't try to catch SIGILL, SIGBUS or SIGSEGV, the default action will do fine. (r1680)
1314* Added IP-address to messages from notify_connect. (r1699)
1315* Switched to Csocket's own c-ares code. (r1704) (r1707) (r1708) (r1709) (r1710) (r1712) (r1713)
1316* Add more doxygen comments. (r1715) (r1718) (r1737)
1317* Removed useless "add your current ip" checkbox from webadmin's edit user page. (r1722)
1318* Don't try to request a MOTD if there is none. (r1728)
1319
1320## Internal stuff
1321* It's 2010, where's my hoverboard? (r1693)
1322* Got rid of Timers.h. (r1696)
1323* Added a Clone() method to CNick. (r1711)
1324* Call OnChanAction() after OnChanCTCP(). (r1730)
1325* Random cleanups to CFile::Delete(). (r1694)
1326* Other random cleanups. (r1723) (r1724) (r1725) (r1726) (r1736)
1327* Move the implementation of CSocket to Socket.cpp/h. (r1733)
1328
1329# ZNC 0.078 (2009-12-18)
1330
1331## New stuff
1332* Add a DCCVHost config option which specifies the VHost (IP only!) for DCC bouncing. (r1647)
1333* Users cloned via the admin module no longer automatically connect to IRC. (r1653)
1334* Inform new clients about their /away status. (r1655)
1335* The "BUG" messages from route_replies can now be turned off via /msg *route_replies silent yes. (r1660)
1336* Rewrite znc.conf on SIGUSR1. (r1666)
1337* ISpoofFormat now supports ExpandString. (r1670)
1338
1339## Fixes
1340* Allow specifing port and password for delserver. (r1640)
1341* Write the config file on restart and shutdown. (r1641)
1342* Disable c-ares if it is not found unless --enable-c-ares was used. (r1644) (r1645)
1343* blockuser was missing an admin check. (r1648)
1344* Sometimes, removing a server caused znc to lose track of which server it is connected to. (r1659)
1345* Include a more portable header for uint32_t in SHA256.h. (r1665)
1346* Fixed cases where ZNC didn't properly block PONG replies to its own PINGs. (r1668)
1347* Fixed a possible crash if a client disconnected before an auth module was able to verify the login. (r1669)
1348* Away allowed to accidentally execute IRC commands. (r1672)
1349* Correctly bind to named hosts if c-ares is enabled. (r1673)
1350* Don't accept only spaces as QuitMsg because this would cause an invalid config to be written out. (r1675)
1351
1352## Minor stuff
1353* Comment out some weird code in Client.cpp. (r1646)
1354* Remove connect_throttle since it's obsoleted by fail2ban. (r1649)
1355* Remove outdated sample znc.conf. (r1654)
1356* route_replies now got a higher timeout before it generates a "BUG" message. (r1657)
1357* Documented the signals on which znc reacts better. (r1667)
1358
1359## Internal stuff
1360* New module hook OnIRCConnecting(). (r1638)
1361* Remove obsolete CUtils::GetHashPass(). (r1642)
1362* A module's GetDescription() now returns a C-String. (r1661) (r1662)
1363* When opening a module, check the version number first and don't do anything on a mismatch. (r1663)
1364
1365# ZNC 0.076 (2009-09-24)
1366
1367## New stuff
1368* Add a make uninstall Makefile target. (r1580)
1369* Imported modules from znc-extra: fixfreenode, buffextras, autoreply, route_replies, adminlog. (r1591) (r1592) (r1593) (r1594) (r1595)
1370* Imported the rest of znc-extra under modules/extra hidden behind configure's --enable-extra. (r1605) (r1606) (r1608) (r1609) (r1610)
1371* ZNC now uses SHA-256 instead of MD5 for hashing passwords. MD5 hashes still work correctly. (r1618)
1372
1373## Fixes
1374* Don't cache duplicate raw 005 (e.g. due to /version). (r1579)
1375* Send a MODE removing all user modes to clients when we lose the irc connection. (r1583)
1376* Use a nickmask instead of a nick as the source for ZNC-generated MODE commands. (r1584)
1377* Use the right error codes if startup fails. (r1585)
1378* Fix a NULL pointer dereference in some of the ares-specific code. (r1586)
1379* VHost and Motd input boxes in graphiX and dark-clouds in webadmin didn't insert newlines. (r1588)
1380* Generate proper error messages when loading modules. This was broken since znc 0.070. (r1596)
1381* Allow unloading of removed modules. This was broken since znc 0.070. (r1597)
1382* Fix savebuff with KeepBuffer = false. (r1616)
1383* Fix accidental low buffer size for webadmin sockets. (r1617)
1384* AltNicks are no longer truncated to 9 characters. (r1620)
1385* Webadmin can now successfully add new admin users and have them load the shell module. (r1625)
1386* Webadmin no longer includes the znc version in the auth realm. (r1627)
1387* CUser::Clone now handles modules after all other settings, making it work with shell. (r1628)
1388* Some CSS selectors in webadmin's dark-clouds and graphiX skins were wrong. (r1631)
1389* The help of admin was improved. (r1632) (r1633)
1390
1391## Minor stuff
1392* make distclean now also removes the pkg-config files. (r1581)
1393* Add the autoconf check for large file support. (r1587)
1394* Generic "not enough arguments" support for route_replies and some fix for /lusers. (r1598) (r1600)
1395* ZNC now tries to join channels in random order. (r1601) (r1602) (r1603)
1396* route_replies now handles "No such channel" for /names. (r1614)
1397* Fixes a theoretical crash on shutdown. (r1624)
1398* saslauth was moved to znc-extra. (r1626)
1399
1400## Internal stuff
1401* Now using autoconf 2.64. (r1604)
1402* Removed unused classes CNoCopy and CSafePtr. (r1607)
1403* Moved CZNC::FindModPath() to CModules. (r1611)
1404* Added CModules::GetModDirs() as a central place for finding module dirs. (r1612) (r1629)
1405* Added CModules::GetModPathInfo() which works like GetModInfo() but which takes the full path to the module. (r1613)
1406* Updated to latest Csocket which adds openssl 1.0 compatibility and fixes some minor bug. (r1615) (r1621)
1407* Merged the internal join and ping timers. (r1622) (r1623)
1408
1409# ZNC 0.074 (2009-07-23)
1410
1411## Fixes
1412* Fix a regression due to (r1569): Webadmin was broken if the skins were accessed through an absolute path (=almost always). (r1574)
1413* Fix a possible crash if users are deleted while they have active DCC sockets. (r1575)
1414
1415Sorry for breaking your webadmin experience guys. :(
1416
1417# ZNC 0.072 (2009-07-21)
1418
1419All webadmin skins are broken in this release due to a bug in webadmin itself. This is fixed in the next release.
1420
1421High-impact security bugs
1422There was a path traversal bug in ZNC which allowed attackers write access to any place to which ZNC has write access. The attacker only needed a user account (with BounceDCCs enabled). Details are in the commit message. (r1570)
1423
1424This is CVE-2009-2658.
1425
1426Affected versions
1427All ZNC versions since ZNC 0.022 (Initial import in SVN) are affected.
1428
1429## New stuff
1430* /msg *status uptime is now accessible to everyone. (r1526)
1431* ZNC can now optionally use c-ares for asynchronous DNS resolving. (r1548) (r1549) (r1550) (r1551) (r1552) (r1553) (r1556) (r1565) (r1566)
1432* The new config option AnonIPLimit limits the number of unidentified connections per IP. (r1561) (r1563) (r1567)
1433
1434## Fixes
1435* znc --no-color --makeconf still used some color codes. (r1519)
1436* Webadmin favicons were broken since (r1481). (r1524)
1437* znc.pc was installed to the wrong directory in multilib systems. (r1530)
1438* Handle flags like e.g. --allow-root for /msg *status restart. (r1531) (r1533)
1439* Fix channel user mode tracking. (r1574)
1440* Fix a possible crash if users are deleted while they are connecting to IRC. (r1557)
1441* Limit HTTP POST data to 1 MiB. (r1559)
1442* OnStatusCommand() wasn't called for commands executed via /znc. (r1562)
1443* On systems where sizeof(off_t) is 4, all ZNC-originated DCCs failed with "File too large (>4 GiB)". (r1568)
1444* ZNC didn't properly verify paths when checking for directory traversal attacks (Low impact). (r1569)
1445
1446## Minor stuff
1447* Minor speed optimizations. (r1527) (r1532)
1448* stickychan now accepts a channel list as module arguments. (r1534)
1449* Added a clear command to nickserv. (r1554)
1450* Added an execute command to perform. (r1558)
1451* Added a swap command to perform. (r1560)
1452* fail2ban clears all bans on rehash. (r1564)
1453
1454## Internal stuff
1455* The API for traffic stats changed. (r1521) (r1523)
1456* Some optimizations to CSmartPtr. (r1522)
1457* CString now accepts an optional precision for converting floating point numbers. (r1525)
1458* Made home dir optional in CDir::ChangeDir(). (r1536)
1459* Stuff. (r1537) (r1550)
1460* EMFILE in CSockets is handled by closing the socket. (r1544)
1461* Special thanks to cnu and flakes!
1462
1463# ZNC 0.070 (2009-05-23)
1464
1465## New stuff
1466* Add a CloneUser command to admin. (r1477)
1467* Make webadmin work better with browser caches in conjunction with changing skins. (r1481) (r1482)
1468* Better error messages if binding a listening port fails. (r1483)
1469* admin module now supports per-channel settings. (r1484)
1470* Fix the KICK that partyline generates when a user is deleted. (r1486)
1471* fail2ban now allows a couple of login attempts before an IP is banned. (r1489)
1472* Fixed a crash bug in stickychan. (r1500)
1473* Install a pkg-config .pc file. (r1503)
1474* Auto-detect globalness in re/un/loadmod commands. (r1505)
1475
1476## Fixes
1477* Fix a bug where ZNC lost its lock on the config file. (r1457)
1478* Limit DCC transfers to files smaller than 4 GiB. (r1461)
1479* Make znc -D actually work. (r1466)
1480* Make znc --datadir ./meh --makeconf work. The restart used to fail. (r1468)
1481* Fix a crash bug if CNick::GetPermStr() was called on CNick objects from module calls. (r1491)
1482* Some fixes for solaris. (r1496) (r1497) (r1498)
1483* nickserv module now also works on OFTC. (r1502)
1484* Make sure the "Invalid password" message is sent before a client socket is closed. (r1506)
1485* Fix a bug where ZNC would reply with stale cached MODEs for a "MODE #chan" request. (r1507)
1486
1487## Minor stuff
1488* Man page updates. (r1467)
1489* Make CFile::Close() check close()'s return values if --debug is used. (r1476)
1490* Update to latest Csocket. (r1490)
1491* Improve the error messages generated by /msg *status loadmod. (r1493)
1492* Remove broken znc --encrypt-pem. (r1495)
1493
1494## Internal stuff
1495* cout and endl are included in Utils.h, not main.h. (r1449)
1496* CFile::Get*Time() now return a time_t. (r1453) (r1479)
1497* Switched some more CFile members to more appropriate return types. (r1454) (r1471)
1498* CFile::Seek() now takes an off_t as its argument. (r1458)
1499* Turn TCacheMap into more of a map. (r1487) (r1488)
1500* Updates to latest Csocket. (r1509)
1501* API breakage: CAuthBase now wants a Csock* instead of just the remote ip. (r1511) (r1512)
1502* New Module hooks (r1494)
1503    * OnChanBufferStarting()
1504    * OnChanBufferPlayLine()
1505    * OnChanBufferEnding()
1506    * OnPrivBufferPlayLine()
1507
1508# ZNC 0.068 (2009-03-29)
1509
1510## New stuff
1511* watch now uses ExpandString on the patterns. (r1402)
1512* A user is now always notified for failed logins to his account. This now also works with auth modules like imapauth. (r1415) (r1416)
1513* Added /msg *status UpdateModule <mod> which reloads an user module on all users. (r1418) (r1419)
1514* A module whose version doesn't match the current ZNC version is now marked as such in ListAvailModules and friends. (r1420)
1515* Added a Set password command to admin. (r1423) (r1424)
1516* ZNC no longer uses znc.conf-backup. (r1432)
1517* Two new command line options were added to ZNC:
1518* ZNC --foreground and znc -f stop ZNC from forking into the background. (r1441)
1519* ZNC --debug and znc -D produce output as if ZNC was compiled with --enable-debug. (r1442) (r1443)
1520
1521## Fixes
1522* cd in shell works again. (r1401)
1523* Make WALLOPS properly honour KeepBuffer. Before this, they were always added to the replay buffer. (r1405)
1524* ZNC now handles raw 432 Illegal Nickname when trying to login to IRC and sends its AltNick. (r1425)
1525* Fix a crash with recursion in module calls. (r1438)
1526* Fixed some compiler warnings with -Wmissing-declarations. (r1439)
1527
1528## Minor stuff
1529* Allow a leading colon on client's PASS commands. (r1403)
1530* CFile::IsDir() failed on "/". (r1404)
1531* CZNC::AddUser() now always returns a useful error description. (r1406)
1532* Some micro-optimizations. (r1408) (r1409)
1533* The new default for JoinTries is 10. This should help some excess flood problems. (r1411)
1534* All webadmin skins must now reside inside the webadmin skins dir or they are rejected. (r1412)
1535* Watch now saves its module settings as soon as possible, to prevent data loss on unclean shutdown. (r1413) (r1414)
1536* Regenerated configure with autoconf 2.63. (r1426)
1537* Some dead code elimination. (r1435)
1538* Clean up znc -n output a little. (r1437)
1539
1540## Internal stuff
1541* CString::Base64Decode() now strips newlines. (r1410)
1542* Remove CModInfo::IsSystem() since it was almost unused and quite useless. (r1417)
1543* Some minor changes to CSmartPtr. (r1421) (r1422)
1544* Added CFile::Sync(), a fsync() wrapper. (r1431)
1545
1546# ZNC 0.066 (2009-02-24)
1547
1548There was a privilege escalation bug in webadmin which could allow all ZNC users to write to znc.conf. They could gain shell access through this. (r1395) (r1396)
1549
1550This is CVE-2009-0759.
1551
1552## Affected versions
1553This bug affects all versions of ZNC which include the webadmin module. Let's just say this affects every ZNC version, ok? ;)
1554
1555## Who can use this bug?
1556First, ZNC must have the webadmin module loaded and accessible to the outside. Now any user who already has a valid login can exploit this bug.
1557
1558An admin must help (unknowingly) to trigger this bug by reloading the config.
1559
1560## Impact
1561Through this bug users can write arbitrary strings to the znc.conf file.
1562
1563Unprivileged ZNC users can make themselves admin and load the shell module to gain shell access.
1564Unprivileged ZNC users can temporarily overwrite any file ZNC has write access to via ISpoof. This can be used to overwrite ~/.ssh/authorized_keys and gain shell access.
1565Unprivileged ZNC users can permanently truncate any file to which ZNC has write access via ISpoof. ZNC never saves more than 1kB for restoring the ISpoofFile.
1566
1567## How can I protect myself?
1568Upgrade to ZNC 0.066 or newer or unload webadmin.
1569
1570## What happens?
1571Webadmin doesn't properly validate user input. If you send a manipulated POST request to webadmin's edit user page which includes newlines in e.g. the QuitMessage field, this field will be written unmodified to the config. This way you can add new lines to znc.conf. The new lines will not be parsed until the next rehash or restart.
1572
1573This can be done with nearly all input fields in webadmin. Because every user can modify himself via webadmin, every user can exploit this bug.
1574
1575## Thanks
1576Thanks to cnu for finding and reporting this bug.
1577
1578## New stuff
1579* Added the admin module. (r1379) (r1386)
1580* savebuff and away no longer ask for a password on startup. (r1388)
1581* Added the fail2ban module. (r1390)
1582
1583## Fixes
1584* savebuff now also works with KeepBuffer turned off. (r1384)
1585* webadmin did not properly escape module description which could allow XSS attacks. (r1391)
1586* Fix some "use of uninitialized variable" warnings. (r1392)
1587* Check the return value of strftime(). This allowed reading stack memory. (r1394)
1588
1589## Minor stuff
1590* Some dead code elimination. (r1381)
1591* Don't have two places where the version number is defined. (r1382)
1592
1593## Internal stuff
1594* Removed some useless and unused CFile members. (r1383)
1595* Removed the DEBUG_ONLY define. (r1385)
1596* OnFailedLogin() is now called for all failed logins, not only failed IRC ones. This changes CAuthBase API. (r1389)
1597
1598# ZNC 0.064 (2009-02-16)
1599
1600## New stuff
1601* schat now prints a message if a client connects and there are still some active schats. (r1282)
1602* awaynick: Set awaynick on connect, not after some time. (r1291)
1603* Allow adding new servers through /msg *status addserver even if a server with the same name but e.g. a different port is already added. (r1295) (r1296)
1604* Show the current server in /msg *status listservers with a star. (r1308)
1605* /msg *status listmods now displays the module's arguments instead of its description. Use listavailmods for the description. (r1310)
1606* ZNC now updates the channel buffers for detached channels and thus gives a buffer replay when you reattach. (r1325)
1607* watch now adds timestamps to messages it adds to the playback buffers. (r1333)
1608* ZNC should now work on cygwin out of the box (use --disable-ipv6). (r1351)
1609* Webadmin will handle all HTTP requests on the irc ports. (r1368) (r1375)
1610
1611## Fixes
1612* Handle read errors in CFile::Copy() instead of going into an endless loop. (r1280) (r1287)
1613* Make schat work properly again and clean it up a little. (r1281) (r1303)
1614* Removed all calls to getcwd(). We now no longer depend on PATH_MAX. (r1286)
1615* stickychan: Don't try to join channels if we are not connected to IRC. (r1298)
1616* watch now saved its settings. (r1304)
1617* Don't forward PONG replies that we requested to the user. (r1309)
1618* awaynick evaluated the awaynick multiple times and thus didn't set the nick back. (r1313)
1619* znc-config --version said '@VERSION@' instead of the actual version number. (r1319)
1620* Handle JOIN redirects due to +L. (r1327)
1621* Remove the length restrictions on webadmin's password fields which led to silent password truncation. (r1330)
1622* Webadmin now reloads global modules if you change their arguments. (r1331)
1623* The main binary is no longer built with position independent code. (r1338)
1624* ZNC failed to bounce DCCs if its own ip started with a value above 127. (r1340)
1625* Savebuff no longer reloads old channel buffers if you did /msg *status clearbuffer. (r1345)
1626* Some work has been done to make ZNC work with mingw (It doesn't work out of the box yet). (r1339) (r1341) (r1342) (r1343) (r1344) (r1354) (r1355) (r1356) (r1358) (r1359)
1627* modperl used huge amounts of memory after some time. This is now fixed. (r1357)
1628* shell now generates error messages if e.g. fork() fails. (r1369)
1629* If the allowed buffer size is lowered, the buffer is now automatically shrunk. (r1371)
1630* webadmin now refuses to transfer files bigger than 16 MiB, because it would block ZNC. (r1374)
1631
1632## Minor stuff
1633* Only reply to /mode requests if we actually know the answer. (r1290)
1634* Lowered some timeouts. (r1297)
1635* Memory usage optimizations. (r1300) (r1301) (r1302)
1636* Allow custom compiler flags in znc-buildmod via the $CXXFLAGS and $LIBS environment flags. (r1312)
1637* Show the client's IP in debug output if no username is available yet. (r1315)
1638* Allow /msg *status setbuffer for channels we are currently not on. (r1323)
1639* Updated the README. (r1326)
1640* Use @includedir@ instead of @prefix@/include in the Makefile. (r1328)
1641* Use RTLD_NOW for loading modules instead of RTLD_LAZY which could take down the bouncer. (r1332)
1642* Use stat() instead of lstat() if the later one isn't available. (r1339)
1643* CExecSock now generates an error message if execvp() fails. (r1362)
1644* Improved some error messages. (r1367)
1645
1646## Internal stuff
1647* Add traffic tracking support to CSocket. Every module that uses CSocket now automatically gets the traffic it causes tracked. (r1283)
1648* Add VERSION_MINOR and VERSION_MAJOR defines. (r1284) (r1285)
1649* Rework CZNC::Get*Path() a little. (r1289) (r1292) (r1299)
1650* Remove the IPv6 stuff from CServer. It wasn't used at all. (r1294)
1651* Make email use CSocket instead of Csock. (r1305)
1652* Cleaned up and improved CFile::ReadLine() and CChan::AddNicks() a little. (r1306) (r1307)
1653* Replaced most calls to strtoul() and atoi() with calls to the appropriate CString members. (r1320)
1654* Moved the SetArgs() call before the OnLoad() call so that modules can overwrite there arguments in OnLoad(). (r1329)
1655* Let CZNC::AddUser() check if the user name is still free. (r1346)
1656* API stuff
1657    * Added CModule::IsGlobal(). (r1283)
1658    * Added CModule::BeginTimers(), EndTimers(), BeginSockets() and EndSockets(). (r1293)
1659    * Added CModule::ClearNV(). (r1304)
1660    * Removed ReadFile(), WriteFile(), ReadLine() (Use CFile instead), Lower(), Upper() (Use CString::AsUpper(), ::ToUpper(), ::*Lower() instead) and added CFile::ReadFile() (r1311)
1661    * Added CModules::OnUnknownUserRaw(). (r1314)
1662    * Added CUtils::SaltedHash() for computing the salted MD5 hashes ZNC uses. (r1324)
1663    * Removed CLockFile and made CFile take over its job. (r1337) (r1352) (r1353)
1664    * Change the return type to CUtils::GetPass() to CString. (r1343)
1665    * Added a DEBUG(f) define that expands to DEBUG_ONLY(cout << f << endl). (r1348) (r1349)
1666    * Removed some unused functions and definitions. (r1360) (r1361)
1667
1668# ZNC 0.062 (2008-12-06)
1669
1670## New stuff
1671* Add --disable-optimization to configure. (r1206)
1672* New webadmin skin dark-clouds by bigpresh. (r1210)
1673* Added the q module as a replacement for QAuth. (r1217) (r1218)
1674* Added an enhanced /znc command: (r1228)
1675* /znc jump is equal to /msg *status jump
1676* /znc *shell pwd is equal to /msg *shell pwd
1677* Webadmin should generate less traffic, because it now uses client-side caching for static data (images, style sheets, ...). (r1248)
1678* Changes to the vhost interface from *status: (r1256)
1679* New commands: AddVHost, RemVHost and ListVHosts.
1680* SetVHost now only accepts vhosts from the ListVHosts list, if it is non-empty.
1681* ZNC now should compile and work fine on Mac OS. (r1258)
1682* IPv6 is now enabled by default unless you disable it with --disable-ipv6. (r1270)
1683
1684## Fixes
1685* Make keepnick usable. (r1203) (r1209)
1686* Don't display 'Your message to .. got lost' for our own nick. (r1211)
1687* Fix compile error with GCC 4.3.1 if ssl is disabled. Thanks to sebastinas. (r1212)
1688* Limit the maximum buffer space each socket may use to prevent DoS attacks. (r1233)
1689* Properly clean the cached perms when you are kicked from a channel. (r1236)
1690* Due to changes in rev 1155-1158, modperl crashed on load on some machines. (r1237) (r1239)
1691* Stickychan didn't work with disabled channels. (r1238)
1692* Catch a throw UNLOAD in the OnBoot module hook. (r1249)
1693* Webadmin now accepts symlinks in the skin dir. (r1252)
1694* Fix for partyline if a force-joined user is deleted. (r1263) (r1264)
1695* Revert change from (r1125) so that we compile on fbsd 4 again. (r1273)
1696
1697## Minor stuff
1698* Recompile everything if configure is run again. (r1205)
1699* Improved the readability of ListMods und ListAvailMods. (r1216)
1700* Accept "y" and "n" as answers to yes/no questions in --makeconf. (r1244)
1701* --makeconf now also generates a ssl certificate if a ssl listening port is configured. (r1246)
1702* Improved and cleaned up the simple_away module. (r1247)
1703* The nickserv module automatically saves the password and never displays it anymore. (r1250)
1704* Use relative instead of absolute URLs in all webadmin skins. (r1253) (r1254)
1705* Add znc-config --cxx and use it in znc-buildmod. (r1255)
1706* Support out-of-tree-builds. (r1257)
1707* Make schat's showsocks command admin-only. (r1260)
1708* Fix compilation with GCC 4.4. (r1269)
1709* Use AC_PATH_PROG instead of which to find the perl binary. (r1274)
1710* New AUTHORS file format. (r1275)
1711
1712## Internal stuff
1713* Removed redundant checks for NULL pointers (r1220) (r1227)
1714* Renamed String.h and String.cpp to ZNCString. (r1202)
1715* Print a warning in CTable if an unknown column is SetCell()'d (r1223)
1716* Update to latest Csocket (r1225)
1717* Remove CSocket::m_sLabel and its accessor functions. Use the socket name Csocket provides instead. (r1229)
1718* modules Makefile: Small cleanup, one defines less and no compiler flags passed multiple times. (r1235)
1719* Webadmin now uses CSocket instead of using Csock and keeping a list of sockets itself. (r1240)
1720* Mark some global and static variables as const. (r1241)
1721* Cleanup perform, no feature changes. (r1242)
1722* Some tweaking to configure.in. Among other things, we now honour CPPFLAGS and don't check for a C compiler anymore. (r1251)
1723* On rare occasions webadmin generated weird error messages. (r1259)
1724* OnStatusCommand now doesn't have the const attribute on its argument. (r1262)
1725* Some new functions:
1726    * some CString constructors (e.g. CString(true) results in "true") (r1243) (r1245)
1727    * CString::TrimPrefix() and CString::TrimSuffix() (r1224) (r1226)
1728    * CString::Equals() (r1232) (r1234)
1729    * CTable::Clear() (r1230)
1730    * CClient::PutStatus(const CTable&) (r1222)
1731    * CGlobalModule::OnClientConnect() (r1266) (r1268)
1732    * CModule::OnIRCRegistration() (r1271)
1733    * CModule::OnTimerAutoJoin() (r1272)
1734* Renames:
1735    * CModule::OnUserAttached() is now known as CModules::OnClientLogin(). (r1266)
1736    * CModule::OnUserDetached() is now known as CModules::OnClientDisconnect(). (r1266)
1737
1738# ZNC 0.060 (2008-09-13)
1739
1740* Print a message when SIGHUP is caught. (r1197)
1741* Moved autocycle into a module. (r1191) (r1192)
1742* New module call OnMode(). (r1189)
1743* Added MaxJoins and JoinTries to webadmin. (r1187)
1744* Fix channel keyword (+k) related mess up on Quakenet (RFC, anyone?). (r1186) (r1190)
1745* Added new module call OnUserTopicRequest(). (r1185)
1746* Also add traffic generated by modules to the traffic stats. (r1183)
1747* Don't use znc.com but znc.in everywhere (hostname of *status etc). (r1181) (r1195)
1748* Close the listening port if we ran out of free FDs. (r1180)
1749* Add a config option MaxJoins which limits the number of joins ZNC sends in one burst. (r1177)
1750* Bug fix where WriteToDisk() didn't made sure a fail was empty. (r1176)
1751* Add ShowMOTD and reorder the HELP output of *status. (r1175)
1752* Add /msg *status restart . Thanks to kroimon. (r1174)
1753* Make --makeconf more userfriendly. Thanks to kroimon. (r1173)
1754* Don't start a new znc process after --makeconf. Thanks to kroimon. (r1171)
1755* Add CModule::PutModule(const CTable&). (r1168) (r1169)
1756* Unify some preprocessor macros in Modules.cpp. (r1166)
1757* Catch a throw UNLOAD from CModule::OnLoad(). (r1164)
1758* A couple of bugs with OnModCTCP(), OnModCommand() and OnModNotice() where fixed. (r1162)
1759* Quicker connects and reconnects to IRC. (r1161)
1760* Speedup the CTable class. (r1160)
1761* Update our bundled Csocket. (r1159)
1762* Some fixes to modperl for hppa.
1763* Move keepnick into a module. (r1151) (r1152) (r1153)
1764* Split up some big functions and files. (r1148) (r1149) (r1150)
1765* modperl now fails to load if it can't find modperl.pm. (r1147)
1766* Handle nick prefixes and such stuff from clients correctly. (r1144) (r1145)
1767* Simplify the code connecting users a little. (r1143)
1768* Fix partyline for users who are not connected to IRC. (r1141)
1769* We are in a channel when we receive a join for it, not an 'end of /names'. (r1140)
1770* Enable some more debug flags with --enable-debug. (r1138)
1771* Don't ever throw exceptions in CModules::LoadModule(). (r1137)
1772* Don't give any stdin to commands executed from the shell module. (r1136)
1773* Fix some over-the-end iterator dereference on parting empty channels. (r1133)
1774* Replace usage of getresuid() with getuid() and geteuid(). (r1132)
1775* Use salted hashes for increased security. (r1127) (r1139)
1776* Don't mention any libraries in znc-config. (r1126)
1777* Don't define __GNU_LIBRARY__ for FreeBSD. (r1125)
1778
1779# ZNC 0.058 (2008-07-10)
1780
1781* Fix a crash with NAMESX-enabled IRC servers. (r1118)
1782* Fix a privilege escalation bug in webadmin if auth modules are used. (r1113)
1783* Remove -D_GNU_SOURCE from our CXXFLAGS. (r1110)
1784* CUtils::GetInput() now kills the process if reading from stdin fails. (r1109)
1785* Properly include limits.h for PATH_MAX. (r1108)
1786* Don't allow running ZNC as root unless --allow-root is given. (r1102)
1787* Add more possibilities for ExpandString(). (r1101)
1788* Autoattach doesn't allow you adding an entry twice now. (r1100)
1789* Print a warning if PATH_MAX is undefined. (r1099)
1790* Use ExpandString() for CTCPReply. (r1096)
1791* Add Uptime command to *status. (r1095) (r1107)
1792* Make --makeconf clearer. (r1093)
1793* Add man pages for znc, znc-buildmod and znc-config. (r1091)
1794* Perl modules are no longer installed with executable bit set. (r1090)
1795* Crypt now forwards messages to other connected clients. (r1088)
1796* Fix a theoretical crash bug in the DNS resolving code. (r1087)
1797* Modules now get their module name as ident, not 'znc'. (r1084)
1798* Handle channel CTCPs the same way private CTCPs are handled. (r1082)
1799* Webadmin: Add support for timezone offset. (r1079)
1800* Webadmin: Remove the *.de webadmin skins. (r1078)
1801* Webadmin: Don't reset all channel settings when a user page is saved. (r1074)
1802* Fix a possible crash when rehashing failed to open the config file. (r1073)
1803* The instructions at the end of makeconf showed a wrong port. (r1072)
1804* Throttle DCC transfers to the speed of the sending side. (r1069)
1805* De-bashify znc-buildmod. (r1068)
1806* Time out unauthed clients after 60 secs. (r1067)
1807* Don't fail with conspire as IRC client. (r1066)
1808* Replace CString::Token() with a much faster version. (r1065)
1809* DenyLoadMod users no longer can use ListAvailMods. (r1063)
1810* Add a VERSION_EXTRA define which can be influenced via CXXFLAGS and which is appended to ZNC's version number. (r1062)
1811
1812# ZNC 0.056 (2008-05-24)
1813
1814* Rehashing also handles channel settings. (r1058)
1815* Make znc-buildmod work with prefixes. (r1054)
1816* Greatly speed up CUser::GetIRCSock(). Thanks to w00t. (r1053)
1817* Don't link the ZNC binary against libsasl2. (r1050)
1818* Make CString::RandomString() produce a more random string (this is used for autoop and increases its security). (r1047)
1819* Remove OnRehashDone() and add OnPreRehash() and OnPostRehash(). (r1046)
1820* Show traffic stats in a readable unit instead of lots of bytes. (r1038)
1821* Fixed a bug were nick changes where silently dropped if we are in no channels. (r1037)
1822* Remove the /watch command from watch. (r1035)
1823* znc-buildmod now reports errors via exit code. (r1034)
1824* Display a better error message if znc.conf cannot be opened. (r1033)
1825* Print a warning from *status if some message or notice is lost because we are not connected to IRC. (r1032)
1826* Make ./configure --bindir=DIR work. (r1031)
1827* Always track header dependencies. This means we require a compile supporting -MMD and -MF. (r1026)
1828* Improve some error messages if we can't connect to IRC. (r1023)
1829* Use \n instead of \r\n for znc.conf. (r1022)
1830* Fix some invalid replies from the shell module. (r1021)
1831* Support chans other than #chan and &chan. (r1019)
1832* Make chansaver add all channels to the config on load. (r1018)
1833* Reply to PINGs if we are not connected to a server. (r1016)
1834* Fix some bugs with Csocket, one caused segfaults when connecting to special SSL hosts. (r1015)
1835* Use MODFLAGS instead of CXXFLAGS for modules. Do MODFLAGS=something ./configure if you want a flag that is used only by modules. (r1012)
1836* Add OnTopic() module call. (r1011)
1837* Don't create empty .registry files for modules. See find ~/.znc -iname ".registry" -size 0 for a list of files you can delete. (r1010)
1838* Only allow admins to load the shell module. (r1007)
1839* Fix CModule::DelNV()'s return value. (r1006)
1840* Fix CUser::Clone() to handle all the settings. (r1005)
1841* Mark all our FDs as close-on-exec. (r1004)
1842
1843# ZNC 0.054 (2008-04-01)
1844
1845* Forward /names replies for unknown channels.
1846* Global modules can no longer hook into every config line, but only those prefixed with 'GM:'.
1847* Don't forward topic changes for detached channels.
1848* Remove ~/.znc/configs/backups and instead only keep one backup under znc.conf-backup.
1849* Update /msg *status help.
1850* Add --datadir to znc-config.
1851* Update bundled Csocket to the latest version. This fixes some bugs (e.g. not closing SSL connections properly).
1852* Use $HOME if possible to get the user's home (No need to read /etc/passwd anymore).
1853* Use -Wshadow and fix all those warnings.
1854* Add /msg *status ListAvailMods. Thanks to SilverLeo.
1855* Add OnRehashDone() module call.
1856* Add rehashing (SIGHUP and /msg *status rehash).
1857* Also write a pid file if we are compiled with --enable-debug. Thanks to SilverLeo.
1858* Add ClearVHost and 'fix' SetVHost. Thanks to SilverLeo.
1859* Increase the connect timeout for IRC connections to 2 mins.
1860* Add a user's vhost to the list on the user page in webadmin.
1861* Add --no-color switch and only use colors if we are on a terminal.
1862* Add DenySetVHost config option. Thanks to Veit Wahlich aka cru.
1863* Change --makeconf's default for KeepNick and KeepBuffer to false.
1864* Add simple_away module. This sets you away some time after you disconnect from ZNC.
1865* Don't write unneeded settings to the <Chan> section. Thanks to SilverLeo.
1866* Remove OnFinishedConfig() module call. Use OnBoot() instead.
1867* Fix some GCC 4.3 warnings. Thanks to darix again.
1868* Move the static data (webadmin's skins) to /usr/share/znc per default. Thanks to Marcus Rueckert aka darix.
1869* New znc-buildmod which works on shells other than bash.
1870* Add ClearAllChannelBuffers to *status.
1871* Handle CTCPs to *status.
1872* autoattach now saves and reloads its settings.
1873* Let webadmin use the user's defaults for new chans. Thanks to SilverLeo.
1874
1875# ZNC 0.052 (2007-12-02)
1876
1877* Added saslauth module.
1878* Add del command to autoattach.
1879* Make awaynick save its settings and restore them when it is loaded again.
1880* Added disconnect and connect commands to *status.
1881* CTCPReply = VERSION now ignores ctcp version requests (as long as no client is attached). This works for every CTCP request.
1882* Add -W to our default CXXFLAGS.
1883* Remove save command from perform, it wasn't needed.
1884* Add list command to stickychan.
1885* --with-module-prefix=x now really uses x and not x/znc (Inspired by CNU :) ).
1886* Use a dynamic select timeout (sleep until next cron runs). This should save some CPU time.
1887* Fix NAMESX / UHNAMES, round two (multi-client breakage).
1888* Module API change (without any breakage): OnLoad gets sMessage instead of sErrorMsg.
1889* Fix a mem-leak.
1890* Disable auto-rejoin on kick and add module kickrejoin.
1891* Respect $CXXFLAGS env var in configure.
1892* Removed some executable bits on graphiX' images.
1893* Added README file and removed docs/.
1894* Removed the antiidle module.
1895* Fixes for GCC 4.3 (Debian bug #417793).
1896* Some dead code / code duplications removed.
1897* Rewrote Makefile.ins and don't strip binaries anymore by default.
1898
1899# ZNC 0.050 (2007-08-11)
1900
1901* fixed UHNAMES bug (ident was messed up, wrong joins were sent)
1902* fixed /lusers bug (line was cached more than once)
1903* added disabled chans to the core
1904* send out a notice asking for the server password if client doesn't send one
1905* added ConnectDelay config option
1906* added timestamps on the backlog
1907* added some module calls
1908* added basic traffic stats
1909* added usermodes support
1910* API breakage (CModule::OnLoad got an extra param)
1911* added fixed channels to the partyline module
1912* fixed partyline bugs introduced by last item
1913* fixed a NULL pointer dereference if /nick command was received from a client while not connected to IRC
1914* added a JoinTries per-user config option which specifies how often we try to rejoin a channel (default: 0 -> unlimited)
1915* make configure fail if it can't find openssl (or perl, ...)
1916* new modules: antiidle, nickserv
1917
1918# ZNC 0.047 (2007-05-15)
1919
1920* NULL pointer dereference when a user uses webadmin while not on irc
1921* A logged in user could access any file with /msg *status send/get
1922* znc --makeconf now restarts znc correctly
1923* New webadmin skin (+ german translations)
1924* Updated to new Csocket version
1925* Allow @ and . in user names which now can also be longer
1926* Added crox and psychon to AUTHORS
1927* Relay messages to other clients of the current user (for the crypt module)
1928* Added chansaver Module
1929* Moved awaynick functionality into a module
1930* Added perform module from psychon
1931* fixed bug when compiling without module support
1932* Added a configurable Timer to the away module
1933* Added support for Topics in the partyline module
1934* Added support for reloading global modules
1935* Added a timer to ping inactive clients
1936* Migrated away from CString::ToString() in favor of explicit constructors
1937* IMAP Authentication Module added
1938* Fixed issues with gcc 4.1
1939* Added concept of default channels that a user is automatically joined to every time they attach
1940* Added SetVHost command
1941* Added error reporting and quit msgs as *status output
1942* Added a server ping for idle connections - Thanks zparta
1943* added -ldl fix for openssl crypto package. fixes static lib link requirement
1944* Explicitly set RTLD_LOCAL, some systems require it - thanks x-x
1945* Added SendBuffer and ClearBuffer client commands
1946* Added support for to talk unencrypted
1947* added with-modules-prefix and moved modules by default to PREFIX/libexec
1948* Added license and contact info
1949* remove compression initialization until standard has normalized a bit
1950
1951# ZNC 0.045 (2006-02-20)
1952
1953* Added +o/v -o/v for when users attach/detach - partyline module
1954* Changed internal naming of CUserSock to CClient for consistency
1955* Fixed some issues with older bsd boxes
1956* Added ListenHost for binding to a specific ip instead of inaddr_any
1957* Allow - and _ as valid username chars
1958* respect compiler, we don't force you to use g++ anymore, don't include system includes for deps
1959* Added Replace_n() and fixed internal loop bug in Replace() (thanks psycho for finding it)
1960* Don't allow .. in GET
1961* Added autoop module
1962* Added support for buffering of /me actions
1963* Added Template support in webadmin now you can write your own skins easily :)
1964* Added ipv6 support
1965* Support for multiple Listen Ports (note the config option "ListenPort" changed to "Listen")
1966
1967# ZNC 0.044 (2005-10-14)
1968
1969* Fixed issue where pipe between client and irc sockets would get out of sync, this was introduced in 0.043
1970* Added *status commands to list users and clients connected
1971
1972# ZNC 0.043 (2005-10-13)
1973
1974* Added Multi-Client support
1975* Added Global partyline module
1976* Added MOTD config option
1977* Added Admin permission
1978* Added SaveConfig admin-only *status command
1979* Added Broadcast admin-only *status command
1980
1981# ZNC 0.041 (2005-09-08)
1982
1983* This release fixes some issues with 64bit systems.
1984
1985# ZNC 0.040 (2005-09-07)
1986
1987This release contains a lot of features/bugfixes and a great new global module called admin.cpp which will allow you to add/remove/edit users and settings on the fly via a web browser.
1988
1989# ZNC 0.039 (2005-09-07)
1990
1991This release contains a lot of features/bugfixes and a great new global module called admin.cpp which will allow you to add/remove/edit users and settings on the fly via a web browser.
1992
1993# ZNC 0.038 (2005-09-07)
1994
1995This release contains a lot of bugfixes and a great new global module called admin.cpp which will allow you to add/remove/edit users and settings on the fly via a web browser.
1996
1997# ZNC 0.037 (2005-05-22)
1998
1999# ZNC 0.036 (2005-05-15)
2000
2001# ZNC 0.035 (2005-05-14)
2002
2003# ZNC 0.034 (2005-05-01)
2004
2005# ZNC 0.033 (2005-04-26)
2006
2007# ZNC 0.030 (2005-04-21)
2008
2009# ZNC 0.029 (2005-04-12)
2010
2011# ZNC 0.028 (2005-04-04)
2012
2013# ZNC 0.027 (2005-04-04)
2014
2015# ZNC 0.025 (2005-04-03)
2016
2017# ZNC 0.023 (2005-03-10)
2018