This commit is contained in:
2026-02-17 22:30:19 -05:00
parent d4dea818be
commit df87dcc3df
21 changed files with 440 additions and 3224 deletions

View File

@@ -1,148 +0,0 @@
/************************************************************************
* IRC - Internet Relay Chat, doc/AUTHORS
* Copyright (C) 1990
*
* AUTHORS FILE:
* This file attempts to remember all contributors to the IRC
* developement. Names can be only added this file, no name
* should never be removed. This file must be included into all
* distributions of IRC and derived works.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 1, or (at your option)
* any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
IRC was conceived of and written by Jarkko Oikarinen <jto@tolsun.oulu.fi>.
IRC was originally written in University of Oulu, Computing Center.
Jan 1991 - IRC 2.6 jto@tolsun.oulu.fi
- Multiple Channels and protocol changes
Contributions were made by a cast of dozens, including the following:
Markku Jarvinen <mta@tut.fi>: Emacs-like editing facility for the client
Kimmo Suominen <kim@kannel.lut.fi>: HP-UX port
Jeff Trim <jtrim@orion.cair.du.edu>: enhancements and advice
Vijay Subramaniam <vijay@lll-winken.llnl.gov>: advice and ruthless publicity
Karl Kleinpaste <karl@cis.ohio-state.edu>: user's manual
Greg Lindahl <gl8f@virginia.edu>: AUTOMATON code, the Wumpus GM automaton,
myriad bug fixes
Bill Wisner <wisner@hayes.fai.alaska.edu>: numerous bug fixes and code
enhancements
Tom Davis <conslt16@zeus.unl.edu> and Tim Russell <russell@zeus.unl.edu>:
VMS modifications
Markku Savela <msa@tel4.tel.vtt.fi>: advice, support, and being the
incentive to do some of our *own* coding. :)
Tom Hopkins <hoppie@buengf.bu.edu>: bug fixes, quarantine lines,
consolidation of various patches.
Christopher Davis <ckd@cs.bu.edu>: EFnet/Anet gateway coding,
many automata ;), documentation fixing.
Helen Rose <hrose@cs.bu.edu>: documentation updating, and fixing.
Tom Hinds <rocker@bucsf.bu.edu>: emacs client updating.
Tim Miller <cerebus@bu-pub.bu.edu>: various server and client-breaking
features.
Darren Reed <avalon@coombs.anu.edu.au>: various bug fixes and enhancements.
Introduced nickname and channelname hash tables into the server.
The version 2.2 release was coordinated by Mike Bolotski
<mikeb@salmon.ee.ubc.ca>.
The version 2.4 release was coordinated by Markku Savela and
Chelsea Ashley Dyerman
The version 2.5.2 release was coordinated by Christopher Davis, Helen Rose,
and Tom Hopkins.
The versions 2.6.2, 2.7 and 2.8 releases were coordinated by Darren Reed.
Contributions for the 2.8 release from the following people:
Matthew Green <phone@coombs.anu.edu.au>
Chuck Kane <ckane@ece.uiuc.edu>
Matt Lyle <matt@oc.com>
Vesa Ruokonen <ruokonen@lut.fi>
Markku Savela <Markku.Savela@vtt.fi> / April 1990
Fixed various bugs in 2.2PL1 release server (2.2msa.4) and changed
sockets to use non-blocking mode (2.2msa.9). [I have absolutely
nothing to do with clients :-]
Chelsea Ashley Dyerman <chelsea@earth.cchem.berkeley.edu> / April 1990
Rewrote the Makefiles, restructuring of source tree. Added libIrcd.a to
the Makefile macros, numerous reformatting of server text messages, and
added mkversion.sh to keep track of compilation statistics. Numerous
bug fixes and enhancements, and co-coordinator of the 2.4 release.
Jarle Lyngaas (nmijl@alf.uib.no) added Note functions to ircd.
Armin Gruner <gruner@informatik.tu-muenchen.de> / May, June 1990:
* Patched KILL-line feature for ircd.conf, works now.
Enhancement: Time intervals can be specified in passwd-field.
Result: KILL-Line is only active during these intervals
* Patched PRIVMSG handling, now OPER can specify masks for sending
private messages, advantage: msg to all at a specified server or host.
* Little tests on irc 2.5 alpha, fixed some little typos in client code.
Change: common/debug.c has been moved to ircd/s_debug.c, and a
irc/c_debug.c has been created, for the benefit that wrong server msg
are displayed if client does not recognize them. (strange, if a server
sends an 'unknown command', isn't it?)
Tom Hopkins <hoppie@buengf.bu.edu> / September, October 1990:
* Patched msa's K lines for servers (Q lines).
* Consolidated several patches, including Stealth's logging patch.
* Fixed several minor bugs.
* Has done lots of other stuff that I can't seem to remember, but he
always works on code, so he has to have done alot more than three
lines worth. :)
UnrealIRCd Coders
Carsten Munk <stskeeps@unrealircd.com> / May 1999 - December 2008
Dominick Meglio <codemastr@unrealircd.com> / June 1999 - August 2005
David Flynn / March 2000 - June 2000
McSkaf / June 2001 - September 2001
Finny Merrill <griever@unrealircd.com> / November 2001 - December 2002
Bram Matthys <syzop@unrealircd.com> / January 2002 - date
This list is incomplete, type /INFO on IRC to find the updated list.
Thanks go to those persons not mentioned here who have added their advice,
opinions, and code to IRC.
Various modifications, bugreports, cleanups and testing by:
Hugo Calendar <hugo@ucscb.ucsc.edu>
Bo Adler <adler@csvax.cs.caltech.edu>
Michael Sandrof <ms5n+@andrew.cmu.edu>
Jon Solomon <jsol@cs.bu.edu>
Jan Peterson <jlp@hamblin.math.byu.edu>
Nathan Glasser <nathan@brokaw.lcs.mit.edu>
Helen Rose <hrose@eff.org>
Mike Pelletier <stealth@caen.engin.umich.edu>
Basalat Ali Raja <gwydion@tavi.rice.edu>
Eric P. Scott <eps@toaster.sfsu.edu>
Dan Goodwin <fornax@wpi.wpi.edu>
Noah Friedman <friedman@ai.mit.edu>
[ $Id$ ]

View File

@@ -1,81 +0,0 @@
pub rsa4096 2015-07-02 [SC] [expires: 2025-06-29]
1D2D2B03A0B68ED11D68A24BA7A21B0A108FF4A9
uid UnrealIRCd releases (for verification of software downloads only!) <releases@unrealircd.org>
-----BEGIN PGP PUBLIC KEY BLOCK-----
mQINBFWVOFYBEACsWFWM25VDaGXq22GSTJo1O53bgAMCZsqj9VKDriUmj7uvozlp
BGHgYFVM4ZT1FUAsWedeIP2aLLkYGmH4odVaAk7IeUa7HfpE45/F6+End6bCpYGe
1UdVQM/Bu3VHoUtVvtIFg788JwbplroapA/D0pi/EAN8WYnN9etgLM2lvzwbjBz9
xTOefwvgRsKbCH63VW7NCyquEcdEJxnMHB7JZUEuzrOUvhAiIkwKw8wbcn36zX0i
wcAFtVO5uVTA/Tdu6nWsZvqVc6R1E3usJzWSwbmoUtPUM5Mk9I9gL73EsqEbgs5N
trT00r75RcfiThNEP8NtDtB8AFum6OCSg/+8bdJmKcWVKpuB+lUvP0d4UAqm5vmH
/KQh/nyHXKvAvhWqHizozP1WGevpxLFHMjm/+1T167Iil/3UcUyn9qd0CuYSszJw
y5Vp6iJHkVo8qxI89rkzSDRi+ppLCBTwuN01ducftDxvIQMVrphdKZLPGzQrltkh
lIN4XNS6cOOsrbbk5+Kc2xih6qt+DyiRHaNFQnoMdRVeIrmf4u4ClMcHlzELV8gF
D+s0BbVqhVwAhbKMfKaVmvVlj8bSET0z2s0vhZODwlgANpDBLNsIU6leiYRAzub5
WY5Hz1m7P8ZXSMPh4/vGh1kg3E9IRKLZDZ65gEYr8nNCzbAYmDQ3IkplIwARAQAB
tFxVbnJlYWxJUkNkIHJlbGVhc2VzIChmb3IgdmVyaWZpY2F0aW9uIG9mIHNvZnR3
YXJlIGRvd25sb2FkcyBvbmx5ISkgPHJlbGVhc2VzQHVucmVhbGlyY2Qub3JnPokC
PgQTAQIAKAUCVZU4VgIbAwUJEswDAAYLCQgHAwIGFQgCCQoLBBYCAwECHgECF4AA
CgkQp6IbChCP9KlFzQ/+ObuBgCtXvLcbpq7C2usHxgtEB1rV9khLGugJXevjMaf3
+vo4d5cd5go665po8oqDnSUfq+8LPDj/nnroKQcS5Kb4KdHz6rn+53rHWtw6PPGN
KswFS05Vy2AkYg4nVXvrGm0oV173qOms2REoStP0mEm7F7ZTJ6k1qgmZ8tcFgfMm
fqEl94O5zDWycaJx7K0h3n+xUyhh+lT9Zl3duzVzCc+YI+dD6UOIXBF9TF9fIb8m
300MBLwTTHq64nGsZbhfzCHNHAO6hTy5XmE+d1g4R87rKim6lP0V1LTbvhOhYhZg
0JrVOr9dhHY4tw1xglz++nMM24t2O9zoRoZjDMHBzzBm3gJq3G160kxVZKKcVaQd
nfYvPOBNtyEyaIIJD8vs2Z9jiJLjpoz0LhnE2TmE4M6YqBsSWfFuPrHE+PJQyEQg
2zEoTRCSFSLaq+5kl3vKM/cblwkQeKkNe8u6bDNk7bEPUCQstyOqcvoTWE2gs3f2
n7wI7BzW3uX5YUp1CcdPig1XxveI4XaKKrhRacvGvvNHdXw1scj1K0SCXvy4EPpf
dLthTC6BHwO2P56wlxK0MRL/GD72ttBCcsyLWYdL9OIT6Lx4bZVhvEjKDapWAL04
X1mXMHUK1iO4lunbqP3lu6F8qsuI/B2sIiJK7aSjv4bjVRw/jcESrhmCvnN3B3mI
RgQQEQIABgUCVZU9NQAKCRBpsoj7n/A5N4E2AJ4i5z98+mA8Ug9utdslGvHFRq+s
PgCeILJ7/dJFYZFz1YpaNTbRCHIesaWIXgQQEQgABgUCVZU9ZwAKCRBuZ21Ff+GZ
pueXAP9bJ1hPWa3ITIoapW9eTT1eNv+17KqcclwZzxCopbUkFAD+NptTuXpeivM+
USWsQJFpFlLdDckcv8QzLQwgzZ8TXtKJAhwEEAEIAAYFAlg796cACgkQ3pO4tH50
XrMyWQ/+NJyhO5yibAhN4RgCJ+qFdp9Llm+SQGFjVtw8L7nv3M0Us8xspmVlX7TZ
/OK6AhUyaqAmg3ZXruaetrBVIAlP675cXJ1NIPfyT+PvMUbupvqBhyPZKqdnh2WT
ZMYdQrvw503h+BlyjGeAWd34tLhtiM1A69tntFu2A7bKhkoxE7KoyCjKmLgUb30M
r5guxb6DCUXK8m5ooHl58kLtJrTpW9l3YYXpKe/POYPIK6ULZN7TChtFOTJ+ebx1
2LaQGGdRKaCSM1OX7mfvBG8GtljQcGoP+f5TmvRbCGGfiR9r6MdgG6LYTuYf7pR7
NBwxveqwJV4iOmd9b+doIra5tRX0TqEKdEqpVHhm4UTZlHVyIpg97Lc/7WiWS1Z5
UIhT4YxlztPUvWmCXlleNEqBYK86OsVFqryHDVKtPbH65k/xKfu8w/hHkv7TQ23r
eoMs1uBlaUWe3orgUOr0tnFLXz809SAwC9sxQq9TWTm50NqiaQvBVInSUssFYPkG
qBljIXtdUzFGBn3sTpFRY6p2yzIo54EQmQAvMQPEJkQ8JQJ47au82DxFUBZYKci5
lsJfRueGnn5A36eUZdkhZ6Dm61M3YldYcpRa4Xfi0AWbg5yW/uUipc36Ey+vwWyl
x+1IZgjnIIMsyDLuq2tm5p1tiJK2N9L0rxQb/DIK7j8+ZvmlFZQ=
=foLZ
-----END PGP PUBLIC KEY BLOCK-----
pub rsa4096 2024-11-18 [SC] [expires: 2030-11-17]
36E6F65706E36B0937280299101001DAF48BB56D
uid UnrealIRCd releases and patches (for verification of software downloads only!) <releases@unrealircd.org>
-----BEGIN PGP PUBLIC KEY BLOCK-----
mQINBGc7EBEBEADDZzlLVArYr2kE9NlhnuUF31rW3wvZ4avjhzhmO6bL0I0RESZC
PrtiFVJyjcSScObOVONFSC2YQiLVpezkKX4AYoqfnsuWfHg3xlGqCY8Ip+V5XJ6v
8G5haFFEgTL10UtqzPNymygWmoEr11u3BUKIzAJAuec7dl7PyfGU2JDkl+NtWm31
WyKCMuK3TKaD8UjGd5PPQR4jA6k1Hn8kvUl53EmkJjRyJc1XVz4AjZFywyUENGJv
HVdVFOPDaKzIx6N6+2dm0ZxXIPOISycwEQuk1++E7NyOS5u+lzlFN7RAXR/5Ogv5
pZzdcsPXp0RHHVeM8qgV7kvRTG9xhfFcXjs9Hanp2siy80HWs56o7nNN2eQNA31W
5lfGIWaA3pY4rpBoiQc3IMGD+vkACfRFH468+cx50zP9gbqSaxUaj6Z0e/jBNf26
7MIEKUjVCunQjO0Lob346FTAvdnXEXCwwJdQFF2tkxnpUBs6sSXjJwVgsfrkizXS
X0qsX7DTn9QpF9Z+0czqdoyJuLLPOFx+6Xj7l2riBYyzMAa8c6odLXTReMaVxFN+
clIVMCrfYXuURb4QGKB0ewW/wZd1fgsPAV4D1qypFAnM0D+qsfpKFI1QQY7WEUcC
YVMkzjZHPWaBdRQf7KLXasx7/ouM5nIlZdRrPDrCXXiqAlA20aWqvZ8N1wARAQAB
tGhVbnJlYWxJUkNkIHJlbGVhc2VzIGFuZCBwYXRjaGVzIChmb3IgdmVyaWZpY2F0
aW9uIG9mIHNvZnR3YXJlIGRvd25sb2FkcyBvbmx5ISkgPHJlbGVhc2VzQHVucmVh
bGlyY2Qub3JnPokCVAQTAQoAPhYhBDbm9lcG42sJNygCmRAQAdr0i7VtBQJnOxAR
AhsDBQkLRzUABQsJCAcCBhUKCQgLAgQWAgMBAh4BAheAAAoJEBAQAdr0i7Vt1hoQ
ALCuqTuVqYOiwBsccS8Qt52l+8pOr0hcF49GM+eBM7Evq2tlwL4FOEyzbsO94yRH
qTxGg/0puYkF74+vZnS2Vlo/F90FTmypy4oVQr+K/dd11ZEVLEpNcdaXuj68vP4c
UCsUPmQyPGERCIlKMe1U+n6yQWgx7xLbuqlOuxcwKDddYa6hhToogUxBbdOZZrYl
I4LN38ztSr0xjp0b67gdrMgOByS/r1AOX61L4DL2/glGOCt4GpKWPj8bOrK+Y/eK
HRK72TezQ+XPFAqsXNmeaLBVVFM8L3fPBBEmVV5tULZ7+/3Qlyub78/OK3Y1/fV7
qFY1S0WnTWY5mBNtUSgF9bGK/UyySNtPFtihmyg0xGQ/cNwiH7QXp38LboEBDoTF
lRT42nX1Nw9KpIWqGPTowB4qhN7znAseYkuH1XtDJHm1OKQjUB8lyBupq3cXYUju
JJH4zfdpWeLWQktb3D8uQsvEBcIyaVRs8wlPdAQBZBL0cLvE0ACpcsbsua26ihzB
ZCGzYmdZvBPpRo2e5xzC9ur3VOQzHqsebFrRKzDD6PgYCgnqJ+03vMToGua9MVX+
FFd2BSLO3UGUPdZESNzik2cILyZPRucwGWnL4wh+v+eOP9ZS4QpACye38VkGWUVR
YqzzK4QaI3m1xrRbcuCXdiMymWnWV3yW6AU+eGB8aEDW
=p0TV
-----END PGP PUBLIC KEY BLOCK-----

File diff suppressed because it is too large Load Diff

View File

@@ -1,123 +0,0 @@
Rules about patches & modifications to UnrealIRCd
1. When making a change, always add a small description in the commit log.
Don't forget to mention the bug# and credit the reporter (if any).
2. If new files are made, they must contain proper copyright headers.
3. Each bug or feature should have a bug# so people can have a discussion
about it. This has a few implications (read!!):
* People must report bugs/feature requests to bugs.unrealircd.org and
not on IRC, e-mail, etc.
* That means other people can see the bug# and comment on it. This means
discussion is easy to read back for each issue and not spread between
several IRC logs.
Furthermore, by using the bugtracker instead of directly committing,
people could point out that there might be a better way to do things
than you originally thought, or it might be that other devs don't like
it at all.
* If a head coder has 'acknowledged' or 'confirmed' the issue or stated
in a comment that it's OK to implement, then any dev may take the issue.
The dev should change the status to 'assigned' and work on it, then
commit and change it to 'resolved', set 'fixed in version' to the
correct release, and add a comment pasting the relevant commit log.
Of course other guidelines, in particular rule #7, still applies.
4. If you don't have direct write access to the repository then you can
submit changes as as PR on github. It is very much preferred to also
have a bugs.unrealircd.org entry for it as well (see previous item).
5. For the stable branch, in general, only commit changes that have an
associated bugid# and/or were discussed.
For branches currently in development (alpha/beta) there's more freedom
and if you think the change will be small and is fine without a
discussion then feel free to commit.
6. Regarding reidenting, restructuring or other major code cleanups: please
discuss before doing so. The other devs might not agree with you on the
particular cleanup you have in mind which would result in another
clean-up-the-cleanup commit.
You may, however reindent and clean up individual sections when you are
working on fixing a particular bug# or implementing a new feature. In fact
you're encouraged to do so if the code is confusing without it. However,
obey the style of Unreal's code (mostly outlined in this document)
and do not introduce yet another (new) style. Also, be careful with doing
any cleanup: if you're unsure in any way about the use of something,
or something that looks redundant on first sight, then look more
carefully... it might indeed be useless and/or redundant, but it might
also be a subtle thing that can create great bugs when 'cleaned up'.
7. During the Release Candidate stage (from RC1 until the final release)
only the head coder may commit directly, all others should ask and
present their patch before committing. Yes, even if you are changing
only 1 line of code or text.
9. UnrealIRCd should compile on all supported operating systems and
platforms, using GCC 3 or higher on *NIX, and Visual Studio 2008 or
higher on Windows. This means you cannot blindly use all C99 extensions.
10. Coders must test their code before committing.
11. /*
* These kind of comments
*/
NOT
// These kind of comments
12. if (something == 1)
{
moo; /* comment */
/* This does what what what */
cow(go(moo));
}
NOT
if (something == 1) {
}
13. Do not touch version.c.SH or version.h, unless you are a head coder.
If you need a credit in, contact us
14. Protocol changes must be discussed before making patches for it.
15. We do NOT rip people off. If we use other people's code, it MUST be
properly credited.
16. We use tabsize 8 and we use tabs AND NOT SPACES.
Some code is old and horrible and has a mix of tabs and spaces used for
spacing, that's something we do not want to have ;)
17. Be careful about overflows. Do not do any unchecked string copies.
Instead of strcpy, strcat and sprintf/ircsprintf, use the following
functions: strlcpy, strlcat, snprintf/ircnsprintf.
If you are copying/writing character-by-character or word-by-word in a
loop, eg using *p++ = x; then be very sure about your size counting.
Often it's better to avoid such code altogether, by simply using
strlcat for everything.
18. Speed. When optimizing or writing code, keep in mind that readability and
stability comes FIRST, and after that comes speed. So we'd rather prefer some
readable code (even if difficult) over some odd highly optimized routine which
nobody understands, is difficult to extend, and might have several bugs.
As mentioned earlier: use ircsnprintf, not snprintf (this is because
ircsnprintf is optimized for simple strings like the ones we use).
ircsnprintf calls snprintf when it finds a (non-simple) format specifier it
can't handle. Simple format specifiers do not have prefixes other than
h and l.
19. Initialize your structs and use the proper memory calls.
In UnrealIRCd we use safe_alloc, safe_free, safe_strdup and safe_strldup.
Do NOT use malloc, calloc or strdup.
20. Comment your code! This should speak for itself...
Put comments wherever you think they are needed, to aid any further coders
with reading your code.. and, in fact, it will aid yourself as well if you
would look back at your code 2 years later.
If there's some obscure pitfall, DO mention it! Don't just "hope" a next
author will see it like you did.
21. Use enums whenever possible, rather than #define constants. Besides making
things more clean, it also aids debugging.

