<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://wiki.darenet.org/skins/common/feed.css?12"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
	<channel>
		<title>README.patches (history) - Revision history</title>
		<link>http://wiki.darenet.org/index.php?title=README.patches_(history)&amp;action=history</link>
		<description>Revision history for this page on the wiki</description>
		<language>en</language>
		<generator>MediaWiki 1.15.1</generator>
		<lastBuildDate>Sun, 05 Apr 2026 16:55:40 GMT</lastBuildDate>
		<item>
			<title>Nitemare:&amp;#32;README.pacthes (history) moved to README.patches (history): Typo!</title>
			<link>http://wiki.darenet.org/index.php?title=README.patches_(history)&amp;diff=3665&amp;oldid=prev</link>
			<description>&lt;p&gt;&lt;a href=&quot;/README.pacthes_(history)&quot; class=&quot;mw-redirect&quot; title=&quot;README.pacthes (history)&quot;&gt;README.pacthes (history)&lt;/a&gt; moved to &lt;a href=&quot;/README.patches_(history)&quot; title=&quot;README.patches (history)&quot;&gt;README.patches (history)&lt;/a&gt;: Typo!&lt;/p&gt;

		&lt;table style=&quot;background-color: white; color:black;&quot;&gt;
		&lt;col class='diff-marker' /&gt;
		&lt;col class='diff-content' /&gt;
		&lt;col class='diff-marker' /&gt;
		&lt;col class='diff-content' /&gt;
		&lt;tr valign='top'&gt;
		&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Older revision&lt;/td&gt;
		&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 17:50, 14 January 2009&lt;/td&gt;
		&lt;/tr&gt;
		&lt;!-- diff generator: internal 2026-04-05 16:55:40 --&gt;
&lt;/table&gt;</description>
			<pubDate>Wed, 14 Jan 2009 17:50:09 GMT</pubDate>			<dc:creator>Nitemare</dc:creator>			<comments>http://wiki.darenet.org/Talk:README.patches_(history)</comments>		</item>
		<item>
			<title>Secretagent:&amp;#32;New page: &lt;pre&gt; The available patches for 2.8*mu servers are:  Tp8 = TimeStampPre8 - A protocol which disallows netsplit ops and channel                       desynchs.  Bquiet - does not allow a pe...</title>
			<link>http://wiki.darenet.org/index.php?title=README.patches_(history)&amp;diff=2262&amp;oldid=prev</link>
			<description>&lt;p&gt;New page: &amp;lt;pre&amp;gt; The available patches for 2.8*mu servers are:  Tp8 = TimeStampPre8 - A protocol which disallows netsplit ops and channel                       desynchs.  Bquiet - does not allow a pe...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
The available patches for 2.8*mu servers are:&lt;br /&gt;
&lt;br /&gt;
Tp8 = TimeStampPre8 - A protocol which disallows netsplit ops and channel&lt;br /&gt;
                      desynchs.&lt;br /&gt;
&lt;br /&gt;
Bquiet - does not allow a person who is banned to speak over the channel&lt;br /&gt;
&lt;br /&gt;
Silence - Cuts off flooding at local server&lt;br /&gt;
&lt;br /&gt;
Anc = Anti-Nick collide - *Intentional* nick collides are impossible with&lt;br /&gt;
			   this wonderful patch.&lt;br /&gt;
&lt;br /&gt;
W = Wallops - lets you send messages to other IRC ops&lt;br /&gt;
&lt;br /&gt;
ban = BanInformation - Lets you see who did a ban and when, as well&lt;br /&gt;
&lt;br /&gt;
sw = /stats w - lets you gather statistics on average client connects&lt;br /&gt;
&lt;br /&gt;
To = TopicInformation - Lets you see who set the topic for a channel and when&lt;br /&gt;
&lt;br /&gt;
S = Signon Time - Tells you when a local user signed onto IRC&lt;br /&gt;
&lt;br /&gt;
Cl = Client connect - Notifies opers on your server of client connects/&lt;br /&gt;
                      disconnects (with disconnect reason)&lt;br /&gt;
&lt;br /&gt;
TT = Trace Times - displays the time (in secs) since your server last heard&lt;br /&gt;
                   anything from a client/server, when you do /trace.&lt;br /&gt;
&lt;br /&gt;
KL = K-line comments - Allows you to modify the lame &amp;quot;no ghosts allowed&amp;quot; default &lt;br /&gt;
			comment to whatever you wish, or alternately, display a &lt;br /&gt;
                        file to a rejected client.&lt;br /&gt;
&lt;br /&gt;
OF = Oper fail patch - displays a warning to current ops when someone fails&lt;br /&gt;
			in entering the right oper password.&lt;br /&gt;
&lt;br /&gt;
MC = Mixed case patch - useful for those pesky clone bots and hacked logins;&lt;br /&gt;
		disallows userids which have mixed case or control chars&lt;br /&gt;
&lt;br /&gt;
N = Note - allows you keep a &amp;quot;note&amp;quot; for other users, amongst other things&lt;br /&gt;
&lt;br /&gt;
-----------------------------------------------------------------------------&lt;br /&gt;
Explanations for these patches follow.....&lt;br /&gt;
&lt;br /&gt;
Help on patches written by Mandar Mirashi (mmmirash@mailhost.ecn.uoknor.edu)&lt;br /&gt;
                           Mmmm on IRC.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=============================================================================&lt;br /&gt;
                                TIMESTAMP &lt;br /&gt;
=============================================================================&lt;br /&gt;
Author: Carlo, carlo@sg.tn.tudelft.nl, Run on IRC.&lt;br /&gt;
Info on TS protocol:&lt;br /&gt;
&lt;br /&gt;
				TSpre7&lt;br /&gt;
&lt;br /&gt;
------&lt;br /&gt;
Effects of the TS protocol:&lt;br /&gt;
&lt;br /&gt;
&amp;gt; No mode wars possible.&lt;br /&gt;
  When you take someones op there are three possibilities:&lt;br /&gt;
  - You were too late (You was already de-opped on your server).&lt;br /&gt;
  - You take it (On the *whole* net).&lt;br /&gt;
  - You start taking it (on your server, but it is 'bounced' (ie your mode&lt;br /&gt;
    change is cancelled); This occurs when you try to do mode change&lt;br /&gt;
    direct after a net re-connection in a situation were you hacked op by&lt;br /&gt;
    net-break riding.&lt;br /&gt;
&amp;gt; No desynchronisation possible.&lt;br /&gt;
&amp;gt; No unnecessary MODE msg send. You can't send 'double' mode's that don't&lt;br /&gt;
  make sense. Servers don't send unnecessary MODE's either.&lt;br /&gt;
&amp;gt; Hacking op is from now on *only* possible by admins that hacked their&lt;br /&gt;
  servercode, and therefor easier to prosecute. Also you can 'hack' op still&lt;br /&gt;
  exactly like now (by riding net break) on an *opless* channel.&lt;br /&gt;
&amp;gt; The protocol is fully compatible with older servers: It is invisible&lt;br /&gt;
  and it works with old servers like this: Every 'block' of direct connected&lt;br /&gt;
        2.8.x.TS servers will stay synchronized, Hacking op is impossible by means&lt;br /&gt;
        of riding a net break between two TS-servers on channels that were created&lt;br /&gt;
        within that block. In all other cases the same happens as without TS.&lt;br /&gt;
&lt;br /&gt;
Here follow technical details implemented in TSpre7:&lt;br /&gt;
&lt;br /&gt;
------&lt;br /&gt;
&lt;br /&gt;
Reference: 2.8.14/15.TSpre7&lt;br /&gt;
Full list of TS-MODE-Change protocol:&lt;br /&gt;
&lt;br /&gt;
-Mode changes (originating by clients) are refused only:&lt;br /&gt;
 1) from a client that is directly connected and has no chan ops on &lt;br /&gt;
    the channel on its server.&lt;br /&gt;
 2) when not being a change of the internal state of a server (Well, refused&lt;br /&gt;
    is to strong, propagation of the mode is just unnecessary and thus not&lt;br /&gt;
    done).&lt;br /&gt;
 3) from someone flagged as de-opped-by-server. (flag is reset when this&lt;br /&gt;
    person is opped again by anyone) (The server detecting this mode change&lt;br /&gt;
    cancels the mode change, by bouncing it upstream, thus keeping the net&lt;br /&gt;
    synchronized).&lt;br /&gt;
&lt;br /&gt;
-An extra parameter is added behind MODE changes *done* by servers, sended&lt;br /&gt;
 *to* other servers. It is a Universal Time in ascii seconds. This extra&lt;br /&gt;
 parameter is NOT sended when it is 0 (can happen with old servers on the&lt;br /&gt;
 net), 0 means &amp;lt;NONE&amp;gt; rather then Jan 1st 1970 :).&lt;br /&gt;
 This parameter is the creationtime of the channel being: the universal time at&lt;br /&gt;
 which the channel was created by a *local* client; or the non-zero received&lt;br /&gt;
 creation time from an other server (as parameter with a mode change) that&lt;br /&gt;
 was earlier then its own; or equal 0 when the channel was created by&lt;br /&gt;
 a non-local client and no MODE with TS was received (yet).&lt;br /&gt;
&lt;br /&gt;
-Of the channel_flags is 1 bit more used: CHFL_DEOPPED, set when de-opped&lt;br /&gt;
 by a server (compare CHFL_CHANOP, set when channel operator). It's reset&lt;br /&gt;
 when opped. (And starts reset on joining (creation?) of a channel, this&lt;br /&gt;
 will be changed to 'set' on join, when all servers have TS; making detection&lt;br /&gt;
 of op hacking by admins a bit easier).&lt;br /&gt;
&lt;br /&gt;
-Timestamps (sended by TS-servers) are handled as follows:&lt;br /&gt;
 Received TS      Own TS      Bounced/Propagated&lt;br /&gt;
    equal          equal       propagated&lt;br /&gt;
    later          &amp;gt;0,earlier  if ops: bounced with own TS&lt;br /&gt;
                               if no ops: propagated with own TS&lt;br /&gt;
                               (own TS is sended upstream too, to make sure&lt;br /&gt;
                                TS stays synchronized).&lt;br /&gt;
    earlier        later       TS copied, propagated&lt;br /&gt;
    none           any         propagated, own TS sended.&lt;br /&gt;
    &amp;gt;0             none        if ops: propagated, no TS sended, own TS stays 0.&lt;br /&gt;
                               if no ops: TS copied, propagated.&lt;br /&gt;
&lt;br /&gt;
-A mode change +/-o nick (+/- v) from a person that is deopped by a server&lt;br /&gt;
 results in a -/+o nick back up stream (and is not propagated) if it was&lt;br /&gt;
 an attempt to change the internal state of the receiving server.&lt;br /&gt;
&lt;br /&gt;
-kick is handled as mode -o, internal state 'not on channel' being 'already&lt;br /&gt;
 de-opped'. Bounce includes JOIN and restoring o and v flags.&lt;br /&gt;
 (Effect: You don't even *see* the kick on one side, on the other side&lt;br /&gt;
  the person joins again and gets his flags back from the bouncing server).&lt;br /&gt;
&lt;br /&gt;
-A received TimeStamp that claims a creation time *earlier* then that&lt;br /&gt;
 this server dissapeared from the net results in a HACK: notice (with&lt;br /&gt;
 time difference in seconds). Bye OPER.. (This meaning, to hack op&lt;br /&gt;
 on an existing channel that was created 15 minutes before you disconnected&lt;br /&gt;
 your server, you will have generated a HACK notice: Clock set back at least&lt;br /&gt;
 900 seconds by &amp;lt;nick&amp;gt;.) (Not yet implemented, prob. in pre8).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
				TSpre8&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
From: Carlo Kid - Runaway &amp;lt;carlo@sg.tn.tudelft.nl&amp;gt;&lt;br /&gt;
Subject: *** IMPORTANT; RFC&lt;br /&gt;
To: wastelanders@rush.cc.edu (New Wastelanders MailingList)&lt;br /&gt;
Date: Thu, 14 Apr 94 18:03:38 METDST&lt;br /&gt;
Mailer: Elm [revision: 66.33]&lt;br /&gt;
Status: RO&lt;br /&gt;
&lt;br /&gt;
Hi, please read this carefully and respond if you think it will result&lt;br /&gt;
in INCORRECT behaviour under any circumstances:&lt;br /&gt;
&lt;br /&gt;
Here follow technical details implemented in TSpre8:&lt;br /&gt;
&lt;br /&gt;
------&lt;br /&gt;
&lt;br /&gt;
Reference: 2.8.17.TSpre8&lt;br /&gt;
Full list of TS-MODE-Change protocol:&lt;br /&gt;
&lt;br /&gt;
-Mode changes (originating by clients) are refused only:&lt;br /&gt;
 1) from a client that is directly connected and has no chan ops on &lt;br /&gt;
    the channel on its server.&lt;br /&gt;
 2) when not being a change of the internal state of a server (Well, refused&lt;br /&gt;
    is to strong, propagation of the mode is just unnecessary and thus not&lt;br /&gt;
    done).&lt;br /&gt;
 3) from someone flagged as de-opped-by-server. (flag is reset when this&lt;br /&gt;
    person is opped again by anyone) (The server detecting this mode change&lt;br /&gt;
    cancels the mode change, by bouncing it upstream, thus keeping the net&lt;br /&gt;
    synchronized).&lt;br /&gt;
 4) When a '0' as timestamp is received, originating from a server (see below).&lt;br /&gt;
    Then the whole mode is ignored, a HACK notice is sent to all ops and the&lt;br /&gt;
                string is propagated as received.&lt;br /&gt;
&lt;br /&gt;
-An extra parameter is added behind MODE changes *done* by servers, sent&lt;br /&gt;
 *to* other servers *containing* a +o, -o, +v or -v.&lt;br /&gt;
 It is a Universal Time in ascii seconds.&lt;br /&gt;
 Whenever a HACK is detected, a HACK: notice is sent to all local opers,&lt;br /&gt;
 and the full MODE is propagated with a '0' as timestamp, generating&lt;br /&gt;
 a HACK notice on all other servers.&lt;br /&gt;
 Otherwise this parameter is the creationtime of the channel being: the&lt;br /&gt;
 universal time at which the channel was created by a *local* client;&lt;br /&gt;
 or the non-zero received creation time from an other server (as parameter&lt;br /&gt;
 with a mode change) that was earlier then its own; or equal 0 when the&lt;br /&gt;
 channel was created by a non-local client and no MODE with TS was received&lt;br /&gt;
 (yet).&lt;br /&gt;
&lt;br /&gt;
-Of the channel_flags is 1 bit more used: CHFL_DEOPPED, set when de-opped&lt;br /&gt;
 by a server (compare CHFL_CHANOP, set when channel operator). It's reset&lt;br /&gt;
 when opped. It starts *set* on joining (creation?) of a channel, making&lt;br /&gt;
 detection of op hacking by admins a bit easier.&lt;br /&gt;
&lt;br /&gt;
-Timestamps (sent by TS-servers) are handled as follows:&lt;br /&gt;
 Received TS      Own TS      Bounced/Propagated&lt;br /&gt;
    equal          equal       propagated&lt;br /&gt;
    later          &amp;gt;0,earlier  if ops: bounced with own TS&lt;br /&gt;
                               if no ops: TS copied, propagated&lt;br /&gt;
    earlier        later       TS copied, propagated&lt;br /&gt;
    0 or none      any         HACK generated, 0 propagated, own TS is kept&lt;br /&gt;
    &amp;gt;0             none        TS copied, propagated.&lt;br /&gt;
&lt;br /&gt;
-A mode change +/-o nick (+/- v) from a person that is deopped by a server&lt;br /&gt;
 results in a -/+o nick back up stream (and is not propagated) if it was&lt;br /&gt;
 an attempt to change the internal state of the receiving server.&lt;br /&gt;
