Author: Entrope <mdpoole@troilus.org>
[ircu2.10.12-pk.git] / RELEASE.NOTES
index 5016e618243e11232a0b183f6f64c517b9b6016d..47106bd16a926841dc079ec95283396894e14c0a 100644 (file)
-Release Notes for ircu2.10.11
-Last Updated: August 17, 2001
-Written by Kev <klmitch@mit.edu>
-Based on a document written by Braden <dbtem@yahoo.com>
-
-This is a brief description of the changes we have made to the server
-since the release of ircu2.10.10.
-
-This server is only compatible with other servers that are P10.  It is
-compatible and is verified to work with Undernet server versions
-u2.10.10 and above.  Note, however, that some advanced features are
-only compatible with u2.10.11 and above.
+Release notes for ircu2.10.12
+Last updated: 1 Sep 2005
+Written by Michael Poole <mdpoole@troilus.org>
+Based on earlier documents by Kev <klmitch@mit.edu> and
+Braden <dbtem@yahoo.com>.
+
+This document briefly describes changes in ircu2.10.12 relative to
+ircu2.10.11.  ircu2.10.12 is only compatible with servers that
+implement the P10 protocol.  It has been tested to link against
+ircu2.10.11, but some features (notably IPv6 support and oplevels) are
+not supported by ircu2.10.11.
+
+Semantic Changes (TAKE NOTE):
+
+Channel keys and passwords (see the "oplevels" enhancement below)
+listed in a JOIN are now only checked against the corresponding
+channel.  In ircu2.10.11, "JOIN #a,#b key" would attempt to use "key"
+as the key for both #a and #b.  ircu2.10.12 will only attempt to use
+it as the key for #a.  ircu2.10.12's behavior matches that documented
+in RFC 1459.
 
 Enhancements:
 
-GLINE has been extended to allow IRC operators to issue global
-G-lines; see doc/readme.gline for more information about how to use
-this feature.  These extended features should not be used on networks
-with u2.10.10 servers.
-
-A new JUPE command has been added to permit servers to be juped in a
-more reliable fashion.  This command should not be used on networks
-with u2.10.10 servers.
+The configuration file format has changed to one that is easier to
+read.  It is based on the configuration parser found in ircd-hybrid.
+As usual, an example configuration file can be found in the doc
+subdirectory.
+
+ircu now supports IPv6 clients.  If your operating system provides
+IPv6 socket support, ircu can accept connections on IPv6 addresses.
+Even if your operating system does not support IPv6 sockets, you can
+link (using IPv4) to a server that has IPv6 clients, and ircu will
+treat the IPv6 clients correctly.
+
+The DNS resolver has been replaced with a streamlined version (also
+from ircd-hybrid) that avoids some of the complications from using
+the full libresolv or adns libraries.
+
+The server can query an IAUTH external authorization server.  The
+protocol is described in doc/readme.iauth.  This allows an external
+program to accept or reject any client that connects to the server
+and allows that external program to assign an account stamp to the
+incoming user.
+
+A new feature called "oplevels" has been added.  It uses new channel
+keys (+A for the administrator, +U for users) to grant chanop status
+when you join using those keys.  Part of this channel protection is
+that you cannot be deopped in channel by someone who you opped.
+
+A new channel mode, +D, has been added for auditorium-style channels.
+These are channels where most users listen but do not speak or receive
+ops or voice.  The effect of +D is that the server waits to send the
+JOIN message for new users until the user gets ops or voice or sends a
+message to the channel.  A list of join-delayed users in a channel may
+be retrieved by using /NAMES -d #channel.  The response to /NAMES -d
+uses the same format as numeric 353, but uses numeric 355 instead. If
+an op removes +D while there are still join-delayed users, the server
+automatically sets mode +d, and removes +d when the last user's join
+is shown.  It is not possible to set channel mode +d manually; its
+purpose is to warn channel users that there are "hidden" users in the
+channel.
+
+More than one hashing mechanism is now supported for oper passwords,
+and a new tool (ircd/umkpasswd) is provided to generate them.
+
+Commands that send messages to specified services may be defined in
+the configuration file by using Pseudo blocks.  This lets users use
+commands like /X or /CHANSERV from their client, without tying the
+admin to a particular arrangement or naming of services.
+
+The /stats command accepts string identifiers in addition to
+single-character identifiers.  For example, "/stats access" shows the
+same data as "/stats i".  Supported names are shown by /stats.  New
+/stats options are: /stats a (nameservers), to list DNS nameservers in
+use; /stats L (modules), to list loaded modules; and /stats R
+(mappings), to list privmsg helper commands defined by Pseudo blocks.
+By default, all of these are hidden from normal users.
+
+Client blocks (previously I: lines), Operator blocks (previously O:
+and o: lines), channel bans and silences may use CIDR notation instead
+of simple wildcards.  You may also have silence exceptions by putting
+'~' before the mask; for example, if you wish to silence everyone
+except X, you could use SILENCE *!*@*,~X!cservice@undernet.org.
+
+The server will no longer kick "net riders" in keyed (+k) channels if
+both sides of the net join have the same key.
+
+IP masks (as used in bans, G-lines, etc) are now parsed in a more
+forgiving manner.  127.0.0.0/8, 127.* and 127/8 are all accepted and
+mean the same thing.  Ambiguous expressions like 127/8 are interpreted
+as IPv4 masks; to interpret it as an IPv6 mask, use 127:/8.
 