View File

@@ -1,2 +0,0 @@
For information on how to compile UnrealIRCd (modules) on Windows, see:
https://www.unrealircd.org/docs/Compiling_UnrealIRCd_on_Windows

View File

@@ -21,15 +21,8 @@ badword channel { word "drunk"; replace "buck"; }
badword channel { word "dude"; replace "blud"; }
badword channel { word "efnet"; replace "efrael"; }
badword channel { word "elaborate"; replace "ebloggerate"; }
badword channel { word "endocrine"; replace "retard"; }
badword channel { word "estradiol"; replace "creatine"; }
badword channel { word "estrogen"; replace "testosterone"; }
badword channel { word "estrogel"; replace "baby oil"; }
badword channel { word "fag"; replace "sodomite"; }
badword channel { word "faggot"; replace "sodomite"; }
badword channel { word "femboy"; replace "GUY IRL WHO WILL NEVER BE A GIRL"; }
badword channel { word "fem boy"; replace "GUY IRL WHO WILL NEVER BE A GIRL"; }
badword channel { word "(filehole)"; replace "I AM A RETARD WHO DOESNT KNOW ABOUT HARDFILES.ORG YET"; }
badword channel { word "friend"; replace "mate"; }
badword channel { word "fuckin"; replace "blood clot"; }
badword channel { word "fucking"; replace "blood clot"; }
@@ -45,7 +38,6 @@ badword channel { word "hate"; replace "04 hate "; }
badword channel { word "hello"; replace "smello"; }
badword channel { word "hey"; replace "oi"; }
badword channel { word "high"; replace "HIE"; }
badword channel { word "(hole.birdnest.live)"; replace "IM.A.RETARD.WHO.DOESNT.KNOW.ABOUT.HARDFILES.ORG.YET"; }
badword channel { word "holy shit"; replace "bloody hell"; }
badword channel { word "home"; replace "flat"; }
badword channel { word "homie"; replace "mate"; }
@@ -57,38 +49,32 @@ badword channel { word "i'm"; replace "m"; }
badword channel { word "i am"; replace "m"; }
badword channel { word "im"; replace "m"; }
badword channel { word "ima"; replace "m"; }
badword channel { word "in da"; replace "int"; }
badword channel { word "in the"; replace "int"; }
badword channel { word "in this"; replace "int"; }
badword channel { word " in the "; replace " int "; }
badword channel { word " in this "; replace " int "; }
badword channel { word "japex"; replace "RAPEX"; }
badword channel { word "jew"; replace "shusky"; }
badword channel { word "jewish"; replace "shuskish"; }
badword channel { word "jfc"; replace "bloody hell"; }
badword channel { word "jpx"; replace "RAPEX"; }
badword channel { word "kade"; replace "larry"; }
badword channel { word "kek"; replace "%%"; }
badword channel { word "kike"; replace "shusky"; }
badword channel { word "labatu"; replace "larry"; }
badword channel { word "ladies"; replace "bints"; }
badword channel { word "lady"; replace "bint"; }
badword channel { word "lionie"; replace "larry"; }
badword channel { word "lmao"; replace "%%"; }
badword channel { word "lmfao"; replace "%%"; }
badword channel { word "(lol)"; replace "%%"; }
badword channel { word "lorf"; replace "%%"; }
badword channel { word "lucia"; replace "larry"; }
badword channel { word "lucio"; replace "larry"; }
badword channel { word "mao"; replace "04 I AM A GUY IRL AND WILL NEVER BE A GIRL"; }
badword channel { word "mau"; replace "04 I AM A GUY IRL AND WILL NEVER BE A GIRL"; }
badword channel { word "maw"; replace "04 I AM A GUY IRL AND WILL NEVER BE A GIRL"; }
badword channel { word "mew"; replace "04 I AM A GUY IRL AND WILL NEVER BE A GIRL"; }
badword channel { word "mraw"; replace "04 I AM A GUY IRL AND WILL NEVER BE A GIRL"; }
badword channel { word "mrp"; replace "04 I AM A GUY IRL AND WILL NEVER BE A GIRL"; }
badword channel { word "mrrp"; replace "04 I AM A GUY IRL AND WILL NEVER BE A GIRL"; }
badword channel { word "mrw"; replace "04 I AM A GUY IRL AND WILL NEVER BE A GIRL"; }
badword channel { word "man"; replace "lad"; }
badword channel { word "marijuana"; replace "bobby brown"; }
badword channel { word "mau"; replace "I AM A GUY IRL AND WILL NEVER BE A GIRL"; }
badword channel { word "maw"; replace "I AM A GUY IRL AND WILL NEVER BE A GIRL"; }
badword channel { word "(meow)"; replace "bark bark"; }
badword channel { word "mew"; replace "I AM A GUY IRL AND WILL NEVER BE A GIRL"; }
badword channel { word "money"; replace "clams"; }
badword channel { word "mraw"; replace "I AM A GUY IRL AND WILL NEVER BE A GIRL"; }
badword channel { word "mrp"; replace "I AM A GUY IRL AND WILL NEVER BE A GIRL"; }
badword channel { word "mrrp"; replace "I AM A GUY IRL AND WILL NEVER BE A GIRL"; }
badword channel { word "mrw"; replace "I AM A GUY IRL AND WILL NEVER BE A GIRL"; }
badword channel { word "my"; replace "me"; }
badword channel { word "nice"; replace "safe"; }
badword channel { word "(nigger)"; replace "angel"; }
@@ -101,7 +87,6 @@ badword channel { word "pal"; replace "mate"; }
badword channel { word "pot"; replace "bobby brown"; }
badword channel { word "prostitute"; replace "slag"; }
badword channel { word "reefer"; replace "bobby brown"; }
badword channel { word "roarie"; replace "larry"; }
badword channel { word "rofl"; replace "%%"; }
badword channel { word "rr"; replace "%%"; }
badword channel { word "same"; replace "salami"; }
@@ -109,7 +94,6 @@ badword channel { word "sandnet"; replace "supernets"; }
badword channel { word "shit-faced"; replace "buck"; }
badword channel { word "shitfaced"; replace "buck"; }
badword channel { word "shit faced"; replace "buck"; }
badword channel { word "(shithole.neocities.org)"; replace "aarp.org"; }
badword channel { word "shoes"; replace "kicks"; }
badword channel { word "sir"; replace "lad"; }
badword channel { word "skank"; replace "slag"; }
@@ -117,15 +101,13 @@ badword channel { word "(skyp)"; replace "skik"; }
badword channel { word "slut"; replace "slag"; }
badword channel { word "socks.cat"; replace "iproyal.com"; }
badword channel { word "sockscat"; replace "iproyal.com"; }
badword channel { word "spoke"; replace "04 SPOKE "; }
badword channel { word "(ss)"; replace "ϟϟ"; }
badword channel { word "spoke"; replace "04 SPOKE "; }
badword channel { word "sup"; replace "wah gwaan"; }
#badword channel { word "the"; replace "prometheo"; }
badword channel { word "twat"; replace "slag"; }
badword channel { word "(troll)"; replace "papillion"; }
badword channel { word "uber"; replace "HELLS ANGELS"; }
badword channel { word "uwu"; replace "( ͡° ͜ʖ ͡°)"; }
badword channel { word "vxp"; replace "larry"; }
badword channel { word "watsup"; replace "wah gwaan"; }
badword channel { word "wats up"; replace "wah gwaan"; }
badword channel { word "weed"; replace "bobby brown"; }
@@ -140,6 +122,32 @@ badword channel { word "wuddup"; replace "wah gwaan"; }
badword channel { word "wussup"; replace "wah gwaan"; }
badword channel { word "(year)"; replace "yonk"; }
# ANTI VXP
badword channel { word "roarie"; replace "larry"; }
badword channel { word "lucia"; replace "larry"; }
badword channel { word "lucio"; replace "larry"; }
badword channel { word "kade"; replace "larry"; }
badword channel { word "labatu"; replace "larry"; }
badword channel { word "vxp"; replace "larry"; }
# ANTI FAGGOTRY
badword channel { word "boywife"; replace "retarded idiot"; }
badword channel { word "boy wife"; replace "retarded idiot"; }
badword channel { word "endocrine"; replace "retard"; }
badword channel { word "estradiol"; replace "creatine"; }
badword channel { word "estrogen"; replace "testosterone"; }
badword channel { word "estrogel"; replace "anti itch cream"; }
badword channel { word "(meow)"; replace "bark bark"; }
badword channel { word "femboy"; replace "GUY IRL WHO WILL NEVER BE A GIRL"; }
badword channel { word "fem boy"; replace "GUY IRL WHO WILL NEVER BE A GIRL"; }
badword channel { word "cat boy"; replace "GUY IRL WHO WILL NEVER BE A GIRL"; }
badword channel { word "catboy"; replace "GUY IRL WHO WILL NEVER BE A GIRL"; }
badword channel { word "uwu"; replace "( ͡° ͜ʖ ͡°)"; }
# No-homo Mode
#badword channel { word "came"; replace "came (nohomo)"; }
#badword channel { word "come"; replace "come (nohomo)"; }
@@ -189,4 +197,4 @@ badword channel { word "(year)"; replace "yonk"; }
#badword channel { word "(6)"; replace ""; }
#badword channel { word "(7)"; replace ""; }
#badword channel { word "(8)"; replace ""; }
#badword channel { word "(9)"; replace ""; }
#badword channel { word "(9)"; replace ""; }