&lt;br /&gt;
-kick is handled as mode -o, internal state 'not on channel' being 'already&lt;br /&gt;
 de-opped'. Bounce includes JOIN and restoring o and v flags.&lt;br /&gt;
 (Effect: You don't even *see* the kick on one side, on the other side&lt;br /&gt;
  the person joins again and gets his flags back from the bouncing server).&lt;br /&gt;
&lt;br /&gt;
-A received TimeStamp that claims a creation time *earlier* then that&lt;br /&gt;
 this server dissapeared from the net results in a HACK: notice (with&lt;br /&gt;
 time difference in seconds). Bye OPER.. (This meaning, to hack op&lt;br /&gt;
 on an existing channel that was created 15 minutes before you disconnected&lt;br /&gt;
 your server, you will have generated a HACK notice: Clock set back at least&lt;br /&gt;
 900 seconds by &amp;lt;nick&amp;gt;.)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
From: Carlo Kid - Runaway &amp;lt;carlo@sg.tn.tudelft.nl&amp;gt;&lt;br /&gt;
Subject: TSpre8 can work! :)&lt;br /&gt;
To: wastelanders@rush.cc.edu (New Wastelanders MailingList)&lt;br /&gt;
Date: Wed, 20 Apr 94 11:44:39 METDST&lt;br /&gt;
Mailer: Elm [revision: 66.33]&lt;br /&gt;
Status: RO&lt;br /&gt;
&lt;br /&gt;
Well... it took me a few days (a night and some dreams actually), but&lt;br /&gt;
I think I found a solution for the problem I mentioned during the meeting :)&lt;br /&gt;
&lt;br /&gt;
Let me first repeat the problem:&lt;br /&gt;
&lt;br /&gt;
- I stated that TSpre8 would prevent op hacking by admins, but... later&lt;br /&gt;
  I realized that that was impossible the way wanted it :(&lt;br /&gt;
  My idea was at first: Simply generate a HACK notice when a server&lt;br /&gt;
  comes on the net with a creation time earlier then when it did split off&lt;br /&gt;
  (and earlier then my own creation time). This sounds nice, but in&lt;br /&gt;
  even this simple case it doesn't work:&lt;br /&gt;
&lt;br /&gt;
Server A and B, users a and b:&lt;br /&gt;
&lt;br /&gt;
  A -- B &lt;br /&gt;
  |    &lt;br /&gt;
 @a       TS=100&lt;br /&gt;
&lt;br /&gt;
Split at t=200&lt;br /&gt;
&lt;br /&gt;
  A    B&lt;br /&gt;
  |    &lt;br /&gt;
 @a &lt;br /&gt;
&lt;br /&gt;
b joins at t=300&lt;br /&gt;
&lt;br /&gt;
  A(TS=100)  B(TS=300)&lt;br /&gt;
  |          |&lt;br /&gt;
 @a         @b&lt;br /&gt;
&lt;br /&gt;
Net joins:&lt;br /&gt;
&lt;br /&gt;
  A -- B&lt;br /&gt;
  |    |&lt;br /&gt;
  a    b&lt;br /&gt;
&lt;br /&gt;
Both are de-opped: b because he sends a TS of 300 with is greater (later)&lt;br /&gt;
then 100 (correctly: he used the netbreak). And a is deopped with a&lt;br /&gt;
HACK notice by B, because he introduces 1) a TS earlier then the existing&lt;br /&gt;
TS (100&amp;lt;300) and 2) the 100 is earlier then the time the split occured.&lt;br /&gt;
&lt;br /&gt;
The reason why this goes wrong is simply because B *forgets* the channel&lt;br /&gt;
AND the TS of 100, after the split... If B would *keep* in memory that&lt;br /&gt;
the channel existed on A and with what TS, it would be possible, but only&lt;br /&gt;
at cost of a lot of extra memory usage...&lt;br /&gt;
&lt;br /&gt;
Now my new idea :) It allows hacking, but only in not so very interesting&lt;br /&gt;
cases... And at least it makes it extremely difficult for a newbee, so we&lt;br /&gt;
might at least catch 99% before they understand how it works :)&lt;br /&gt;
&lt;br /&gt;
(This explanation should not be on a public ftp site anymore after a while :)&lt;br /&gt;
&lt;br /&gt;
New rules:&lt;br /&gt;
&lt;br /&gt;
- Servers that are OFF the net for more then one day are forgotten.&lt;br /&gt;
- New servers (or forgotten servers), are always bounced except on channels&lt;br /&gt;
  that have no ops (when they create a channel of their own thus :) unless&lt;br /&gt;
  the receiving server is younger then one day and the introduced TS is&lt;br /&gt;
  earlier then the start up time (minus 10 minutes :/) of the receiving server.&lt;br /&gt;
  'Birthdays' of those servers are also kept.&lt;br /&gt;
- A server that splitted off while a channel already existed, and thus&lt;br /&gt;
  has a creation time earlier then the &amp;quot;received squit time&amp;quot; of that&lt;br /&gt;
  server, is not allowed to introduce an earlier timestamp then the&lt;br /&gt;
  creationtime of the channel (HACK), and also not an equal TS when&lt;br /&gt;
  younger then one day.&lt;br /&gt;
- A server introducing a server with an earlier &amp;quot;time of received squit&amp;quot;&lt;br /&gt;
  inherrits that time as its own &amp;quot;time of received squit&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
This allows to hack op on a channel that didn't exist when you splitted&lt;br /&gt;
(not interesting). You also can't keep a server off the net till you need&lt;br /&gt;
it (a telnet connection), because those can't do anything for one day long,&lt;br /&gt;
unless they send the TS *equal* to the existing TS (The only exception :(),&lt;br /&gt;
having to connect between two and one days before the hack, break between&lt;br /&gt;
zero and one day before the hack but before the channel existed, connect&lt;br /&gt;
and hack with equal TS.&lt;br /&gt;
&lt;br /&gt;
What do you think? Just for fun? :)&lt;br /&gt;
&lt;br /&gt;
Apart from that it would be suspicious when someone connects/breaks every&lt;br /&gt;
24 hours a &amp;quot;test&amp;quot; server, channels that exist longer then one day are&lt;br /&gt;
unhackable.&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;disadvantages&amp;quot; are: servers that break off the net for *longer* then&lt;br /&gt;
one day, but keep a channel up with an op, on *both sides of the net, will&lt;br /&gt;
be completely de-opped after reconnection.&lt;br /&gt;
&lt;br /&gt;
*** IMPORTANT:&lt;br /&gt;
&lt;br /&gt;
I am absolutely not sure ;) if there aren't any other disadvantages or&lt;br /&gt;
unwanted effects :) Please, think this over and mail me if you find some&lt;br /&gt;
objection...&lt;br /&gt;
&lt;br /&gt;
Run&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
From: Carlo Kid - Runaway &amp;lt;carlo@sg.tn.tudelft.nl&amp;gt;&lt;br /&gt;
Subject: 2.8.19.U3 RELEASED&lt;br /&gt;
To: wastelanders@rush.cc.edu (New Wastelanders MailingList)&lt;br /&gt;
Date: Sun, 22 May 94 14:15:41 METDST&lt;br /&gt;
Cc: carlo@sg.tn.tudelft.nl&lt;br /&gt;
Mailer: Elm [revision: 66.33]&lt;br /&gt;
Status: RO&lt;br /&gt;
&lt;br /&gt;
Hi all :)&lt;br /&gt;
&lt;br /&gt;
Proud to present: 2.8.19.U3 :)&lt;br /&gt;
&lt;br /&gt;
I have spend *enormous* amounts of time in TESTING this version,&lt;br /&gt;
and I really hope it is completely bug free, but the changes are&lt;br /&gt;
very big, so maybe persons who only want to upgrade/compile ONCE&lt;br /&gt;
should wait a little longer then the compile cracks we have here ;)&lt;br /&gt;
&lt;br /&gt;
For real testing we need the HUBs though! So please, don't hesitate,&lt;br /&gt;
Delft (a HUB) is running it already for a long time, also linked to&lt;br /&gt;
other 2.8.19.U3 test servers.&lt;br /&gt;
&lt;br /&gt;
Before I'll tell about whats new in U3, I want to especially thank&lt;br /&gt;
President for the tremendous help in testing TSpre8 -- I would never&lt;br /&gt;
have been able bring up the stength to go through the difficult&lt;br /&gt;
periods without him being there to listen to my technical complaints ;)&lt;br /&gt;
&lt;br /&gt;
=======================================================================&lt;br /&gt;
&lt;br /&gt;
NEW in .U3&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
First all, TSpre8.&lt;br /&gt;
&lt;br /&gt;
It did not become what I hoped/expected to be possible :(&lt;br /&gt;
Hacking will still be possible, but at least it will be a LOT&lt;br /&gt;
more difficult when you don't know what you are doing, and I think&lt;br /&gt;
we WILL catch (new) admins that think they can abuse their powers&lt;br /&gt;
to be GOD on &amp;quot;their&amp;quot; channel.&lt;br /&gt;
&lt;br /&gt;
Especially, nobody will be able to hack *anything* with a normal nick.&lt;br /&gt;
And because server modes are more obvious a hack, this alone is a&lt;br /&gt;
step forward against admin hacking prevention imho.&lt;br /&gt;
&lt;br /&gt;
The .patch file is &lt;br /&gt;
-rw-------   1 carlo    users      65142 May 22 01:29 irc2.8.19-TSpre8.patch&lt;br /&gt;
big.&lt;br /&gt;
&lt;br /&gt;
I'll now brows through it and mentions changes in the order they appear&lt;br /&gt;
in the .patch file, arbitrary order thus ;)&lt;br /&gt;
&lt;br /&gt;
Zombies&lt;br /&gt;
-------&lt;br /&gt;
&lt;br /&gt;
As mentioned before on 'wastelanders', I changed the internal way a KICK&lt;br /&gt;
is handled, to be able to stop illegal -hacked- kicks from *outside* the&lt;br /&gt;
channel. This has no effect on server-server protocol nor on server-client&lt;br /&gt;
protocol. But because this way it is possible to keep (a little) memory&lt;br /&gt;
for channels you're not on (being kicked from) I thought it would be no&lt;br /&gt;
more then logical to stop people from joining the usual 10 ten channels&lt;br /&gt;
at the same time, *including* the ones you are kicked from (because they&lt;br /&gt;
occupy memory). This memory is released when you 1) Try to rejoin (so with&lt;br /&gt;
all people having a auto-rejoin-on kick NOTHING changed at all), or 2)&lt;br /&gt;
when you do a part - this is new and only intended to use when you do&lt;br /&gt;
NOT have auto-rejoin, when you do not even WANT to rejoin, or try, assuming&lt;br /&gt;
you might not be banned, when you have been kicked like this of a lot of&lt;br /&gt;
channels and all together are &amp;quot;on&amp;quot; 10 channels so you NEED to leave one&lt;br /&gt;
before you can join another... For this rare case, you must know on&lt;br /&gt;
*which* channels you &amp;quot;are&amp;quot;, therefor this is visible when you do a&lt;br /&gt;
/names, or /who or /whois to yourself. It is never visible for others.&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
12:07 * Run (Daryl@sg.tn.tudelft.nl) has joined channel #wasteland&lt;br /&gt;
*** Mode change &amp;quot;+o Run&amp;quot; on channel #wasteland by Wasted&lt;br /&gt;
*** #wasteland : created Fri May 13 17:08:34 1994&lt;br /&gt;
&amp;lt;Macro&amp;gt; Hi Run !&lt;br /&gt;
*** You have been kicked off channel #wasteland by Run (Test)&lt;br /&gt;
*** Run is Daryl@sg.tn.tudelft.nl (/msg Run profile)&lt;br /&gt;
*** on channels: !#wasteland &lt;br /&gt;
*** on irc via server Delft.NL.EU.undernet.org (Runaway Server&lt;br /&gt;
+[130.161.188.188])&lt;br /&gt;
*** Run is away: Writting E-mail&lt;br /&gt;
*** Run is an IRC Operator&lt;br /&gt;
*** Run has been idle for 642 seconds.&lt;br /&gt;
&lt;br /&gt;
As you can see, the channel is marked with a '!' to show you are NOT&lt;br /&gt;
not that channel... Both, a part #wasteland as well as a join (being&lt;br /&gt;
not able to actually join because of ban, invite-only, key or limit), will&lt;br /&gt;
remove you from this channel. The part will be sent back to (only) you, and&lt;br /&gt;
everything has turned out to be 100% compatible with ircii protocol.&lt;br /&gt;
Finally, of course the channel is removed when everyone is kicked and/or&lt;br /&gt;
left the channel (a channel with only zombies is removed immedeately).&lt;br /&gt;
&lt;br /&gt;
#define RPL_CREATIONTIME     329&lt;br /&gt;
--------------------------------&lt;br /&gt;
&lt;br /&gt;
A new numeric is sent when you ask for a MODE of a channel, by doing&lt;br /&gt;
/MODE #channel&lt;br /&gt;
without parameters.&lt;br /&gt;
The reply is the same as before, but followed by a new numeric 329:&lt;br /&gt;
&lt;br /&gt;
/MODE #wasteland&lt;br /&gt;
Delft.NL.EU.undernet.org 324 Run #wasteland +t&lt;br /&gt;
Delft.NL.EU.undernet.org 329 Run #wasteland 768845314&lt;br /&gt;
&lt;br /&gt;
To supress this, you'll have to add something like:&lt;br /&gt;
ON ^329 *&lt;br /&gt;
to your .ircrc file. If you want to see this new numeric, you would&lt;br /&gt;
add&lt;br /&gt;
On ^329 &amp;quot;*&amp;quot; echo *** $1 : created $stime($2)&lt;br /&gt;
&lt;br /&gt;
It turns out that ircii clients ask for this mode when you join a&lt;br /&gt;
channel, therefor you will see the creationtime when you join a channel,&lt;br /&gt;
I'll leave it as an exercise to suppress this, but still being able to&lt;br /&gt;
see it when you specifically ask for it :)&lt;br /&gt;
&lt;br /&gt;
New ircd.conf line&lt;br /&gt;
------------------&lt;br /&gt;
&lt;br /&gt;
This is IMPORTANT :&lt;br /&gt;
In order for Uworld to work you MUST add those lines to your ircd.conf file:&lt;br /&gt;
&lt;br /&gt;
U:Uworld.undernet.org::*&lt;br /&gt;
U:Underworld.nl::*&lt;br /&gt;
&lt;br /&gt;
The later to allow the backup Underworld.nl to still function.&lt;br /&gt;
If you forget this, or do it wrong, your server might refuse to accept&lt;br /&gt;
certain mode changes from Uworld.undernet.org and start *bouncing*&lt;br /&gt;
modes done by lusers that got op from it. The name of servers allowed&lt;br /&gt;
to hack have to be agreed upon totally, by all admins. If one admin&lt;br /&gt;
removes his U: line, the service will not work always correctly.&lt;br /&gt;
&lt;br /&gt;
When a server does a mode change that is detected to be a hack, you&lt;br /&gt;
will see -as an oper, or +s luser- this notice:&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; *uworld* opcom MODE #wasteland +o Mmmm&lt;br /&gt;
!Uworld.undernet.org! Run is using Uworld to : MODE #wasteland +o Mmmm&lt;br /&gt;
*** Notice -- HACK: Uworld.undernet.org MODE #wasteland +o Mmmm &lt;br /&gt;
*** Mode change &amp;quot;+o Mmmm&amp;quot; on channel #wasteland by Uworld.undernet.org&lt;br /&gt;
&lt;br /&gt;
Normally, this HACK notice would NOT take effect! You still *see* the&lt;br /&gt;
HACK notice for the U: line server(s) but then they DO take effect.&lt;br /&gt;
&lt;br /&gt;
Every other message (some including the word HACK) do also take effect,&lt;br /&gt;
and are only a warning that someone is MAYBE hacking...&lt;br /&gt;
I didn't see it occur yet.&lt;br /&gt;
&lt;br /&gt;
Removed bugs&lt;br /&gt;
------------&lt;br /&gt;
&lt;br /&gt;
I did find some bugs in TSpre7, never thought that was possible :)&lt;br /&gt;
I forgot what it exactly was, but under (very rare) circumstances it&lt;br /&gt;
could be pretty serious :/&lt;br /&gt;
&lt;br /&gt;
One rather important thing is that now the TimeStamp is sent during a&lt;br /&gt;
net re.join when there are no ops. Before it was possible to create&lt;br /&gt;
a partly TimeStamp less net on an opless channel. TSpre8 garantees&lt;br /&gt;
that the TS is synchronized on the whole net at any time.&lt;br /&gt;
&lt;br /&gt;
Other messages&lt;br /&gt;
--------------&lt;br /&gt;
&lt;br /&gt;
Apart from the (true) HACK notice, you can get a:&lt;br /&gt;
&lt;br /&gt;
BOUNCE or HACK: notice, which does take effect and is most probably&lt;br /&gt;
just a bounce of a mode done by an attacker: someone immedeately after&lt;br /&gt;
a net re.join with his net.ride ops trying to de-op the others.&lt;br /&gt;
I don't think this will happen often because it will be clear to all lusers&lt;br /&gt;
that it is useless to try.&lt;br /&gt;
&lt;br /&gt;
NET.RIDE on opless #channel notice, you'll see this if someone does&lt;br /&gt;
really abuses a net break to get ops on some opless channel. The mode&lt;br /&gt;
does take effect however.&lt;br /&gt;
&lt;br /&gt;
FULL bounce of modes&lt;br /&gt;
--------------------&lt;br /&gt;
&lt;br /&gt;
When before someone would ride a net break, and try something, ONLY&lt;br /&gt;
his +/- o/v modes. Other modes like +mlk 1 \\|/\|/  would still take&lt;br /&gt;
effect. With TSpre8 this changed... All modes (except bans) are bounced&lt;br /&gt;
when someone rides a net break. Also the bouncing is more compact, while&lt;br /&gt;
with TSpre7 every o and v mode took one line, now all modes are kept into&lt;br /&gt;
one line.&lt;br /&gt;
&lt;br /&gt;
More allowed&lt;br /&gt;
------------&lt;br /&gt;
&lt;br /&gt;
Before you was (how lame) not allowed to mix things like k, o and v...&lt;br /&gt;
Now you are allowed, why not? Also you can use up to six parameters,&lt;br /&gt;
really gives you a power kick ;)&lt;br /&gt;
&lt;br /&gt;
*** Mode change &amp;quot;+vvvvvv flux epa Skip Run Mmmm gyn&amp;quot; on channel #wasteland by&lt;br /&gt;
+Run&lt;br /&gt;
&lt;br /&gt;
User friendly mask fixing&lt;br /&gt;
-------------------------&lt;br /&gt;
&lt;br /&gt;
The lame way Avalon fixes a mask (for a ban) is like this:&lt;br /&gt;
&lt;br /&gt;
/mode * +bb *.tudelft.nl Daryl@sg*.tn.tudelft.nl&lt;br /&gt;
&lt;br /&gt;
becomes:&lt;br /&gt;
&lt;br /&gt;
*** Mode change &amp;quot;+bb *.tudelft!*@* Daryl!*@sg*.tn.tudelft.nl&amp;quot; on channel&lt;br /&gt;
+#wasteland by Run&lt;br /&gt;
&lt;br /&gt;
The same on a TSpre8 server gives:&lt;br /&gt;
&lt;br /&gt;
*** Mode change &amp;quot;+b *!*@*.tudelft.nl&amp;quot; on channel #wasteland by Run&lt;br /&gt;
&lt;br /&gt;
While just Daryl@sg*.tn.tudelft.nl results in:&lt;br /&gt;
&lt;br /&gt;
*** Mode change &amp;quot;+b *!Daryl@sg*.tn.tudelft.nl&amp;quot; on channel #wasteland by Run&lt;br /&gt;
&lt;br /&gt;
which what one would expect!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Goodluck with compiling,&lt;br /&gt;
&lt;br /&gt;
Run&lt;br /&gt;
&lt;br /&gt;
PS If you encounter any problems, realize it is VERY unlikely that&lt;br /&gt;
   it is .U3, but if you really think so, then first try to compile&lt;br /&gt;
   plain 2.8.19. If you succeed, save the Makefile the include/config.h&lt;br /&gt;
   and the include/setup.h. Unpack .U3, replace those files and recompile.&lt;br /&gt;
   With this I assume you don't put your ircd.conf inside the source&lt;br /&gt;
   directories of course, that would still have the paths set wrong then.&lt;br /&gt;
