ngIRCd - Next Generation IRC Server (c)2001-2010 Alexander Barton, alex@barton.de, http://www.barton.de/ ngIRCd is free software and published under the terms of the GNU General Public License. -- NEWS -- ngIRCd Release 17.1 (2010-12-19) - Don't log critical (or worse) messages to stderr - Remove "error file" when compiled with debug code enabled - New numeric 329: get channel creation time on "MODE #chan" commands ngIRCd Release 17 (2010-11-07) - doc: change path names in sample-ngircd.conf depending on sysconfdir ngIRCd 17~rc2 (2010-10-25) - Generate ngIRCd version number from GIT tag. - Make sourcecode compatible with ansi2knr again. This allows to compile ngIRCd using a pre-ANSI K&R C compiler again. ngIRCd 17~rc1 (2010-10-11) - New configuration option "NoZeroConf" to disable service registration at runtime even if ngIRCd is compiled with support for ZeroConf (e.g. using Howl, Avahi or on Mac OS X). - New configuration option "SyslogFacility" to define the syslog "facility" (the "target"), to which ngIRCd should send its log messages. Possible values are system dependant, but most probably "auth", "daemon", "user" and "local1" through "local7" are possible values; see syslog(3). Default is "local5" for historical reasons. - Dump the "internal server state" (configured servers, established connections and known clients) to the console or syslog when receiving the SIGUSR2 signal and debug mode is enabled. - Enable the daemon to disable and enable "debug mode" on runtime using signal SIGUSR1, when debug code is compiled in, not only on startup using the command line parameters. - Implement user mode "x": hostname cloaking (closes: #102). - Change MOTD file handling: ngIRCd now caches the contens of the MOTD file, so the daemon now requires a HUP signal or REHASH command to re-read the MOTD file when its content changed. - Allow IRC ops to change channel modes even without OperServerMode set. - Allow IRC operators to use MODE command on any channel (closes: #100). - New configuration option "NoPAM" to disable PAM. - Implement asynchronous user authentication using PAM, please see the file doc/PAM.txt for details. - Add some documentation for using BOPM with ngIRCd, see doc/Bopm.txt. - Implement user mode "c": receive connect/disconnect NOTICEs. Note that this new mode requires the user to be an IRC operator. - Show SSL status in WHOIS output, numeric 275. ngIRCd Release 16 (2010-05-02) ngIRCd 16~rc2 (2010-04-25) - Enhace connection statistics counters: display total number of served connections on daemon shutdown and when a new client connects using the new numeric RPL_STATSCONN (250). ngIRCd 16~rc1 (2010-03-25) - Implement WEBIRC command used by some Web-IRC frontends. The password required to secure this command must be configured using the new "WebircPassword" variable in the ngircd.conf file. - Remove limit on max number of configured irc operators. - A new channel mode "secure connections only" (+z) has been implemented: Only clients using a SSL encrypted connection to the server are allowed to join such a channel. But please note three things: a) already joined clients are not checked when setting this mode, b) IRC operators are always allowed to join every channel, and c) remote clients using a server not supporting this mode are not checked either and therefore always allowed to join. ngIRCd Release 15 (2009-11-07) ngIRCd 15~rc1 (2009-10-15) - Do not add default listening port (6667) if SSL ports were specified, so ngIRCd can be configured to only accept SSL-encrypted connections now. - Enable IRC operators to use the IRC command SQUIT (insted of the already implemented but non-standard DISCONNECT command). - New configuration option "AllowRemoteOper" (disabled by default) that enables remote IRC operators to use the IRC commands SQUIT and CONNECT on the local server. - Enforce upper limit on maximum number of handled commands. This implements a throttling scheme: an IRC client can send up to 3 commands or 256 bytes per second before a one second pause is enforced. ngIRCd Release 14.1 (2009-05-05) - Security: fix remotely triggerable crash in SSL/TLS code. - Debian: build ngircd-full-dbg package. - Allow ping timeout quit messages to show the timeout value. ngIRCd Release 14 (2009-04-20) ngIRCd 14~rc1 (2009-03-29) - Allow creation of persistent modeless channels. - The INFO command reports the compile time now (if available). - Support individual channel keys for pre-defined channels: introduce new configuration variable "KeyFile" in [Channel] sections in ngircd.conf, here a file can be configured for each pre-defined channel which contains individual channel keys for different users. - Remove limit on maximum number of predefined channels in ngircd.conf. ngIRCd Release 13 (2008-12-25) ngIRCd 13~rc1 (2008-11-21): - New version number scheme :-) - Initial support for IRC services, using a RFC1459 style interface, tested with IRCServices (http://www.ircservices.za.net/) version 5.1.13. For this to work, ngIRCd now supports server-server links conforming to RFC 1459. New ngircd.conf(5) option: ServiceMask. - Support for SSL-encrypted server-server and client-server links using OpenSSL (configure: --with-openssl) or GNUTLS (configure: --with-gnutls). New ngircd.conf(5) options: SSLPorts, SSLKeyFile, SSLKeyFilePassword, SSLCertFile, SSLDHFile, and SSLConnect. - Server local channels have been implemented, prefix "&", that are only visible to users of the same server and are not visible in the network. In addition ngIRCd creates a "special" channel &SERVER on startup and logs all the messages to it that a user with mode +s receives. - New make target "osxpkg" to build a Mac OS X installer package. - New configuration option "NoIdent" to disable IDENT lookups even if the daemon is compiled with IDENT support. ngIRCd 0.12.1 (2008-07-09) - Add option aliases -V (for --version) and -h (for --help). - Make Listen parameter a comma-separated list of addresses. This also obsoletes ListenIPv4 and ListenIPv6 options. If Listen is unset, it is treated as Listen="::,0.0.0.0". Note: ListenIPv4 and ListenIPv6 options are still recognized, but ngircd will print a warning if they are used in the config file. ngIRCd 0.12.0 (2008-05-13) ngIRCd 0.12.0-pre2 (2008-04-29) - IPv6: Add config options to disable ipv4/ipv6 support. ngIRCd 0.12.0-pre1 (2008-04-20) - Add IPv6 support. - Install a LaunchDaemon script to start/stop ngIRCd on Mac OS X. - Implemented IRC commands INFO, SUMMON (dummy), and USERS (dummy) and enhanced test suite to check these commands. (Dana Dahlstrom) - IRC_WHO now supports search patterns and will test this against user nickname/servername/hostname, etc. as required by RFC 2812, Section 3.6.1. (reported by Dana Dahlstrom) - Implement RFC 2812 handling of "0" argument to 'JOIN': must be treated as if the user had sent PART commands for all channels the user is a member of. (Dana Dahlstrom) - Allow NOTICEs to be sent to a channel. (Fabian Schlager) ngIRCd 0.11.0 (2008-01-15) - Add support for /STAT u (server uptime) command. - New [Server] configuration Option "Bind" allows to specify the source IP address to use when connecting to remote server. - New configuration option "MaxNickLength" to specify the allowed maximum length of user nick names. Note: must be unique in an IRC network! - Numeric 317: implemented "signon time" (displayed in WHOIS result). - Added new server configuration option "Passive" for "Server" blocks to disable automatic outgoing connections (similar to -p option to ngircd, but only for the specified server). (Tassilo Schweyer) - Added support for the WALLOPS command. Usage is restricted to IRC operators. ngIRCd 0.10.2 (2007-06-08) - Predefined channel configuration now allows specification of channel key (mode k) and maximum user count (mode l): variables "Key" and "MaxUsers". - When using the epoll() IO interface, compile in the select() interface as well and fall back to it when epoll() isn't available on runtime. - Added support for IO APIs "poll()" and "/dev/poll". ngIRCd 0.10.1 (2006-12-17) - Allow PASS syntax defined in RFC 1459 for server links, too. - New configuration option "PredefChannelsOnly": if set, clients can only join predefined channels. ngIRCd 0.10.0 (2006-10-01) ngIRCd 0.10.0-pre1 (2006-08-02) - Enhanced DIE to accept a single parameter ("comment text") which is sent to all locally connected clients before the server goes down. - JOIN now supports more than one channel key at a time. - Implemented numeric "333": Time and user name who set a channel topic. - Channel topics are no longer limited to 127 characters: now the only limit is the maximum length of an IRC command, i. e. 512 bytes (in practice, this limits the topic to about 490 characters due to protocol overhead). - Reverse DNS lookup code now checks the result by doing an additional lookup to prevent spoofing. - Added new IO layer which (optionally) supports epoll() and kqueue() in addition to the select() interface. ngIRCd 0.9.0 (2005-07-24) - Never run with root privileges but always switch the user ID. - Make "netsplit" messages RFC compliant. - Implemented the IRC function "WHOWAS". - New configuration option "OperServerMode" to enable a workaround needed when running an network with ircd2 servers and "OperCanUseMode" enabled to prevent the ircd2 daemon to drop mode changes of IRC operators. Patch by Florian Westphal, . - Implemented support for "secret channels" (channel mode "s"). - New configuration option "Mask" for [Operator] sections to limit OPER commands to users with a specific IRC mask. Patch from Florian Westphal. - New configuration variable "PidFile", section "[Global]": if defined, the server writes its process ID (PID) to this file. Default: off. Idea of Florian Westphal, . - Added support for the Howl (http://www.porchdogsoft.com/products/howl/) Rendezvous API, in addition to the API of Apple (Mac OS X). The available API will be autodetected when you call "./configure --with-rendezvous". ngIRCd 0.8.0 (2004-06-26) - Two new configuration options: "ChrootDir" and "MotdPhrase", thanks to Benjamin Pineau . Now you can force the daemon to change its root and working directory to something "safe". MotdPhrase is used to define an "MOTD string" instead of a whole file, useful if the "real" MOTD file would be outside the "jail". - INVITE- and BAN-lists become synchronized between IRC+ servers when establishing new connections, if the peer supports this as well. - The type of service (TOS) of all sockets is set to "interactive" now. - Added short command line option "-t" as alternative to "--configtest". - Added optional support for "IDENT" lookups on incoming connections. You have to enable this function with the ./configure switch "--with-ident". The default is not to do IDENT lookups. ngIRCd 0.7.5 (2003-07-11) - New configuration variable "MaxConnectionsIP" to limit the number of simultaneous connections from a single IP that the server will accept. This configuration options lowers the risk of denial of service attacks (DoS), the default is 5 connections per client IP. - Added new configuration variable "Listen" to bind all listening sockets of the server to a single IP address. ngIRCd 0.7.1 (2003-07-18) - Added support for GNU/Hurd. ngIRCd 0.7.0 (2003-05-01) - New command CONNECT to enable and add server links. The syntax is not RFC-compatible: use "CONNECT " to enable and connect an configured server and "CONNECT " to add a new server (ngIRCd tries to connect new servers only once!). - Added DISCONNECT command ("DISCONNECT ") to disable servers. - New command TRACE (you can trace only servers at the moment). - New command HELP that lists all understood commands. - ngIRCd can register itself with Rendezvous: to enable support pass the new switch "--with-rendezvous" to configure. - Added support for TCP Wrappers library: pass "--with-tcp-wrappers" to configure to enable it. - Changed some configure options to use "--with"/"--without" as prefix instead of "--enable"/"--disable": "--without-syslog", "--without-zlib", "--with-tcp-wrappers", and "--with-rendezvous". - Enhanced manual pages ngircd(8) and ngircd.conf(5). - Documentation is now installed in $(datadir)/doc/ngircd. Older news (sorry, only available in german language): ngIRCd 0.6.0, 2002-12-24 - beim Schliessen einer Verbindung zeigt der Server nun vor dem ERROR noch eine Statistik ueber die empfangene und gesendete Datenmenge an. - Connection-Strukturen werden nun "pool-weise" verwaltet; der Pool wird bei Bedarf bis zu einem konfigurierten Limit vergroessert. - Mit der neuen Konfigurationsvariable "MaxConnections" (Sekion "Global") kann die maximale Anzahl gleichzeitiger Verbindungen begrenzt werden. Der Default ist -1, "unlimitiert". - der Server erkennt nun, ob bereits eine eingehende Verbindung von einem Peer-Server besteht und versucht dann nicht mehr, selber eine eigene ausgehende Verbindung zu diesem auufzubauen. Dadurch kann nun auf beiden Servern in der Konfiguration ein Port fuer den Connect konfiguriert werden (beide Server versuchen sich dann gegenseitig zu connectieren). - Server identifizieren sich nun mit asyncronen Passwoertern, d.h. das Passwort, welches A an B schickt, kann ein anderes sein als das, welches B als Antwort an A sendet. In der Konfig.-Datei, Abschnitt "Server", wurde "Password" dazu durch "MyPassword" und "PeerPassword" ersetzt. - Der Server kann nun zur Laufzeit die Konfiguration neu einlesen: dies macht er nach dem Befehl REHASH oder wenn ein HUP-Signal empfangen wird. - Server-Server-Links koennen nun komprimiert werden, dazu wird die zlib (www.zlib.org) benoetigt. Unterstuetzt die Gegenseite die Komprimierung nicht, wird automatisch unkomprimiert kommuniziert. Das Verfahren ist kompatibel mit dem Original-ircd 2.10.3, d.h. beide Server koennen miteinander ueber komprimiert Links kommunizieren. - neue Konfigurations-Variable "MaxJoins": Hiermit kann die maximale Zahl der Channels, in denen ein User Mitglied sein kann, begrent werden. - neue Channel-Modes l (User-Limit) und k (Channel-Key) implementiert. ngIRCd 0.5.0, 20.09.2002 - AIX (3.2.5), HP-UX (10.20), IRIX (6.5), NetBSD (1.5.3/m68k) und Solaris (2.5.1, 2.6) gehoeren nun auch zu den unterstuetzten Platformen. - Unter A/UX (und evtl. weiteren Systemen) kompiliert der ngIRCd nun mit dem "nativen" (ggf. pre-ANSI) Compiler. - "persistente Channels" (Mode 'P') implementiert: diese koennen in der Konfigurationsdatei definiert werden (Sektion "Channel", vgl. Beispiel- Konfiguration "sample-ngircd.conf") und bleiben auch dann bestehen, wenn kein User mehr im Channel ist. - neue IRC-Befehle: KICK, INVITE, ADMIN, CHANINFO; LIST wurde erweitert. Mit dem neuen Befehl CHANINFO syncronisieren Server, die das IRC+- Protokoll unterstuetzen, Channel-Modes und Topics. Fuer den ADMIN-Befehl gibt es neue Konfigurationsoptionen (Sektion "Global"): "AdminInfo1", "AdminInfo2" und "AdminEMail". - Invite- und Ban-Lists implementiert. - neue Konfigurationsoption "OperCanUseMode" (Sektion "Global"): ist sie aktiv, koennen IRC-Operatoren immer Channel-Modes setzen. - "Test-Suite" begonnen: mit "make check" wird sie durchlaufen. ngIRCd 0.4.2, 29.04.2002 - IRC-Funktion LIST implementiert; bisher werden allerdings noch keine Regular Expressions (bis auf "*") unterstuetzt. ngIRCd 0.4.0, 01.04.2002 - WHO implementiert (bisher ohne komplette Unterstuetzung von Masks). - stderr wird nun in eine Datei umgelenkt (/ngircd-.err). Laeuft der Server nicht im Debug-Modus, so wird diese bei Programm- ende geloescht. Sollte der Server abstuerzen, finden sich hier evtl. zusaetzliche Informationen. - Server-Gruppen implementiert: es wird immer nur zu einem Server in einer Gruppe eine Verbindung aufgebaut, klappt es beim ersten Server nicht, so wird der naechste probiert. - Clients und Channels werden nicht mehr ueber ihren Namen, sondern einen Hash-Wert gesucht: sollte deutlich schneller sein. - neuer Kommandozeilen-Parameter "--configtest": die Konfiguration wird gelesen und die dann verwendeten Werte angezeigt. - Client-Mode "s" (Server Notices) implementiert. - mit dem neuen Kommandozeilen-Parameter "--config"/"-f" kann eine alternative Konfigurationsdatei angegeben werden. - nach dem Start kann der ngIRCd, wenn er mit root-Rechten laeuft, zu einer anderen User-ID und Group-ID wechseln. ngIRCd 0.3.0, 02.03.2002 - bekommt der Server ein HUP-Signal, so startet er neu -- genau so, wie er auf den IRC-Befehl RESTART reagiert. - neuer Kommandozeilen-Schalter "--passive" (-p): wird er angegeben, so verbindet sich der ngIRCd nicht mehr automatisch zu anderen Servern. Zum Debuggen manchmal ganz praktisch :-) - neue Befehle VERSION und KILL implementiert. NAMES korrigiert. - Anpassungen an A/UX: gehoert nun auch zu den unterstuetzten Platformen. - AWAY (und der User-Mode 'a') ist nun implementiert. - der ngIRCd unterstuetzt nun Channel-Topics (TOPIC-Befehl). - Channel- und Nicknames werden nun ordentlich validiert. ngIRCd 0.2.0, 15.02.2002 - Begonnen Channel-Modes und User-Channel-Modes zu implementieren: der Server versteht an User-Modes o und v, beachtet letzteres allerdings noch nirgends. Bekannte (aber nicht beachtete!) Channel-Modes sind bisher a, m, n, p, q, s und t. Diese Modes werden von Usern ange- nommen, von anderen Servern werden auch unbekannte Modes uebernommen. - Nach dem Connect eines Users werden LUSERS-Informationen angezeigt. ngIRCd 0.1.0, 29.01.2002 - Channels implementiert, bisher jedoch noch ohne Channel-Modes, d.h. es gibt keine Channel-Ops, kein Topic, kein "topic lock" etc. pp. Chatten in Channels ist aber natuerlich moeglich ;-) Dadurch zum Teil groessere Aenderungen an bisherigen Funktionen. - neue Befehle fuer Channles: JOIN, PART und NJOIN. - FAQ.txt in doc/ begonnen. ngIRCd 0.0.3, 16.01.2002 - Server-Links vollstaendig implementiert: der ngIRCd kann nun auch "Sub-Server" haben, also sowohl als Leaf-Node als auch Hub in einem IRC-Netzwerk arbeiten. - WHOIS wird nun immer an den "Original-Server" weitergeleitet. - Parser handhabt Leerzeichen zw. Parametern nun etwas "lockerer". - Kommandozeilen-Parser: Debug- und No-Daemon-Modus, Hilfe. - ngIRCd wandelt sich nun in einen Daemon (Hintergrundprozess) um. - neue Befehle: LUSERS, LINKS. ngIRCd 0.0.2, 06.01.2002 - neuer Aufbau der Konfigurationsdatei, - mehrere IRC-Operatoren koennen konfiguriert werden, - Server-Links teilweise implementiert. Bisher kann der ngIRCd jedoch nur "leafed server" sein, d.h. keine "Client-Server" haben. ngIRCd 0.0.1, 31.12.2001 - erste oeffentliche Version von ngIRCd als "public preview" :-) -- $Id: NEWS,v 1.88 2008/02/26 22:05:42 fw Exp $