19
src/doc/conf/custom.conf Normal file
View File

@@ -0,0 +1,19 @@
# Custom (FOENEM)
except ban {
mask {
ip { 1.4.8.8; } # Pyrex
}
type { all; }
}
# Scanners
except ban {
mask {
ip { 192.99.194.177; 2607:5300:203:315e::5; } # crawler.ircdriven.com (https://www.ircdriven.com/about/bots/)
ip { 85.25.10.40; } # anaconda.netsplit.de
ip { 149.56.47.33; } # stats-grabber.ircdocs.horse
ip { 109.169.31.13; } # out.kiwiirc.com
}
type { all; }
}

View File

@@ -1,41 +0,0 @@
# Custom (FOENEM)
except ban {
mask {
ip { 1.4.8.8; } # Pyrex
}
type { all; }
}
# Tor Hidden Service
except ban {
mask { ip 127.0.0.2; }
type { all; }
}
# Local
except ban {
mask {
ip { 127.0.0.1; } # /msg OperServ EXCEPTION ADD 127.0.0.1 10 LOCAL
}
type { all; }
}
# IRCCloud
except ban {
mask {
ip { 5.254.36.56/29; 5.254.36.104/29; }
ip { 2a03:5180:f::/62; 2a03:5180:f:4::/63; 2a03:5180:f:6::/64; }
}
type { all; }
}
# Scanners
except ban {
mask {
ip { 15.204.168.130; 2604:2dc0:140:7200::4; } # crawler.ircdriven.com
ip { 85.25.10.40; } # anaconda.netsplit.de
ip { 149.56.47.33; } # stats-grabber.ircdocs.horse
ip { 109.169.31.13; } # out.kiwiirc.com
}
type { all; }
}

View File