-Two new channel mode manipulation commands, OPMODE and CLEARMODE, have
-been added.  OPMODE works exactly like MODE, except that 1) only IRC
-operators can use it; 2) it ignores whether or not the operator is a
-channel operator.  CLEARMODE is a reliable means of eradicating
-certain channel modes; it is given an argument string consisting of
-the modes to clear.  If that argument string is not given, it defaults
-to "ovpsmikbl."  These commands should not be used on networks with
-u2.10.10 servers.
+Configuration Changes:
 
-When a channel MODE command from a remote user must be bounced, a
-"MODE -o" for the user will also be sent, in order to attempt to
-"heal" the desync.  Also, the old anti-hack code has been removed,
-since servers never send MODEs except for bounces.
+As mentioned above, the configuration file format has changed
+radically.  Please consult doc/example.conf for details on the
+new format.  Some prominent changes follow.
 
-Most compile-time options have been converted to run-time options
-which may be set through the configuration file or through the use of
-the new commands SET, RESET, and GET; for more information about
-these, please refer to doc/example.conf (for configuration file
-information), doc/readme.features (for a list and description of the
-options), and doc/readme.log (for a description of the logging
-subsystem configuration).
+The old contents of H: lines have been merged into the Connect block
+that describes the peer server(s) that should be allowed to hub.
 
-A new logging subsystem has been written, making it much easier to get
-ircd to write out log files, or to use syslog if that's desired.
+Two default virtual host addresses may be specified, one for IPv4
+sockets and one for IPv6 sockets.
 
-The old chroot() code has been removed; that should now be handled via
-an external wrapper.  Such a wrapper has been included in the tools
-subdirectory.  PLEASE READ doc/readme.chroot IF YOU WISH TO USE
-CHROOT-STYLE JAILS WITH IRCD.
+Nickname jupes have their own blocks, and do not share structure with
+UWorld server declarations.
 
-The build system has been completely revamped; since most compile-time
-options are now run-time, the few remaining ones can be placed in
-./configure and set with --with-* and --enable-*.  Please read INSTALL
-for more information on how to compile and install the daemon.
+Operator connection classes and individual operator blocks may be
+assigned privileges, rather than having them controlled globally.
+Because of this, the feature settings that controlled the privileges
+globally have been removed.
 
-All of the old select()- and poll()-based event loop has been
-completely ripped out and replaced, enabling ircd to use kqueue() and
-/dev/poll, on systems that support those interfaces.
+The maximum number of clients allowed per IP may be set in a Client
+block (the equivalent of C: lines).
 
-All changes made to the u2.10.10 branch have been forward-ported to
-u2.10.11.
+New feature settings (see doc/readme.features for explanations):
+ANNOUNCE_INVITES, HIS_STATS_L, HIS_STATS_a, HIS_STATS_R,
+LOCAL_CHANNELS, TOPIC_BURST.
 
-The server now uses extended numerics exclusively.
+Deleted features, since they had no effect even in 2.10.11: AUTOHIDE,
+HIS_DESYNCS, TIMESEC.
 
-A large number of code clean-ups, changes, and fixes have been made.
-Some of these should hopefully increase performance; others will make
-it easier to maintain the code.
+Deleted features since they are now controlled by other configuration
+entries: VIRTUAL_HOST, oper and locop privilege features.
 
+Deleted feature since it no longer applies: HIS_STATS_h.
 
-Configuration Changes:
-
-Most compile-time options are now run-time configurable features, and
-can be set through the daemon configuration file.  Please see
-doc/example.conf for an illustration of the format (search for
-F-lines).  Documentation for the logging subsystem is in
-doc/readme.log, and the list and description of all the features is
-located in doc/readme.features.
+Compile Time Options:
 
+A listing of supported compile-time options may be seen by running
+"./configure --help".  The defaults should be sane.  In particular,
+you should NOT compile with --enable-debug or with --disable-symbols
+on a production network.
 
-Compile Time Options:
+Otherwise Undocumented Features:
 