&lt;br /&gt;
   A smart move is to make patch file once for your Makefile/config.h :&lt;br /&gt;
   First ONLY edit the Makefile and config.h (or copy the them from a&lt;br /&gt;
   working source tree to a empty directory), and then make a diff with:&lt;br /&gt;
   diff -rc irc2.8.19.clean irc2.8.19.my.makefile &amp;gt; Makefile.config.h.patch&lt;br /&gt;
&lt;br /&gt;
   That really speeds up upgrading with later versions.&lt;br /&gt;
   (irc2.8.19.my.makefile only needs to contain&lt;br /&gt;
    irc2.8.19.my.makefile/Makefile&lt;br /&gt;
    irc2.8.19.my.makefile/include/config.h )&lt;br /&gt;
   Of course, keep the include/setup.h seperately.&lt;br /&gt;
&lt;br /&gt;
### KILL for Mmm. Mmmm (stop it lamer (unnecessary flooding of alexbot))&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=============================================================================&lt;br /&gt;
				BQUIET&lt;br /&gt;
=============================================================================&lt;br /&gt;
Author: Carlo, carlo@sg.tn.tudelft.nl, Run on IRC.&lt;br /&gt;
Helpful ideas by: Aaron, agifford@sci.dixie.edu, Karll on IRC&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In order to fight flooding, and as discussed on wastelanders, banning&lt;br /&gt;
someone on a channel will now also stop him from doing anything visible&lt;br /&gt;
on the channel. This allows to let someone see what you think of him&lt;br /&gt;
without even kicking him, he will leave by himself.&lt;br /&gt;
He will still be able to appologise by private msgs of course and then&lt;br /&gt;
he can be de-banned. A ban is this way a short cut for +m+vvvv everyone&lt;br /&gt;
excpet the flooder. Note that even NICK floods are stopped: When you are&lt;br /&gt;
on a channel where you are banned, you are not allowed to change your nick.&lt;br /&gt;
&lt;br /&gt;
=============================================================================&lt;br /&gt;
				SILENCE &lt;br /&gt;
=============================================================================&lt;br /&gt;
Author: Carlo, carlo@sg.tn.tudelft.nl, Run on IRC.&lt;br /&gt;
Helpful ideas by: Aaron, agifford@sci.dixie.edu, Karll on IRC&lt;br /&gt;
&lt;br /&gt;
My solution to flooders with clone bots etc :)&lt;br /&gt;
Let the user that GETS flooded decide he doesn't want that and stop&lt;br /&gt;
the flooder right at his own server (the server of the flooder).&lt;br /&gt;
This is a new command, and the clients will need unfortunately a few&lt;br /&gt;
lines in their .ircrc before it can work.&lt;br /&gt;
Moreover, before this works, ALL servers must have .U3.&lt;br /&gt;
&lt;br /&gt;
The lines I use at the moment are:&lt;br /&gt;
&lt;br /&gt;
ALIAS SILENCE QUOTE SILENCE&lt;br /&gt;
ALIAS SILE QUOTE SILENCE&lt;br /&gt;
ON ^RAW_IRC &amp;quot;% SILENCE %&amp;quot; echo *** $*&lt;br /&gt;
&lt;br /&gt;
It turns out that some auto-rejoin on kick lines, like Davemans toolbox,&lt;br /&gt;
disables the use of ON RAW_IRC, or at least makes it work incorrectly.&lt;br /&gt;
You should disable this auto-rejoin line and you could add the one I use&lt;br /&gt;
instead:&lt;br /&gt;
&lt;br /&gt;
ON ^RAW_IRC &amp;quot;% KICK % % *&amp;quot; {&lt;br /&gt;
    IF ([$3]==[$N]) {&lt;br /&gt;
        //QUOTE JOIN $2&lt;br /&gt;
        ECHO $MID(11 5 $STIME($TIME())) * You have been kicked off channel $2 by $LEFT($INDEX(! $0) $0) \($MID(1 256 $4-)\) } {&lt;br /&gt;
        ECHO $MID(11 5 $STIME($TIME())) * $3 has been kicked off channel $2 by $LEFT($INDEX(! $0) $0) \($MID(1 256 $4-)\) }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
which are 6 lines, not 8.&lt;br /&gt;
&lt;br /&gt;
The way the silence patch works is as follows:&lt;br /&gt;
&lt;br /&gt;
When you add a silence mask (using the same user friendly mask fixing)&lt;br /&gt;
like:&lt;br /&gt;
&lt;br /&gt;
/SILENCE Tsunami*@&lt;br /&gt;
&lt;br /&gt;
It will echo back to you how it is added:&lt;br /&gt;
&lt;br /&gt;
*** Run!Daryl@sg.tn.tudelft.nl SILENCE +*!Tsunami*@*&lt;br /&gt;
&lt;br /&gt;
Note that there is a '+' infront of the mask now.&lt;br /&gt;
You can also type:&lt;br /&gt;
&lt;br /&gt;
/SILENCE +bot*&lt;br /&gt;
&lt;br /&gt;
*** Run!Daryl@sg.tn.tudelft.nl SILENCE +bot*!*@*&lt;br /&gt;
&lt;br /&gt;
If you want to silence one particular nick, you must add the '+', because&lt;br /&gt;
when you do:&lt;br /&gt;
&lt;br /&gt;
/SILENCE nick&lt;br /&gt;
&lt;br /&gt;
and 'nick' exists, you will get the silence list of nick. Just using&lt;br /&gt;
/SILENCE gives your own silence list:&lt;br /&gt;
&lt;br /&gt;
*** Run bot*!*@*&lt;br /&gt;
*** Run *!Tsunami*@*&lt;br /&gt;
*** End of Silence List&lt;br /&gt;
&lt;br /&gt;
However, check the silence list of someone ELSE make only really sense&lt;br /&gt;
when you already did sent a message to this person. Because a silence&lt;br /&gt;
mask only propagates to the server of the flooder when it is actually&lt;br /&gt;
necessary. For instance: You can add up to 5 silence masks and delete them&lt;br /&gt;
again and it will only be local to your own server. Only when someone&lt;br /&gt;
would message you, matching a mask, the mask propagates to the server of&lt;br /&gt;
the flooder. And stays there till you signoff, or till you delete it.&lt;br /&gt;
If you delete a mask, it follows the same path as the +masks...&lt;br /&gt;
&lt;br /&gt;
As a result of this, +s lusers and opers will see the message:&lt;br /&gt;
&lt;br /&gt;
*** SILENCE : Unknown command (from Lausanne.CH.EU.UnderNet.org)&lt;br /&gt;
&lt;br /&gt;
When someone from *behind* a non .U3 server sends you a message&lt;br /&gt;
(Lausanne is this case). So, you will STILL be flooded ;) UNTIL ALL&lt;br /&gt;
servers are upgraded... (Or must do -s, but at least the net is flooded).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To: wastelanders@rush.cc.edu&lt;br /&gt;
From: agifford@sci.dixie.edu (Aaron Gifford)&lt;br /&gt;
Subject: HELP with HELP for SILENCE&lt;br /&gt;
Status: RO&lt;br /&gt;
&lt;br /&gt;
Hey, here's a VERY VERY VERY rough draft of a HELP entry for SILENCE,&lt;br /&gt;
assuming it becomes a new command for ircII and not a replacement for&lt;br /&gt;
IGNORE either via new code, or aliases like:&lt;br /&gt;
    ALIAS SILENCE { QUOTE SILENCE $* }&lt;br /&gt;
