2 # Parent ad0877db8e57ab00cefbcfc139dc6374461b3ba8
4 diff -r ad0877db8e57 doc/quakenet.conf
5 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
6 +++ b/doc/quakenet.conf Fri Jul 19 21:22:02 2013 +0100
9 +# Q U A K E N E T I R C S E R V E R
10 +# S E R V E R C O N F I G F I L E
12 +# -----------------------------------------------------------------------------
13 +# v.12 config file, last edited 08.12.2007/paul
14 +# -----------------------------------------------------------------------------
17 + name = "@@@.@@@.quakenet.org";
18 + description = "@@@";
28 + Location = "QuakeNet IRC server";
32 +# -----------------------------------------------------------------------------
33 +# Classes (aka Ylines)
34 +# -----------------------------------------------------------------------------
35 +# name = "<class>"; pingfreq = time; connectfreq = time;
36 +# maxlinks = number 0 or 1; sendq = size; usermode = "+i";
41 + pingfreq = 3 minutes;
42 + connectfreq = 5 minutes;
47 +# All the leaf servers you hub for.
49 + name = "LeafServer";
50 + pingfreq = 3 minutes;
51 + connectfreq = 5 minutes;
56 +# Client class (i.e. everyone)
59 + pingfreq = 3 minutes;
65 +# VIP user class (aka locals, opers etc..)
68 + pingfreq = 3 minutes;
74 +# Oper class (global)
77 + pingfreq = 3 minutes;
87 + freeform = yes; # change this if you want to disable freeform sethost for your opers
90 +# Oper class (global)
93 + pingfreq = 3 minutes;
99 +# -----------------------------------------------------------------------------
100 +# Client lines (aka Ilines)
101 +# -----------------------------------------------------------------------------
102 +# username = "ident"; host = "host"; ip = "127.0.0.0/8";
103 +# password = "password"; class = "classname"; maxlinks = 3;
105 +# Fall back entries (we let everyone in)
106 +Client { class = "Users"; ip = "*@*"; };
107 +Client { class = "Users"; host = "*@*"; };
109 +# Providers that we've decided to restrict due to abuse mainly.
110 +Client { class = "Users"; maxlinks = 2; host = "*@*.t-dialin.net"; };
111 +Client { class = "Users"; maxlinks = 1; host = "*@*.proxad.net"; };
112 +Client { class = "Users"; maxlinks = 1; host = "*@*.bezeqint.net"; };
113 +Client { class = "Users"; maxlinks = 1; host = "*@*.ono.com"; };
114 +Client { class = "Users"; maxlinks = 1; host = "*@*.wanadoo.nl"; };
115 +Client { class = "Users"; maxlinks = 2; host = "*@*.wanadoo.fr"; };
116 +Client { class = "Users"; maxlinks = 1; host = "*@*.rima-tde.net"; };
118 +# -----------------------------------------------------------------------------
119 +# UWorld/Jupe (aka ulines)
120 +# -----------------------------------------------------------------------------
124 + name = "CServe.quakenet.org";
125 + name = "operserv.quakenet.org";
126 + name = "operserv2.quakenet.org";
127 + name = "proxyscan.quakenet.org";
128 + name = "services4.uk.quakenet.org";
129 + name = "services.no.quakenet.org";
130 + name = "services.de.quakenet.org";
131 + name = "services.se.quakenet.org";
132 + name = "services.uk.quakenet.org";
136 + nick = "A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,{,|,},~,-,_,`";
137 + nick = "UWorld,NickServ,ChanServ,telnet,backdoor,qauth,auth,admin,support,operserv";
139 + nick = "NO,noperserv";
140 + nick = "N2,N3,N4,N5,N6,N7,N8,N9";
143 +# -----------------------------------------------------------------------------
145 +# -----------------------------------------------------------------------------
146 +# host = "user@host"; reason = "The reason the user will see";
147 +# realname = "realnametoban"; file = "path/to/file/with/reason/to/show";
150 + username = "*root";
151 + reason = "Do not IRC as root";
154 +# -----------------------------------------------------------------------------
155 +# Connect (aka clines)
156 +# -----------------------------------------------------------------------------
157 +# name = "servername"; host = "hostnameORip"; vhost = "localIP";
158 +# password = "passwd"; port = portno; class = "classname";
159 +# maxhops = 2; hub = "*.eu.undernet.org";
160 +# autoconnect = no; (default = yes!)
162 +# Our primary uplink.
167 + name = "hub.@@@.quakenet.org";
168 + host = "@@@.@@@.@@@.@@@";
176 +# Our secondary uplink.
179 + name = "hub.@@@.quakenet.org";
180 + host = "@@@.@@@.@@@.@@@";
188 +# Our tertiary uplink.
192 + name = "hub.@@@.quakenet.org";
193 + host = "@@@.@@@.@@@.@@@";
203 +# -----------------------------------------------------------------------------
204 +# CRule (aka dlines)
205 +# -----------------------------------------------------------------------------
206 +# server = "servermask"; rule = "connectrule";
207 +# Setting all to yes makes the rule always apply. Otherwise it only
208 +# applies to autoconnects.
210 +# The following block is recommended for leaf servers:
211 +CRULE { server = "*"; rule = "directcon(*)"; };
213 +# -----------------------------------------------------------------------------
214 +# spoofhosts (aka slines)
215 +# -----------------------------------------------------------------------------
216 +# username = "ident" host = "host" password = "passwd"
219 +#Spoofhost "testsline.quakenet.org" { password = "secret"; };
220 +# slines (without pw) thats how to define them when having freeform turned off.
221 +#Spoofhost "testsline2.quakenet.org" { username = "x"; host = "nohost"; };
223 +# -----------------------------------------------------------------------------
224 +# Operator (aka Olines)
225 +# -----------------------------------------------------------------------------
245 +# -----------------------------------------------------------------------------
246 +# Quarantine (aka qlines)
247 +# -----------------------------------------------------------------------------
249 +# "#shells" = "Thou shalt not support the h4><0rz";
250 +# "&kiddies" = "They can take care of themselves";
253 +# -----------------------------------------------------------------------------
255 +# -----------------------------------------------------------------------------
256 +# name = "X"; nick = "X@channels.bla" ; prepend = "LOGIN ";
257 +#Pseudo "CHANSERV" {
259 +# nick = "X@channels.undernet.org";
264 + nick = "q@cserve.quakenet.org";
267 +# -----------------------------------------------------------------------------
269 +# -----------------------------------------------------------------------------
270 +# port = number; mask = "ipmask" vhost = "virtualhostinterfaceip"
271 +# server = yes; hidden = yes
272 +# mask only contains IP addresses or '*'
273 +# hidden, hides a port from stats
283 + vhost = "@@@" 6660;
284 + vhost = "@@@" 6661;
285 + vhost = "@@@" 6662;
286 + vhost = "@@@" 6663;
287 + vhost = "@@@" 6664;
288 + vhost = "@@@" 6665;
289 + vhost = "@@@" 6666;
290 + vhost = "@@@" 6667;
291 + vhost = "@@@" 6668;
292 + vhost = "@@@" 6669;
295 +# -----------------------------------------------------------------------------
296 +# Feature (aka F:lines)
297 +# -----------------------------------------------------------------------------
298 +# We better doublecheck what we set here!
301 + "LOG" = "SYSTEM" "FILE" "ircd.log";
302 + "LOG" = "CONFIG" "FILE" "conf.log";
303 + "LOG" = "SYSTEM" "LEVEL" "CRIT";
304 + "DOMAINNAME"="quakenet.org";
305 + "RELIABLE_CLOCK"="FALSE";
306 + "BUFFERPOOL"="96000000";
307 +# "HAS_FERGUSON_FLUSHER"="FALSE";
308 +# "CLIENT_FLOOD"="1024";
309 +# "SERVER_PORT"="4400";
310 + "NODEFAULTMOTD"="FALSE";
311 +# "MOTD_BANNER"="TRUE";
312 +# "KILL_IPMISMATCH"="FALSE";
313 +# "IDLE_FROM_MSG"="TRUE";
315 +# "WALLOPS_OPER_ONLY"="FALSE";
317 + "RANDOM_SEED"="@@@@@@@@@@@@@@@@";
318 +# "DEFAULT_LIST_PARAM"="TRUE";
319 +# "NICKNAMEHISTORYLENGTH"="800";
320 + "NETWORK"="QuakeNet";
321 + "HOST_HIDING"="TRUE";
322 + "SETHOST" = "TRUE";
323 + "SETHOST_USER" = "TRUE";
324 + "SETHOST_AUTO" = "TRUE";
325 + "HIDDEN_HOST"="users.quakenet.org";
326 + "HIDDEN_IP"="127.0.0.1";
327 + "URLREG"="http://www.quakenet.org/getauthed";
328 +# "KILLCHASETIMELIMIT"="30";
329 + "MAXCHANNELSPERUSER"="20";
334 +# "HANGONGOODLINK"="300";
335 +# "HANGONRETRYDELAY" = "10";
336 +# "CONNECTTIMEOUT" = "90";
337 +# "MAXIMUM_LINKS" = "1";
338 +# "PINGFREQUENCY" = "120";
339 +# "CONNECTFREQUENCY" = "600";
340 +# "DEFAULTMAXSENDQLENGTH" = "40000";
341 +# "GLINEMAXUSERCOUNT" = "20";
342 +# "MPATH" = "ircd.motd";
343 +# "RPATH" = "remote.motd";
344 +# "PPATH" = "ircd.pid";
345 +# "TOS_SERVER" = "0x08";
346 +# "TOS_CLIENT" = "0x08";
347 +# "POLLS_PER_LOOP" = "200";
348 +# "IRCD_RES_TIMEOUT" = "4";
349 +# "IRCD_RES_RETRIES" = "2";
350 +# "AUTH_TIMEOUT" = "9";
351 +# "IPCHECK_CLONE_LIMIT" = "4";
352 +# "IPCHECK_CLONE_PERIOD" = "40";
353 +# "IPCHECK_CLONE_DELAY" = "600";
354 +# "CHANNELLEN" = "200";
355 + "CONFIG_OPERCMDS" = "TRUE";
356 + "OPLEVELS" = "FALSE";
357 + "ZANNELS" = "FALSE";
358 +# "LOCAL_CHANNELS" = "TRUE";
359 +# "ANNOUNCE_INVITES" = "FALSE";
360 + "HIS_SERVERNAME" = "*.quakenet.org";
361 + "HIS_SERVERINFO" = "QuakeNet IRC Server";
362 + "HIS_URLSERVERS" = "http://www.quakenet.org/serverlist.php";
365 diff -r ad0877db8e57 doc/readme.snircd
366 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
367 +++ b/doc/readme.snircd Fri Jul 19 21:22:02 2013 +0100
369 +- SNIRCD ----------------------------------------------------------------------
371 +Snircd is a collection of modifications to the Undernet IRC server known as
372 +ircu. This version is based on version 2.10.12 released by Undernet's
373 +Coder Committee. The original code can be obtained from their webpage,
374 +http://coder-com.undernet.org and the latest release of Snircd can be obtained
375 +from QuakeNet's Development Team webpage, http://development.quakenet.org.
377 +- version history ------------------------------------------------------------
379 +v1.3.0, SVN upstream patches/migration to u2.10.12.10
380 + Port of 'asuka' extensions for ircu 2.10.11 to 2.10.12
381 + Development moved to SVN from CVS
382 + chanmode +M, chanmode +T, ACcount token changes, Oper ID,
383 + /check updated, other fixes/updates
384 +v1.2.3, SVN, bug fixes, not released
385 +v1.2.2, SVN, not released
386 +v1.2.1, CVS, bug fixes
388 +v1.2, CVS, upstream patches for u2.10.11.07, bug fixes, added CIDR support
389 + for O:lines, I:lines and bans, added AUTOCHANMODES, added ability
390 + to disable /USERIP, added timestamped invites, added new /CHECK
391 + flags, improved behaviour of chanmodes +c/+N and usermode +R,
392 + enhanced /check server output, added more friendly error messages
393 + when trying to join channels
395 +v1.1, CVS, upstream patches for u2.10.11.06, bug fixes, added HIS_USERGLINE,
396 + added AUTOINVISIBLE, added ability to restart resolver (never released)
397 +v1.0.6, CVS, bug fixes, chanmode +N, added USER_HIDECHANS
399 +v1.0.5, CVS, bug fixes
401 +v1.0.4, CVS, bug fixes
403 +v1.0.3, CVS, bug fixes
405 +v1.0.2, CVS, bug fixes, dropped dlmalloc
407 +v1.0.1, CVS, minor conf/code fixes
409 +v1.0, CVS, 1.0 release, misc. fixes
411 +v0.7.0, CVS, sethost, chanmode +u, misc. fixes
413 +v0.5.1.4, CVS, upstream patches for u2.10.11.04, +R fix
414 +v0.5.1.3, CVS, gline_find fix
415 +v0.5.1.2, CVS, upstream patches
416 +v0.5.1.1, CVS, upstream patches
417 +v0.5.1.0, CVS, added user mode +R
418 +v0.5.0.1, CVS, upstream patches
419 +v0.5.0.0, CVS, updated patches for u2.10.11.03.(dev).5ish, added showing of
420 + full details of /stats C|H to opers
421 +v0.4.7.1, CVS, revert default NETWORK to 'UnderNet'
422 +v0.4.7.0, CVS, removing netrideprot diff, updated patches for u2.10.11.02
424 +v0.4.6.0, CVS, badchans now allow wildcards, 'auditorium' mode added
425 +v0.4.5.6, CVS, bugfixes in kX, add +I
426 +v0.4.5.5, CVS, cC support and crunch warnings in check
427 +v0.4.5.4, CVS, small bugfix in kX
428 +v0.4.5.3, CVS, nick glines check on /nick
429 +v0.4.5.2, CVS, updated patches for u2.10.11.01
430 +v0.4.5.1, CVS, added beta NICK Glines
433 +- contributors ---------------------------------------------------------------
435 +Project Manager: Joe Cise <pilsner@quakenet.org>
436 +Developers: Rasmus Have <bigfoot@quakenet.org>
437 + Gregory Bristol <qoreq@quakenet.org>
438 + Darren Smith <data@quakenet.org>
439 + David Mansell <splidge@quakenet.org>
440 + Fredrik Söderblom <froo@quakenet.org>
441 + Chris Porter <slug@quakenet.org>
442 + Iain Sheppard <magpie@quakenet.org>
443 + Mike Cartwright <mike@quakenet.org>
444 + Paul Richards <paul@quakenet.org>
445 + Cruicky <cruicky@quakenet.org
446 +Thanks To: Reed Loden <reed@reedloden.com>
447 + Alex Badea <vampire@p16.pub.ro>
448 + Perry Lorier <isomer@coders.net>
449 + Kevin L. Mitchell <klmitch@mit.edu>
450 +Special Thanks To: Tero Nybacka <sivis@sivis.org>
451 + Darren Coleman <durzel@quakenet.org>
452 + For their contributions to Lain (http://dev-com.b2irc.net) and therefore
453 + the basis for most of the ideas in Asuka. Thanks Guys.
455 +- features ------------------------------------------------------------------
459 + - Join invite only (+i) channels
460 + - Join keyed (+k) channels
461 + - Join channels if banned
462 + - Join full channels
463 + - Override user mode +k
466 + Allows opers to set user mode +k, network service, which prohibits
467 + kicks, deops and kills.
470 + Allows opers to hide the channels they are in.
473 + Allows opers to hide their idle time.
476 + Allows users to only accept privmsg/notice/invite from authed users.
479 + Prohibits mIRC & ANSI colour codes as well as other control codes from
480 + being sent to a channel.
483 + Prohibits CTCPs from being sent to a channel.
486 + Prohibits channel notices from being sent to a channel.
488 + * Channel mode +D and +d
489 + 'Delayed join' mode, when set on a channel joins and parts for that
490 + channel are squelched. A user will be 'invisible' in the channel
491 + from other users until they speak, are opped/voiced or change the
492 + topic. When the +D mode is cleared, 'invisible' users will not be
493 + revealed, instead the +d mode will automatically be set by the ircd
494 + if invisible users remain in the channel. +d will be automatically
495 + removed when the last 'invisible' user either becomes visible or
496 + leaves the channel. It is possible to see the 'invisible' users
497 + on a channel by doing /NAMES -d.
500 + Hides your quit and part messages from channels with +u set. If a user
501 + is in any +u channel, then their quit message is removed.
504 + Disallows unauthed users to speak or change nick in a channel when they
505 + are not voiced or opped in a channel
508 + Blocks multi-target messages to a channel
511 + Allows opers to see information about a channel, user or server.
512 + Syntax: Check Channel: /check <#channel> [-i|-o|-u]
513 + Check Server: /check <server>
514 + Check User: /check <nick|hostmask|CIDR> [-c]
516 + Performing a /check on a server returns its status:
518 + ! awaiting burst acknowledgement
522 + * Sethost allows opers (and users w/ passwords) to set their hostname,
523 + also known as spoofing. Sethost is configured from the config file via
524 + S: lines and several F: lines. Sethost is done through the /sethost
525 + command or by setting user mode +h. Available Sethosts are visible by
526 + using the /stats s command.
527 + Syntax: Oper Sethost: /sethost <new ident> <new hostname>
528 + /mode <nick> +h <new ident>@<new hostname>
529 + User Sethost: /sethost <new hostname> <password>
530 + /mode <nick> +h <new hostname> <password>
532 + * Single letter nicks are protected for use by network services only.
534 + * Protection from net rider's joining +i/+k channels after a net.join.
536 + * Topics can by sent during bursts to keep them synced throughout a network.
538 + * Ability to Gline a nick, new format now nick!ident@host.
540 + * /stats C & H show full details for Opers.
542 + * Ability to restart the resolver via /rehash and /DNS r.
544 + * Ability for services to send BURST outside of net.burst.
546 +- configuration file options ------------------------------------------------
549 + Syntax: S:<spoof host>:<password>:<*.host.cc|a.b.c.*|CIDR>:<ident>
550 + Example: S:moo.fish.moo:elitepassword:host.example.com:user
552 + This adds the sethost 'moo.fish.moo' that can be activated by a user by using
553 + the password 'elitepassword' and will automatically be applied to anyone
554 + connecting from 'host.example.com' with the ident 'user'.
557 + Oper sethost for 'moo.fish.moo'
559 + User & Oper sethost for 'moo.fish.moo'
560 + S:moo.fish.moo:elitepassword::
561 + Oper sethost for 'moo.fish.moo' with auto on 'ident@*.example.com"
562 + S:moo.fish.moo::*.example.com:ident
568 + This enables the /sethost command and user mode +h for opers activating Sethosts.
574 + This enabled the /sethost command and user mode +h for users activating Sethosts
581 + This enables the automatic application of Sethosts on matching idents and hosts.
587 + This enables opers to set new hostnames that do not have a corresponding S: line
588 + in the configuration file, as long as the hostname supplied is reasonably valid.
589 + The usage if this is logged via SNOTICE.
595 + As per QuakeNet Security, this removes the /stats s from users.
601 + This selects whether topics are *sent* to other servers during a burst.
602 + Note that receiving topics from servers is always enabled.
608 + As per QuakeNet Security, this removes the reason for GLINE from quit messages.
614 + Sets the socket buffer for sending. Advanced feature, do not change unless you
615 + known what you are doing.
621 + Sets the socket buffer for recieving. Advanced feature, do not change unless you
622 + known what you are doing.
628 + This allows normal users to set the +n usermode (hide channels from whois/who),
629 + this is only recommended in special circumstances.
635 + This enables / disables the ability for users to use the /GLINE command for
636 + listing active glines. It's turned on by default, which is the opposite
637 + behaviour of vanilla ircu.
643 + As per QuakeNet Security, this option sets user mode +i on all connecting clients
650 + As per QuakeNet Security, add the ability to disable the /USERIP command for users.
656 + Enable or disable auto (default) channel modes for new channels.
658 +F:AUTOCHANMODES_LIST
662 + AUTOCHANMODES_LIST should contain the default channelmodes (e.g. "ntCN") which will
663 + be set by default on new channels.
665 +- disclaimer ----------------------------------------------------------------
667 +This software is provided "as is" with absolutely no warranties, either express
668 +or implied. It's use is done so totally at the user's own risk.
670 +------------------------ 11.03.2007 -----------------------------------------
671 diff -r ad0877db8e57 include/ircd_features.h
672 --- a/include/ircd_features.h Fri Jul 19 21:19:51 2013 +0100
673 +++ b/include/ircd_features.h Fri Jul 19 21:22:02 2013 +0100
680 /* Misc. random stuff */
682 diff -r ad0877db8e57 include/patchlevel.h
683 --- a/include/patchlevel.h Fri Jul 19 21:19:51 2013 +0100
684 +++ b/include/patchlevel.h Fri Jul 19 21:22:02 2013 +0100
689 -#define PATCHLEVEL "14"
690 +#define PATCHLEVEL "14+snircd(1.4.0)"
692 #define RELEASE ".12."
694 diff -r ad0877db8e57 ircd/Makefile.in
695 --- a/ircd/Makefile.in Fri Jul 19 21:19:51 2013 +0100
696 +++ b/ircd/Makefile.in Fri Jul 19 21:22:02 2013 +0100
699 ${INSTALL} -s -m 700 -o ${IRCDOWN} -g ${IRCDGRP} umkpasswd ${BINDIR}
700 ${INSTALL} -s -m 700 -o ${IRCDOWN} -g ${IRCDGRP} convert-conf ${BINDIR}
701 - ${INSTALL} -m 600 -o ${IRCDOWN} -g ${IRCDGRP} ${top_srcdir}/doc/example.conf ${DPATH}
702 + ${INSTALL} -m 600 -o ${IRCDOWN} -g ${IRCDGRP} ${top_srcdir}/doc/quakenet.conf ${DPATH}
704 install-no-symlink: build mkbindir
705 @if [ ! -d ${DPATH} -a ! -f ${DPATH} ]; then \
707 ${INSTALL} -m ${IRCDMODE} -o ${IRCDOWN} -g ${IRCDGRP} ircd ${BINDIR}/ircd
708 ${INSTALL} -s -m 700 -o ${IRCDOWN} -g ${IRCDGRP} umkpasswd ${BINDIR}
709 ${INSTALL} -s -m 700 -o ${IRCDOWN} -g ${IRCDGRP} convert-conf ${BINDIR}
710 - ${INSTALL} -m 600 -o ${IRCDOWN} -g ${IRCDGRP} ${top_srcdir}/doc/example.conf ${DPATH}
711 + ${INSTALL} -m 600 -o ${IRCDOWN} -g ${IRCDGRP} ${top_srcdir}/doc/quakenet.conf ${DPATH}
714 @if [ "${BINDIR}" != "${DPATH}" ]; then \
715 diff -r ad0877db8e57 ircd/ircd_features.c
716 --- a/ircd/ircd_features.c Fri Jul 19 21:19:51 2013 +0100
717 +++ b/ircd/ircd_features.c Fri Jul 19 21:22:02 2013 +0100
719 F_S(HIS_URLSERVERS, 0, "http://www.undernet.org/servers.php", 0),
720 F_B(HIS_USERGLINE, 0, 1, 0),
721 F_B(HIS_LUSERS_ME, 0, 0, 0),
722 + F_B(HIS_USERIP, 0, 1, 0),
724 /* Misc. random stuff */
725 F_S(NETWORK, 0, "UnderNet", 0),
726 diff -r ad0877db8e57 ircd/ircd_relay.c
727 --- a/ircd/ircd_relay.c Fri Jul 19 21:19:51 2013 +0100
728 +++ b/ircd/ircd_relay.c Fri Jul 19 21:22:02 2013 +0100
732 if (IsAccountOnly(acptr) && !IsAccount(sptr) && !IsOper(sptr)) {
733 - send_reply(sptr, ERR_ACCOUNTONLY, cli_name(acptr));
734 + send_reply(sptr, ERR_ACCOUNTONLY, cli_name(acptr), feature_str(FEAT_URLREG));
738 diff -r ad0877db8e57 ircd/m_invite.c
739 --- a/ircd/m_invite.c Fri Jul 19 21:19:51 2013 +0100
740 +++ b/ircd/m_invite.c Fri Jul 19 21:22:02 2013 +0100
742 /* If we get here, it was a VALID and meaningful INVITE */
744 if (IsAccountOnly(acptr) && !IsAccount(sptr) && !IsOper(sptr)) {
745 - send_reply(sptr, ERR_ACCOUNTONLY, cli_name(acptr));
746 + send_reply(sptr, ERR_ACCOUNTONLY, cli_name(acptr), feature_str(FEAT_URLREG));
750 diff -r ad0877db8e57 ircd/s_err.c
751 --- a/ircd/s_err.c Fri Jul 19 21:19:51 2013 +0100
752 +++ b/ircd/s_err.c Fri Jul 19 21:22:02 2013 +0100
753 @@ -1004,7 +1004,7 @@
755 { ERR_ISREALSERVICE, "%s %s :Cannot kill, kick or deop a network service", "485" },
757 - { ERR_ACCOUNTONLY, "%s :You must be authed in order to message this user", "486" },
758 + { ERR_ACCOUNTONLY, "%s :You must be authed in order to message this user -- For details of how to obtain an account visit %s", "486" },