More RELEASE.NOTES updates and operator privilege documentation.
[ircu2.10.12-pk.git] / RELEASE.NOTES
1 Release notes for ircu2.10.12
2 Last updated: 14 Jan 2005
3 Written by Michael Poole <mdpoole@troilus.org>
4 Based on earlier documents by Kev <klmitch@mit.edu> and
5 Braden <dbtem@yahoo.com>.
6
7 This document briefly describes changes in ircu2.10.12 relative to
8 ircu2.10.11.  ircu2.10.12 is only compatible with servers that
9 implement the P10 protocol.  It has been tested to link against
10 ircu2.10.11, but some features (notably IPv6 support) are not
11 supported by ircu2.10.11.
12
13 Enhancements:
14
15 The configuration file format has changed to one that is easier to
16 read.  It is based on the configuration parser found in ircd-hybrid.
17 As usual, an example configuration file can be found in the doc
18 subdirectory.
19
20 ircu now supports IPv6 clients.  If your operating system provides
21 IPv6 socket support, ircu can accept connections on IPv6 addresses.
22 Even if your operating system does not support IPv6 sockets, you can
23 link (using IPv4) to a server that has IPv6 clients, and ircu will
24 treat the IPv6 clients correctly.
25
26 The DNS resolver has been replaced with a streamlined version (also
27 from ircd-hybrid) that avoids some of the complications from using
28 the full libresolv or adns libraries.
29
30 The server can query an IAUTH external authorization server.  The
31 protocol is described in doc/readme.iauth.  This allows an external
32 program to accept or reject any client that connects to the server
33 and allows that external program to assign an account stamp to the
34 incoming user.
35
36 A new feature called "oplevels" has been added.  It uses new channel
37 keys (+A for the administrator, +U for users) to grant chanop status
38 when you join using those keys.  Part of this channel protection is
39 that you cannot be deopped in channel by someone who you opped.
40
41 More than one hashing mechanism is now supported for oper passwords,
42 and a new tool (ircd/umkpasswd) is provided to generate them.
43
44 Commands that send messages to specified services may be defined in
45 the configuration file by using Pseudo blocks.  This lets users use
46 commands like /X or /CHANSERV from their client, without tying the
47 admin to a particular arrangement or naming of services.
48
49 Clients may negotiate extensions and changes to the standard IRC
50 client protocol by using the CAP command during registration.  There
51 does not appear to be any documentation for the protocol, which should
52 not matter since ircu does not currently implement capabilities that
53 affect the protocol.
54
55 The /stats command accepts string identifiers in addition to
56 single-character identifiers.  For example, "/stats access" shows the
57 same data as "/stats i".  Supported names are shown by /stats.  New
58 /stats options are: /stats a (nameservers), to list DNS nameservers in
59 use; /stats L (modules), to list loaded modules; and /stats R
60 (mappings), to list privmsg helper commands defined by Pseudo blocks.
61 By default, all of these are hidden from normal users.
62
63 Client blocks (previously I: lines), Operator blocks (previously O:
64 and o: lines), channel bans and silences may use CIDR notation instead
65 of simple wildcards.  You may also have silence exceptions by putting
66 '-' before the mask; for example, if you wish to silence everyone
67 except X, you could use SILENCE *!*@*,-X!cservice@undernet.org.
68
69 The server will no longer kick "net riders" in keyed (+k) channels if
70 both sides of the net join have the same key.
71
72 Configuration Changes:
73
74 As mentioned above, the configuration file format has changed
75 radically.  Please consult doc/example.conf for details on the
76 new format.  Some prominent changes follow.
77
78 The old contents of H: lines have been merged into the Connect block
79 that describes the peer server(s) that should be allowed to hub.
80
81 Two default virtual host addresses may be specified, one for IPv4
82 sockets and one for IPv6 sockets.
83
84 Nickname jupes have their own blocks, and do not share structure with
85 UWorld server declarations.
86
87 Operator connection classes and individual operator blocks may be
88 assigned privileges, rather than having them controlled globally.
89 Because of this, the feature settings that controlled the privileges
90 globally have been removed.
91
92 The maximum number of clients allowed per IP may be set in a Client
93 block (the equivalent of C: lines).
94
95 New feature settings (see doc/readme.features for explanations):
96 ANNOUNCE_INVITES, HIS_STATS_L, HIS_STATS_a, HIS_STATS_R,
97 LOCAL_CHANNELS, TOPIC_BURST.
98
99 Deleted features, since they had no effect even in 2.10.11: AUTOHIDE,
100 HIS_DESYNCS, TIMESEC.
101
102 Deleted features since they are now controlled by other configuration
103 entries: VIRTUAL_HOST, oper and locop privilege features.
104
105 Compile Time Options:
106
107 A listing of supported compile-time options may be seen by running
108 "./configure --help".  The defaults should be sane.  In particular,
109 you should NOT compile with --enable-debug or with --disable-symbols
110 on a production network.
111
112 Otherwise Undocumented Features:
113
114 Despite our preferences to keep these undocumented, they are
115 occasionally useful, and are described here for users who may
116 need them.
117
118 To enable these, you need to add them to CFLAGS prior to running
119 ./configure, usually as in: CFLAGS="-O2 -D<option>" ./configure
120
121 -DNICKLEN=20
122
123   This allows you change the maximum nick length from 15 to 20 (or
124 whatever number you use at the end).  It MUST be the same on all
125 servers on your network, or bad things will happen.  You should also
126 use the NICKLEN feature in ircd.conf.
127
128 -DNOTHROTTLE
129   This disables the throttling code.  This is used for debugging
130 *only*.  It lets you connect up to 255 clients from one host with no
131 time considerations.  If this is enabled on a production server Kev will
132 personally drive your server into the ground.  You have been warned.
133
134
135 Operating System and Kernel Requirements:
136
137 If you plan allowing more than 1000 clients on your server, you may
138 need to adjust your kernel resource limits for networking and
139 I/O. There are two things you will need to pay particular attention
140 to, the number of file descriptors available and the number of buffers
141 the kernel has available to read and write data to the file
142 descriptors.
143
144 To calculate kernel buffer requirements a good place to start is to
145 multiply the expected number connections expected on the machine by
146 the amount of data we buffer for each connection.  Doubling the result
147 of the above calculation and dividing it by the size of the buffers
148 the kernel uses for I/O should give you a starting place.
149
150 The server uses 2K kernel buffers for clients, and 64K kernel buffers
151 for servers (actual use may be somewhat higher).
152
153 c_count - number of clients expected
154 c_q     - number of bytes buffered for each client
155 s_count - number of servers expected
156 s_q     - number of bytes buffered for each server
157
158 buffer count = (2 * (c_count * c_q + s_count * s_q)) / kernel buffer size
159
160 If the client count is 2000 and the server count is 1 (normal leaf)
161 and your server uses 2K as an I/O buffer size:
162
163 You need (2 * (2000 * 2048 + 1 * 65536)) / 2048 or a minimum of 4064
164 buffers available, if the kernel uses 512 byte buffers you will need a
165 minimum of 16256 kernel buffers.
166
167 These settings may be a bit light for net-breaks under full client
168 load you will need to experiment a bit to find the right settings for
169 your server.
170
171 FreeBSD --WildThang
172
173 You may want to increase your kernel resources if you want to put a
174 lot of clients on your machine here are a few values to start with:
175
176 CHILD_MAX=4096
177 OPEN_MAX=4096
178 FD_SETSIZE=4096
179 NMBCLUSTERS=8096
180
181 If you have trouble connecting *out* from your machine try:
182  sysctl -w net.inet.ip.portrange.last=10000
183
184 Solaris 2.6  --Tar
185
186 Increase the default hard limit for file descriptors in /etc/system:
187
188 set rlim_fd_max = 4096
189
190 The server will raise the soft limit to the hard limit.
191
192 Linux 2.2 -- [Tri]/Isomer
193
194 The kernel has a kernel destination cache size of 4096.  If the kernel
195 sees more than 4096 IP's in 60s it warns 'dst cache overflow'.  This
196 limit can be changed by modifying /proc/sys/net/ipv4/route/max_size.
197
198 A patch to select is also recommended if you have regular poll/select
199 errors.