&lt;br /&gt;
Anyway, PLEASE PLEASE PLEASE alter, modify, correct, add, hack-up, etc this&lt;br /&gt;
rough draft and send me your alterations.  I just typed this up VERY&lt;br /&gt;
quickly because StGeorge is now running irc2.8.19.U3.1.  The bug I mention&lt;br /&gt;
in the file will hopefully disappear very soon, so that text will have to&lt;br /&gt;
do likewise and vanish.  :)&lt;br /&gt;
&lt;br /&gt;
Here it is, draft #1 HELP for SILENCE:&lt;br /&gt;
&lt;br /&gt;
Usage: SILENCE [&amp;lt;nick&amp;gt;]&lt;br /&gt;
       SILENCE [+|-&amp;lt;pattern&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
  SILENCE allows you to TOTALLY ignore all private messages (PRIVMSG's)&lt;br /&gt;
  and notices (NOTICE's) from any user whose nick!user@host matches&lt;br /&gt;
  the &amp;lt;pattern&amp;gt; parameter.  The characters * and ? can be used&lt;br /&gt;
  as wildcards in the pattern.&lt;br /&gt;
&lt;br /&gt;
  If you wanted to ignore all users from &amp;quot;somewhere.com&amp;quot; you would use:&lt;br /&gt;
    SILENCE +*!*@somewhere.com&lt;br /&gt;
&lt;br /&gt;
  To ignore some with the nickname &amp;quot;Jerk&amp;quot; you would use:&lt;br /&gt;
    SILENCE +Jerk&lt;br /&gt;
  NOTE: The server will complete the pattern, storing it as &amp;quot;Jerk!*@*&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  The only drawback of just SILENCE'ing someone by nickname only is&lt;br /&gt;
  that the user could quickly change nicknames to avoid your pattern.&lt;br /&gt;
&lt;br /&gt;
  To remove a pattern, use a - before the pattern you want to remove.&lt;br /&gt;
  When the command is used without any parameters, the server will list&lt;br /&gt;
  all stored patterns you are currently ignoring with the SILENCE&lt;br /&gt;
  command.&lt;br /&gt;
&lt;br /&gt;
  When used in the first form listed, you will see the SILENCE list for&lt;br /&gt;
  the specified user.  This list is not necessarily complete nor accurate&lt;br /&gt;
  because of how servers share SILENCE information internally.  You can&lt;br /&gt;
  check to see if someone is ignoring you with SILENCE by first sending&lt;br /&gt;
  that user a private message, then using the command to see the user's&lt;br /&gt;
  SILENCE list.&lt;br /&gt;
&lt;br /&gt;
  Currently there is a bug in the servers (hopefully to be fixed soon)&lt;br /&gt;
  that will add the nickname you specify to your SILENCE list when you&lt;br /&gt;
  attempt to see that user's SILENCE list if that user is not currently&lt;br /&gt;
  online.&lt;br /&gt;
&lt;br /&gt;
  Because SILENCE is a part of the IRC server protocol (on the Undernet)&lt;br /&gt;
  it works much more efficiently than IGNORE, but is limited to a very&lt;br /&gt;
  brief list of patterns.  Also, you don't have as may options as you&lt;br /&gt;
  do with IGNORE.  If a user is flooding you, SILENCE is many times&lt;br /&gt;
  more efficient than IGNORE because the offending user's PRIMSG's or&lt;br /&gt;
  NOTICE's (including CTCP) are stopped at the server and never even&lt;br /&gt;
  sent to your client.&lt;br /&gt;
&lt;br /&gt;
See Also:&lt;br /&gt;
  IGNORE&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
From: Carlo Kid - Runaway &amp;lt;carlo@sg.tn.tudelft.nl&amp;gt;&lt;br /&gt;
Subject: Re: HELP with HELP for SILENCE&lt;br /&gt;
To: agifford@sci.dixie.edu (Aaron Gifford) (Aaron Gifford)&lt;br /&gt;
Date: Wed, 25 May 94 12:29:37 METDST&lt;br /&gt;
Cc: wastelanders@rush.cc.edu (New Wastelanders MailingList)&lt;br /&gt;
In-Reply-To: &amp;lt;9405250313.AA18446@sci.dixie.edu&amp;gt;; from &amp;quot;Aaron Gifford&amp;quot; at May 24, 94 9:20 pm&lt;br /&gt;
Mailer: Elm [revision: 66.33]&lt;br /&gt;
Status: RO&lt;br /&gt;
&lt;br /&gt;
&amp;gt; Here it is, draft #1 HELP for SILENCE:&lt;br /&gt;
&amp;gt; &lt;br /&gt;
&amp;gt; Usage: SILENCE [&amp;lt;nick&amp;gt;]&lt;br /&gt;
&amp;gt;        SILENCE [+|-&amp;lt;pattern&amp;gt;]&lt;br /&gt;
&amp;gt; &lt;br /&gt;
&lt;br /&gt;
As it is now (I do not consider what you mentioned as a bug, I was aware&lt;br /&gt;
of this effect and didn't choose to alter it), it really is:&lt;br /&gt;
&lt;br /&gt;
Usage: SILENCE [+|-]&amp;lt;pattern&amp;gt;&lt;br /&gt;
Or   : SILENCE &amp;lt;nick&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When you leave the '+|-' away A '+' is assumed.&lt;br /&gt;
&lt;br /&gt;
The second possibility allows you to check your own silence lists, or&lt;br /&gt;
allows to check if you are silenced by someone after you did message&lt;br /&gt;
him but didn't get a respond (did ping him for instance).&lt;br /&gt;
Indeed, this could be interpreted as a pattern, when &amp;lt;nick&amp;gt; doesn't&lt;br /&gt;
exists.&lt;br /&gt;
&lt;br /&gt;
&amp;gt;   If you wanted to ignore all users from &amp;quot;somewhere.com&amp;quot; you would use:&lt;br /&gt;
&amp;gt;     SILENCE +*!*@somewhere.com&lt;br /&gt;
&lt;br /&gt;
SILENCE somewhere.com&lt;br /&gt;
&lt;br /&gt;
would do.&lt;br /&gt;
&lt;br /&gt;
&amp;gt;   When used in the first form listed, you will see the SILENCE list for&lt;br /&gt;
&amp;gt;   the specified user.  This list is not necessarily complete nor accurate&lt;br /&gt;
&amp;gt;   because of how servers share SILENCE information internally.  You can&lt;br /&gt;
&amp;gt;   check to see if someone is ignoring you with SILENCE by first sending&lt;br /&gt;
&amp;gt;   that user a private message, then using the command to see the user's&lt;br /&gt;
&amp;gt;   SILENCE list.&lt;br /&gt;
&lt;br /&gt;
Mention that a EVAL CTCP &amp;lt;nick&amp;gt; PING $TIME() is better...&lt;br /&gt;
It would not be necessary to do the silence if the ping returns...&lt;br /&gt;
To determine between huge lag and silence, you have to do the silence&lt;br /&gt;
check after that.&lt;br /&gt;
If you add something like this in the manual, people will automatically&lt;br /&gt;
wait a while after the 'message' (ping), so that the servers have time&lt;br /&gt;
to send the silence mask back. Otherwise they might think they can do&lt;br /&gt;
a quick msg+silence at the same time. Nah... Not too important, unless&lt;br /&gt;
with huge lag + silence combination.&lt;br /&gt;
&lt;br /&gt;
&amp;gt; &lt;br /&gt;
&amp;gt;   Currently there is a bug in the servers (hopefully to be fixed soon)&lt;br /&gt;
&amp;gt;   that will add the nickname you specify to your SILENCE list when you&lt;br /&gt;
&amp;gt;   attempt to see that user's SILENCE list if that user is not currently&lt;br /&gt;
&amp;gt;   online.&lt;br /&gt;
&lt;br /&gt;
I didn't consider this as too bad...&lt;br /&gt;
But if people want it, I can change it so that you MUST add a '+' to&lt;br /&gt;
add a mask that doesn't contain a '.', '!' or '@'.&lt;br /&gt;
That would lead to 2.8.19.U3.2 and a very tiny patch for the people who&lt;br /&gt;
already compiled .U3&lt;br /&gt;
&lt;br /&gt;
Run&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=============================================================================&lt;br /&gt;
			U3 - required additions to .ircrc&lt;br /&gt;
=============================================================================&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
From: Carlo Kid - Runaway &amp;lt;carlo@sg.tn.tudelft.nl&amp;gt;&lt;br /&gt;
Subject: Re: .ircrc codes for the new patches :)&lt;br /&gt;
To: lamberdc@dad.cs.tuns.ca&lt;br /&gt;
Date: Mon, 23 May 94 11:41:31 METDST&lt;br /&gt;
Cc: wastelanders@rush.cc.edu (New Wastelanders MailingList)&lt;br /&gt;
In-Reply-To: &amp;lt;9405222118.AA02415@dad.cs.tuns.ca&amp;gt;; from &amp;quot;Donald &amp;quot;WHIZZARD&amp;quot; Lambert&amp;quot; at May 22, 94 6:18 pm&lt;br /&gt;
Mailer: Elm [revision: 66.33]&lt;br /&gt;
Status: RO&lt;br /&gt;
&lt;br /&gt;
&amp;gt; hiya All&lt;br /&gt;
&amp;gt;       I was wondering if some one could send me a copy of the script/&lt;br /&gt;
&amp;gt;  for the new patches including the ban , topic and client connecting patches.&lt;br /&gt;
&amp;gt; &lt;br /&gt;
&amp;gt;       And whatever is now out with the new .19 code :)&lt;br /&gt;
&amp;gt; &lt;br /&gt;
&amp;gt;       thanks &lt;br /&gt;
&amp;gt; &lt;br /&gt;
&amp;gt;               -- Donnie&lt;br /&gt;
&amp;gt; &lt;br /&gt;
&amp;gt;               aka WHIZZARD&lt;br /&gt;
&lt;br /&gt;
The ftp.undernet.org:/pub/undernet/servers/Patches/README file:&lt;br /&gt;
&lt;br /&gt;
These are lines you need to add to your .ircrc file in order&lt;br /&gt;
to use all posibilities .U3 profides you:&lt;br /&gt;
&lt;br /&gt;
To see when a channel was created:&lt;br /&gt;
&lt;br /&gt;
On ^329 * echo *** $1 : created $stime($2)&lt;br /&gt;
&lt;br /&gt;
When your server has the .ban patch use this to see who did a ban and when:&lt;br /&gt;
&lt;br /&gt;
On ^367 * if ([$4] != []) {echo *** $1 \($3 - $stime($4)) $2} {echo *** $1-}&lt;br /&gt;
&lt;br /&gt;
---------------------------&lt;br /&gt;
When ALL servers upgraded to .U3, you can use this command:&lt;br /&gt;
&lt;br /&gt;
ALIAS SILENCE QUOTE SILENCE&lt;br /&gt;
On ^RAW_IRC &amp;quot;% SILENCE %&amp;quot; echo *** $*&lt;br /&gt;
&lt;br /&gt;
Use this as:&lt;br /&gt;
/SILENCE +mask&lt;br /&gt;
&lt;br /&gt;
To add 'mask' to your silence list (will completely stop all private&lt;br /&gt;
messages from people matching 'mask' with their nick!user@host).&lt;br /&gt;
You can VIEW your silence list by typing:&lt;br /&gt;
/SILENCE&lt;br /&gt;
&lt;br /&gt;
If you message someone and he doesn't react (like with ping), then you&lt;br /&gt;
can check if you match a silence mask he added by viewing his silence list&lt;br /&gt;
with:&lt;br /&gt;
/SILENCE nick&lt;br /&gt;
&lt;br /&gt;
A mask can be deleted by using the command:&lt;br /&gt;
/SILENCE -mask&lt;br /&gt;
&lt;br /&gt;
When the some messages you from behind a NON-.U3 server you will not&lt;br /&gt;
receive his message but the line:&lt;br /&gt;
*** Unknown command (SILENCE) (From server.name.undernet.org)&lt;br /&gt;
instead, so you will still be flooded.&lt;br /&gt;
We hope all servers will be upgraded within a few months.&lt;br /&gt;
&lt;br /&gt;
------&lt;br /&gt;
And my ircd.motd from Delft* :&lt;br /&gt;
&lt;br /&gt;
*%*%*%*%*%*%*%*%*%*%*%*%*%*%*%*%*%*%*%*%*%*%*%*%*%*%*%&lt;br /&gt;
 N E W : - This server now runs the official released&lt;br /&gt;
           beta version 2.8.19.U3.1.ban&lt;br /&gt;
 For you as users this means that:&lt;br /&gt;
 -More security : .U3 contains the .TSpre8 patch with&lt;br /&gt;
  disallows even ADMINs of servers to hack op on your&lt;br /&gt;
  channel with a nick, most server modes are detected.&lt;br /&gt;
 -The possibility to see the *creationtime* of a channel&lt;br /&gt;
  (used with the TimeStamp (TS) protocol - unique on&lt;br /&gt;
   undernet (disables the possibility of 'net.riding'))&lt;br /&gt;
 -The possibility to stop EVERY kind of channel flooding&lt;br /&gt;
  by *banning* someone : Now a ban stops not only&lt;br /&gt;
  part/join floods, but also message floods and even&lt;br /&gt;
  nick floods!&lt;br /&gt;
 -The possibility to see who did when a certain ban.&lt;br /&gt;
 -The possibility to stop anyone flooding you with&lt;br /&gt;
  any kind of private messages at his *own* server!&lt;br /&gt;
  (This will only work when ALL servers have upgraded)&lt;br /&gt;
To be able to use all of this, ftp to sg.tn.tudelft.nl&lt;br /&gt;
login: ftp ; password : anything ; file: /pub/README&lt;br /&gt;
Put those lines in your .ircrc initialisation file !&lt;br /&gt;
Have fun, Run.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Run&lt;br /&gt;
&lt;br /&gt;
=============================================================================&lt;br /&gt;
			U3.1 -&amp;gt; U3.2	&lt;br /&gt;
=============================================================================&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
From: Carlo Kid - Runaway &amp;lt;carlo@sg.tn.tudelft.nl&amp;gt;&lt;br /&gt;
Subject: *BUG* .U3.1 found !!&lt;br /&gt;
To: wastelanders@rush.cc.edu (New Wastelanders MailingList)&lt;br /&gt;
Date: Wed, 25 May 94 16:45:39 METDST&lt;br /&gt;
In-Reply-To: &amp;lt;457.9405250732@ccws-09.brunel.ac.uk&amp;gt;; from &amp;quot;James T Lowe&amp;quot; at May 25, 94 8:32 am&lt;br /&gt;
Mailer: Elm [revision: 66.33]&lt;br /&gt;
Status: RO&lt;br /&gt;
&lt;br /&gt;
&amp;gt; :-&amp;gt; &lt;br /&gt;
&amp;gt; :-&amp;gt; Hiya..&lt;br /&gt;
&amp;gt; :-&amp;gt; &lt;br /&gt;
&amp;gt; :-&amp;gt;     Here's what I observed tonight:&lt;br /&gt;
&amp;gt; :-&amp;gt; &lt;br /&gt;
&amp;gt; :-&amp;gt; *** Mmmm (mandar@roosevelt.ecn.uoknor.edu) has joined channel #friendly&lt;br /&gt;
&amp;gt; :-&amp;gt; *** Users on #friendly: @Mmmm &lt;br /&gt;
&amp;gt; :-&amp;gt; *** Mode change &amp;quot;-o Mmmm&amp;quot; on channel #friendly by Uxbridge.*&lt;br /&gt;
&amp;gt; &lt;br /&gt;
&amp;gt; Not surprising : &lt;br /&gt;
&amp;gt; &lt;br /&gt;
&amp;gt; #friendly  RedRum    H*  cs93jtl@ccws-09.brunel.ac.uk&lt;br /&gt;
&amp;gt; #friendly  Emmy      H   lamphear@cheshire.oxy.edu&lt;br /&gt;
&amp;gt; #friendly  ChemBot   H@  cmrobert@hellcat.ecn.uoknor.edu&lt;br /&gt;
&amp;gt; &lt;br /&gt;
&amp;gt; &lt;br /&gt;
&amp;gt; &lt;br /&gt;
&amp;gt; &amp;gt;From Norman : &lt;br /&gt;
&amp;gt; &lt;br /&gt;
&amp;gt; *** ChemBot is cmrobert@hellcat.ecn.uoknor.edu (Charles Michael Roberts)&lt;br /&gt;
&amp;gt; *** on channels: @#ChatZone &lt;br /&gt;
&amp;gt; *** on irc via server Norman.OK.US.undernet.org&lt;br /&gt;
&amp;gt; *** ChemBot has been idle 10 minutes&lt;br /&gt;
&amp;gt; &lt;br /&gt;
&amp;gt; &lt;br /&gt;
&amp;gt; and from Uxbridge : &lt;br /&gt;
&amp;gt; &lt;br /&gt;
&amp;gt; ** ChemBot is cmrobert@hellcat.ecn.uoknor.edu (Charles Michael Roberts)&lt;br /&gt;
&amp;gt; *** on channels: @#chatZone @#friendly &lt;br /&gt;
&amp;gt; *** on irc via server Norman.OK.US.undernet.org&lt;br /&gt;
&amp;gt; &lt;br /&gt;
&amp;gt; :-&amp;gt; But,&lt;br /&gt;
&amp;gt; :-&amp;gt; &lt;br /&gt;
&amp;gt; :-&amp;gt; *** Mmmm has left channel #friendly&lt;br /&gt;
&amp;gt; :-&amp;gt; *** Mmmm (mandar@roosevelt.ecn.uoknor.edu) has joined channel #test&lt;br /&gt;
&amp;gt; :-&amp;gt; *** Users on #test: @Mmmm &lt;br /&gt;
&amp;gt; :-&amp;gt; &lt;br /&gt;
&amp;gt; :-&amp;gt; works fine..&lt;br /&gt;
&amp;gt; :-&amp;gt; &lt;br /&gt;
&amp;gt; :-&amp;gt; Is this due to the U lines?  Uworld was in no way involved though :-(&lt;br /&gt;
&amp;gt; :-&amp;gt; &lt;br /&gt;
&amp;gt; :-&amp;gt; I personally feel that uxbridge's retaining timestamps of old channels - &lt;br /&gt;
&amp;gt; :-&amp;gt; Run, can ya take a look asap. It can prove most distressing for our users :(&lt;br /&gt;
&amp;gt; :-&amp;gt; &lt;br /&gt;
&amp;gt; :-&amp;gt;                           Thanks!!&lt;br /&gt;
&amp;gt; :-&amp;gt; &lt;br /&gt;
&amp;gt; :-&amp;gt;                                                   Mmmm&lt;br /&gt;
&amp;gt; &lt;br /&gt;
&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Weeehhhw, yeah a real bug :/&lt;br /&gt;
&lt;br /&gt;
RedRum and I looked for it for almost 4 hours before it was found...&lt;br /&gt;
&lt;br /&gt;
I will release .U3.2  and a patch for .U3.1-U3.2 asap...&lt;br /&gt;
&lt;br /&gt;
Description of bug:&lt;br /&gt;
&lt;br /&gt;
When someone gets kicked (and doesn't (try to) rejoin), it is flagged&lt;br /&gt;
as a zombie. After a net-break, users are mutual re-joined on both&lt;br /&gt;
sides of the net. It turned out that a zombie is also rejoined after&lt;br /&gt;
a net rejoin.&lt;br /&gt;
&lt;br /&gt;
What happened with ChemBot:&lt;br /&gt;
&lt;br /&gt;
ChemBot was on #friendly via Norman (non TSpre8). It was banned and then&lt;br /&gt;
kicked. It tried to rejoin, but Norman didn't allow that (ban).&lt;br /&gt;
Delft never saw this try, and ChemBot stayed as a zombie on #friendly.&lt;br /&gt;
Then Delft-UxBridge broke and reconnected... Delft did send a JOIN for&lt;br /&gt;
ChemBot to UxBridge, ending up in a nick-desynced state.&lt;br /&gt;
When Mmmm joined #friendly, he was the first on #friendly on all of the&lt;br /&gt;
net except UxBridge... He was opped by Norman, but that is considered&lt;br /&gt;
as a HACK by UxBridge and was bounced (ChemBot was still there *with*&lt;br /&gt;
ops (those flags aren't reset when someone is marked zombie)).&lt;br /&gt;
The second time Mmmm joined, he again got ops from Norman which now&lt;br /&gt;
was accepted by UxBridge because this +o could be a BOUNCE of the de-op&lt;br /&gt;
by UxBridge (Generating a BOUNCE or HACK: notice on UxBridge).&lt;br /&gt;
&lt;br /&gt;
Run&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
From: Carlo Kid - Runaway &amp;lt;carlo@sg.tn.tudelft.nl&amp;gt;&lt;br /&gt;
Subject: Release 2.8.19.U3.2&lt;br /&gt;
To: wastelanders@rush.cc.edu (New Wastelanders MailingList)&lt;br /&gt;
Date: Wed, 25 May 94 23:30:57 METDST&lt;br /&gt;
Mailer: Elm [revision: 66.33]&lt;br /&gt;
Status: RO&lt;br /&gt;
&lt;br /&gt;
Hi all,&lt;br /&gt;
&lt;br /&gt;
I released 2.8.19.U3.2&lt;br /&gt;
&lt;br /&gt;
Fixed:&lt;br /&gt;
&lt;br /&gt;
        - Rejoining of zombies after net break :/  (ChemBot case)&lt;br /&gt;
        - Silence command now give: No such nick, when doing /silence nick&lt;br /&gt;
        - I fixed the way a kick is handle, because in a last minute&lt;br /&gt;
          thought I realized MURC would get trouble otherwise, see below.&lt;br /&gt;
&lt;br /&gt;
As usual you can get it from ftp.undernet.org:/pub/undernet/servers&lt;br /&gt;
&lt;br /&gt;
Patches/irc2.8.19.U3.1-2.patch     : If you already had .U3.1&lt;br /&gt;
&lt;br /&gt;
irc2.8.19.U3.2.tar.gz              : If start from scratch (DO SO!!!)&lt;br /&gt;
&lt;br /&gt;
For those who use the irc2.8.19.U3.1-2.patch ...&lt;br /&gt;
&lt;br /&gt;
------------------------------------------&lt;br /&gt;
*** EDIT include/patchlevel.h !!!!!!!! ***&lt;br /&gt;
------------------------------------------&lt;br /&gt;
&lt;br /&gt;
This patch will change your version to irc2.8.19.U3.2  so if you run&lt;br /&gt;
 .ban  EDIT it !!!&lt;br /&gt;
&lt;br /&gt;
=========================================================================&lt;br /&gt;
&lt;br /&gt;
The change in KICK handling is as follows:&lt;br /&gt;
&lt;br /&gt;
- A kick received from a local client, or for a local client or&lt;br /&gt;
  from a direction in which the kicked client is located, is&lt;br /&gt;
  simply handled as before: completely removed from channel, no zombie.&lt;br /&gt;
  This means also that there is no client-server protocol change anymore:&lt;br /&gt;
  /who, /whois and /names won't change.&lt;br /&gt;
&lt;br /&gt;
- A kick received for a local client originating from a remote client&lt;br /&gt;
  lets the server sent a PART upstream. Since this results for non TSpre8&lt;br /&gt;
  servers in a remote &amp;quot;You're not on that channel&amp;quot; message, this&lt;br /&gt;
  message is suppressed (would never occur anyway now we are completely&lt;br /&gt;
  synced).&lt;br /&gt;
&lt;br /&gt;
The reason why this was needed is mainly because MURC constantly kicks&lt;br /&gt;
people who have auto-rejoin disabled from different channels. With U3.1&lt;br /&gt;
they would get into problems after ten channels (needed to send extra&lt;br /&gt;
PART's).&lt;br /&gt;
&lt;br /&gt;
Run&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
|  carlo@sg.tn.tudelft.nl           |  Run @ IRC                              |&lt;br /&gt;
|                                   |  Admin of Delft.NL.EU.undernet.org      |&lt;br /&gt;
| * Don't expect anything of live,  |  and      Ircserver.et.tudelft.nl       |&lt;br /&gt;
| or you'll miss all the rest of it.|                                         |&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=============================================================================&lt;br /&gt;
			U3-&amp;gt;U4, ANTI NICK COLLIDE &lt;br /&gt;
=============================================================================&lt;br /&gt;
Author: Carlo, carlo@sg.tn.tudelft.nl, Run on IRC.&lt;br /&gt;
&lt;br /&gt;
Hi all...&lt;br /&gt;
&lt;br /&gt;
After we dealt with channel msg-, join/part- and nick-floods (.bquiet),&lt;br /&gt;
and with private message flooding (.silence), now in a sort of follow up&lt;br /&gt;
to the anti net.break.ride (.TSpre7) and anti admin.hacks (TSpre8) we are&lt;br /&gt;
about to deal with one of the last vulnerabilities of our net:&lt;br /&gt;
nick-collision bots.&lt;br /&gt;
Called .anc (anti nick collision).&lt;br /&gt;
             -    -    -&lt;br /&gt;
&lt;br /&gt;
Socially spoken it does the following (I hope):&lt;br /&gt;
&lt;br /&gt;
- Only kills the RIGHT person, when a nick collision occurs.&lt;br /&gt;
&lt;br /&gt;
This would mean:&lt;br /&gt;
&lt;br /&gt;
A) If someone tries to harash by connecting to servers that just broke off&lt;br /&gt;
and then take the nick of a person on the other side, both would be&lt;br /&gt;
killed on reconnection. But with the .anc patch on both connecting servers,&lt;br /&gt;
only the net.break rider will be killed.&lt;br /&gt;
&lt;br /&gt;
B) Secondly, when your server (or side) breaks off and you connect to some&lt;br /&gt;
other server on the other side, it happens sometimes that due to lag you get&lt;br /&gt;
killed by a nick collision after reconnection of the net.&lt;br /&gt;
&lt;br /&gt;
A and B differ strongly in the sense that in case A the *new* -the youngest-&lt;br /&gt;
nick must be killed, while in case B the *old* (lagged) nick must be&lt;br /&gt;
killed.&lt;br /&gt;
Technically this means that we have to look at the user@host.name too.&lt;br /&gt;
This gives rise to some incompatible changes, and therefor, this patch&lt;br /&gt;
must be done in two steps: First we deal with the nick-collision bots and&lt;br /&gt;
make the server compatible with both - the old and new protocol. And then&lt;br /&gt;
once all server upgraded, we deal with the last step: the nick collision&lt;br /&gt;
with yourself.&lt;br /&gt;
&lt;br /&gt;
In the future there will be a third possible condition in which we can have&lt;br /&gt;
a nick collision: (long example follows, can be skipped)&lt;br /&gt;
&lt;br /&gt;
C) The net breaks, and reconnects else where, and somehow a race condition&lt;br /&gt;
occurs between the 'SERVER' messages of the servers of one side.&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
Servers:        Part A                  Part B1                 PartB2&lt;br /&gt;
Nicks           a(A),b(B)               a(A),b(B)               a(A),b(B)&lt;br /&gt;
Part A breaks off Part B:&lt;br /&gt;
                &amp;lt;-- :b QUIT             --&amp;gt; :a QUIT&lt;br /&gt;
                &amp;lt;-- SQUIT serversB      --&amp;gt; SQUIT serversA&lt;br /&gt;
Result:         a(A)                    b(B)                    b(B)&lt;br /&gt;
A reconnects to Part B1, but immedeately breaks off again:&lt;br /&gt;
                        --&amp;gt;SERVERs A&lt;br /&gt;
                        --&amp;gt;NICK a&lt;br /&gt;
                        --&amp;gt;:a USER ...&lt;br /&gt;
Break: &lt;br /&gt;
                                                --&amp;gt;SERVERs A&lt;br /&gt;
                                                --&amp;gt;NICK a&lt;br /&gt;
                                                --&amp;gt;:a USER ...&lt;br /&gt;
                                        --&amp;gt; :a QUIT&lt;br /&gt;
                                        --&amp;gt; SQUIT serversA&lt;br /&gt;
A connects to part B2, note that 'part B1 --&amp;gt; part B2' is lagged and the&lt;br /&gt;
&amp;quot;SERVERs A ... etc&amp;quot; didn't arrive yet on partB2.&lt;br /&gt;
Servers:        Part B1                 Part B2                 Part A&lt;br /&gt;
Nicks:          b(B)                    b(B)                    a(A)&lt;br /&gt;
                        --&amp;gt;SERVERs A&lt;br /&gt;
                        --&amp;gt;NICK a&lt;br /&gt;
                        --&amp;gt;:a USER ...&lt;br /&gt;
                --&amp;gt; :a QUIT&lt;br /&gt;
                --&amp;gt; SQUIT serversA&lt;br /&gt;
                                                --&amp;gt; SERVERs B&lt;br /&gt;
                                                --&amp;gt; NICK b&lt;br /&gt;
                                                --&amp;gt; :b USER ...&lt;br /&gt;
                                                &amp;lt;-- SERVERs A&lt;br /&gt;
                                                &amp;lt;-- NICK a&lt;br /&gt;
                                                &amp;lt;-- :a USER ...&lt;br /&gt;
Result *before* the lagged messages arive on Part B2:&lt;br /&gt;
Nicks:          b(B)                    b(B),a(A)               b(B),a(A)&lt;br /&gt;
                        --&amp;gt;SERVERs A&lt;br /&gt;
                        --&amp;gt;NICK a&lt;br /&gt;
                        --&amp;gt;:a USER ...&lt;br /&gt;
                        --&amp;gt;:a QUIT&lt;br /&gt;
                        --&amp;gt;SQUIT serversA&lt;br /&gt;
And when the lagged messages arrive on Part B2, the&lt;br /&gt;
'SERVERs A' get all ignored: &amp;quot;server exists&amp;quot;, even more, Part B2 disconnects &lt;br /&gt;
Part B1... :/. Now we are going to deal with the &amp;quot;server exists&amp;quot; problem&lt;br /&gt;
*once* (attaching a timestamp to SERVER I think), in which case 'SERVERs A'&lt;br /&gt;
would only be ignored by Part B2. Then the 'NICK a' would cause a nick&lt;br /&gt;
collision with 1) Same user@host.name, 2) same server A, and 3) same&lt;br /&gt;
nick-TS ! This means: We need to ignore 'NICK nick' when is has the same &lt;br /&gt;
TimeStamp and the same user@host. But when the user@host differ, two people &lt;br /&gt;
signed on at exactly the same time with the same nick and we must kill &lt;br /&gt;
*both* to avoid a desync.&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
How to handle a nick collision, general&lt;br /&gt;
---------------------------------------&lt;br /&gt;
&lt;br /&gt;
Up till now when a nick collision occurs, both nicks (when a nick change&lt;br /&gt;
from 'old' to 'new' is involved) are KILLed in ALL directions.. wiped off the&lt;br /&gt;
net thus.&lt;br /&gt;
But even with wiping off the net in mind, it doesn't make sense to kill in&lt;br /&gt;
old direction, it is sufficient to deal with &amp;quot;our side&amp;quot; of the net, because&lt;br /&gt;
every nick collision occurs on two servers, both can deal with their side.&lt;br /&gt;
As an example:&lt;br /&gt;
&lt;br /&gt;
Servers:        A               B&lt;br /&gt;
Nicks:          a(A)            a(B)&lt;br /&gt;
Reconnection:&lt;br /&gt;
                &amp;lt;-- NICK a&lt;br /&gt;
                    NICK a --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As you see, if A receives the 'NICK a' from B, it only has to deal with&lt;br /&gt;
its own side, because it is certain that B will receive the 'NICK a' from&lt;br /&gt;
A and handle it too as a nick collision (and therefore this 'NICK a' *is*&lt;br /&gt;
already a 'KILL' message).&lt;br /&gt;
&lt;br /&gt;
Thus, when we receive a 'NICK' that gives rise to the need of purging&lt;br /&gt;
a nick on *our* side, we deal with it by doing:&lt;br /&gt;
sendto_serv_butone(cptr,&amp;quot;:%s KILL ...&lt;br /&gt;
which sends the KILL to all server connections except the link 'cptr' that&lt;br /&gt;
generated the nick collision.&lt;br /&gt;
Also then we have to destroy the memory usage of the killed client on our&lt;br /&gt;
own server, and disconnect him if it is ours, so we call exit_client().&lt;br /&gt;
&lt;br /&gt;
Summary so far&lt;br /&gt;
--------------&lt;br /&gt;
&lt;br /&gt;
Ok, we discussed when to kill who. Resulting rules are:&lt;br /&gt;
&lt;br /&gt;
We receive a &amp;quot;NICK new&amp;quot; or &amp;quot;:old NICK new&amp;quot; from a server direction, and&lt;br /&gt;
we already have a registered 'new'. Then we have a nick collison and deal&lt;br /&gt;
with it as follows:&lt;br /&gt;
1) If the user@host differ,&lt;br /&gt;
        and our 'new' is younger or equal, KILL our 'new'.&lt;br /&gt;
        and our 'new' is older, ignore the 'NICK new', but kill 'old' on&lt;br /&gt;
                our side if it was a nick change.&lt;br /&gt;
2) If user@host is the same:&lt;br /&gt;
        and our 'new' is older, KILL our 'new'.&lt;br /&gt;
        and our 'new' is younger, ignore the 'NICK new', but kill&lt;br /&gt;
                'old' on our side if it was a nick change.&lt;br /&gt;
        and our 'new' is equal, KILL our 'new',&lt;br /&gt;
                and kill 'old' on our side too if it was a nick change.&lt;br /&gt;
&lt;br /&gt;
Remarks:&lt;br /&gt;
        The last case, where have a ':old NICK new' collission with&lt;br /&gt;
the same user@host and TimeStamp, can't be case C), but it&lt;br /&gt;
is possible that *we* did send a 'NICK new', and the server at&lt;br /&gt;
the other side kills 'old' off... So we have to do it too.&lt;br /&gt;
        With this protocol we *ignore* 'NICK new' message, but of course&lt;br /&gt;
in most cases they will be followed by at least a ':new USER ...' and&lt;br /&gt;
probably&lt;br /&gt;
more like ':new JOIN #...'. This would cause 'Fake direction' errors and&lt;br /&gt;
the current protocol KILLs such a nick in *ALL* direction (???). Now, we&lt;br /&gt;
DON'T want to KILL the nick in the right direction do we? And killing the&lt;br /&gt;
fake direction nick makes no sense: it will be killed automatically due to&lt;br /&gt;
the fact we did send a 'NICK new' in that direction. Thus: we can/have to&lt;br /&gt;
remove the Fake Direction kills.&lt;br /&gt;
        Of course, when we receive a 'NICK new hopcount :TimeStamp', we&lt;br /&gt;
*can't* compare with the user@host, because it takes some time before we&lt;br /&gt;
will receive the 'USER'... We also can't store the nick, because it must&lt;br /&gt;
be unique. To solve this, we need to change the protocol so that 'NICK new'&lt;br /&gt;
contains all information and the USER message will be redundant and removed&lt;br /&gt;
in a later patch. This also reduces net.bursts.&lt;br /&gt;
        &lt;br /&gt;
Attaching a TimeStamp (TS) to nicks&lt;br /&gt;
-----------------------------------&lt;br /&gt;
&lt;br /&gt;
Whenever someone takes a new nick, which is available of course, either by&lt;br /&gt;
changing nick or by signing on, the local server attaches a TimeStamp (TS)&lt;br /&gt;
to the nick. Now there will be sent:&lt;br /&gt;
&lt;br /&gt;
NICK new hopcount TS user host.name server.name :Real name&lt;br /&gt;
or&lt;br /&gt;
:old NICK new :TS&lt;br /&gt;
&lt;br /&gt;
This is 100% compatible with the existing protocol.&lt;br /&gt;
&lt;br /&gt;
When a server receives such a nick from a neighbouring server it copies the&lt;br /&gt;
TS, keeping track of the local change time. (When not all servers have&lt;br /&gt;
upgraded, and no TS is received, the .anc server will fill in the time&lt;br /&gt;
itself - being a slight advantage over keeping it 0. It also will assume &lt;br /&gt;
that the host.names are equal or not equal resulting a as many kills as &lt;br /&gt;
needed in the worst case).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Examples&lt;br /&gt;
--------&lt;br /&gt;
&lt;br /&gt;
Servers:    A                     B&lt;br /&gt;
Nicks:      a(A),b(B)             b(B),a(A)&lt;br /&gt;
Both change simultaneously to nick 'c', but 'a' slightly faster (at time=1,&lt;br /&gt;
and b at time=2):&lt;br /&gt;
            c(A),b(B)             c(B),a(A)&lt;br /&gt;
                 -&amp;gt; :a NICK c :1&lt;br /&gt;
                 :b NICK c :2 &amp;lt;-&lt;br /&gt;
Then A receives a ':b NICK c :2' where 2 &amp;gt; 1, and KILLs b on its own side.&lt;br /&gt;
B however receives ':a NICK c :1' where 1 &amp;lt; 2, and KILLs c on its own side.&lt;br /&gt;
Result:     c(A)                  c(A)&lt;br /&gt;
&lt;br /&gt;
Due to 'lag', more :c PRIVMSG .. from B to A can follow, resulting in a&lt;br /&gt;
fake direction. 'A' will simply ignore them and not kill c (kills for&lt;br /&gt;
fake direction are nonsense anyway).&lt;br /&gt;
&lt;br /&gt;
In the case that someone signs on, taking the same nick as a nick change&lt;br /&gt;
we have almost the same:&lt;br /&gt;
&lt;br /&gt;
Servers:    A                     B&lt;br /&gt;
Nicks:      a(A)                  a(A)&lt;br /&gt;
'a' changes simultaneously to nick 'c', but slightly faster (at time=1),&lt;br /&gt;
as a new 'c' signs on at B (time=2).&lt;br /&gt;
            c(A)                  a(A),c(B)&lt;br /&gt;
                -&amp;gt; :a NICK c :1&lt;br /&gt;
                  NICK c 1 :2 &amp;lt;-&lt;br /&gt;
Then A receives a 'NICK c 1 :2' where 2 &amp;gt; 1, and ignores it simply.&lt;br /&gt;
B however receives ':a NICK c :1' where 1 &amp;lt; 2, and KILLs c on its own side.&lt;br /&gt;
Result:     c(A)                  c(A)&lt;br /&gt;
&lt;br /&gt;
If the new 'c' was a little bit earlier, we get:&lt;br /&gt;
&lt;br /&gt;
Servers:    A                     B&lt;br /&gt;
Nicks:      a(A)                  a(A)&lt;br /&gt;
'a' changes simultaneously to nick 'c', and slightly slower (at time=2),&lt;br /&gt;
as a new 'c' signs on at B (time=1).&lt;br /&gt;
            c(A)                  a(A),c(B)&lt;br /&gt;
                -&amp;gt; :a NICK c :2&lt;br /&gt;
                  NICK c 1 :1 &amp;lt;-&lt;br /&gt;
Then A receives a 'NICK c 1 :1' where 1 &amp;lt; 2, and KILLs c on its own side.&lt;br /&gt;
B however receives ':a NICK c :2' where 2 &amp;gt; 1, and KILLs a on its own side.&lt;br /&gt;
&lt;br /&gt;
Result:     c(B)                  c(B)&lt;br /&gt;
&lt;br /&gt;
Last case, two people sign on (or during a net reconnection):&lt;br /&gt;
&lt;br /&gt;
Server:     A                     B&lt;br /&gt;
Sign on:    c(A)                  c(B)&lt;br /&gt;
                -&amp;gt; NICK c 1 :1&lt;br /&gt;
                   NICK c 1 :2 &amp;lt;-&lt;br /&gt;
Then A receives 'NICK c 1 :2' where 2 &amp;gt; 1, and ignores it.&lt;br /&gt;
and B receives a 'NICK c 1 :1' where 1 &amp;lt; 2, and KILLs c on its own side.&lt;br /&gt;
Result:     c(A)                  c(A)&lt;br /&gt;
&lt;br /&gt;
Note: the above didn't take equal TS's into account, and I assumed&lt;br /&gt;
user@hosts to be different: the nick collision bot cases.&lt;br /&gt;
&lt;br /&gt;
A last possibility when someone starts hacking... a 'NICK new' twice&lt;br /&gt;
from the same direction, should not be accepted: we kill the earlier one&lt;br /&gt;
always.&lt;br /&gt;
&lt;br /&gt;
Compatibility problems&lt;br /&gt;
----------------------&lt;br /&gt;
&lt;br /&gt;
In the future, we want to also take 'user@host' into account... Therefor,&lt;br /&gt;
we need to start to ignore 'NICK new' and only act upon ':new USER ...'.&lt;br /&gt;
We can only do that if also 'USER contains the hopcount and TimeStamp'...&lt;br /&gt;
If we change the protocol immedeately to say:&lt;br /&gt;
:nick USER user host.name server.name hopcount TimeStamp :Real name&lt;br /&gt;
the 'hopcount' would be treated as realname, and we the rest would be&lt;br /&gt;
lost :(&lt;br /&gt;
&lt;br /&gt;
We can also transfer the info to 'NICK', with:&lt;br /&gt;
&lt;br /&gt;
:server.name NICK nick hopcount user host.name TimeStamp :Real name&lt;br /&gt;
&lt;br /&gt;
and later forget the USER message. Although someone lamer uses&lt;br /&gt;
the C source line &amp;quot; if (sptr == cptr) ...&amp;quot; in m_nick() to determine if&lt;br /&gt;
it was a 'NICK new' or a ':old NICK new' :/ Geesh (unlogical). He should&lt;br /&gt;
have used &amp;quot; if (IsServer(sptr)) ...&amp;quot;. You would need three upgrade steps&lt;br /&gt;
or we will have to do with:&lt;br /&gt;
NICK nick hopcount user host.name server.name TimeStamp :Real name&lt;br /&gt;
&lt;br /&gt;
The nice thing about this is, that we can check how many parameters we&lt;br /&gt;
receive and then immedeately use the user@host if it is there... That way&lt;br /&gt;
the .acn will immedeately work once everyone upgraded once, and the second&lt;br /&gt;
step would only get rid of the 'USER' line between servers.&lt;br /&gt;
&lt;br /&gt;
Run&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=============================================================================&lt;br /&gt;
                                WALLOPS&lt;br /&gt;
=============================================================================&lt;br /&gt;
Usage: /WALLOPS &amp;lt;message&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sends a message to IRC ops on-line. Remember that users who are /umode +w&lt;br /&gt;
can see wallops as well.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=============================================================================&lt;br /&gt;
                                STATS W&lt;br /&gt;
=============================================================================&lt;br /&gt;
Author: Michael Vanloon (michaelv@iastate.edu) - mlv on IRC  &lt;br /&gt;
Help on /stats w :&lt;br /&gt;
&lt;br /&gt;
I've been working on something I think would be quite a useful&lt;br /&gt;
addition to the ircd.  It keeps track of the average number of local&lt;br /&gt;
clients, total clients, and total connections (including servers) over&lt;br /&gt;
various periods of time, currently over the last minute, hour, day and&lt;br /&gt;
week.  It is invoked by &amp;quot;/stats w server.name&amp;quot;.  You may try it&lt;br /&gt;
yourself by &amp;quot;/stats w *.iastate.edu&amp;quot;.  A sample from&lt;br /&gt;
ircserver.iastate.edu looks like this:&lt;br /&gt;
&lt;br /&gt;
*** Minute    Hour      Day       Week      Userload for:&lt;br /&gt;
***  44.91     39.4      33        33       iastate.edu clients&lt;br /&gt;
*** 114.40    103.2      69        65       total clients&lt;br /&gt;
*** 120.40    109.0      73        70       total connections&lt;br /&gt;
*** * End of /STATS report&lt;br /&gt;
&lt;br /&gt;
I'm debating changing it to show average connections over the last&lt;br /&gt;
minute, hour, day, prev. day, and prev. day, as I think the data&lt;br /&gt;
doesn't change enough after that to really be useful to justify&lt;br /&gt;
keeping it over an entire week.&lt;br /&gt;
&lt;br /&gt;
On smaller, less used servers, it should add a negligible amount to&lt;br /&gt;
the resident memory consumed by the ircd.  On a large hub such as the&lt;br /&gt;
*.bu.edu servers, penfold, or ircserver.iastate.edu, it might add as&lt;br /&gt;
much as 300k to the amount of memory the ircd attempts to keep&lt;br /&gt;
resident.  The amount is determined solely by the number of&lt;br /&gt;
connects/disconnects the server processes over the span of time&lt;br /&gt;
measured.&lt;br /&gt;
&lt;br /&gt;
The code is bulletproof and has undergone *extensive* debugging and&lt;br /&gt;
testing before I announced it here.&lt;br /&gt;
&lt;br /&gt;
The reason I'm posting this is because I would like to know how many&lt;br /&gt;
people think this would be a useful addition to the server.  In&lt;br /&gt;
addition, I'd like feedback on whether you think this should be a&lt;br /&gt;
standard part of the distributed server code.  I think it should, but&lt;br /&gt;
Avalon wants me to post here first and see how others feel about it.&lt;br /&gt;
I'd appreciate your input.&lt;br /&gt;
&lt;br /&gt;
I will be making a patched 2.7.2 server available with this included,&lt;br /&gt;
for those who would like to have this and stability too.  I'll also be&lt;br /&gt;
hooking it into 2.8.x soon, and giving it back to Av to include in the&lt;br /&gt;
standard 2.8 distribution as it matures, if he sees fit to do so.&lt;br /&gt;
&lt;br /&gt;
Thanks for your time...&lt;br /&gt;
&lt;br /&gt;
                                --Michael (mlv)&lt;br /&gt;
&lt;br /&gt;
IRC log started Wed Aug 18 21:52&lt;br /&gt;
*** Value of LOG set to ON&lt;br /&gt;
*mlv* it's the usage of your server&lt;br /&gt;
*mlv* average number of users on your server over the last minute, hour, day, yesterday, and the day before&lt;br /&gt;
*mlv* local clients, total clients, and total connections (clients + servers)&lt;br /&gt;
-ircserver.iastate.edu- Minute   Hour  Day  Yest.  YYest.  Userload for:&lt;br /&gt;
-ircserver.iastate.edu-  23.00   23.0   16    17      11   iastate.edu clients&lt;br /&gt;
-ircserver.iastate.edu-  52.00   52.8   37    35      23   total clients&lt;br /&gt;
-ircserver.iastate.edu-  61.00   61.7   45    42      21   total connections&lt;br /&gt;
-&amp;gt; *mlv* hmm...so iastate had 23 local clients in the last minute?&lt;br /&gt;
*mlv* right... in the last minute the average number of local users on our server was 23&lt;br /&gt;
*mlv* 23.45 actually&lt;br /&gt;
-&amp;gt; *mlv* okie...gotcha... thanks :)   one other thing&lt;br /&gt;
*mlv* there were an average of 23.1 local users on here over the last hour&lt;br /&gt;
*mlv* shoot&lt;br /&gt;
-&amp;gt; *mlv* is it possible to specify multiple domains?&lt;br /&gt;
-&amp;gt; *mlv* for e.g.  uoknor.edu  and  okstate.edu    cos those will be local to midway&lt;br /&gt;
*mlv* it could be coded in, but 1) my code doesn't support it out of the box, and 2) that would add more state info which would increase the memory usage a bit&lt;br /&gt;
-&amp;gt; *mlv* hmm...&lt;br /&gt;
*mlv* it's purely informational... i wouldn't worry about it, really that much&lt;br /&gt;
-&amp;gt; *mlv* okay...also, the Makefile on the ftp site seems hosed.....there's junk at the end...I tried both the .Z and the .gz&lt;br /&gt;
*mlv* i'm thinking about making it log by connection class... but i'll have to use a more efficient statistical algorithm (less precise) if i do that&lt;br /&gt;
*mlv* that way you could put all the local domains into certain classes&lt;br /&gt;
*mlv* oh yeah... it's harmless, just weird&lt;br /&gt;
-&amp;gt; *mlv* that'll work :)&lt;br /&gt;
-&amp;gt; *mlv* well...thanks for your help....will have a look at the stats w patch when you're finished with it :)&lt;br /&gt;
IRC Log ended *** Wed Aug 18 22:22&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=============================================================================&lt;br /&gt;
                        BAN/TOPIC/SIGNON INFO&lt;br /&gt;
