ngIRCd - Next Generation IRC Server
- (c)2001-2003 by Alexander Barton,
+ (c)2001-2006 Alexander Barton,
alex@barton.de, http://www.barton.de/
ngIRCd is free software and published under the
You can update a single file or the complete source tree.
-III. Write Access
-~~~~~~~~~~~~~~~~~
+II. Write Access
+~~~~~~~~~~~~~~~~
If you want to contribute a couple of patches and write access to the CVS
repository would be handy, please contact Alex Barton, <alex@barton.de>.
ngIRCd - Next Generation IRC Server
- (c)2001-2005 Alexander Barton,
+ (c)2001-2006 Alexander Barton,
alex@barton.de, http://www.barton.de/
ngIRCd is free software and published under the
-- ChangeLog --
+ngIRCd 0.10.0-pre1 (2006-08-02)
+
+ - Validate "ServerName" (see RFC 2812, section 2.3.1).
+ - Enhanced DIE to accept a single parameter ("comment text") which is sent
+ to all locally connected clients before the server goes down.
+ - The ngIRCd handles time shifts backwards more gracefully now (the
+ timeout handling doesn't disconnect clients by mistake any more).
+ - Internal: Restructured connection handling (the connection ID is equal
+ to the file descriptor of the connection).
+ - Internal: Simplified resolver code.
+ - JOIN now supports more than one channel key at a time.
+ - Implemented numeric "333": Time and user name who set a channel topic.
+ - Enhanced the handler for PING and PONG commands: fix forwarding and enable
+ back-passing of a client supplied additional argument of PING.
+ - Changed handling of timeouts for unregistered connections: don't reset
+ the counter if data is received and disconnect clients earlier.
+ - Removed unnecessary #define of "LOCAL", now use plain C "static" instead.
+ - 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.2 (2005-10-15)
- - Fixed a bug that could cause the damon to crash when outgoing server
+ - Fixed a bug that could cause the daemon to crash when outgoing server
connections can't be established.
- Fixed a bug that caused the daemon to leak file descriptors when no
resolver subprocesses could be created.
ngIRCd 0.9.0-pre1 (2005-07-09)
- Fixed maximum length of user names, now allow up to 9 characters.
- Cut off oversized IRC messages that should be sent to the network instead
- of shuttding down the (wrong) connection.
+ of shutting down the (wrong) connection.
- Don't generate error messages for unknown commands received before the
client is registered with the server (like the original ircd).
- Never run with root privileges but always switch the user ID.
is to either disable chroot support or to link against dietlibc instead
of glibc. (tnx to Sebastian Siewior)
+Q: I am running Linux and ngircd dies on startup with the follwing errors:
+ IO subsystem: epoll (hint size 100, initial maxfd 100, masterfd -1).
+ Cannot initialize IO routines: Function not implemented
+ Server isn't listening on a single port!
+ ngircd exiting due to fatal errors!
+A: epoll is only supported on 2.6 Linux kernels. Either use a 2.6 kernel, or
+ re-run configure with the --without-epoll parameter. After configure
+ completed, you should see select() being listed as IO backend:
+ '(I/O backend: "select()"').
IV. Bugs!?
~~~~~~~~~~
ngIRCd - Next Generation IRC Server
- (c)2001-2004 by Alexander Barton,
+ (c)2001-2006 by Alexander Barton,
alex@barton.de, http://www.barton.de/
ngIRCd is free software and published under the
I. Upgrade Information
~~~~~~~~~~~~~~~~~~~~~~
+Differences to version 0.9.x
+
+- The option of the configure script to enable support for Zeroconf/Bonjour/
+ Rendezvous/WhateverItIsNamedToday has been renamed:
+ --with-rendezvous -> --with-zeroconf
+
Differences to version 0.8.x
- The maximum length of passwords has been raised to 20 characters (instead
- /usr/local/share/doc/ngircd/: documentation
-II. Useful make-targets
+III. Additional features
+~~~~~~~~~~~~~~~~~~~~~~~~
+
+The following optional features can be compiled into the daemon by passing
+options to the "configure" script. Most options can handle a <path> argument
+which will be used to search for the required libraries and header files in
+the given paths ("<path>/lib/...", "<path>/include/...") in addition to the
+standard locations.
+
+* Syslog Logging (autodetected by default):
+ --with-syslog[=<path>] / --without-syslog
+
+ Enable (disable) support for logging to "syslog", which should be
+ available on most modern UNIX-like operating systems by default.
+
+* ZLib Compression (autodetected by default):
+ --with-zlib[=<path>] / --without-zlib
+
+ Enable (disable) support for compressed server-server links.
+ The Z compression library ("libz") is required for this option.
+
+* IO Backend (autodetected by default):
+ --with-epoll[=<path>] / --without-epoll
+ --with-kqueue[=<path>] / --without-kqueue
+
+ ngIRCd can use three different IO "backends": the "old school" select()
+ API which should be supported by most UNIX-like operating systems, or the
+ more efficient and flexible epoll() (Linux 2.6) or kqueue() (BSD) APIs.
+ By default the IO backend is autodetected, but you can use "--without-xxx"
+ to disable a more enhanced API and force the daemon to use select().
+
+* IDENT-Support:
+ --with-ident[=<path>]
+
+ Include support for IDENT ("AUTH") lookups. The "ident" library is
+ required for this option.
+
+* ZeroConf Support:
+ --with-zeroconf[=<path>]
+
+ Compile ngIRCd with support for ZeroConf multicast DNS service registration.
+ Either the Apple ZeroConf implementation (e. g. Mac OS X) or the Howl
+ library is required. Which one is available is autodetected.
+
+* TCP-Wrappers:
+ --with-tcp-wrappers[=<path>]
+
+ Include support for Wietse Venemas "TCP Wrappers" to limit client access
+ to the daemon, for example by using "/etc/hosts.{allow|deny}".
+ The "libwrap" is required for this option.
+
+
+IV. Useful make-targets
~~~~~~~~~~~~~~~~~~~~~~~
The Makefile produced by the configure-script contains always these useful
next step: -> ./autogen.sh
-III. Sample configuration file ngircd.conf
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+V. Sample configuration file ngircd.conf
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In the sample configuration file, there are comments beginning with "#" OR
";" -- this is only for the better understanding of the file.
and in the "ngircd.conf" manual page.
-IV. Command line options
+VI. Command line options
~~~~~~~~~~~~~~~~~~~~~~~~
These parameters could be passed to the ngIRCd:
ngIRCd - Next Generation IRC Server
- (c)2001-2005 Alexander Barton,
+ (c)2001-2006 Alexander Barton,
alex@barton.de, http://www.barton.de/
ngIRCd is free software and published under the
-- NEWS --
-ngIRCd 0.9.0
+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.
| | | |
Platform Compiler ngIRCd Date Tester C M T R See
--------------------------- ------------ ---------- -------- ------ - - - - ---
+alpha/unknown/netbsd3.0 gcc 3.3.3 CVSHEAD 06-05-07 fw Y Y Y Y (3)
hppa/unknown/openbsd3.5 gcc 2.95.3 CVSHEAD 04-05-25 alex Y Y Y Y
hppa1.1/unknown/linux-gnu gcc 3.3.3 0.8.0 04-05-30 alex Y Y Y Y
hppa2.0/unknown/linux-gnu gcc 3.3.5 0.9.x-CVS 05-06-27 alex Y Y Y Y
i386/pc/solaris2.9 gcc 3.2.2 CVSHEAD 04-02-24 alex Y Y Y Y
i386/unknown/freebsd5.2.1 gcc 3.3.3 0.8.0 04-05-30 alex Y Y Y Y
+i386/unknown/freebsd6.1 gcc 3.4.4 CVSHEAD 06-05-07 fw Y Y Y Y (4)
i386/unknown/gnu0.3 gcc 3.3.3 0.8.0 04-05-30 alex Y Y n Y
i386/unknown/netbsdelf1.6.1 gcc 2.95.3 CVSHEAD 04-02-24 alex Y Y Y Y
i686/pc/cygwin gcc 3.3.1 0.8.0 04-05-30 alex Y Y n Y
m88k/dg/dgux5.4R3.10 gcc 2.5.8 CVSHEAD 04-03-15 alex Y Y ? ?
powerpc/apple/darwin6.5 gcc 3.1 0.7.x-CVS 03-04-23 alex Y Y Y Y
powerpc/apple/darwin7.4.0 gcc 3.3 0.8.0 04-05-30 alex Y Y Y Y
+powerpc/apple/darwin7.9.0 gcc 3.3 CVSHEAD 06-05-07 fw Y Y Y Y (3)
powerpc/apple/darwin8.1.0 gcc 4.0 0.9.x-CVS 05-06-27 alex Y Y Y Y
powerpc/unknown/linux-gnu gcc 3.3.3 0.8.0 04-05-30 alex Y Y Y Y
sparc/sun/solaris2.6 gcc 2.95.3 0.7.x-CVS 03-04-22 alex Y Y Y Y
(2) This compiler is an pre-ANSI C compiler, therefore the source code is
automatically converted using the included ansi2knr tool while building.
-
+(3) kqueue() IO backend
+(4) 6.1-PRERELEASE
--
$Id$
II.2 Exchange channel-modes, topics, and persistent channels
Command: CHANINFO
- Parameters: <channel> +<modes> <key> <maxusers> [<topic>]
+ Parameters: <channel> +<modes> <key> <limit> [<topic>]
Used by: servers only
CHANINFO is used by servers to inform each other about a channel: its
ngIRCd - Next Generation IRC Server
- (c)2001-2005 Alexander Barton,
+ (c)2001-2006 Alexander Barton,
alex@barton.de, http://www.barton.de/
ngIRCd is free software and published under the
# Comments are started with "#" or ";".
#
# Use "ngircd --configtest" (see manual page ngircd(8)) to validate that the
-# server interpreted the configuration file as expected!
+# server interprets the configuration file as expected!
#
[Global]
# The [Global] section of this file is used to define the main
# configuration of the server, like the server name and the ports
# on which the server should be listening.
-
+
# Server name in the IRC network, must contain at least one dot
# (".") and be unique in the IRC network. Required!
Name = irc.the.net
-
+
# Info text of the server. This will be shown by WHOIS and
# LINKS requests for example.
Info = Server Info Text
# Global password for all users needed to connect to the server
;Password = abc
-
+
# Information about the server and the administrator, used by the
# ADMIN command. Not required by server but by RFC!
;AdminInfo1 = Description
# IP address on which the server should listen. (Default: empty,
# so the server listens on all IP addresses of the system)
;Listen = 1.2.3.4
-
+
# Text file with the "message of the day" (MOTD). This message will
# be shown to all users connecting to the server:
;MotdFile = /usr/local/etc/ngircd.motd
# Mask IRC Operator mode requests as if they were coming from the
# server? (This is a compatibility hack for ircd-irc2 servers)
;OperServerMode = no
-
+
# Maximum number of simultaneous connection the server is allowed
# to accept (<=0: unlimited):
;MaxConnections = -1
-
+
# Maximum number of simultaneous connections from a single IP address
# the server will accept (<=0: unlimited):
;MaxConnectionsIP = 5
[Operator]
# [Operator] sections are used to define IRC Operators. There may be
# more than one [Operator] block, one for each local operator.
-
+
# ID of the operator (may be different of the nick name)
;Name = TheOper
# configure a port for the connection, then this ngircd tries to
# connect to to the other server on the given port; if not it waits
# for the other server to connect.
- # There may be more than one server block.
+ # There may be more than one server block, one for each server.
#
# Server Groups:
# The ngIRCd allows "server groups": You can assign an "ID" to every
# group won't answer, the ngIRCd tries to connect to the next server
# in the given group. But the ngircd never tries to connect to two
# servers with the same group ID.
-
- # IRC name of the server
+
+ # IRC name of the remote server, must match the "Name" variable in
+ # the [Global] section of the other server (when using ngIRCd).
;Name = irc2.the.net
-
- # Internet host name of the peer
+
+ # Internet host name or IP address of the peer (only required when
+ # this server should establish the connection).
;Host = connect-to-host.the.net
# Port of the server to which the ngIRCd should connect. If you
# assign no port the ngIRCd waits for incoming connections.
- ;Port = 6666
+ ;Port = 6667
# Own password for the connection. This password has to be configured
# as "PeerPassword" on the other server.
# Foreign password for this connection. This password has to be
# configured as "MyPassword" on the other server.
;PeerPassword = PeerSecret
-
+
# Group of this server (optional)
;Group = 123
# persist when there are no more members left.
# Persistent channels are marked with the mode 'P', which can be set
# and unset by IRC operators like other modes on the fly.
- # There may be more than one [Channel] block.
-
+ # There may be more than one [Channel] block, one for each channel.
+
# Name of the channel
;Name = #TheName
# Topic for this channel
;Topic = a great topic
-
+
# Initial channel modes
;Modes = tn