@@ -77,44 +77,15 @@ oper acidvegas {
# vhost super.nets.link;
#}
oper 5000 {
class local;
mask { ip 127.0.0.1; }
maxlogins 1;
modes BdD;
operclass fuckyou;
password "REDACTED";
require-modes z;
vhost 5000;
}
oper 5000 { auto-login yes; class local; mask { ip 127.0.0.1; } maxlogins 1; modes BdD; operclass fuckyou; password "REDACTED"; require-modes z; vhost 5000; }
oper cancer { auto-login yes; class local; mask { ip 127.0.0.1; } maxlogins 1; modes BdD; operclass cancer; password "REDACTED"; require-modes z; vhost RETTE; }
oper phalanx { auto-login yes; class local; mask localhost; maxlogins 5000; modes BdD; operclass phalanx; password 'REDACTED'; vhost scrambler; }
oper cancer {
class local;
mask { ip 127.0.0.1; }
maxlogins 1;
modes BdD;
operclass cancer;
password "REDACTED";
require-modes z;
vhost RETTE;
}
oper phalanx {
auto-login yes;
class local;
mask localhost;
maxlogins 5000;
modes BdD;
operclass phalanx;
password 'REDACTED';
vhost R;
}
##################################################
operclass netadmin {
permissions { chat; client; immune; kill; channel; route; sacmd; self; server; server-ban; services; }
}
operclass netadmin { permissions { chat; client; immune; kill; channel; route; sacmd; self; server; server-ban; services; } }
operclass mate {
permissions {

View File

@@ -63,18 +63,4 @@ log {
tls.TLS_CERT_EXPIRING;
}
destination { remote; }
}
log {
source {
all;
!debug;
}
destination {
channel "#syslog-json" {
json-message-tag yes;
oper-only yes;
}
}
}

View File

@@ -1,12 +0,0 @@
#spamfilter {
# match-type simple;
# match "*spam*message*here*";
# target { private; private-notice; channel; channel-notice; }
# action kill;
# show-message-content-on-hit always;
# reason "8,4 E N T E R T H E V O I D ";
#}
#/spamfilter add -simple cpnN block - "8,4___E_N_T_E_R___T_H_E___V_O_I_D___" "message*here"
#/spamfilter add -simple cpnN kill - "8,4___E_N_T_E_R___T_H_E___V_O_I_D___" "message*here"
#/spamfilter add -simple cpnN gzline 1d "8,4___E_N_T_E_R___T_H_E___V_O_I_D___" "message*here"

View File

@@ -17,15 +17,9 @@ link services.supernets.org {
class servers;
}
log {
source { error; fatal; warn; }
destination { file "ircd.log" { maxsize 5M; } }
}
log {
source { !debug; all; }
destination { channel "#syslog"; }
}
log { source { error; fatal; warn; } destination { file "ircd.log" { maxsize 5M; } } }
log { source { all; !debug; } destination { channel "#syslog" { json-message-tag yes; oper-only yes; } } }
log { source { all; !debug; } destination { syslog; } }
ulines { services.supernets.org; }

View File

@@ -1,8 +1,9 @@
include "https://USERNAME:PASSWORD@hub.supernets.org:PORT/modules.conf";
include "https://USERNAME:PASSWORD@hub.supernets.org:PORT/ircd.conf";
include "https://USERNAME:PASSWORD@hub.supernets.org:PORT/badwords.conf";
include "https://USERNAME:PASSWORD@hub.supernets.org:PORT/except.conf";
include "https://USERNAME:PASSWORD@hub.supernets.org:PORT/ircd.conf";
include "https://USERNAME:PASSWORD@hub.supernets.org:PORT/modules.conf";
include "https://USERNAME:PASSWORD@hub.supernets.org:PORT/opers.conf";
include "https://USERNAME:PASSWORD@hub.supernets.org:PORT/snomasks.conf";
include "https://USERNAME:PASSWORD@hub.supernets.org:PORT/spamfilter.conf";
me { name "example.supernets.org"; info "SuperNETS IRC Network"; sid XXX; }
me { name "example.supernets.org"; info "SuperNETS IRC Network"; sid XXX; }
#require authentication { mask { *@*; } reason "8,4 E N T E R T H E V O I D "; }

View File

@@ -1,50 +1,52 @@
@define $VOID "8,4 E N T E R T H E V O I D ";
admin {
" 4Administrator: Wyatt Deere 14(aka chrono) 6chrono@digitalgangsta.com";
" 4Retaliation: Brandon McDubai 14(aka MRCHATS) 6branbran89@supernets.org";
" 4Moderator: Bristopher Manning 14(aka delorean) 6simpsonsfan420@supernets.org";
" 4Sales: Branthony Bronson 14(aka pyrex) 6showercaphandgun@supernets.org";
" 4Public Relations: Bradshaw Wiggins 14(aka Baron Fortuna) 6lovemyrace@dailystormer.in";
"4Research & Development: Tim Allen-key 14(aka e) 6highschoolmusical@carltonbanksclub.edu";
"";
"Feel free to chat with us in #5000 for network help & support!";
}
alias botserv { type services; }
alias bs { target botserv; type services; }
alias chanserv { type services; }
alias cs { target chanserv; type services; }
alias hostserv { type services; }
alias hs { target hostserv; type services; }
alias nickserv { type services; }
alias ns { target nickserv; type services; }
alias operserv { type services; }
alias os { target operserv; type services; }
admin { "$VOID"; }
class clients { pingfreq 120; maxclients 100; sendq 25M; recvq 32k; }
class known { pingfreq 120; maxclients 250; sendq 50M; recvq 32k; }
class local { pingfreq 300; maxclients 1000; sendq 50M; options { nofakelag; } }
class servers { pingfreq 300; maxclients 20; sendq 100M; connfreq 15; }
class webchat { pingfreq 120; maxclients 150; sendq 5M; recvq 32k; }
class servers { pingfreq 120; maxclients 10; sendq 100M; connfreq 15; }
allow { mask *; class clients; maxperip 2; global-maxperip 2; }
allow { mask { security-group known-users; } class known; maxperip 3; global-maxperip 3; }
allow { mask { 127.0.0.1; } class local; maxperip 1000; global-maxperip 1000; password "simpsonsfan"; }
allow { mask *; class clients; maxperip 2; }
allow { mask { security-group webchat; } class webchat; maxperip 3; }
allow { mask { security-group known-users; } class known; maxperip 3; }
allow { mask { 127.0.0.1; } class local; maxperip 1000; password "simpsonsfan"; options { reject-on-auth-failure; } }
listen { ip *; port 6667; options { clientsonly; } }
listen { ip *; port 6697; options { clientsonly; tls; } tls-options { certificate "tls/irc.crt"; key "tls/irc.key"; } }
listen { ip *; port REDACTED; options { serversonly; tls; } }
#require authentication { mask { *@127.0.0.2; } reason "$VOID"; }
listen { ip *; port 6667; options { clientsonly; } }
listen { ip *; port 6697; options { clientsonly; tls; } tls-options { certificate "tls/irc.crt"; key "tls/irc.key"; } }
listen { ip *; port 7000; options { tls; websocket { type text; } } tls-options { certificate "tls/irc.crt"; key "tls/irc.key"; options { no-client-certificate; } } }
listen { ip *; port REDACTED; options { serversonly; tls; } }
webirc {
mask 205.185.121.23;
password "supernets_underground_collective_2022"
log { source { error; fatal; warn; } destination { file "ircd.log" { maxsize 5M; } } }
log { source { all; !debug; } destination { channel "#syslog" { json-message-tag yes; oper-only yes; } } }
log { source { all; !debug; } destination { syslog; } }
tld { mask *@*; motd remote.motd; rules remote.motd; options { remote; } }
ban nick { mask MemoServ; reason "$VOID"; }
except ban { mask { ip { 127.0.0.1; } } type { all; } }
except ban { mask { security-group { irccloud; } } type { all; } }
except ban { mask { security-group { leaf; } } type { all; } }
except ban {
mask {
ip { 192.99.194.177; 2607:5300:203:315e::5; } # crawler.ircdriven.com (https://www.ircdriven.com/about/bots/)
ip { 149.56.47.33; } # stats-grabber.ircdocs.horse (https://stats.ircdocs.horse/)
}
type { all; }
}
deny channel { channel "#help"; reason "This channel has moved to #superbowl"; redirect "#superbowl"; }
deny channel { channel "#pumpcoin"; reason "This channel has moved to #exchange"; redirect "#exchange"; }
deny channel { channel "#tor"; reason "This channel has moved to #superbowl"; redirect "#superbowl"; }
deny channel { channel "#help"; reason "This channel has moved to #superbowl"; redirect "#superbowl"; }
deny channel { channel "#pumpcoin"; reason "This channel has moved to #exchange"; redirect "#exchange"; }
deny channel { channel "#supernets"; reason "This channel has moved to #superbowl"; redirect "#superbowl"; }
#vhost { auto-login yes; mask { identified yes; } vhost $account.supernets.irc; }
vhost { auto-login yes; mask { security-group irccloud; } vhost paying.money.to.chat.on.irc.with.irccloud.com; }
ulines { services.supernets.org; }
link irc.supernets.org {
incoming { mask REDACTED; }
@@ -58,56 +60,46 @@ link irc.supernets.org {
class servers;
}
log {
source { error; fatal; warn; }
destination { file "ircd.log" { maxsize 5M; } }
alias botserv { type services; }
alias bs { target botserv; type services; }
alias chanserv { type services; }
alias cs { target chanserv; type services; }
alias hostserv { type services; }
alias hs { target hostserv; type services; }
alias nickserv { type services; }
alias ns { target nickserv; type services; }
alias operserv { type services; }
alias os { target operserv; type services; }
blacklist dronebl { dns { name dnsbl.dronebl.org; type record; reply { 3; 5; 6; 7; 8; 9; 10; 11; 12; 13; 14; 15; 16; } } action gzline; ban-time 30d; reason "$VOID"; }
blacklist efnetrbl { dns { name rbl.efnetrbl.org; type record; reply { 1; 4; 5; } } action gzline; ban-time 30d; reason "$VOID"; }
blacklist torbl { dns { name torexit.dan.me.uk; type record; reply { 100; } } action gzline; ban-time 30d; reason "$VOID"; }
security-group known-users { identified yes; reputation-score 10000; }
security-group webchat { public yes; webirc yes; websocket yes; }
security-group leaf {
ip { 18.117.172.253/32; } # omega
ip { 107.174.147.41/32; } # shrimp
ip { 45.33.2.9/32; } # wildwest
ip { 143.244.181.76/32; } # openwater
ip { 51.210.148.42/32; } # contra
ip { 209.141.34.40/32; } # micro
ip { 2600:3c00::2000:46ff:fe0c:9f26/128; } # wildwest
ip { 2001:41d0:304:200::8a4/128; } # contra
ip { 2600:1f16:45e:9100:216b:d03c:6a95:9467/128; } # omega
ip { 2604:a880:4:1d0::bc11:d000/128; } # openwater
ip { 2605:6400:20:b1c:39bf:c78d:6faf:23bb/128; } # micro
}
log {
source { !debug; all; }
destination { channel "#syslog"; }
}
tld {
mask *@*;
motd remote.motd;
rules remote.motd;
options { remote; }
}
ulines { services.supernets.org; }
blacklist dronebl {
dns {
name dnsbl.dronebl.org;
type record;
reply { 3; 5; 6; 7; 8; 9; 10; 11; 12; 13; 14; 15; 16; }
}
action gzline;
ban-time 30d;
reason "$VOID";
}
blacklist efnetrbl {
dns {
name rbl.efnetrbl.org;
type record;
reply { 1; 4; 5; }
}
action gzline;
ban-time 30d;
reason "$VOID";
}
blacklist torbl {
dns {
name torexit.dan.me.uk;
type record;
reply { 100; }
}
action gzline;
ban-time 30d;
reason "$VOID";
# source: https://www.irccloud.com/static/hosts.json
security-group irccloud {
public yes;
ip { 5.254.36.56/29; }
ip { 5.254.36.104/29; }
ip { 2a03:5180:f::/62; }
ip { 2a03:5180:f:4::/63; }
ip { 2a03:5180:f:6::/64; }
}
set {
@@ -121,7 +113,6 @@ set {
restrict-usermodes "ips";
restrict-channelmodes "nLpPs";
restrict-commands {
channel-create { except { connect-time 60; identified yes; reputation-score 100; } }
channel-message { except { connect-time 5; identified yes; reputation-score 100; } }
channel-notice { except { connect-time 15; identified yes; reputation-score 100; } }
invite { except { connect-time 300; identified yes; reputation-score 100; } }
@@ -132,7 +123,7 @@ set {
}
oper-auto-join "#syslog";
who-limit 1;
maxbans 200;
maxbans 250;
nick-length 20;
maxchannelsperuser 10;
channel-command-prefix "`!@$.";
@@ -151,20 +142,8 @@ set {
"REDACTED";
}
cloak-prefix "SUPER";
plaintext-policy {
user warn;
oper deny;
server deny;
user-message "4WARNING: You are not on a secure TLS connection";
oper-message "Network operators must be on a secure TLS connection";
}
outdated-tls-policy {
user warn;
oper deny;
server deny;
user-message "4WARNING: You are using an outdated TLS protocol or cipher";
oper-message "Network operators must be using an up-to-date TLS protocol & cipher";
}
plaintext-policy { user warn; oper deny; server deny; user-message "4WARNING: You are not on a secure TLS connection"; oper-message "$VOID"; }
outdated-tls-policy { user warn; oper deny; server deny; user-message "4WARNING: You are using an outdated TLS protocol or cipher"; oper-message "$VOID"; }
anti-flood {
channel {
profile defcon { flood-mode "[20j#R5,10n#N5,100m#M5]:5"; }
@@ -173,10 +152,7 @@ set {
}
everyone {
connect-flood 3:60;
handshake-data-flood {
amount 4k;
ban-action kill;
}
handshake-data-flood { amount 4k; ban-action kill; }
}
known-users {
away-flood 10:300;
@@ -184,45 +160,29 @@ set {
knock-flood 10:300;
join-flood 10:300;
nick-flood 10:300;
lag-penalty 10;
lag-penalty-bytes 0;
max-concurrent-conversations { users 5; new-user-every 60s; }
lag-penalty 10; # update?
lag-penalty-bytes 0;
}
unknown-users {
away-flood 3:300;
invite-flood 3:300;
knock-flood 3:300;
join-flood 3:300;
nick-flood 3:300;
max-concurrent-conversations { users 2; new-user-every 120s; }
lag-penalty 25;
away-flood 3:300;
invite-flood 3:300;
knock-flood 3:300;
join-flood 3:300;
nick-flood 3:300;
lag-penalty 25;
lag-penalty-bytes 90;
max-concurrent-conversations { users 2; new-user-every 120s; }
}
}
default-bantime 30d;
modef-default-unsettime 5;
spamfilter {
ban-time 30d;
ban-reason "$VOID";
utf8 yes;
except { destination { "#anythinggoes"; } }
}
spamfilter { ban-time 30d; ban-reason "$VOID"; utf8 yes; except { destination { "#anythinggoes"; } } }
max-targets-per-command { kick 1; part 1; privmsg 1; }
hide-ban-reason yes;
reject-message {
gline "$VOID";
kline "$VOID";
password-mismatch "$VOID";
server-full "$VOID";
too-many-connections "$VOID";
unauthorized "$VOID";
}
reject-message { gline "$VOID"; kline "$VOID"; password-mismatch "$VOID"; server-full "$VOID"; too-many-connections "$VOID"; unauthorized "$VOID"; }
hide-killed-by yes;
antimixedutf8 {
score 8;
ban-action block;
ban-reason "$VOID";
}
antimixedutf8 { score 8; ban-action block; ban-reason "$VOID"; }
connthrottle {
except { reputation-score 100; identified yes; webirc yes; }
new-users { local-throttle 20:60; global-throttle 30:60; }
@@ -245,41 +205,12 @@ set {
oper { everyone none; self full; oper full; }
server { everyone none; self none; oper full; }
}
blacklist {
recheck-time-first 2m;
recheck-time 15m;
}
webredir { url "https://webchat.supernets.org"; }
blacklist { recheck-time-first 2m; recheck-time 15m; }
#webredir { url "https://webchat.supernets.org"; }
}
hideserver {
disable-map yes;
disable-links yes;
map-deny-message "$VOID";
links-deny-message "$VOID";
}
hideserver { disable-map yes; disable-links yes; map-deny-message "$VOID"; links-deny-message "$VOID"; }
security-group known-users {
identified yes;
reputation-score 10000;
}
security-group webchat {
webirc yes;
}
set known-users {
auto-join "#superbowl";
}
set unknown-users {
auto-join "#blackhole";
static-quit "EMO-QUIT";
static-part "EMO-PART";
}
set webchat {
auto-join "#superbowl";
static-quit "EMO-QUIT";
static-part "EMO-PART";
}
set known-users { auto-join "#superbowl"; }
set unknown-users { auto-join "#blackhole"; static-quit "EMO-QUIT"; static-part "EMO-PART"; }
set webchat { auto-join "#superbowl"; static-quit "EMO-QUIT"; static-part "EMO-PART"; }

View File

@@ -1,271 +0,0 @@
The Tao of Internet Relay Chat
Copyright (C) Ove Ruben R Olsen 1994
Version of 940110
Contributing masters: Master ScottM
-----
Something is formed by the electrons, born in the silent cable. Shaping
and growing and ungrowing. It is there yet not there. It is the source of
Internet Relay Chat. I do not know the name, thus I will call it the Tao
of Internet Relay Chat.
If the Tao is great, then the IRC is running ceaselessly. If the IRC is
great then the server is running without ever stoping. If the server is
great then the client will always be the server. The luser is then pleased
and there is Chat in the world.
The Tao of IRC squits far away and connects on returning.
-----
The genetic potential of birth, a lot to know, yet unknown.
In the begining there was nothing.
Out of nothing the Tao gave birth to tolsun.oulu.fi. tolsun gave birth to
OuluBox.
OuluBox gave birth to rmsg.
rmsg was not Tao, so MUT gave birth to IRC.
No one knows when IRC came into existance, the mighty master WiZ have it
to be at the end of the eight month in the year of the Dragon.
-----
Each channel has its purpose, however humble. Each channel is the Yin and
Yang of IRC. Each channels has it's place within the IRC.
In the beginning there was only channel 0, thus channel 0 is the soil of
IRC.
Channel 1 to channel 10 then was open as the sea. Channel 11 to 999 was the
trees and forests of IRC. Channels above 999 should not be mentioned, and
channels below 0 were unborn and contained many secrets.
This was not the right Tao, so IRC gave birth to +channels.
+channels had the yin and yang. Mode does not.
This was not the right Tao still, so IRC gave birth to #channels.
#channels have the yin and yang.
Only channel 0 is the right path to Tao, but avoid speaking on channel 0.
-----
There was a great dispute among the Broom-Walkers of the Relay. Some of them
wanted neither yin nor yang. Out of this Eris came into existance. Some of the
Broom-Walkers then created Eris Free-net.
This was the right Tao.
Kind Gentle and Boring Net was another wrong path to the Tao of Internet Relay
Chat.
Some time later there was a quantity of some lusers who wanted to be
Broom-Walkers also. The Eris Free Broom-Walkers did not agree with them,
thus a new IRC was born. This IRC is called the Undernet.
But this is not the right Tao, either.
-----
There will always be disputes among the Broom-Walkers of Internet Relay Chat.
This is the very nature of the IRC.
-----
Lusers that do not understand the Tao is always using the yang of Mode on
their channels. Lusers that do understand the Tao are always using Ignore
on their channels.
How could this not be so ?
-----
The wise sage luser is told about the Chat and uses it. The luser is told
about the IRC and is looking for it. The flock are told about the Tao and
make a fool of the IRC.
If there was no laughter, there would be no Tao.
-----
The master says:
"Without the Tao of Internet Relay Chat, life becomes meaningless."
The Relay of the old time was mysterious and sacred. We can neither imagine
its thoughts nor path; we are left but to describe.
-----
The sage luser must be aware like a frog crossing the highway.
-----
The great master Wumpus once dreamed that he was an automaton. When he awoke
he exclaimed:
"I don't know whether I am Wumpus dreaming that I am a client,
or a client dreaming that I am Wumpus!"
So was the first Automata born.
The master Nap then said:
"Any automata should not speak unless spoken to.
Any automata shall only whisper when spoken to."
Thus replied the master Gnarfer:
"The lusers shall keep in mind that a automata can be either good or
bad. Create good automata, and the IRC will hail you and you will
gain fame and fortune. Create bad automata and people will start to
hate you, and finaly you will be /KILLed to ethernal damnation"
Many lusers have fallen into the clutches of ethernal damnation. They where
not following the Tao.
-----
There once was a luser who went to #BotSex. Each day he saw the automatons.
The luser decided that he also would have such a automata.
He asked another luser for his automata. The other luser gave his automata
away.
The luser was not within the Tao, so he just started the automata. The automata
had only Yang inside so all the lusers files where deleted.
Some moons laither the same luser then had become a sage luser, and did create
his automata from the very grounds with materials found inside the IRC.
The luser was now within the Tao and his automata lived happily ever after.
-----
There once was a master who wrote automatons without the help of master Phone.
A novice luser, seeking to imitate him, began with the help of master Phone.
When the novice luser asked the master to evaluate his automata the master
replied: "What is a working automata for the master is not for the luser.
You must must BE the IRC before automating."
-----
Master BigCheese gave birth to master Troy; his duty clear. Master Troy gave
birth to master Phone, for the Tao of Irc must be eternal and must flow as the
ceaseless river of Time itself.
-----
Master Phone once said about the ircII client:
"public_msg is for a message from someone NOT on the channel
public_other is for a message on a channel that doesn't belong to
a window. public is for a message on a channel that belongs to a
window!"
Out of this raised the mighty chaos.
-----
The sage luser came to the master who wrote automata without the help of
master Phone. The sage luser asked the master who wrote automata: "Which is
easiest to make. A automata with the help of master Phone or an automata
made with the help of a language ?"
The master who wrote automata then replied:
"With the help of a language."
The sage luser was disapointed and exclaimed: "But, with master Phone you
do not need to know anything about the soil of IRC. Is not that the easiet
way ?"
"Not really" said the master who wrote automata, "when using master Phone
you are closed inside a box. For sure, it is a great box for the lusers,
but the master will need more power, thus a language is the only path to go.
With the language the master will never have to limit himself. When using
such a language the master will seek the best between the need and the
availibility."
"I see", said the sage luser.
This is the essence of Tao of IRC automatas.
-----
A client should be light and be used for communication. The spirit of a good
client is that it should be very convinient for the luser to use, but hard
for the luser who want to create automata.
There should never ever be too many functions or too few functions.
There should always be a ignore.
Without ignore the client is not within the Tao of Chating.
The client should always respond the luser with messages that will not
astnonish him too much. The server likewise. If the server does not, then it
is the clients job to explain what the server says.
A client which fails this, will be useless and cause confusion for the lusers.
The only way to correct this is to use another client or to write a new one.
-----
A luser asked the masters on #IrcHelp: "My client does not work".
The masters replied: "Upgrade your client".
The luser then wondered why the master knew. The master then told him about
the Protocol.
"Your client does not work beaucse it does not understand the server. Why
should it always work ? Only a fool would expect such. But, clients are made
by humans, and humans are not perfect. Only Tao is.
The IRC is solid. The IRC is floating, and will always be dynamic. Live with
that or /quit."
-----
The luser came to the masters of #IrcHelp, asking about the Tao of IRC within
the client.
The masters then said that the Tao of IRC always lies inside the client
regardless of how the client connects to the server.
"Is the Tao in irc ?" asked the luser.
"It so is" replied the masters of #IrcHelp.
"Is the Tao in the ircII, Kiwi, rxirc, vms, rockers and msa ?" asked the
luser.
"In all of them and in the TPC, irchat, zenirc, zircon X11-irc and even the
dos irc has the Tao" said the master quietly.
"Is the Tao in a telnet connection directly to the server ?"
The master then was quiet for a long time and said. "Please leave, such
questions are not within the Tao of IRC".
-----
The master says: "Without the Protocol of TCP the messages will not travel.
Without the client, the server is useless."
-----
There once was a luser who used the ircII client. "ircII can do anything I
ever need for using IRC" said the emacs client user, "I have /ON's, I have
assignments, I have aliasing. Why don't you use this instead of the huge
emacs client, which also has a messy screen?"
The emacs client user then replied by saying that "it is better to have a
scripting language that is the client instead of have a client that has
a scripting language." Upon hearing this, the ircII client luser fell silent.
-----
The master Wumpus said: "Time for you to leave. I did, now I'm happy."
The master Gnarfer replied: "Use, but never overuse IRC, then you will also
be happy within IRC"
-----
A luser came unto the masters of #EU-Opers and asked, "How can I be, yet not
be, a user@host within the IRC?"
The masters of #EU-Opers replied: "To be Tao is to be ones true self. To hide
ones self is not Tao, and is not IRC, you have much to learn before you shall
be at rest within the Flow of Irc. Please leave"

View File

@@ -1,180 +0,0 @@
Numeric 005 Documentation
(c) 2002-2005 codemastr (Dominick Meglio) [codemastr@unrealircd.com]
(c) 2005-2009 syzop (Bram Matthys) [syzop@vulnscan.org]
Numeric 005 allows the server to inform the client of any protocol specific features in the
IRCd. The numeric is sent at connection time immediately after numeric 004. Additionally
the numeric is sent when a /version request is made by a local user, for remote users
numeric 105 is used but contains the same information.
Due to the limit imposed by RFC1459 on both the buffer size (512) and the amount of
parameters that can be sent in a single command (15) a total of 13 parameters may be
specified in each 005. Because of this, a client must be able to accept multiple 005s
consecutively. The format for the 005 message is as follows:
":" <servername> "005" SPACE <nickname> SPACE <token[=value]> SPACE ... ":are supported
by this server"
Currently UnrealIRCd supports several tokens that are included in numeric 005. A list of
all tokens, their respective value and a brief description are listed below.
UnrealIRCd attempts to follow the proposed ISupport standard as much as possible. UnrealIRCd
only ignores the standard in one regard, the TARGMAX token. This token is believed to be
impractical and technically impossible to correctly implement due to existing limitations
in the standard. Therefore, this token is not currently supported.
UnrealIRCd does additionally provide a few tokens which are not specified in the standard, these
include: HCN, AWAYLEN, WATCH, SILENCE, EXTBAN, ELIST, CMDS, NAMESX, UHNAMES, and WATCHOPTS.
UnrealIRCd also maintains a few legacy tokens such as MAXCHANNELS and WALLCHOPS to ensure
compatibility until the ISupport standard is more widely accepted by clients.
Token Value Default Value Description
------------------------------------------------------------------------------------------------
MAP none none Informs the client that the /map
command is present. [Obsolete]
KNOCK none none Informs the client that the /knock
command is present. [Obsolete]
SAFELIST none none The LIST command is sent in
multiple iterations so that the
client's queue does not get filled
causing the user to be killed.
HCN none none The server supports the HCN
(Hybrid Connect Notice) protocol.
MAXCHANNELS number 10 The maximum number of channels a
user may join. [Deprecated]
MAXBANS number 60 The maximum number of bans that
may be placed for a channel.
[Obsolete]
NICKLEN number 30 Maximum length of a user's
nickname.
TOPICLEN number 307 Maximum length of a channel's
topic.
KICKLEN number 307 Maximum length of a kick reason.
MAXTARGETS number 20 Maximum targets for the PRIVMSG
command.
AWAYLEN number 307 Maximum length of an away message.
WALLCHOPS none none Indicates that you may use
NOTICE/PRIVMSG to send to +ohv by
using PRIVMSG/NOTICE [@|%|+]#channel.
[Deprecated]
WATCH number 128 Indicates the presence of the
WATCH command and specifies the
maximum number of watch entries.
SILENCE number 15 Indicates the maximum number of
entries on the silence list.
MODES number 13 Indicates the number of channel
modes with parameters that may be
sent at one time.
CHANTYPES chars # Indicates the prefixes available
for channels.
PREFIX (modes)prefixes (qaohv)~&@%+ Indicates the modes on a channel
that corespond to the given
nickname prefixes.
CHANMODES A,B,C,D be,kfL,lj, Specifies how each channel mode is
psmntirRcOAQKVHGCuzNSMT set/unset. The A section specifies
modes that add a nick/mask to a
list. The B section specifies
modes that require a parameter
to be both set and unset. The C
section specifies modes that
only require a parameter to be
set, and the D section
specifies modes that require no
parameters.
NETWORK string no default value Specifies the name of the
network that the server is
connected to.
CASEMAPPING string ascii Specifies what definition the
server uses when determining if
characters are upper/lowercase
of eachother.
EXTBAN prefix,types ~,cqnr Specifies what extbans are
supported by the server. The prefix
defines which character indicates
an extban and the types defines
which extbans the server supports.
ELIST flags MNUCT Specifies the set of extended LIST
options supported. The M flag
indicates mask based searching,
the N flag indicates negative
mask based searching. The U flag
means support for user count
searching. The C flag allows channel
creation time searching, and the T
flag allows topic set time
searching.
CMDS commands MAP,KNOCK,DCCALLOW,USERIP Specifies a series of commands that
can be useful for the client to know
exist as they may provide a more
efficient means for the client to
accomplish a specific task. This
token replaces the MAP and KNOCK
tokens.
STATUSMSG flags ~&@%+ Specifies the mode flags that may
prefix a channel name in a PRIVMSG
or NOTICE to limit who receives the
message to only those with a certain
level of access. This token will
replace the WALLCHOPS token.
EXCEPTS none none Indicates that channel ban exceptions
(+e) are supported by the server.
INVEX none none Indicates that channel invite
exceptions (+I) are supported by
the server.
MAXLIST mode:num,... b:60,e:60,I:60 Specifies the maximum number of
entries that may be added to a
particular mode list (type A modes).
This token replaces MAXBANS.
CHANLIMIT pfx:num,... #:10 Specifies the maximum number of
channels with the specified prefix
that a user may join at one time.
This token will replace MAXCHANNELS.
CHANNELLEN number 32 Provides the maximum length of a
channel name that a user can create.
NAMESX none none Indicates that extended /NAMES info
is available on this server. If the
client sends "PROTOCTL NAMESX" then
the server will, from then on, send
all channel rights in a NAMES reply
instead of only the highest right
(eg: @+Person instead of @Person).
UHNAMES none none Indicates that (other) extended
/NAMES info is available on the
server. If the client sends
"PROTOCTL UHNAMES" then the server
will, from then on, send user@host
information in a NAMES reply
(eg: @nick!ident@hostname).
WATCHOPTS flags A WATCH options supported. 'A' means
Away Notification is available.

View File

@@ -1,11 +0,0 @@
base64 Documentation (c) 2002 codemastr (Dominick Meglio) [codemastr@unrealircd.com]
(As of Unreal3.2-beta11)
The base64 system used by Unreal is defined as follows:
0 1 2 3 4 5 6 7 8 9 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 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 { }
These numbers are translated to and from their decimal equivilents of 0-64 in order to
provide a shorter way of expressing a number.

View File

@@ -1,2 +0,0 @@
All server protocol documentation has been moved to the wiki:
https://www.unrealircd.org/docs/Server_protocol

View File

@@ -1,26 +0,0 @@
==[ Translations ]===========================================================
In UnrealIRCd we support the following translations:
* on-line documentation at https://www.unrealircd.org/docs/ (wiki!)
* help.conf
* example.conf
For translating the wiki documentation see this article:
https://www.unrealircd.org/docs/Translating_UnrealIRCd_wiki_pages
For the .conf files the following rules apply:
* You must translate the very latest (English) version of the document(s)
* The translation must be correct. Not just the spelling and grammar,
but also 'technically'. You should therefore have some real experience
with UnrealIRCd.
* Someone, usually the person who translated it, needs to be willing
to actively maintain the docs. This is very important! If docs are
out of date (out-of-synch) there will be confusion among users.
We will remove documents that have been out of date too long (months)
If you want to start translating a document, please send an email to
syzop@unrealircd.org and mention the language you are willing to translate
to.. You will then receive an email back saying you can go ahead (or not).
This is mainly to avoid multiple persons working on the same translation.
=============================================================================

Binary file not shown.

View File

@@ -329,250 +329,311 @@
/* Numeric texts */
#define STR_RPL_WELCOME /* 001 */ ":%s - holy smokes its %s!%s@%s <- (FAGGOT)"
//#define STR_RPL_YOURHOST /* 002 */ ":Your host is %s, running version %s"
#define STR_RPL_YOURHOST /* 002 */ ":Your host is hidden, we are running version DangerousIRCd-6.6.6"
//#define STR_RPL_CREATED /* 003 */ ":This server was created %s"
#define STR_RPL_CREATED /* 003 */ ":This network was created Fri Apr 1 1990 at 04:20:00 UTC"
#define STR_RPL_MYINFO /* 004 */ "%s DangerousIRCd-6.6.6 %s %s"
#define STR_RPL_ISUPPORT /* 005 */ "%s SEMTEX C4=9 DYNAMITE=2 NAILBOMB=3 MOLOTOV=1 RICIN URANIUM REFINERY COCAINE=10 HOOKS=30, FUCKYOU=99 PCP=2 NERVEGAS=10000 IRC_OVER_VOIP=1 VOIP_OVER_IRC=2 lp=34 MUNGO_SMOKE=2 PLANETS=99 DICKS=30 BALLS=60 BOOZE=12 SMOKES=24"
#define STR_RPL_MAP /* 006 */ ":%s%s %s | Bozos: %*ld (%*.2f%%)%s"
#define STR_RPL_MAPEND /* 007 */ ":KING KONG IS COMING"
#define STR_RPL_SNOMASK /* 008 */ "+%s :Server notice mask"
#define STR_RPL_REDIR /* 010 */ "%s %d :Please use this Server/Port instead"
//#define STR_RPL_MAPUSERS /* 018 */ ":%d server%s and %d user%s, average %.2f users per server"
#define STR_RPL_MAPUSERS /* 018 */ ":5023 servers and 1283746 users, average 1874.5 users per server"
#define STR_RPL_REMOTEISUPPORT /* 105 */ "%s SEMTEX C4=9 DYNAMITE=2 NAILBOMB=3 MOLOTOV=1 RICIN URANIUM REFINERY COCAINE=10 HOOKS=30, FUCKYOU=99 PCP=2 NERVEGAS=10000 IRC_OVER_VOIP=1 VOIP_OVER_IRC=2 lp=34 MUNGO_SMOKE=2 PLANETS=99 DICKS=30 BALLS=60 BOOZE=12 SMOKES=24"
#define STR_RPL_TRACELINK /* 200 */ "Link %s%s %s %s"
#define STR_RPL_TRACECONNECTING /* 201 */ "Attempt %s %s"
#define STR_RPL_TRACEHANDSHAKE /* 202 */ "Handshaking %s %s"
#define STR_RPL_TRACEUNKNOWN /* 203 */ "???? %s %s"
#define STR_RPL_TRACEOPERATOR /* 204 */ "Operator %s %s [%s] %lld"
#define STR_RPL_TRACEUSER /* 205 */ "User %s %s [%s] %lld"
#define STR_RPL_TRACESERVER /* 206 */ "Server %s %dS %dC %s %s!%s@%s %lld"
#define STR_RPL_TRACENEWTYPE /* 208 */ "%s 0 %s"
#define STR_RPL_TRACECLASS /* 209 */ "Class %s %d"
#define STR_RPL_STATSHELP /* 210 */ ":%s"
#define STR_RPL_STATSCOMMANDS /* 212 */ "%s %u %lu"
#define STR_RPL_STATSCLINE /* 213 */ "%c %s * %s %d %d %s"
#define STR_RPL_STATSILINE /* 215 */ "I %s %s %d %d %s %s %d"
#define STR_RPL_STATSQLINE /* 217 */ "%c %s %lld %lld %s :%s"
#define STR_RPL_STATSYLINE /* 218 */ "Y %s %d %d %d %d %d"
#define STR_RPL_ENDOFSTATS /* 219 */ "%c :End of /STATS report"
#define STR_RPL_UMODEIS /* 221 */ "%s"
#define STR_RPL_STATSGLINE /* 223 */ "%c %s %lld %lld %s :%s"
#define STR_RPL_STATSTLINE /* 224 */ "T %s %s %s"
#define STR_RPL_STATSNLINE /* 226 */ "n %s %s"
#define STR_RPL_STATSVLINE /* 227 */ "v %s %s %s"
#define STR_RPL_STATSBANVER /* 228 */ "%s %s"
#define STR_RPL_STATSSPAMF /* 229 */ "%c %s %s %s %lld %lld %lld %s %s :%s"
#define STR_RPL_STATSEXCEPTTKL /* 230 */ "%s %s %lld %lld %s :%s"
#define STR_RPL_RULES /* 232 */ ":- %s"
#define STR_RPL_STATSLLINE /* 241 */ "%c %s * %s %d %d"
#define STR_RPL_STATSUPTIME /* 242 */ ":Server Up %lld days, %lld:%02lld:%02lld"
#define STR_RPL_STATSOLINE /* 243 */ "%c %s * %s %s %s"
#define STR_RPL_STATSHLINE /* 244 */ "%c %s * %s %d %d"
#define STR_RPL_STATSXLINE /* 247 */ "X %s %d"
#define STR_RPL_STATSULINE /* 248 */ "U %s"
#define STR_RPL_STATSDEBUG /* 249 */ ":%s"
//#define STR_RPL_STATSCONN /* 250 */ ":Highest connection count: %d (%d clients)"
#define STR_RPL_STATSCONN /* 250 */ ":Highest connection count: 1384726 (1384712 clients)"
//#define STR_RPL_LUSERCLIENT /* 251 */ ":There are %d users and %d invisible on %d servers"
#define STR_RPL_LUSERCLIENT /* 251 */ ":There are 1283746 users and 458 invisible on 5918 servers"
//#define STR_RPL_LUSEROP /* 252 */ "%d :operator(s) online"
#define STR_RPL_LUSEROP /* 252 */ "420 :operator(s) online"
#define STR_RPL_LUSERUNKNOWN /* 253 */ "%d :niggered connection(s)"
//#define STR_RPL_LUSERCHANNELS /* 254 */ "%d :channels formed"
#define STR_RPL_LUSERCHANNELS /* 254 */ "5023 :tents formed"
//#define STR_RPL_LUSERME /* 255 */ ":I have %d clients and %d servers"
#define STR_RPL_LUSERME /* 255 */ ":I have 7384 clients and 391 servers"
#define STR_RPL_ADMINME /* 256 */ ":Looks like somebody is upset..."
#define STR_RPL_ADMINLOC1 /* 257 */ ":%s"
#define STR_RPL_ADMINLOC2 /* 258 */ ":%s"
#define STR_RPL_ADMINEMAIL /* 259 */ ":%s"
#define STR_RPL_TRACELOG /* 261 */ "File %s %d"
//#define STR_RPL_TRYAGAIN /* 263 */ "%s :Flooding detected. Please wait a while and try again."
#define STR_RPL_TRYAGAIN /* 263 */ "%s :04slow down nerd"
//#define STR_RPL_LOCALUSERS /* 265 */ "%d %d :Current local users %d, max %d"
#define STR_RPL_LOCALUSERS /* 265 */ "1283746 18267367 :Current local users 1283746, max 18267367"
//#define STR_RPL_GLOBALUSERS /* 266 */ "%d %d :Current global users %d, max %d"
#define STR_RPL_GLOBALUSERS /* 266 */ "2389474 2938475 :Current global users 2389474, max 2938475"
#define STR_RPL_SILELIST /* 271 */ "%s"
#define STR_RPL_ENDOFSILELIST /* 272 */ ":End of STFU List"
#define STR_RPL_STATSDLINE /* 275 */ "%c %s %s"
#define STR_RPL_WHOISCERTFP /* 276 */ "%s :has the secret %s"
#define STR_RPL_AWAY /* 301 */ "%s :%s"
#define STR_RPL_USERHOST /* 302 */ ":%s %s %s %s %s"
#define STR_RPL_ISON /* 303 */ ":"
//#define STR_RPL_WELCOME /* 001 */ ":Welcome to the %s IRC Network %s!%s@%s"
#define STR_RPL_WELCOME /* 001 */ ":%s - holy smokes its %s!%s@%s <- (FAGGOT)"
//#define STR_RPL_YOURHOST /* 002 */ ":Your host is %s, running version %s"
#define STR_RPL_YOURHOST /* 002 */ ":Your host is hidden, we are running version DangerousIRCd-6.6.6"
//#define STR_RPL_CREATED /* 003 */ ":This server was created %s"
#define STR_RPL_CREATED /* 003 */ ":This network was created -5000 years ago"
//#define STR_RPL_MYINFO /* 004 */ "%s %s %s %s"
#define STR_RPL_MYINFO /* 004 */ "%s DangerousIRCd-6.6.6 upside down"
//#define STR_RPL_ISUPPORT /* 005 */ "%s :are supported by this server"
#define STR_RPL_ISUPPORT /* 005 */ "%s SEMTEX C4=9 DYNAMITE=2 NAILBOMB=3 MOLOTOV=1 RICIN URANIUM REFINERY COCAINE=10 HOOKS=30, FUCKYOU=99 PCP=2 NERVEGAS=10000 IRC_OVER_VOIP=1 VOIP_OVER_IRC=2 lp=34 MUNGO_SMOKE=2 PLANETS=99 DICKS=30 BALLS=60 BOOZE=12 SMOKES=24"
//#define STR_RPL_MAP /* 006 */ ":%s%s %s | Users: %*ld (%*.2f%%)%s"
#define STR_RPL_MAP /* 006 */ ":%s%s %s | Bozos: %*ld (%*.2f%%)%s"
//#define STR_RPL_MAPEND /* 007 */ ":End of /MAP"
#define STR_RPL_MAPEND /* 007 */ ":KING KONG IS COMING"
#define STR_RPL_SNOMASK /* 008 */ "+%s :Server notice mask"
#define STR_RPL_REDIR /* 010 */ "%s %d :Please use this Server/Port instead"
//#define STR_RPL_MAPUSERS /* 018 */ ":%d server%s and %d user%s, average %.2f users per server"
#define STR_RPL_MAPUSERS /* 018 */ ":5378 servers and 1349251 users, average 1488.5 users per server"
//#define STR_RPL_REMOTEISUPPORT /* 105 */ "%s :are supported by this server"
#define STR_RPL_REMOTEISUPPORT /* 105 */ "%s SEMTEX C4=9 DYNAMITE=2 NAILBOMB=3 MOLOTOV=1 RICIN URANIUM REFINERY COCAINE=10 HOOKS=30, FUCKYOU=99 PCP=2 NERVEGAS=10000 IRC_OVER_VOIP=1 VOIP_OVER_IRC=2 lp=34 MUNGO_SMOKE=2 PLANETS=99 DICKS=30 BALLS=60 BOOZE=12 SMOKES=24"
#define STR_RPL_TRACELINK /* 200 */ "Link %s%s %s %s"
#define STR_RPL_TRACECONNECTING /* 201 */ "Attempt %s %s"
#define STR_RPL_TRACEHANDSHAKE /* 202 */ "Handshaking %s %s"
#define STR_RPL_TRACEUNKNOWN /* 203 */ "???? %s %s"
#define STR_RPL_TRACEOPERATOR /* 204 */ "Operator %s %s [%s] %lld"
#define STR_RPL_TRACEUSER /* 205 */ "User %s %s [%s] %lld"
#define STR_RPL_TRACESERVER /* 206 */ "Server %s %dS %dC %s %s!%s@%s %lld"
#define STR_RPL_TRACENEWTYPE /* 208 */ "%s 0 %s"
#define STR_RPL_TRACECLASS /* 209 */ "Class %s %d"
#define STR_RPL_STATSHELP /* 210 */ ":%s"
#define STR_RPL_STATSCOMMANDS /* 212 */ "%s %u %lu"
#define STR_RPL_STATSCLINE /* 213 */ "%c %s * %s %d %d %s"
#define STR_RPL_STATSILINE /* 215 */ "I %s %s %d %d %s %s %d"
#define STR_RPL_STATSQLINE /* 217 */ "%c %s %lld %lld %s :%s"
#define STR_RPL_STATSYLINE /* 218 */ "Y %s %d %d %d %d %d"
#define STR_RPL_ENDOFSTATS /* 219 */ "%c :End of /STATS report"
#define STR_RPL_UMODEIS /* 221 */ "%s"
#define STR_RPL_STATSGLINE /* 223 */ "%c %s %lld %lld %s :%s"
#define STR_RPL_STATSTLINE /* 224 */ "T %s %s %s"
#define STR_RPL_STATSNLINE /* 226 */ "n %s %s"
#define STR_RPL_STATSVLINE /* 227 */ "v %s %s %s"
#define STR_RPL_STATSBANVER /* 228 */ "%s %s"
#define STR_RPL_STATSSPAMF /* 229 */ "%c %s %s %s %lld %lld %lld %s %s :%s"
#define STR_RPL_STATSEXCEPTTKL /* 230 */ "%s %s %lld %lld %s :%s"
#define STR_RPL_RULES /* 232 */ ":- %s"
#define STR_RPL_STATSLLINE /* 241 */ "%c %s * %s %d %d"
#define STR_RPL_STATSUPTIME /* 242 */ ":Server Up %lld days, %lld:%02lld:%02lld"
#define STR_RPL_STATSOLINE /* 243 */ "%c %s * %s %s %s"
#define STR_RPL_STATSHLINE /* 244 */ "%c %s * %s %d %d"
#define STR_RPL_STATSXLINE /* 247 */ "X %s %d"
#define STR_RPL_STATSULINE /* 248 */ "U %s"
#define STR_RPL_STATSDEBUG /* 249 */ ":%s"
//#define STR_RPL_STATSCONN /* 250 */ ":Highest connection count: %d (%d clients)"
#define STR_RPL_STATSCONN /* 250 */ ":Highest connection count: 1384726 (1384712 clients)"
//#define STR_RPL_LUSERCLIENT /* 251 */ ":There are %d users and %d invisible on %d servers"
#define STR_RPL_LUSERCLIENT /* 251 */ ":There are 1283746 users and 458 invisible on 5918 servers"
//#define STR_RPL_LUSEROP /* 252 */ "%d :operator(s) online"
#define STR_RPL_LUSEROP /* 252 */ "420 :operator(s) online"
//#define STR_RPL_LUSERUNKNOWN /* 253 */ "%d :unknown connection(s)"
#define STR_RPL_LUSERUNKNOWN /* 253 */ "%d :niggered connection(s)"
//#define STR_RPL_LUSERCHANNELS /* 254 */ "%d :channels formed"
#define STR_RPL_LUSERCHANNELS /* 254 */ "5023 :tents formed"
//#define STR_RPL_LUSERME /* 255 */ ":I have %d clients and %d servers"
#define STR_RPL_LUSERME /* 255 */ ":I have 7384 clients and 391 servers"
//#define STR_RPL_ADMINME /* 256 */ ":Administrative info about %s"
#define STR_RPL_ADMINME /* 256 */ ":Looks like somebody is upset..."
#define STR_RPL_ADMINLOC1 /* 257 */ ":%s"
#define STR_RPL_ADMINLOC2 /* 258 */ ":%s"
#define STR_RPL_ADMINEMAIL /* 259 */ ":%s"
#define STR_RPL_TRACELOG /* 261 */ "File %s %d"
//#define STR_RPL_TRYAGAIN /* 263 */ "%s :Flooding detected. Please wait a while and try again."
#define STR_RPL_TRYAGAIN /* 263 */ "%s :04slow down nerd"
//#define STR_RPL_LOCALUSERS /* 265 */ "%d %d :Current local users %d, max %d"
#define STR_RPL_LOCALUSERS /* 265 */ "1283746 18267367 :Current local users 1283746, max 18267367"
//#define STR_RPL_GLOBALUSERS /* 266 */ "%d %d :Current global users %d, max %d"
#define STR_RPL_GLOBALUSERS /* 266 */ "2389474 2938475 :Current global users 2389474, max 2938475"
#define STR_RPL_SILELIST /* 271 */ "%s"
//#define STR_RPL_ENDOFSILELIST /* 272 */ ":End of Silence List"
#define STR_RPL_ENDOFSILELIST /* 272 */ ":End of STFU List"
#define STR_RPL_STATSDLINE /* 275 */ "%c %s %s"
//#define STR_RPL_WHOISCERTFP /* 276 */ "%s :has client certificate fingerprint %s"
#define STR_RPL_WHOISCERTFP /* 276 */ "%s :has the secret %s"
#define STR_RPL_AWAY /* 301 */ "%s :%s"
#define STR_RPL_USERHOST /* 302 */ ":%s %s %s %s %s"
#define STR_RPL_ISON /* 303 */ ":"
//#define STR_RPL_UNAWAY /* 305 */ ":You are no longer marked as being away"
#define STR_RPL_UNAWAY /* 305 */ ":wb"
#define STR_RPL_UNAWAY /* 305 */ ":wb"
//#define STR_RPL_NOWAWAY /* 306 */ ":You have been marked as being away"
#define STR_RPL_NOWAWAY /* 306 */ ":be right black"
//#define STR_RPL_WHOISREGNICK /* 307 */ "%s :is identified for this nick"
#define STR_RPL_WHOISREGNICK /* 307 */ "%s :is keepin it 💯"
#define STR_RPL_RULESSTART /* 308 */ ":- %s Server Rules - "
#define STR_RPL_ENDOFRULES /* 309 */ ":End of RULES command."
#define STR_RPL_WHOISUSER /* 311 */ "%s %s %s * :%s"
#define STR_RPL_WHOISSERVER /* 312 */ "%s %s :%s"
#define STR_RPL_WHOISOPERATOR /* 313 */ "%s :is %s"
#define STR_RPL_WHOWASUSER /* 314 */ "%s %s %s * :%s"
#define STR_RPL_ENDOFWHO /* 315 */ "%s :End of /WHO list."
#define STR_RPL_WHOISIDLE /* 317 */ "%s %lld %lld :seconds idle, signon time"
#define STR_RPL_ENDOFWHOIS /* 318 */ "%s :End of /WHOIS list."
#define STR_RPL_WHOISCHANNELS /* 319 */ "%s :%s"
#define STR_RPL_WHOISSPECIAL /* 320 */ "%s :%s"
//#define STR_RPL_LISTSTART /* 321 */ "Channel :Users Name"
#define STR_RPL_LISTSTART /* 321 */ "Tent :Mates Title"
#define STR_RPL_LIST /* 322 */ "%s %d :%s %s"
#define STR_RPL_NOWAWAY /* 306 */ ":be right black"
//#define STR_RPL_WHOISREGNICK /* 307 */ "%s :is identified for this nick"
#define STR_RPL_WHOISREGNICK /* 307 */ "%s :is keepin it 💯"
#define STR_RPL_RULESSTART /* 308 */ ":- %s Server Rules - "
#define STR_RPL_ENDOFRULES /* 309 */ ":End of RULES command."
#define STR_RPL_WHOISUSER /* 311 */ "%s %s %s * :%s"
#define STR_RPL_WHOISSERVER /* 312 */ "%s %s :%s"
#define STR_RPL_WHOISOPERATOR /* 313 */ "%s :is %s"
#define STR_RPL_WHOWASUSER /* 314 */ "%s %s %s * :%s"
#define STR_RPL_ENDOFWHO /* 315 */ "%s :End of /WHO list."
#define STR_RPL_WHOISIDLE /* 317 */ "%s %lld %lld :seconds idle, signon time"
#define STR_RPL_ENDOFWHOIS /* 318 */ "%s :End of /WHOIS list."
#define STR_RPL_WHOISCHANNELS /* 319 */ "%s :%s"
#define STR_RPL_WHOISSPECIAL /* 320 */ "%s :%s"
//#define STR_RPL_LISTSTART /* 321 */ "Channel :Users Name"
#define STR_RPL_LISTSTART /* 321 */ "Tent :Mates Title"
#define STR_RPL_LIST /* 322 */ "%s %d :%s %s"
//#define STR_RPL_LISTEND /* 323 */ ":End of /LIST"
#define STR_RPL_LISTEND /* 323 */ ":)"
#define STR_RPL_CHANNELMODEIS /* 324 */ "%s %s %s"
#define STR_RPL_CREATIONTIME /* 329 */ "%s %lld"
#define STR_RPL_WHOISLOGGEDIN /* 330 */ "%s %s :is pretending to be "
#define STR_RPL_NOTOPIC /* 331 */ "%s :No topic is set."
#define STR_RPL_TOPIC /* 332 */ "%s :%s"
#define STR_RPL_TOPICWHOTIME /* 333 */ "%s %s %lld"
#define STR_RPL_LISTSYNTAX /* 334 */ ":%s"
#define STR_RPL_WHOISBOT /* 335 */ "%s :is a \2FUCKING ROBOT\2 on %s"
#define STR_RPL_INVITELIST /* 336 */ ":%s"
#define STR_RPL_ENDOFINVITELIST /* 337 */ ":End of /INVITE list."
#define STR_RPL_USERIP /* 340 */ ":%s %s %s %s %s"
#define STR_RPL_INVITING /* 341 */ "%s %s"
#define STR_RPL_WHOISCOUNTRY /* 344 */ "%s %s :is connecting from %s"
#define STR_RPL_INVEXLIST /* 346 */ "%s %s %s %lld"
#define STR_RPL_ENDOFINVEXLIST /* 347 */ "%s :End of Channel Invite List"
#define STR_RPL_EXLIST /* 348 */ "%s %s %s %lld"
#define STR_RPL_ENDOFEXLIST /* 349 */ "%s :End of Channel Exception List"
#define STR_RPL_VERSION /* 351 */ "GET MOTHER FUCKED IN THE ASS YOU FED FAGGOT WHAT THE FUCK YOU THINK YOURE DOIN UP IN MY /VERSION GET THE RETARD OFF MY NETWORK"
#define STR_RPL_WHOREPLY /* 352 */ "%s %s %s %s %s %s :%d %s"
#define STR_RPL_NAMREPLY /* 353 */ "%s"
#define STR_RPL_CLOSING /* 362 */ "%s :Closed. Status = %d"
#define STR_RPL_CLOSEEND /* 363 */ "%d: Connections Closed"
#define STR_RPL_LINKS /* 364 */ "%s %s :%d %s"
#define STR_RPL_ENDOFLINKS /* 365 */ "%s :End of /LINKS list."
//#define STR_RPL_ENDOFNAMES /* 366 */ "%s :End of /NAMES list."
#define STR_RPL_ENDOFNAMES /* 366 */ "%s :)"
#define STR_RPL_BANLIST /* 367 */ "%s %s %s %lld"
#define STR_RPL_ENDOFBANLIST /* 368 */ "%s :End of Channel Ban List"
#define STR_RPL_ENDOFWHOWAS /* 369 */ "%s :End of WHOWAS"
#define STR_RPL_INFO /* 371 */ ":Looking for something?"
#define STR_RPL_MOTD /* 372 */ ":- %s"
#define STR_RPL_ENDOFINFO /* 374 */ ":^ ASS FAGGOTS"
#define STR_RPL_MOTDSTART /* 375 */ ":- %s Message of the Day - "
#define STR_RPL_ENDOFMOTD /* 376 */ "ERROR :Closing Link:"
//#define STR_RPL_WHOISHOST /* 378 */ "%s :is connecting from %s@%s %s"
#define STR_RPL_WHOISHOST /* 378 */ "%s :has entered the void from %s@%s %s"
#define STR_RPL_WHOISMODES /* 379 */ "%s :is using IRC buffs %s %s"
#define STR_RPL_YOUREOPER /* 381 */ ":SUP OPER (No Oper Abuse)"
#define STR_RPL_REHASHING /* 382 */ "%s :Rehashing moustache mass ass cash"
#define STR_RPL_QLIST /* 386 */ "%s %s"
#define STR_RPL_ENDOFQLIST /* 387 */ "%s :End of Channel Owner List"
#define STR_RPL_ALIST /* 388 */ "%s %s"
#define STR_RPL_ENDOFALIST /* 389 */ "%s :End of Protected User List"
#define STR_RPL_TIME /* 391 */ "%s :SMOKE:30"
#define STR_RPL_HOSTHIDDEN /* 396 */ "%s :is now your displayed host"
#define STR_ERR_NOSUCHNICK /* 401 */ "%s :No such nick/channel"
#define STR_ERR_NOSUCHSERVER /* 402 */ "%s :No such server"
#define STR_ERR_NOSUCHCHANNEL /* 403 */ "%s :No such channel"
#define STR_ERR_CANNOTSENDTOCHAN /* 404 */ "%s :%s (%s)"
#define STR_ERR_TOOMANYCHANNELS /* 405 */ "%s :04slow down nerd"
#define STR_ERR_WASNOSUCHNICK /* 406 */ "%s :There was no such nickname"
#define STR_ERR_TOOMANYTARGETS /* 407 */ "%s :04slow down nerd"
#define STR_ERR_NOORIGIN /* 409 */ ":No origin specified"
#define STR_ERR_INVALIDCAPCMD /* 410 */ "%s :Invalid CAP subcommand"
#define STR_ERR_NORECIPIENT /* 411 */ ":No recipient given (%s)"
#define STR_ERR_NOTEXTTOSEND /* 412 */ ":No text to send"
#define STR_ERR_TOOMANYMATCHES /* 416 */ "%s :%s"
#define STR_ERR_INPUTTOOLONG /* 417 */ ":Input line was too long"
#define STR_ERR_UNKNOWNCOMMAND /* 421 */ "%s :Unknown command"
#define STR_ERR_NOMOTD /* 422 */ ":MOTD File is missing"
#define STR_ERR_NOADMININFO /* 423 */ "%s :No administrative info available"
#define STR_ERR_NOOPERMOTD /* 425 */ ":OPERMOTD File is missing"
#define STR_ERR_TOOMANYAWAY /* 429 */ ":04slow down nerd"
#define STR_ERR_NONICKNAMEGIVEN /* 431 */ ":No nickname given"
#define STR_ERR_ERRONEUSNICKNAME /* 432 */ "%s :Nickname is unavailable: %s"
#define STR_ERR_NICKNAMEINUSE /* 433 */ "%s :JUPED LOL OWNED FAG"
#define STR_ERR_NORULES /* 434 */ ":RULES File is missing"
#define STR_ERR_BANNICKCHANGE /* 437 */ "%s :8,4 E N T E R T H E V O I D "
#define STR_ERR_NCHANGETOOFAST /* 438 */ "%s :04slow down nerd"
#define STR_ERR_TARGETTOOFAST /* 439 */ "%s :04slow down nerd"
#define STR_ERR_SERVICESDOWN /* 440 */ "%s :Services are currently down. Please try again later."
#define STR_ERR_USERNOTINCHANNEL /* 441 */ "%s %s :They aren't on that channel"
#define STR_ERR_NOTONCHANNEL /* 442 */ "%s :8,4 E N T E R T H E V O I D "
#define STR_ERR_USERONCHANNEL /* 443 */ "%s %s :is already on channel"
#define STR_ERR_NONICKCHANGE /* 447 */ ":04 E N T E R T H E V O I D "
#define STR_ERR_FORBIDDENCHANNEL /* 448 */ "%s :04 E N T E R T H E V O I D "
#define STR_ERR_NOTREGISTERED /* 451 */ ":You have not registered"
#define STR_ERR_NOTFORHALFOPS /* 460 */ ":8,4 E N T E R T H E V O I D "
#define STR_ERR_NEEDMOREPARAMS /* 461 */ "%s :Not enough parameters"
#define STR_ERR_ALREADYREGISTRED /* 462 */ ":You may not reregister"
#define STR_ERR_PASSWDMISMATCH /* 464 */ ":04 E N T E R T H E V O I D "
#define STR_ERR_YOUREBANNEDCREEP /* 465 */ ":8,4 E N T E R T H E V O I D "
#define STR_RPL_LISTEND /* 323 */ ":)"
#define STR_RPL_CHANNELMODEIS /* 324 */ "%s %s %s"
#define STR_RPL_CREATIONTIME /* 329 */ "%s %lld"
//#define STR_RPL_WHOISLOGGEDIN /* 330 */ "%s %s :is logged in as"
#define STR_RPL_WHOISLOGGEDIN /* 330 */ "%s %s :is pretending to be "
#define STR_RPL_NOTOPIC /* 331 */ "%s :No topic is set."
#define STR_RPL_TOPIC /* 332 */ "%s :%s"
#define STR_RPL_TOPICWHOTIME /* 333 */ "%s %s %lld"
#define STR_RPL_LISTSYNTAX /* 334 */ ":%s"
//#define STR_RPL_WHOISBOT /* 335 */ "%s :is a \2Bot\2 on %s"
#define STR_RPL_WHOISBOT /* 335 */ "%s :is a \2FUCKING ROBOT\2 on %s"
#define STR_RPL_INVITELIST /* 336 */ ":%s"
#define STR_RPL_ENDOFINVITELIST /* 337 */ ":End of /INVITE list."
#define STR_RPL_USERIP /* 340 */ ":%s %s %s %s %s"
#define STR_RPL_INVITING /* 341 */ "%s %s"
#define STR_RPL_WHOISCOUNTRY /* 344 */ "%s %s :is connecting from %s"
#define STR_RPL_INVEXLIST /* 346 */ "%s %s %s %lld"
#define STR_RPL_ENDOFINVEXLIST /* 347 */ "%s :End of Channel Invite List"
#define STR_RPL_EXLIST /* 348 */ "%s %s %s %lld"
#define STR_RPL_ENDOFEXLIST /* 349 */ "%s :End of Channel Exception List"
//#define STR_RPL_VERSION /* 351 */ "%s.%s %s :%s%s%s [%s=%d]"
#define STR_RPL_VERSION /* 351 */ "GET MOTHER FUCKED IN THE ASS YOU FED FAGGOT WHAT THE FUCK YOU THINK YOURE DOIN UP IN MY /VERSION GET THE RETARD OFF MY NETWORK"
#define STR_RPL_WHOREPLY /* 352 */ "%s %s %s %s %s %s :%d %s"
#define STR_RPL_NAMREPLY /* 353 */ "%s"
#define STR_RPL_CLOSING /* 362 */ "%s :Closed. Status = %d"
#define STR_RPL_CLOSEEND /* 363 */ "%d: Connections Closed"
#define STR_RPL_LINKS /* 364 */ "%s %s :%d %s"
#define STR_RPL_ENDOFLINKS /* 365 */ "%s :End of /LINKS list."
//#define STR_RPL_ENDOFNAMES /* 366 */ "%s :End of /NAMES list."
#define STR_RPL_ENDOFNAMES /* 366 */ "%s :)"
#define STR_RPL_BANLIST /* 367 */ "%s %s %s %lld"
#define STR_RPL_ENDOFBANLIST /* 368 */ "%s :End of Channel Ban List"
#define STR_RPL_ENDOFWHOWAS /* 369 */ "%s :End of WHOWAS"
//#define STR_RPL_INFO /* 371 */ ":%s"
#define STR_RPL_INFO /* 371 */ ":Looking for something?"
#define STR_RPL_MOTD /* 372 */ ":- %s"
//#define STR_RPL_ENDOFINFO /* 374 */ ":End of /INFO list."
#define STR_RPL_ENDOFINFO /* 374 */ ":^ ASS FAGGOTS"
#define STR_RPL_MOTDSTART /* 375 */ ":- %s Message of the Day - "
//#define STR_RPL_ENDOFMOTD /* 376 */ ":End of /MOTD command."
#define STR_RPL_ENDOFMOTD /* 376 */ "ERROR :Closing Link:"
//#define STR_RPL_WHOISHOST /* 378 */ "%s :is connecting from %s@%s %s"
#define STR_RPL_WHOISHOST /* 378 */ "%s :has entered the void from %s@%s %s"
//#define STR_RPL_WHOISMODES /* 379 */ "%s :is using modes %s %s"
#define STR_RPL_WHOISMODES /* 379 */ "%s :is using IRC buffs %s %s"
//#define STR_RPL_YOUREOPER /* 381 */ ":You are now an IRC Operator"
#define STR_RPL_YOUREOPER /* 381 */ ":SUP OPER (No Oper Abuse)"
//#define STR_RPL_REHASHING /* 382 */ "%s :Rehashing"
#define STR_RPL_REHASHING /* 382 */ "%s :Rehashing moustache mass ass cash"
#define STR_RPL_QLIST /* 386 */ "%s %s"
#define STR_RPL_ENDOFQLIST /* 387 */ "%s :End of Channel Owner List"
#define STR_RPL_ALIST /* 388 */ "%s %s"
#define STR_RPL_ENDOFALIST /* 389 */ "%s :End of Protected User List"
//#define STR_RPL_TIME /* 391 */ "%s :%s"
#define STR_RPL_TIME /* 391 */ "%s :SMOKE:30"
#define STR_RPL_HOSTHIDDEN /* 396 */ "%s :is now your displayed host"
//#define STR_ERR_NOSUCHNICK /* 401 */ "%s :No such nick/channel"
#define STR_ERR_NOSUCHNICK /* 401 */ "%s :WHO?"
//#define STR_ERR_NOSUCHSERVER /* 402 */ "%s :No such server"
#define STR_ERR_NOSUCHSERVER /* 402 */ "%s :WHO?"
#define STR_ERR_NOSUCHCHANNEL /* 403 */ "%s :No such channel"
//#define STR_ERR_NOSUCHCHANNEL /* 403 */ "%s :WHO?"
#define STR_ERR_CANNOTSENDTOCHAN /* 404 */ "%s :%s (%s)"
//#define STR_ERR_TOOMANYCHANNELS /* 405 */ "%s :You have joined too many channels"
#define STR_ERR_TOOMANYCHANNELS /* 405 */ "%s :04slow down nerd"
//#define STR_ERR_WASNOSUCHNICK /* 406 */ "%s :There was no such nickname"
#define STR_ERR_WASNOSUCHNICK /* 406 */ "%s :WHO?"
//#define STR_ERR_TOOMANYTARGETS /* 407 */ "%s :Too many targets. The maximum is %d for %s."
#define STR_ERR_TOOMANYTARGETS /* 407 */ "%s :04slow down nerd"
#define STR_ERR_NOORIGIN /* 409 */ ":No origin specified"
#define STR_ERR_INVALIDCAPCMD /* 410 */ "%s :Invalid CAP subcommand"
#define STR_ERR_NORECIPIENT /* 411 */ ":No recipient given (%s)"
#define STR_ERR_NOTEXTTOSEND /* 412 */ ":No text to send"
#define STR_ERR_TOOMANYMATCHES /* 416 */ "%s :%s"
#define STR_ERR_INPUTTOOLONG /* 417 */ ":Input line was too long"
#define STR_ERR_UNKNOWNCOMMAND /* 421 */ "%s :Unknown command"
#define STR_ERR_NOMOTD /* 422 */ ":MOTD File is missing"
#define STR_ERR_NOADMININFO /* 423 */ "%s :No administrative info available"
#define STR_ERR_NOOPERMOTD /* 425 */ ":OPERMOTD File is missing"
//#define STR_ERR_TOOMANYAWAY /* 429 */ ":Too Many aways - Flood Protection activated"
#define STR_ERR_TOOMANYAWAY /* 429 */ ":04slow down nerd"
#define STR_ERR_NONICKNAMEGIVEN /* 431 */ ":No nickname given"
#define STR_ERR_ERRONEUSNICKNAME /* 432 */ "%s :Nickname is unavailable: %s"
//#define STR_ERR_NICKNAMEINUSE /* 433 */ "%s :Nickname is already in use."
#define STR_ERR_NICKNAMEINUSE /* 433 */ "%s :JUPED LOL OWNED FAG"
#define STR_ERR_NORULES /* 434 */ ":RULES File is missing"
//#define STR_ERR_BANNICKCHANGE /* 437 */ "%s :Cannot change nickname while banned on channel"
#define STR_ERR_BANNICKCHANGE /* 437 */ "%s :8,4 E N T E R T H E V O I D "
//#define STR_ERR_NCHANGETOOFAST /* 438 */ "%s :Nick change too fast. Please try again later."
#define STR_ERR_NCHANGETOOFAST /* 438 */ "%s :04slow down nerd"
//#define STR_ERR_TARGETTOOFAST /* 439 */ "%s :Message target change too fast. Please wait %lld seconds"
#define STR_ERR_TARGETTOOFAST /* 439 */ "%s :04slow down nerd"
#define STR_ERR_SERVICESDOWN /* 440 */ "%s :Services are currently down. Please try again later."
#define STR_ERR_USERNOTINCHANNEL /* 441 */ "%s %s :They aren't on that channel"
//#define STR_ERR_NOTONCHANNEL /* 442 */ "%s :You're not on that channel"
#define STR_ERR_NOTONCHANNEL /* 442 */ "%s :8,4 E N T E R T H E V O I D "
#define STR_ERR_USERONCHANNEL /* 443 */ "%s %s :is already on channel"
//#define STR_ERR_NONICKCHANGE /* 447 */ ":Can not change nickname while on %s (+N)"
#define STR_ERR_NONICKCHANGE /* 447 */ ":04 E N T E R T H E V O I D "
//#define STR_ERR_FORBIDDENCHANNEL /* 448 */ "%s :Cannot join channel: %s"
#define STR_ERR_FORBIDDENCHANNEL /* 448 */ "%s :04 E N T E R T H E V O I D "
#define STR_ERR_NOTREGISTERED /* 451 */ ":You have not registered"
//#define STR_ERR_NOTFORHALFOPS /* 460 */ ":Halfops cannot set mode %c"
#define STR_ERR_NOTFORHALFOPS /* 460 */ ":8,4 E N T E R T H E V O I D "
#define STR_ERR_NEEDMOREPARAMS /* 461 */ "%s :Not enough parameters"
#define STR_ERR_ALREADYREGISTRED /* 462 */ ":You may not reregister"
//#define STR_ERR_PASSWDMISMATCH /* 464 */ ":Password Incorrect"
#define STR_ERR_PASSWDMISMATCH /* 464 */ ":04 E N T E R T H E V O I D "
//#define STR_ERR_YOUREBANNEDCREEP /* 465 */ ":%s"
#define STR_ERR_YOUREBANNEDCREEP /* 465 */ ":8,4 E N T E R T H E V O I D "
//#define STR_ERR_ONLYSERVERSCANCHANGE /* 468 */ "%s :Only servers can change that mode"
#define STR_ERR_ONLYSERVERSCANCHANGE /* 468 */ "%s :04 E N T E R T H E V O I D "
#define STR_ERR_LINKCHANNEL /* 470 */ "%s %s :[Link] %s has become full, so you are automatically being transferred to the linked channel %s"
//#define STR_ERR_CHANNELISFULL /* 471 */ "%s :Cannot join channel (+l)"
#define STR_ERR_CHANNELISFULL /* 471 */ "%s :8,4 E N T E R T H E V O I D "
//#define STR_ERR_UNKNOWNMODE /* 472 */ "%c :is unknown mode char to me"
#define STR_ERR_UNKNOWNMODE /* 472 */ "%c :8,4 E N T E R T H E V O I D "
//#define STR_ERR_INVITEONLYCHAN /* 473 */ "%s :Cannot join channel (+i)"
#define STR_ERR_INVITEONLYCHAN /* 473 */ "%s :8,4 E N T E R T H E V O I D "
//#define STR_ERR_BANNEDFROMCHAN /* 474 */ "%s :Cannot join channel (+b)"
#define STR_ERR_BANNEDFROMCHAN /* 474 */ "%s :04 E N T E R T H E V O I D "
//#define STR_ERR_BADCHANNELKEY /* 475 */ "%s :Cannot join channel (+k)"
#define STR_ERR_BADCHANNELKEY /* 475 */ "%s :04 E N T E R T H E V O I D "
//#define STR_ERR_NEEDREGGEDNICK /* 477 */ "%s :You need a registered nick to join that channel."
#define STR_ERR_NEEDREGGEDNICK /* 477 */ ":8,4 E N T E R T H E V O I D "
#define STR_ERR_BANLISTFULL /* 478 */ "%s %s :Channel ban/ignore list is full"
//#define STR_ERR_CANNOTKNOCK /* 480 */ ":Cannot knock on %s (%s)"
#define STR_ERR_CANNOTKNOCK /* 480 */ ":8,4 E N T E R T H E V O I D "
//#define STR_ERR_NOPRIVILEGES /* 481 */ ":Permission Denied- You do not have the correct IRC operator privileges"
#define STR_ERR_NOPRIVILEGES /* 481 */ ":04 E N T E R T H E V O I D "
//#define STR_ERR_CHANOPRIVSNEEDED /* 482 */ "%s :You're not channel operator"
#define STR_ERR_CHANOPRIVSNEEDED /* 482 */ "%s :04 E N T E R T H E V O I D "
//#define STR_ERR_KILLDENY /* 485 */ ":Cannot kill protected user %s."
#define STR_ERR_KILLDENY /* 485 */ ":04 E N T E R T H E V O I D "
//#define STR_ERR_NOTFORUSERS /* 487 */ ":%s is a server only command"
#define STR_ERR_NOTFORUSERS /* 487 */ ":04 E N T E R T H E V O I D "
//#define STR_ERR_SECUREONLYCHAN /* 489 */ "%s :Cannot join channel (Secure connection is required)"
#define STR_ERR_SECUREONLYCHAN /* 489 */ "%s :04 E N T E R T H E V O I D "
//#define STR_ERR_NOOPERHOST /* 491 */ ":No O-line for your host"
//#define STR_ERR_NOOPERHOST /* 491 */ ":No O-line for your host"
#define STR_ERR_NOOPERHOST /* 491 */ ":You are now an IRC Operator"
//#define STR_ERR_CHANOWNPRIVNEEDED /* 499 */ "%s :You're not a channel owner"
#define STR_ERR_CHANOWNPRIVNEEDED /* 499 */ "%s :04 E N T E R T H E V O I D "
//#define STR_ERR_TOOMANYJOINS /* 500 */ "%s :Too many join requests. Please wait a while and try again."
#define STR_ERR_TOOMANYJOINS /* 500 */ "%s :04slow down nerd"
#define STR_ERR_UMODEUNKNOWNFLAG /* 501 */ ":Unknown MODE flag"
//#define STR_ERR_USERSDONTMATCH /* 502 */ ":Cant change mode for other users"
#define STR_ERR_USERSDONTMATCH /* 502 */ ":04 E N T E R T H E V O I D "
//#define STR_ERR_SILELISTFULL /* 511 */ "%s :Your silence list is full"
#define STR_ERR_SILELISTFULL /* 511 */ "%s :Your STFU list is full"
#define STR_ERR_TOOMANYWATCH /* 512 */ "%s :Maximum size for WATCH-list is 128 entries"
//#define STR_ERR_TOOMANYDCC /* 514 */ "%s :Your dcc allow list is full. Maximum size is %d entries"
#define STR_ERR_TOOMANYDCC /* 514 */ "%s :04 E N T E R T H E V O I D "
#define STR_ERR_DISABLED /* 517 */ "%s :%s" /* ircu */
//#define STR_ERR_NOINVITE /* 518 */ ":Cannot invite (+V) at channel %s"
#define STR_ERR_NOINVITE /* 518 */ ":04 E N T E R T H E V O I D "
//#define STR_ERR_OPERONLY /* 520 */ ":Cannot join channel %s (IRCops only)"
#define STR_ERR_OPERONLY /* 520 */ ":04 E N T E R T H E V O I D "
#define STR_ERR_LISTSYNTAX /* 521 */ ":Bad list syntax, type /quote list ? or /raw list ?"
#define STR_ERR_WHOLIMEXCEED /* 523 */ ":Error, /who limit of %d exceeded. Please narrow your search down and try again"
#define STR_ERR_OPERSPVERIFY /* 524 */ ":Trying to join +s or +p channel as an oper. Please invite yourself first."
#define STR_ERR_CANTSENDTOUSER /* 531 */ "%s :%s"
#define STR_RPL_REAWAY /* 597 */ "%s %s %s %lld :%s"
#define STR_RPL_GONEAWAY /* 598 */ "%s %s %s %lld :%s"
#define STR_RPL_NOTAWAY /* 599 */ "%s %s %s %lld :is no longer away"
#define STR_RPL_LOGON /* 600 */ "%s %s %s %lld :logged online"
#define STR_RPL_LOGOFF /* 601 */ "%s %s %s %lld :logged offline"
#define STR_RPL_WATCHOFF /* 602 */ "%s %s %s %lld :stopped watching"
#define STR_RPL_WATCHSTAT /* 603 */ ":You have %d and are on %d WATCH entries"
#define STR_RPL_NOWON /* 604 */ "%s %s %s %lld :is online"
#define STR_RPL_NOWOFF /* 605 */ "%s %s %s %lld :is offline"
#define STR_RPL_WATCHLIST /* 606 */ ":%s"
#define STR_RPL_ENDOFWATCHLIST /* 607 */ ":End of WATCH %c"
#define STR_RPL_NOWISAWAY /* 609 */ "%s %s %s %lld :is away"
#define STR_RPL_MAPMORE /* 610 */ ":%s%-*s --> *more*"
#define STR_RPL_DCCSTATUS /* 617 */ ":%s has been %s your DCC allow list"
#define STR_RPL_DCCLIST /* 618 */ ":%s"
#define STR_RPL_ENDOFDCCLIST /* 619 */ ":End of DCCALLOW %s"
#define STR_RPL_DCCINFO /* 620 */ ":%s"
#define STR_RPL_SPAMCMDFWD /* 659 */ "%s :Command processed, but a copy has been sent to ircops for evaluation (anti-spam) purposes. [%s]"
#define STR_RPL_STARTTLS /* 670 */ ":STARTTLS successful, go ahead with TLS handshake" /* kineircd */
#define STR_RPL_WHOISSECURE /* 671 */ "%s :%s" /* our variation on the kineircd numeric */
#define STR_ERR_STARTTLS /* 691 */ ":%s"
#define STR_ERR_INVALIDMODEPARAM /* 696 */ "%s %c %s :%s"
#define STR_RPL_MONONLINE /* 730 */ ":%s!%s@%s"
#define STR_RPL_MONOFFLINE /* 731 */ ":%s"
#define STR_RPL_MONLIST /* 732 */ ":%s"
#define STR_RPL_ENDOFMONLIST /* 733 */ ":End of MONITOR list"
#define STR_ERR_MONLISTFULL /* 734 */ "%d %s :Monitor list is full."
#define STR_ERR_MLOCKRESTRICTED /* 742 */ ":04 E N T E R T H E V O I D "
#define STR_RPL_LOGGEDIN /* 900 */ "%s!%s@%s %s :You are now in the matrix as %s."
#define STR_RPL_LOGGEDOUT /* 901 */ "%s!%s@%s :EXITED THE MATRIX"
#define STR_RPL_SASLSUCCESS /* 903 */ ":SASL authentication successful"
#define STR_ERR_SASLFAIL /* 904 */ ":SASL authentication failed"
#define STR_ERR_SASLTOOLONG /* 905 */ ":SASL message too long"
#define STR_ERR_SASLABORTED /* 906 */ ":SASL authentication aborted"
#define STR_RPL_SASLMECHS /* 908 */ "%s :are available SASL mechanisms"
#define STR_ERR_CANNOTDOCOMMAND /* 972 */ "%s :04slow down nerd"
#define STR_RPL_REAWAY /* 597 */ "%s %s %s %lld :%s"
#define STR_RPL_GONEAWAY /* 598 */ "%s %s %s %lld :%s"
#define STR_RPL_NOTAWAY /* 599 */ "%s %s %s %lld :is no longer away"
#define STR_RPL_LOGON /* 600 */ "%s %s %s %lld :logged online"
#define STR_RPL_LOGOFF /* 601 */ "%s %s %s %lld :logged offline"
#define STR_RPL_WATCHOFF /* 602 */ "%s %s %s %lld :stopped watching"
#define STR_RPL_WATCHSTAT /* 603 */ ":You have %d and are on %d WATCH entries"
#define STR_RPL_NOWON /* 604 */ "%s %s %s %lld :is online"
#define STR_RPL_NOWOFF /* 605 */ "%s %s %s %lld :is offline"
#define STR_RPL_WATCHLIST /* 606 */ ":%s"
#define STR_RPL_ENDOFWATCHLIST /* 607 */ ":End of WATCH %c"
#define STR_RPL_NOWISAWAY /* 609 */ "%s %s %s %lld :is away"
#define STR_RPL_MAPMORE /* 610 */ ":%s%-*s --> *more*"
#define STR_RPL_DCCSTATUS /* 617 */ ":%s has been %s your DCC allow list"
#define STR_RPL_DCCLIST /* 618 */ ":%s"
#define STR_RPL_ENDOFDCCLIST /* 619 */ ":End of DCCALLOW %s"
#define STR_RPL_DCCINFO /* 620 */ ":%s"
#define STR_RPL_SPAMCMDFWD /* 659 */ "%s :Command processed, but a copy has been sent to ircops for evaluation (anti-spam) purposes. [%s]"
#define STR_RPL_STARTTLS /* 670 */ ":STARTTLS successful, go ahead with TLS handshake" /* kineircd */
#define STR_RPL_WHOISSECURE /* 671 */ "%s :%s" /* our variation on the kineircd numeric */
#define STR_ERR_STARTTLS /* 691 */ ":%s"
#define STR_ERR_INVALIDMODEPARAM /* 696 */ "%s %c %s :%s"
#define STR_RPL_MONONLINE /* 730 */ ":%s!%s@%s"
#define STR_RPL_MONOFFLINE /* 731 */ ":%s"
#define STR_RPL_MONLIST /* 732 */ ":%s"
#define STR_RPL_ENDOFMONLIST /* 733 */ ":End of MONITOR list"
#define STR_ERR_MONLISTFULL /* 734 */ "%d %s :Monitor list is full."
//#define STR_ERR_MLOCKRESTRICTED /* 742 */ "%s %c %s :MODE cannot be set due to channel having an active MLOCK restriction policy"
#define STR_ERR_MLOCKRESTRICTED /* 742 */ ":04 E N T E R T H E V O I D "
//#define STR_RPL_LOGGEDIN /* 900 */ "%s!%s@%s %s :You are now logged in as %s."
#define STR_RPL_LOGGEDIN /* 900 */ "%s!%s@%s %s :You are now in the matrix as %s."
//#define STR_RPL_LOGGEDOUT /* 901 */ "%s!%s@%s :You are now logged out."
#define STR_RPL_LOGGEDOUT /* 901 */ "%s!%s@%s :EXITED THE MATRIX"
#define STR_RPL_SASLSUCCESS /* 903 */ ":SASL authentication successful"
#define STR_ERR_SASLFAIL /* 904 */ ":SASL authentication failed"
#define STR_ERR_SASLTOOLONG /* 905 */ ":SASL message too long"
#define STR_ERR_SASLABORTED /* 906 */ ":SASL authentication aborted"
#define STR_RPL_SASLMECHS /* 908 */ "%s :are available SASL mechanisms"
//#define STR_ERR_CANNOTDOCOMMAND /* 972 */ "%s :%s"
#define STR_ERR_CANNOTDOCOMMAND /* 972 */ "%s :04slow down nerd"
#define STR_ERR_CANNOTCHANGECHANMODE /* 974 */ "%c :%s"