=============================================================================&lt;br /&gt;
Author: Paul Foley (pfoley@kauri.vuw.ac.nz)  SIO on IRC&lt;br /&gt;
&lt;br /&gt;
Help on Ban/Topic/Signon :&lt;br /&gt;
&lt;br /&gt;
Since these patches allow the server to maintain additional information, the&lt;br /&gt;
server replies have been changes for the /mode #channel +b (#367), /whois&lt;br /&gt;
(#317) and an additional reply #333 has been added for topic info. The time&lt;br /&gt;
is returned as a long integer in UTC format in all cases. Since the existing&lt;br /&gt;
clients will ignore this additional information, you will need to either&lt;br /&gt;
patch the client, or in case you're using ircII, use the foll. /on statements&lt;br /&gt;
to take benefit of these patches :&lt;br /&gt;
&lt;br /&gt;
on ^367 * if ([$4] != []) {echo *** $1 \($3 - $stime($4)) $2} {echo *** $1-}&lt;br /&gt;
on ^333 * echo *** Topic for $1 set by $2 on $stime($3)&lt;br /&gt;
on ^317 * if (index(012345679 $3) != -1) {echo *** $1 has been idle for $2 seconds.  Signon at $stime($3)} {echo *** $1 has been idle for $2 seconds.}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once you have done this, you can see info as follows:&lt;br /&gt;
/mode #wasteland +b&lt;br /&gt;
*** #wasteland (Mmmm - Thu Aug 19 04:44:24 1993) test!*@*&lt;br /&gt;
&lt;br /&gt;
/topic #wasteland&lt;br /&gt;
*** Topic for #wasteland: We all love Axl Rose!&lt;br /&gt;
*** Topic for #wasteland set by rbarnes on Thu Aug 19 04:26:56 1993&lt;br /&gt;
&lt;br /&gt;
/whois Mmmm&lt;br /&gt;
*** Mmmm is mandar@essex.ecn.uoknor.edu (Mmmm,I get high with a little help&lt;br /&gt;
+from my friends)&lt;br /&gt;
*** on channels: @#wasteland&lt;br /&gt;
*** on irc via server essex.ecn.uoknor.edu (MIDWEST HUB..HELPS YOU GET THERE&lt;br /&gt;
+SOONER)&lt;br /&gt;
*** Mmmm is an IRC Operator&lt;br /&gt;
*** Mmmm has been idle for 454 seconds.  Signon at Wed Aug 18 23:47:19 1993&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=============================================================================&lt;br /&gt;
                        CLIENT NOTIFY&lt;br /&gt;
=============================================================================&lt;br /&gt;
Authors: Patrick Ashmore (pda@engr.engr.uark.edu) - Twilight1 on IRC&lt;br /&gt;
         Mandar Mirashi  (mmmirash@mailhost.ecn.uoknor.edu) - Mmmm on IRC&lt;br /&gt;
         Tony Vencill    (vencill@iastate.edu) - Tony/Tonto on IRC&lt;br /&gt;
&lt;br /&gt;
Help on Client Notify:&lt;br /&gt;
&lt;br /&gt;
This patch allows all opers on your server to see clients connecting to your&lt;br /&gt;
server and disconnecting from it (with the reason why they disconnected). &lt;br /&gt;
This can help you identify troublesome clients, or redirect remote clients&lt;br /&gt;
to closer servers, or troubleshoot the reason why a client disconnected.&lt;br /&gt;
&lt;br /&gt;
A sample output:&lt;br /&gt;
&lt;br /&gt;
*** Notice -- Client connecting : Karll (agifford@sci.dixie.edu).&lt;br /&gt;
&lt;br /&gt;
*** Notice -- Client exiting : Karll (agifford@sci.dixie.edu) [Bad link?].&lt;br /&gt;
&lt;br /&gt;
PS: if you wish to selectively decide when you wish to see these connection&lt;br /&gt;
notices, use the foll. script&lt;br /&gt;
&lt;br /&gt;
on ^server_notice &amp;quot;% % NOTICE -- CLIENT*&amp;quot; if (hideit != 1) {echo *** $2-}&lt;br /&gt;
alias show @ hideit = 0;echo *** You can now see clients connecting/exiting&lt;br /&gt;
alias hide @ hideit = 1;echo *** You will no longer see clients connecting/exiting &lt;br /&gt;
&lt;br /&gt;
If you then wish to not see client connects/exits when you are opered, simply&lt;br /&gt;
type /hide. If you wish to see them again, type /show.&lt;br /&gt;
&lt;br /&gt;
=============================================================================&lt;br /&gt;
                        TRACE TIMES&lt;br /&gt;
=============================================================================&lt;br /&gt;
Author: Tony Vencill    (vencill@iastate.edu) - Tony/Tonto on IRC&lt;br /&gt;
&lt;br /&gt;
Help on Trace Time:&lt;br /&gt;
&lt;br /&gt;
  This useful patch lets you identify the times since your server last&lt;br /&gt;
heard from any connected servers or clients. This time is displayed in&lt;br /&gt;
seconds, appended to each line of your /trace output. It can be very&lt;br /&gt;
helpful in identifying which servers are going to drop off or which&lt;br /&gt;
clients may ping timeout from your server.&lt;br /&gt;
&lt;br /&gt;
A sample output:&lt;br /&gt;
&lt;br /&gt;
/trace essex*&lt;br /&gt;
*** Serv [30] ==&amp;gt; 10S 8C cancun.caltech.edu *!*@essex.ecn.uoknor.edu 73&lt;br /&gt;
*** Serv [30] ==&amp;gt; 9S 6C imageek.york.cuny.edu *!*@essex.ecn.uoknor.edu 27&lt;br /&gt;
*** Serv [0] ==&amp;gt; 1S 0C inga1.acc.stolaf.edu[130.71.192.16]&lt;br /&gt;
+*!*@essex.ecn.uoknor.edu 58&lt;br /&gt;
*** Serv [0] ==&amp;gt; 1S 0C shadow.acc.iit.edu *!*@essex.ecn.uoknor.edu 97&lt;br /&gt;
*** Serv [0] ==&amp;gt; 1S 2C curie.ualr.edu Mmmm!mmmirash@essex.ecn.uoknor.edu 98&lt;br /&gt;
*** Serv [0] ==&amp;gt; 1S 1C piaget.phys.ksu.edu *!*@essex.ecn.uoknor.edu 117&lt;br /&gt;
*** Oper [0] ==&amp;gt; Mmmm[essex.ecn.uoknor.edu] 0&lt;br /&gt;
*** Serv [50] ==&amp;gt; 1S 0C pv1629.vincent.iastate.edu *!*@essex.ecn.uoknor.edu 7&lt;br /&gt;
*** Class 0 Entries linked: 6&lt;br /&gt;
*** Class 50 Entries linked: 1&lt;br /&gt;
*** Class 30 Entries linked: 2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=============================================================================&lt;br /&gt;
			K- line comments&lt;br /&gt;
=============================================================================&lt;br /&gt;
Author: Mandar Mirashi (mmmirash@mailhost.ecn.uoknor.edu) - Mmmm on IRC&lt;br /&gt;
&lt;br /&gt;
This extremely useful patch allows you to specify either a comment or an&lt;br /&gt;
interval in the 2nd field of the K line (instead of the previous format&lt;br /&gt;
of just a restricted interval). The &amp;quot;comment&amp;quot; can even be configured to&lt;br /&gt;
be a *file* name which can then be displayed to the client rejected via&lt;br /&gt;
the K line. All existing K lines will work as they are. This patch is&lt;br /&gt;
an *enhancement* to the K-lines.&lt;br /&gt;
&lt;br /&gt;
e.g. (of a comment field)&lt;br /&gt;
&lt;br /&gt;
K:*.sdsu.edu:Flooding.is.not.cool.lamer:masc0482&lt;br /&gt;
&lt;br /&gt;
As far as possible, do not use a white space in the comment field, because&lt;br /&gt;
this breaks ircII's /stats k handling. You can use the period (.) or the&lt;br /&gt;
underscore instead (_).&lt;br /&gt;
&lt;br /&gt;
e.g (of a file to be output to a rejected client &lt;br /&gt;
     -   #define COMMENT_IS_FILE  in config.h)&lt;br /&gt;
&lt;br /&gt;
K:*.netcom.com:/ecn/staff0/irc/servers/vinson/sorry.txt:*&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=============================================================================&lt;br /&gt;
				OPER FAIL&lt;br /&gt;
=============================================================================&lt;br /&gt;
Authors: Michael Vanloon (michaelv@iastate.edu) - mlv on IRC  &lt;br /&gt;
         Jon C Green (jcgreen@iastate.edu) - Jon2 on IRC&lt;br /&gt;
	 Bryan Collins (b@ctpm.org) - bwy on IRC&lt;br /&gt;
&lt;br /&gt;
This patch notifies you if someone tries to gain oper on your server and&lt;br /&gt;
fails. The notice goes out only to the operators on the server.&lt;br /&gt;
&lt;br /&gt;
*** Notice -- Failed OPER attempt by M (mmmirash@lincoln.ecn.uoknor.edu)&lt;br /&gt;
[crackit]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=============================================================================&lt;br /&gt;
				MIXED CASE&lt;br /&gt;
=============================================================================&lt;br /&gt;
Authors: Michael Vanloon (michaelv@iastate.edu) - mlv on IRC&lt;br /&gt;
         Jon C Green (jcgreen@iastate.edu) - Jon2 on IRC&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Here's a patch mlv and I wrote that prevents clients with mixed-case usernames&lt;br /&gt;
from connecting.  I don't know of many sites that allow mixed-case, so it&lt;br /&gt;
is effective for stopping many clonebot attacks and also stops many&lt;br /&gt;
would-be username hackers.&amp;quot;  - Jon2&lt;br /&gt;
&lt;br /&gt;
This has been slightly modified by Mmmm to give an option of ignoring the&lt;br /&gt;
case of the first character if desired (useful for those PC users who&lt;br /&gt;
intuitevely enter their first name with the first letter capitalised).&lt;br /&gt;
&lt;br /&gt;
e.g.&lt;br /&gt;
*** Notice -- Invalid username: buankBOT[saucer.cc.umr.edu]&lt;br /&gt;
&lt;br /&gt;
                               &lt;br /&gt;
=============================================================================&lt;br /&gt;
				NOTE&lt;br /&gt;
=============================================================================&lt;br /&gt;
&lt;br /&gt;
Usage:&lt;br /&gt;
  �NOTE� USER [&amp;amp;passwd] [+-flags] [+-maxtime] &amp;lt;nick!username@host&amp;gt; &amp;lt;msg&amp;gt;&lt;br /&gt;
-   or  SEND|SPY|FIND|WAITFOR|NEWS &amp;lt;same as USER args.&amp;gt;&lt;br /&gt;
*   or  SEND|SPY|FIND|WAITFOR|WALL|WALLOPS|DENY|NEWS|KEY &amp;lt;see USER args.&amp;gt;&lt;br /&gt;
  �NOTE� LS|COUNT|RM|LOG [&amp;amp;pwd][+-flags][#ID] &amp;lt;nick!user@host&amp;gt; [date]&lt;br /&gt;
  �NOTE� FLAG [&amp;amp;passwd] [+-flags] [#ID] &amp;lt;nick!username@host&amp;gt; &amp;lt;+-flags&amp;gt;&lt;br /&gt;
*  �NOTE� SENT [NAME|COUNT|USERS] &amp;lt;f.nick!f.name@host&amp;gt; &amp;lt;date&amp;gt; [RM]&lt;br /&gt;
-  �NOTE� STATS [MSM|MSW|MUM|MUW|MST|MSF|USED]&lt;br /&gt;
-  �NOTE� SENT [NAME|COUNT]&lt;br /&gt;
*  �NOTE� STATS [MSM|MSW|MUM|MUW|MST|MSF|USED|RESET] [value]&lt;br /&gt;
*  �NOTE� SAVE&lt;br /&gt;
&lt;br /&gt;
  The Note system have two main functions:&lt;br /&gt;
  1. Let you send one line messages to irc users which &lt;br /&gt;
     they will get when they next sign on to irc.&lt;br /&gt;
     Example: NOTE SEND &amp;lt;nick&amp;gt; Hi, this is a note to you.&lt;br /&gt;
  2. Let you spy on people, to see when they sign on or off,&lt;br /&gt;
     change nick name or join channels.&lt;br /&gt;
     Example: NOTE SPY +100 &amp;lt;nick&amp;gt;  (spy on nick for 100 days)&lt;br /&gt;
&lt;br /&gt;
  You may fill in none or any of the arguments listed above, including&lt;br /&gt;
  * or ? at any place, as nick@*.edu, !username, ni?k!username etc...&lt;br /&gt;
  Other usefull features may be NOTE WAIT &amp;lt;nick&amp;gt;, making nick and&lt;br /&gt;
  you get a message when you both are on at the same time.&lt;br /&gt;
 &lt;br /&gt;
  Note was developed 1990 by jarle@stud.cs.uit.no (Wizible on IRC).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*Usage: NOTE [&amp;lt;server&amp;gt;] ANTIWALL&lt;br /&gt;
*  Switch off b flag for wall's which you have received on specified&lt;br /&gt;
*  server. The person who queued the wall would be notified about&lt;br /&gt;
*  the antiwall, and who requested this.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Usage: NOTE COUNT [&amp;amp;&amp;lt;passwd&amp;gt;] [+|-flags] [#&amp;lt;ID&amp;gt;] &amp;lt;nick!username@host&amp;gt;&lt;br /&gt;
  Displays the number of messages sent from your nick and username. See&lt;br /&gt;
  HELP LS for more info. See HELP FLAG for more info about flag setting.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*Usage: NOTE DENY [&amp;amp;&amp;lt;passwd&amp;gt;] [+|-&amp;lt;flags&amp;gt;] [+|-&amp;lt;maxtime&amp;gt;]&lt;br /&gt;
*		&amp;lt;nick!user@host&amp;gt; &amp;lt;msg&amp;gt;&lt;br /&gt;
*  DENY is an alias for USER +RZ (default max 1 day)&lt;br /&gt;
*  This command makes it impossible for any matching recipient to&lt;br /&gt;
*  queue any Note requests until timeout.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Usage: NOTE FIND [&amp;amp;&amp;lt;passwd&amp;gt;] [+|-&amp;lt;flags&amp;gt;] [+|-&amp;lt;maxtime&amp;gt;]&lt;br /&gt;
		&amp;lt;nick!username@host&amp;gt; &amp;lt;msg&amp;gt;&lt;br /&gt;
  FIND is an alias for USER +FLR (default max 1 day)&lt;br /&gt;
  This command makes the server search for any matching recipient, and&lt;br /&gt;
  send a note message back if this is found. If &amp;lt;msg&amp;gt; field is used, this &lt;br /&gt;
  should specify the realname of the person to be searched for. Examples:&lt;br /&gt;
    FIND -4 foo*!username@host&lt;br /&gt;
    FIND @host Internet*&lt;br /&gt;
    FIND nicky Annie*	     &lt;br /&gt;
    FIND +7 * Annie*&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Usage: NOTE FLAG [&amp;amp;&amp;lt;passwd&amp;gt;] [+|-&amp;lt;flags&amp;gt;] [#&amp;lt;ID&amp;gt;]&lt;br /&gt;
		&amp;lt;nick!username@host&amp;gt; &amp;lt;+|-flags&amp;gt;&lt;br /&gt;
  You can add or delete as many flags as you wish with +/-&amp;lt;flag&amp;gt;.&lt;br /&gt;
  + switch the flag on, and - switch it off. Example: -S+RL&lt;br /&gt;
  Following flags with its default set specified first are available:&lt;br /&gt;
    -S &amp;gt; News flag for subscribing.&lt;br /&gt;
    -M &amp;gt; Request is removed after you sign off.&lt;br /&gt;
    -Q &amp;gt; Ignore request if recipient's first nick is equal to username.&lt;br /&gt;
    -I &amp;gt; Ignore request if recipient is not on same server as request.&lt;br /&gt;
    -W &amp;gt; Ignore request if recipient is not an operator.&lt;br /&gt;
    -Y &amp;gt; Ignore request if sender is not on IRC.&lt;br /&gt;
    -N &amp;gt; Let server send a note to you if message is delivered.&lt;br /&gt;
    -D &amp;gt; Same as N, except you only get a message (no queued note to you).&lt;br /&gt;
    -R &amp;gt; Repeat processing the request until timeout.&lt;br /&gt;
    -F &amp;gt; Let server send note info for matching recipient(s). Any message&lt;br /&gt;
         part specify what to match with the realname of the recipient. &lt;br /&gt;
    -L &amp;gt; Same as F, except you only get a message (no queued note to you).&lt;br /&gt;
    -C &amp;gt; Make sender's nicks be valid in all cases username@host is valid.&lt;br /&gt;
    -V &amp;gt; Make sender's &amp;quot;nick*&amp;quot; be valid in all cases username@host is valid.&lt;br /&gt;
    -X &amp;gt; Let server display if recipient signs on/off IRC or change&lt;br /&gt;
         nickname. Any message specified is returned to sender.&lt;br /&gt;
    -A &amp;gt; Show what server matching user is on using X flag.&lt;br /&gt;
    -J &amp;gt; Show what channel matching user is on using X flag.&lt;br /&gt;
    -U &amp;gt; Do not display nick-change using X flag.&lt;br /&gt;
    -E &amp;gt; Ignore request if nick, name and host matches the message text&lt;br /&gt;
         starting with any number of this format: 'nick!name@host nick!... '&lt;br /&gt;
*    -B &amp;gt; Send a message to every account who match the nick!user@host &lt;br /&gt;
*         This creates a received list with flag H set. (see LS +h)&lt;br /&gt;
*    -T &amp;gt; Send a message not all nicks on same accounts too using B flag.&lt;br /&gt;
*    -K &amp;gt; Give keys to unlock privileged flags by setting that flags on.&lt;br /&gt;
*         The recipient does also get privileges to queue unlimited &lt;br /&gt;
*         numer of requests, list privileged flags and see all stats.&lt;br /&gt;
*    -Z &amp;gt; Make it impossible for recipient to queue anything at all.&lt;br /&gt;
  Other flags which are only displayed but can't be set by user:&lt;br /&gt;
    -O &amp;gt; Request is queued by an operator.&lt;br /&gt;
    -G &amp;gt; Notice message is generated by server.&lt;br /&gt;
-    -B &amp;gt; Broadcasting message.&lt;br /&gt;
*    -H &amp;gt; Flag list for who's received Broadcast message (B flag).&lt;br /&gt;
-  Notice: Message is not sent to recipient using F, L, R or X flag.&lt;br /&gt;
-  Using this flags, no message needs to be specified.&lt;br /&gt;
*  Notice: Message is not sent to recip. using F, L, R, X, K, Z or H&lt;br /&gt;
*  flag (except if B flag is set for R). For this flags, no msg. needed.&lt;br /&gt;
&lt;br /&gt;
  Examples:&lt;br /&gt;
    FLAG * +cj     : Switch on c and j flag for all requests.&lt;br /&gt;
    FLAG +x * +c   : Switch on c flag for all req. which have x flag.&lt;br /&gt;
    FLAG nick -c+j : Switch off c flag and which on j flag for nick&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*Usage: NOTE KEY [&amp;amp;&amp;lt;passwd&amp;gt;] [+|-&amp;lt;flags&amp;gt;] [+|-&amp;lt;maxtime&amp;gt;] &amp;lt;nick!user@host&amp;gt;&lt;br /&gt;
*  KEY is an alias for USER +KR (default max 1 day)&lt;br /&gt;
*  This command is for allowing no-opers to use oper-options by specifying&lt;br /&gt;
*  the flag to unlock. Be careful with this option!&lt;br /&gt;
*  Example: KEY +365 +s * would make it possible for everybody to use s flag.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Usage: NOTE LOG [&amp;amp;&amp;lt;passwd&amp;gt;] [+|-&amp;lt;flags&amp;gt;] [#&amp;lt;ID&amp;gt;] &amp;lt;nick!username@host&amp;gt;&lt;br /&gt;
  Displays how long time since matching person was on IRC. This works &lt;br /&gt;
  only after use of NOTE SPY. The log is protected to be seen for other&lt;br /&gt;
  users than the person who queued the SPY request. To get short&lt;br /&gt;
  output, do not specify any arguments. Example:&lt;br /&gt;
    LOG      : Print short log of all&lt;br /&gt;
    LOG *    : Print long log including real names of all&lt;br /&gt;
    LOG nick : Print long log for user nick.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Usage: NOTE LS [&amp;amp;&amp;lt;passwd&amp;gt;] [+|-&amp;lt;flags&amp;gt;] [#&amp;lt;ID&amp;gt;]&lt;br /&gt;
		&amp;lt;nick!username@host&amp;gt; [&amp;lt;date&amp;gt;]&lt;br /&gt;
  Displays requests you have queued. No arguments would show you&lt;br /&gt;
  all requests without the message field.&lt;br /&gt;
  Use flags for matching all messages which have the specified flags set&lt;br /&gt;
  on or off. See HELP NOTE FLAG for more info about flag settings. Time &lt;br /&gt;
  can be specified on the form day.month.year or only day, or day/month, &lt;br /&gt;
  and separated with one of the three '.,/' characters. You can also &lt;br /&gt;
  specify -n for n days ago. Examples: 1.jan-90, 1/1.90, 3, 3/5, 3.may.&lt;br /&gt;
  If only '-' and no number is specified max time is set to all days.&lt;br /&gt;
  The time specified is always the local time on your system. Example:&lt;br /&gt;
    LS !user    would show you all requests to username@*&lt;br /&gt;
    LS +x       would show all your SPY requests.&lt;br /&gt;
    LS #300     would show you only request #300.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Usage: NOTE NEWS [&amp;amp;&amp;lt;passwd&amp;gt;] [+|-&amp;lt;flags&amp;gt;] [+|-&amp;lt;maxtime&amp;gt;]&lt;br /&gt;
		&amp;lt;group!username@host&amp;gt;&lt;br /&gt;
  NEWS with no message is an alias for USER +RS (default max 60 days)&lt;br /&gt;
  This command is for subscribing on a specified newsgroup from any&lt;br /&gt;
  user(s) or host(s). Wildcards may be used anywhere. Example:&lt;br /&gt;
    NEWS irc.note       : Subscribe on irc.note&lt;br /&gt;
*    NEWS irc.note@*.no  : Send to group irc.note, but only for&lt;br /&gt;
*                          users at host *.no&lt;br /&gt;
*    NEWS irc.note       : Send to all for group irc.note&lt;br /&gt;
*    NEWS Users@*.edu Hi : Send Hi to all users using note in your&lt;br /&gt;
*                          server located at host *.edu.&lt;br /&gt;
   (Advanced users may use User +rs &amp;lt;...&amp;gt; &amp;lt;filter&amp;gt; where filter is a &lt;br /&gt;
   string which must matches with field in received news message)&lt;br /&gt;
-  Only opers can send news as default.&lt;br /&gt;
*  To send news add message and use same format as subscribing, except &lt;br /&gt;
*  that username field must matches with subscribed group as alt.irc!*.irc - &lt;br /&gt;
*  everybody subscribing on a*.irc or *.irc or alt.irc... would get the news.&lt;br /&gt;
*  A speciall case is the group Users which everybody using note in the server&lt;br /&gt;
*  are member of.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Usage: NOTE RM [&amp;amp;&amp;lt;passwd&amp;gt;] [+|-&amp;lt;flags&amp;gt;] [#&amp;lt;ID&amp;gt;] &amp;lt;nick!username@host&amp;gt;&lt;br /&gt;
  Deletes any messages sent from your nick and username which matches&lt;br /&gt;
  with nick and username@host. Use flags for matching all messages which&lt;br /&gt;
  have the specified flags set on or off. See HELP FLAG for more info&lt;br /&gt;
  about flag settings, and HELP LS for info about time.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*Usage: NOTE SAVE&lt;br /&gt;
*  SAVE saves all messages with the save flag set. Notice that the&lt;br /&gt;
*  messages are automatically saved (see HELP STATS). Each time server is&lt;br /&gt;
*  restarted, the save file is read and messages are restored. If no users&lt;br /&gt;
*  are connected to this server when saving, the ID number for each&lt;br /&gt;
*  message is renumbered.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Usage: NOTE SEND [&amp;amp;&amp;lt;passwd&amp;gt;] [+|-&amp;lt;flags&amp;gt;] [+|-&amp;lt;maxtime&amp;gt;]&lt;br /&gt;
		&amp;lt;nick!username@host&amp;gt; &amp;lt;msg&amp;gt;&lt;br /&gt;
  SEND is an alias for USER +D (default max 60 days)&lt;br /&gt;
  This command is for sending a message to recipient, and let the server&lt;br /&gt;
  send a note + a notice to sender if this is on IRC - if message is sent.&lt;br /&gt;
    SEND foobar Hello, this is a test.&lt;br /&gt;
    SEND +7 !username@*.edu Hello again!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-Usage: NOTE SENT [NAME|COUNT]&lt;br /&gt;
*Usage: NOTE SENT [NAME|COUNT|USERS] &amp;lt;f.nick!f.name@host&amp;gt; &amp;lt;date&amp;gt; [RM]&lt;br /&gt;
  Displays host and time for messages which are queued without specifying&lt;br /&gt;
  any password. If no option is specified SENT displays host/time for&lt;br /&gt;
  messages sent from your nick and username.&lt;br /&gt;
  NAME displays host/time for messages sent from your username&lt;br /&gt;
  COUNT displays number of messages sent from your username&lt;br /&gt;
*  USERS Displays the number of messages in [], and names for all users&lt;br /&gt;
*  who have queued any message which matches with spec. nick/name/host.&lt;br /&gt;
*  RM means that the server removes the messages from the specified user.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*Usage: NOTE SERVICE &amp;lt;nick&amp;gt; &amp;lt;note command&amp;gt;&lt;br /&gt;
*  Useful in robots. Note will take the requests as if from &amp;lt;nick&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Usage: NOTE SPY [&amp;amp;&amp;lt;passwd&amp;gt;] [+|-&amp;lt;flags&amp;gt;] [+|-&amp;lt;maxtime&amp;gt;]&lt;br /&gt;
		&amp;lt;nick!username@host&amp;gt; [msg]&lt;br /&gt;
  SPY is an alias for USER +RX (default 1 max day)&lt;br /&gt;
  SPY makes the server tell you if any matching recipient sign(s)&lt;br /&gt;
  on/off IRC or change nick name. No message needs to be specified.&lt;br /&gt;
  However, if a message is specified this is returned to sender including&lt;br /&gt;
  with the message about recipient. Message could for example be one or&lt;br /&gt;
  more Ctrl-G characters to activate the bell on senders machine.&lt;br /&gt;
  As an alternative for using C flag, &amp;lt;msg&amp;gt; field could start with&lt;br /&gt;
  any number of nicks on this format: %nick1 %nick2... %nickn, with&lt;br /&gt;
  no space between % and the nick name you use. Spy messages would be&lt;br /&gt;
  valid for any of the nicks specified.&lt;br /&gt;
  SPY with no argument would tell you what users you have spy on who are &lt;br /&gt;
  currently on IRC. The system logs last time the last matching person was &lt;br /&gt;
  on IRC for each SPY request is queued in the server. See NOTE LOG for this.&lt;br /&gt;
  You may use flag +A to see what server matching user is on, &lt;br /&gt;
  and/or +J flag to see what channel. (Read HELP NOTE USER for more). Example:&lt;br /&gt;
    SPY foobar!username@host &amp;lt;ctrl-G&amp;gt;&lt;br /&gt;
    SPY +10 foobar&lt;br /&gt;
    SPY +aj &amp;amp;secret * &amp;lt;ctrl-G&amp;gt;&lt;br /&gt;
    SPY +365 +e !user nick!*@* &amp;lt;ctrl-G&amp;gt;&lt;br /&gt;
    SPY % +7 foo!user&lt;br /&gt;
    SPY +5 nicky %mynick %meenick&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-Usage: NOTE STATS [MSM|MSW|MUM|MUW|MST|MSF|USED]&lt;br /&gt;
*Usage: NOTE STATS [MSM|MSW|MUM|MUW|MST|MSF|USED|RESET] [value]&lt;br /&gt;
  STATS with no option displays the values of the following variables:&lt;br /&gt;
    MSM: Max number of server messages.&lt;br /&gt;
    MSW: Max number of server messages with username-wildcards.&lt;br /&gt;
    MUM: Max number of user messages.&lt;br /&gt;
    MUW: Max number of user messages with username-wildcards.&lt;br /&gt;
    MST: Max server time.&lt;br /&gt;
    MSF: Note save frequency (checks for save only when an user register)&lt;br /&gt;
  Notice that 'dynamic' mark after MSM means that if there are more&lt;br /&gt;
  messages in the server than MSM, the current number of messages are&lt;br /&gt;
  displayed instead of MSM.&lt;br /&gt;
  Only one of this variables are displayed if specified.&lt;br /&gt;
*  You can change any of the stats by specifying new value after it.&lt;br /&gt;
*  RESET sets the stats to the same values which is set when starting the&lt;br /&gt;
*  server daemon if no note file exist. Notice that this stats are saved&lt;br /&gt;
*  in same file as the other messages.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Usage: NOTE USER [&amp;amp;&amp;lt;passwd&amp;gt;] [+|-&amp;lt;flags&amp;gt;] [+|-&amp;lt;maxtime&amp;gt;]&lt;br /&gt;
		&amp;lt;nick!username@host&amp;gt; &amp;lt;msg&amp;gt;&lt;br /&gt;
  With USER you can queue a message in the server, and when the recipient&lt;br /&gt;
  signs on/off IRC, change nick or join any channel, note checks for&lt;br /&gt;
  valid messages. This works even if the sender is not on IRC. See HELP&lt;br /&gt;
  FLAGS for more info. &lt;br /&gt;
  Password can be up to ten characters long. You may specify password &lt;br /&gt;
  using the &amp;amp;, % or $ character. &amp;amp; is equal to to $, except working much&lt;br /&gt;
  better cause client use $ for other things...&lt;br /&gt;
  The % character works like &amp;amp;, except it makes the queuing silent. It&lt;br /&gt;
  makess also sense to use this without any following password.&lt;br /&gt;
  If any request queued is equal to any previous except time and maxtime,&lt;br /&gt;
  only maxtime is changed as specified. You then get &amp;quot;Joined&amp;quot; instead of&lt;br /&gt;
  &amp;quot;Queued&amp;quot;. &lt;br /&gt;
  HELP FLAGS for info about flag settings. Username can be specified&lt;br /&gt;
  without @host. Do not use wildcards in username if you know what it&lt;br /&gt;
  is, even if it's possible. Max time before the server automatically&lt;br /&gt;
  remove the message from the queue, is specified with hours with a&lt;br /&gt;
  '-' character first, or days if a '+' character is specified, as&lt;br /&gt;
  -5 hours, or +10 days. Default maxtime is 7 days.&lt;br /&gt;
  Note: The received message is *directly* displayed on the screen,&lt;br /&gt;
  without the need for a read or remove request.&lt;br /&gt;
    NOTE USER &amp;amp;secret +WN +10 Wizible!jarlek@ifi.uio.no Howdy!&lt;br /&gt;
  is an example of a message sent only to the specified recipient if&lt;br /&gt;
  this person is an operator, and after receiving the message, the server&lt;br /&gt;
  sends a note message back to sender to inform about the delivery.&lt;br /&gt;
    NOTE USER +XR -5 Anybody &amp;lt;ctrl-G&amp;gt;&lt;br /&gt;
  is an example which makes the server to tell when Anybody signs&lt;br /&gt;
  on/off irc, change nick etc. This process repeats for 5 hours.&lt;br /&gt;
    NOTE USER +FL @*.edu *account*&lt;br /&gt;
  is an example which makes the server send a message back if any real-&lt;br /&gt;
  name of any user matches *account*. Message is sent back as note from&lt;br /&gt;
  server, or directly as a notice if sender is on IRC at this time.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Usage: NOTE WAITFOR [&amp;amp;&amp;lt;pwd&amp;gt;] [+|-&amp;lt;flags&amp;gt;] [+|-&amp;lt;maxtime&amp;gt;]&lt;br /&gt;
		&amp;lt;nick!username@host&amp;gt; [&amp;lt;msg&amp;gt;]&lt;br /&gt;
  WAITFOR is an alias for USER +YD (default max 1 day)&lt;br /&gt;
  Default message is [Waiting]&lt;br /&gt;
  This command is for telling the recipient if this appears on IRC that&lt;br /&gt;
  you are waiting for him/her and notice that this got that message. Example:&lt;br /&gt;
    WAITFOR foobar&lt;br /&gt;
    WAITFOR -2 foobar!username@*&lt;br /&gt;
    WAITFOR foobar Waiting for you until pm3:00..&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*Usage: NOTE WALL [&amp;amp;&amp;lt;passwd&amp;gt;] [+|-&amp;lt;flags&amp;gt;] [+|-&amp;lt;maxtime&amp;gt;]&lt;br /&gt;
*			&amp;lt;nick!user@host&amp;gt; &amp;lt;msg&amp;gt;&lt;br /&gt;
*  WALL is an alias for USER +BR (default max 1 day)&lt;br /&gt;
*  This command is for sending a message once to every matching user&lt;br /&gt;
*  on IRC. Be careful using this command. WALL creates a list of &lt;br /&gt;
*  persons received the message (and should not have it once more time)&lt;br /&gt;
*  with H flag set. This list can be displayed using ls +h from the&lt;br /&gt;
*  nick and username@host which the WALL request is queued from.&lt;br /&gt;
*  Removing the headers (H) before WALL request is removed would cause&lt;br /&gt;
*  the message to be sent once more to what users specified in list.&lt;br /&gt;
*  WALL +7 @*.edu Do not do this! - Makes it clear for all users using &lt;br /&gt;
*  IRC on host @*.edu the next 7 days how stupid it is to send such WALL's ;) &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*Usage: NOTE WALLOPS [&amp;amp;&amp;lt;passwd&amp;gt;] [+|-&amp;lt;flags&amp;gt;] [+|-&amp;lt;maxtime&amp;gt;]&lt;br /&gt;
*		&amp;lt;nick!user@host&amp;gt; &amp;lt;msg&amp;gt;&lt;br /&gt;
*  WALLOPS is an alias for USER +BRW (default max 1 day)&lt;br /&gt;
*  This command is same as WALL, except only opers could receive it.&lt;br /&gt;
=============================================================================&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:IRCu History]]&lt;/div&gt;</description>
			<pubDate>Fri, 25 Apr 2008 03:53:50 GMT</pubDate>			<dc:creator>Secretagent</dc:creator>			<comments>http://wiki.darenet.org/Talk:README.patches_(history)</comments>		</item>
	</channel>
</rss>