-Again, most compile-time options are now set in the configuration
-file.  The remaining options are set through arguments to
-./configure.  A list of these options is available with ./configure
---help; a more detailed description follows:
-
---enable-poll
-  The configure script attempts to only use poll on systems where that
-is a direct system call.  Sometimes, however, it will not properly
-detect this.  This option is meant to force ircd to use poll on
-systems where ./configure does not detect that it is a system call.
-
---enable-debug
-  This option turns on DEBUGMODE, which enables code useful for
-debugging the server.  THIS FEATURE SHOULD NOT BE USED ON A PRODUCTION
-NETWORK; it represents a severe privacy risk.
-
---disable-asserts
-  Assertions are a means of checking that certain underlying
-assumptions are met.  This option disables those assertions.
-
---disable-symbols
-  By default, the -g compiler option is used to enable symbols on the
-binary.  These symbols are useful when attempting to track down the
-cause of a crash.  Please do not use this option.
-
---enable-profile
-  This option simply adds the -pg compiler option to enable profiling
-support.
-
---enable-pedantic
---enable-warnings
-  The Coder Committee attempts to release code that generates no
-compile-time warnings or errors.  These two options add gcc-specific
-warning flags to the compiler flags.  These options should not be used
-if your compiler is not gcc.
-
---disable-inlines
-  Some critical functions are forcefully inlined.  This flag disables
-that behavior.  It should not be used for performance reasons.
-
---disable-devpoll
-  On systems that have /dev/poll, the /dev/poll-based engine is
-automatically enabled.  This option inhibits that behavior.
-
---disable-kqueue
-  On systems that have kqueue(), the kqueue()-based engine is
-automatically enabled.  This option inhibits that behavior.
-
---with-symlink=name
-  When "make install" is executed, the daemon is installed in such a
-way that old versions are kept, and a symlink is made to the latest
-installed version.  This option selects the name given to that
-symlink.  Specify a symlink name of "no" or use "--without-symlink" to
-disable this behavior.
-
---with-mode=mode
-  The daemon binary is installed with permissions 711 by default; this
-option may be used to specify a different permission set for the
-binary.
-
---with-owner=owner
-  By default, the owner of the installed binary will be the same as
-the person that compiled it; this option permits a different owner to
-be specified.
-
---with-group=group
-  By default, the group owner of the installed binary will be the same
-as the primary group of the person that compiled it (at the time it
-was compiled); this option permits a different group owner to be
-specified.
-
---with-domain=domain
-  The daemon attempts to keep some statistics on the server's user
-load, including how many local users connect to the server.  A local
-user is determined by comparing the user's host name to a domain
-name.  The domain name can be set through the feature subsystem, as
-documented in doc/readme.features; however, it will default either to
-the domain specified with this flag, or to a name extracted from
-/etc/resolv.conf, if it exists.
-
---with-chroot=dir
-  Some admins may wish to run ircd within a chroot "jail," to enhance
-the security of their systems.  Although the chroot() code was removed
-from ircd, the build system still supports operation of this form.  If
-you wish to use chroot-based jails, read doc/readme.chroot and give
-this option to ./configure.
-
---with-dpath=dir
-  This option simply specifies the path to the data directory for the
-daemon.  If --with-chroot has been given, this path must be compatible
-with the chroot directory.  See doc/readme.chroot for more information
-about this restriction.
-
---with-cpath=file
-  This option simply specifies the path to the configuration file for
-the daemon, and may be either a relative or absolute path name.  If it
-is an absolute path, and if --with-chroot has been given, this path
-must be compatible with the chroot directory.  See doc/readme.chroot
-for more information about this restriction.
-
---with-lpath=file
-  When the server is compiled in DEBUGMODE (--enable-debug), the
-debugging logs will be sent to the file specified here (defaulting to
-"ircd.log" in the data directory).  If this is an absolute path,
---with-chroot has been given, and if that path is not compatible with
-the chroot directory, then a warning will be issued and the default
-will be used.  See doc/readme.chroot for more information about this
-restriction.
-
---with-maxcon=maxcon
-  The maximum number of sockets that the server may open is normally
-derived from the hard limit on the number of file descriptors.  If
-desired, a higher value may be used by specifying this option to
-./configure.
-
-
-Undocumented Features:
-
-Every Undernet server released has had at least one undocumented
-feature ;-) Here are a few of the ones available in ircu2.10.11.  I'm
-sure there are a few more we are unaware of, these are the ones we
-know about.
+Despite our preferences to keep these undocumented, they are
+occasionally useful, and are described here for users who may
+need them.
 
 To enable these, you need to add them to CFLAGS prior to running
 ./configure, usually as in: CFLAGS="-O2 -D<option>" ./configure
 
--DNICKLEN=15
-  This allows you do override the default nick length to 15
-characters.  If this has different values on different servers your
-network *WILL* fall apart.  Only use this option if you know what your
-doing. If you don't, ask in #coder-com on undernet.
+-DNICKLEN=20
+
+  This allows you change the maximum nick length from 15 to 20 (or
+whatever number you use at the end).  It MUST be the same on all
+servers on your network, or bad things will happen.  You should also
+use the NICKLEN feature in ircd.conf.
 
--DNO_THROTTLE
+-DNOTHROTTLE
   This disables the throttling code.  This is used for debugging
 *only*.  It lets you connect up to 255 clients from one host with no
-time considerations.  If this is enabled on a production server I will
+time considerations.  If this is enabled on a production server Kev will
 personally drive your server into the ground.  You have been warned.