UnrealIRCd - 3.2 - Officiële Documentatie

English | German | Spanish | Hungarian | French | Greek | Dutch | Russian | Turkish
UnrealIRCd
http://www.unrealircd.com
Version: 3.2.5
Laatste documentatie wijziging: 2006-06-15
Hoofd programmeurs: Stskeeps / codemastr / Syzop / Luke
Medewerkers: McSkaf / Zogg / NiQuiL / assyrian / chasm / DrBin / llthangel / Griever / nighthawk
Documentatie: CKnight^ / Syzop
Nederlandse vertaling: Mark (#dutch op irc.irc-chatters.net)

Om dit document te bekijken heb je een geschikte browser nodig, welke hier beneden staan. De meest recente documentatie staat op http://www.vulnscan.org/UnrealIRCd/unreal32docs.html en een FAQ staat op http://www.vulnscan.org/UnrealIRCd/faq/.

Geschikte browsers:

- Opera 6.02
- Microsoft Internet Explorer 6.X / 5.5
- Netscape Navigator 6.X
- Mozilla 1.2.X
- Lynx (gedeeltelijk)

INDEX / INHOUD
1. Introductie & Opmerkingen
---1.1. Opmerkingen voor upgraden/mengen 3.1.x -> 3.2
---1.2. Opmerkingen voor upgraden tussen 3.2 versies
2. Installatie
3. Mogelijkheden
-- 3.1. Cloaking
-- 3.2. Modules
-- 3.3. Snomasks
-- 3.4. Aliases
-- 3.5. Helpop
-- 3.6. Oper toegangsniveau's
-- 3.7. Oper commando's
-- 3.8. SSL
-- 3.9. IPv6
-- 3.10. Zip links
-- 3.11. Dynamische DNS/IP linking ondersteuning
-- 3.12. Anti-flood mogelijkheden
-- 3.13. Ban types
-- 3.14. Spamfilter
-- 3.15. CIDR
-- 3.16. Nick Character Sets
-- 3.17. CGI:IRC ondersteuning
-- 3.18. Tijd synchronisatie
-- 3.19. Andere mogelijkheden
4. Aanpassen van je unrealircd.conf
---4.1. Configuratie bestand uitgelegd
---4.2. Me Block -=- (M:Line)
---4.3. Admin Block -=- (A:Line)
---4.4. Class Block -=- (Y:Line)
---4.5. Allow Block -=- (I:Line)
---4.6. Listen Block -=- (P:Line)
---4.7. Oper Block -=- (O:Line)
---4.8. DRpass Block -=-(X:Line)
---4.9. Include Directive
---4.10. Loadmodule Directive
---4.11. Log Block
---4.12. TLD Block -=- (T:Line)
---4.13. Ban Nick Block -=- (Q:Line)
---4.14. Ban User Block -=- (K:Line)
---4.15. Ban IP Block -=- (Z:Line)
---4.16. Ban Server Block -=-(q:Line)
---4.17. Ban Realname Block -=- (n:Line)
---4.18. Ban Version Block
---4.19. Ban Exception Block -=- (E:Line)
---4.20. TKL Exception Block
---4.21. Throttle Exception Block
---4.22. Deny DCC Block -=- (dccdeny.conf)
---4.23. Deny Version Block -=- (V:Line)
---4.24. Deny Link Block -=- (D:Line / d:Line)
---4.25. Deny Channel Block -=- (chrestrict.conf)
---4.26. Allow Channel Block
---4.27. Allow DCC Block
---4.28. Vhost Block -=- (vhost.conf)
---4.29. Badword Block -=- (badwords.conf)
---4.30. Uline Block -=- (U:Line)
---4.31. Link Block -=- (C/N/H:Lines)
---4.32. Alias Block
---4.33. Help Block
---4.34. Official Channels Block
---4.35. Spamfilter Block
---4.36. Cgiirc Block
---4.37. Set Block -=- (networks/unrealircd.conf)
5. Aanvullende bestanden
6. Gebruikers & Kanaal Modes
7. Gebruikers & Opers commando's
8. Veiligheids tips/checklist
---8.1. Wachtwoorden
---8.2. Niet-IRCd gerelateerde lekken
---8.3. Rechten en het configuratiebestand
---8.4. Gebruikers gerelateerde problemen
---8.5. SSL/SSH & sniffing
---8.6. Denial of Service attacks (DoS) [of: hoe bescherm ik mijn hub]
---8.7. Extra informatie
---8.8. Bescherming tegen exploits
---8.9. Samenvatting
9. Veel gestelde vragen (FAQ)
A. Regular Expressions
---A.1. Letters
---A.2. Dot Operator
---A.3. Repetition Operators
---A.4. Bracket Expressions
---A.5. Assertions
---A.6. Alternation
---A.7. Subexpressions
---A.8. Back References
---A.9. Case Sensitivity

1.0 – Introductie & Opmerkingen

Dit document is uitsluitend geschreven voor gebruik met UnrealIRCd. Gebruik van dit document voor andere software, of verspreiding van dit document samen met andere software is strikt verboden zonder geschreven toestemming van het UnrealIRCd Ontwikkelings Team. Dit document mag zo vaak je wil gekopieërd/geprint/geherproduceerd/gepubliceerd worden, gegeven dat het gebruikt wordt voor UnrealIRCd en er niets aangepast is in welke vorm dan ook. – Copyright UnrealIRCd Development Team 2002-2006

Lees dit document voordat je om hulp vraagt. We raden je ook ten zeerste aan de FAQ te lezen, omdat meer dan 80% van je problemen/vragen hierin behandeld worden. Wanneer je nog steeds hulp nodig hebt, kun je hulp vragen op irc.ircsystems.net (poort 6667), kanaal #unreal-support (Opmerking: We achten het nodig dat je de documentatie en de FAQ leest en we helpen alleen met UnrealIRCd, niet met Services!). Wanneer je een echte bug (zoals een crash) hebt gevonden, meldt deze dan op http://bugs.unrealircd.org.

1.1 – Opmerkingen voor upgraden/mengen 3.1.x -> 3.2

Wanneer je upgrade van Unreal3.1.x naar Unreal3.2 merk je dat het hele configuratiebestand aangepast is. Wellicht vind je dit in het begin moeilijk, maar zodra je omgeschakeld bent, snap je het veel makkelijker!

Vergeet ook niet sectie 3 over Mogelijkheden te lezen. Ondanks dat je sommige wellicht al kent van 3.1.x zijn er ook nieuwe mogelijkheden!

Het is beter om 3.1.x niet te mengen/linken met 3.2, maar wanneer je dit echt wilt, heb je minstens 3.1.4 nodig. Maar 3.1.5.1 wordt ten zeerste aangeraden!

1.2 – Opmerkingen voor upgraden tussen 3.2 versies

De aangeraden manier om te upgraden is:
Linux:

- Hernoem je oude UnrealIRCd map (anders schrijf je deze in de volgende stap over).
- Pak de nieuwe UnrealIRCd versie uit en voer ./Config en make uit.
- Kopieer je oude configuratiebestanden naar de nieuwe map (unrealircd.conf, motd, rules, server* [SSL certs], network file, etc).

Windows:

- Kopieer al je configuratiebestanden naar een tijdelijke locatie.
- Voer de deinstallatie uit voor oudere versies van Unreal die je geinstalleerd hebt.
- Voer de installatie van de nieuwe versie uit.
- Kopieer je oude configuratiebestanden naar de nieuwe map.

Zie ook .RELEASE.NOTES voor de veranderingen. Wanneer je veranderingen (of bugs) tussen verschillende versies merkt, LEES EERST DE RELEASE NOTES VOORDAT JE HET ALS EEN BUG MELDT!

2.0 - Installatie

Getest & Ondersteunde Operating Systems:

- *NIX versions:
  - Linux (2.2.*, 2.4.*, 2.6.*)
  - FreeBSD (4.*, 5.*)
  - NetBSD (2.*)
  - OpenBSD (3.7, 3.8)
  - Solaris (9, 10)
- Windows versie:
  - Windows 2000 (Pro, Server, Advanced Server)
  - Windows XP (Home, Pro)
  - Windows 2003
- Architectures tested:
  - ia32 (i386, i486, i586, i686)
  - ia64
  - amd64
  - alpha

Wanneer je Unreal3.2 correct werkend hebt lopen op een ander systeem, meldt de details dan alstublieft naarcoders@lists.unrealircd.org

Installation Instructions
Linux:

1. gunzip -d Unreal3.2.X.tar.gz
2. tar xvf Unreal3.2.X.tar
3. cd Unreal3.2
4. ./Config
5. Beantwoord deze vragen zo goed als mogelijk. Wanneer je het niet weet, kun je het beste de standaardwaarde gebruiken.
6. make
7. Maak nu je unrealircd.conf en andere configuratiebstanden, zie sectie 4.

Windows:

1. Voer de Unreal installatie uit.
2. Maak nu je unrealircd.conf en andere configuratiebstanden, zie sectie 4.

3.0 - Mogelijkheden

De voornaamste/leuke mogelijkheden worden uitgelegd in deze sectie. Het zorgt voor een algemeen overzicht, en verwijst soms naar het configuratiebestand (iets waar je wellicht nog niets over weet)

Je kan deze sectie overslaan, hoewel het aangeraden wordt om deze toch te lezen voor of na installatie zodat je de begrippen 'cloaking', 'snomasks' etc kent.

3.1 - Cloaking

Cloaking is een manier om de echte hostname van gebruikers te verbergen. Als de echte host bijvoorbeeld d5142341.cable.wanadoo.nl is, zal rox-2DCA3201.cable.wanadoo.nl worden gezien (bij joins, parts, whois, etc). Dit is een manier om de gebruikers tegen het flooden door anderen te beschermen, omdat ze de echte host/IP niet kunnen zien.

Dit wordt te werk gesteld door gebruikersmode +x (zoals: /mode jenaam +x). Admins kunnen ook instellen dat +x automatish gezet wordt, of dat gebruikers nooit -x kunnen zetten.

Een verborgen host wordt gemaakt door een "cloaking" module (je moet er een laden). Momenteel wordt er 1 module geleverd:
cloak: Dit is de officiële module sinds 3.2.1. Het is veel veiliger dan het oude algoritme, het gebruikt md5 intern en het eist dat je 3 set::cloak-keys:: gebruikt, bestaande uit een mix van kleine letters (a-z), grote letters (A-Z) en getallen (0-9) [bv: "AopAS6WQH2Os6hfosh4SFJHs"]. Zie Voorbeeld.conf voor een voorbeeld.

Cloak keys MOETEN hetzelfde zijn op ALLE servers in een network. Ook moeten cloak keys geheim blijven, omdat het mogelijk is om de echte hostname te achterhalen wanneer je de keys weet (wat gebruikersmode +x onbruikabar maakt).

3.2 - Modules

UnrealIRCd maakt gebruik van modules, wat handig is omdat:
- Je kan ze laden/herladen/uitladen terwijl de ircd nog loopt (d.m.v. /rehash). Hiermee kun je bugs fixen of nieuwe mogelijkheden toevoegen zonder dat er een herstart nodig is!
- Andere mensen kunnen modules maken met nieuwe commandos, gebruikersmodi en zelfs kanaalmodi
- UnrealIRCd wordt geleverd met maar een paar modules. Kijk eens op www.unrealircd.com -> modules of gebruikt Google om aan modules te komen.

Je moet minstens 2 modules laden, anders start je ircd niet!:
- De commando module: commands.so (commands.dll in Windows).
- Een cloaking module: normaal cloak.so (cloak.dll in Windows).

3.3 - Snomasks

Snomasks zijn server aankondigingen, het is een speciaal soort gebruikersmodes die bepaald welke aankondigingen je krijgt (voornamelijk gebruikt door opers)

Je kan ze instellen door: /mode jenaam +s SNOMASK, bijvoorbeeld: /mode jenaam +s +cF
Om bepaalde snomasks weg te halen, gebruik: /mode jenaam +s -c
Om alle snomasks weg te halen, gebruik: /mode jenaam -s

De op dit moment bruikbare snomasks zijn:
c - lokale connecties
F - "verre" connecties (connecties naar andere servers, behalve U:lined servers)
f - flood aankondigingen
k - kill aankondigingen
e - "eyes" aankondingen
j - "junk" aankondigingen
v - vhost aankondingingen
G - gline/shun aankondingingen
n - lokale verandering van naam aankondingingen
N - "verre" verandering van naam aankondingingen
q - verboden nick (Q:line) aankondingingen
s - ontvang server aankondingingen [*]
S - ontvang spamfilter aankondingingen
o - ontvang oper-worden aankondingingen
[*: deze snomask kan ook gebruikt worden door niet-opers]

Je kan instellen welke snomasks je automatisch krijgt (set::snomask-on-connect) en welke je krijgt zodra je oper wordt (set::snomask-on-oper, oper::snomask)

Standaard wordt, zodra een gebruiker modes +s zet, bepaalde snomasks gezet. Voor niet-opers, snomasks +ks, en voor opers snomasks +kscfvGqo.

3.4 - Aliases

Met aliases kun je alias commando's instellen voor de server. Je kan bijvoorbeeld "/ns identify blah" doorsturen naar NickServ (het wordt dan: PRIVMSG NickServ identify blah). Je kan het ook nog complexer maken, zodat bijvoorbeeld /register naar ChanServ doorgestuurd wordt wanneer het eerste woord met een # begint, en doorgestuurd naar NickServ wanneer dit niet het geval is

Aliassen worden ingesteld door een alias-blok in het configuratiebestand. Je kan ook een standaard bestand laten laden, met de meest gebruikte aliassen bij vaak gebruikte Services

3.5 - Helpop

UnrealIRCd heeft een ingebouwd help-systeem, raadpleegbaar door /helpop. Het /helpop commando is volledig in te stellen door het help-blok in het configuratiebestand. Bijkomend, een help.conf wordt geladen, waarin wat basis hulp staat voro alle commando's.
Bijvoorbeeld /helpop chmodes geeft je een overzicht van alle kanaalmodi die UnrealIRCd heeft.
Vergeet niet dat wanneer je een ircop (helpop) bent, je een vraagteken ('?') moet gebruiken voor elk commando. Dus /helpop chmodes wordt /helpop ?chmodes

3.6 - Oper access levels

Er zijn verschillende oper niveaus in UnrealIRCd, en je kan extra rechten (zoals het gebruik van /gline) toevoegen voor elk niveau. Op deze manier kun je een oper voorzien van alles wat hij/zij nodig heeft.

Dit wordt gedaan door de oper flags in het oper-blok. Zie het oper-blok voor meer informatie

3.7 - Oper commands

UnrealIRCd heeft veel machtige oper commando's welke uitgelegd worden in User & Oper Commands. Je zult deze waarschijnlijk willen doornemen na installatie

3.8 - SSL

SSL staat voor Secure Socket Layer. Met SSL kun je beveiligde verbinden opzetten. Het kan gebruikt worden om server<->server verkeer te beveiligen, maar ook client<->server kan beveiligd worden. Je gebruikt SSL normaal gesproken om sniffen van wachtwoorden tegen te gaan.

Je moet je IRC server compilen (opbouwen) met SSL support. Om een SSL poort in te stellen, moet je set listen::options::ssl gebruiken.

Je kan geen gewone verbinding maken op een SSL poort (dus maak poort 6667 geen SSL!), je hebt een programma nodig dat het SSL protocol snapt.

Programma's die SSL ondersteunen: XChat, irssi, mIRC (6.14 en hoger, maar heeft wat extra stappen nodig)

Voor programma's die SSL niet ondersteunen, kun je een tunnel gebruiken zoals stunnel. Hieronder vind je een stunnel.conf voorbeeld (voor stunnel 4.x):

       client = yes
       [irc]
       accept = 127.0.0.1:6667
       connect = irc.myserv.com:6697

Wanneer je nu een connectie naar 127.0.0.1 poort 6667 maakt, zal al je verkeer ge-encrypt worden en doorgestuurd naar irc.myserv.com poort 6697 (een SSL poort).

Je zult ook de certificaten moeten valideren, en ze niet zomaar moeten accepteren (zoals in het stunnel voorbeeld), anders ben je nog steeds kwetsbaar voor "actief sniffen" (SSL omleidingen). Maar dit dwaalt te ver af om hier uit te leggen (leer over SSL, vraag het ons niet). [mIRC and XChat laten een venster zien wanneer je een certificaat moet accepteren of afwijzen, dus dat is goed].

3.9 - IPv6

UnrealIRCd ondersteunt IPv6, en sinds beta15 is het stabiel.
Je systeem moet ook IPv6 ondersteunen, en je moet IPv6 ondersteuning aanzetten tijdens ./Config.

Hoewel Microsoft een experimentele IPv6 toepassing heeft voor W2K/XP, wordt dit (nog) niet ondersteund door UnrealIRCd

3.10 - Zip links

Zip links kunnen worden aangezet voor server<->server links. Het comprimeert data door gebruik te maken van zlib. Het kan 60 tot 80% bandbreedte besparen.. Dus het is handig voor lage bandbreedte links of links met veel gebruikers. Het kan veel helpen wanneer je linkt vanwege de vele data die verstuurd wordt over elk(e) gebruiker/kanaal/etc.

Om Zip link ondersteuning aan te zetten, moet je "yes" antwoorden voor de zlib vraag in ./Config en link::options::zip gebruiken van beide kanten.

3.11 - Dynamische DNS/IP linking ondersteuning

UnrealIRCd heeft enkele (nieuwe) mogelijkheden, welke mensen met een dynamisch IP helpen (zoals blah.dyndns.org). Wanneer je twee dynamische DNS hosts linkt, gebruik dan link::options::nodnscache en link::options::nohostcheck.

3.12 - Anti-Flood mogelijkheden

Throttling ("Onderdrukken")
Door gebruik te maken van throttling kun je een limiet instellen op hoe vaak een gebruiker een connectie naar je server mag maken en verbreken. Je kan dat er X connecties in YY seconden gemaakt mogen worden vanaf hetzelfde IP door middel van het set::throttle blok. Kanaal modi
Er zijn verschillende kanaal modi welke zeer effectief werken tegen flooden. Om een paar te noemen:
K = /knock niet toegestaan, N = geen naamsveranderingen toegestaan, C = geen CTCPs toegestaan, M = alleen geregistreerde gebruikers mogen praten, j = join throttling (per gebruiker)
Sinds beta18 is er ook een geavanceerdere kanaalmodus +f...
Kanaal modus f
In plaats van het gebruik van scripts of bots om je te beschermen tegen kanaal floods, zit het nu in de ircd ingebouwd.
Bijvoorbeeld: *** Blah sets mode: +f [10j]:15
Dit betekent dat er 10 joins per 15 seconden zijn toegestaan in dit kanaal. Wanneer dit limiet wordt overschreden, wordt het kanaal automatisch op +j gezet.
De volgende floodtypes zijn beschikbaar:

type: | naam: | standaard actie: | andere beschikbare opties: | opmerkingen
c | CTCPs | auto +C | m, M |
j | joins | auto +i | R |
k | knocks | auto +K |  | (alleen voor lokale gebruikers)
m | messages/notices | auto +m | M |
n | nickchanges | auto +N |  |
t | text | kick | b | per bericht/notice per user, zoals de oude +f. Zal de gebruiker kicken of bannen.

voorbeeld::

    *** ChanOp sets mode: +f [20j,50m,7n]:15
    <ChanOp> lalala
    *** Evil1 (~fdsdsfddf@Clk-17B4D84B.blah.net) has joined #test
    *** Evil2 (~jcvibhcih@Clk-3472A942.xx.someispcom) has joined #test
    *** Evil3 (~toijhlihs@Clk-38D374A3.aol.com) has joined #test
    *** Evil4 (~eihjifihi@Clk-5387B42F.dfdfd.blablalba.be) has joined #test
    -- XX regels weggehaald --
    *** Evil21 (~jiovoihew@Clk-48D826C3.e.something.org) has joined #test
    -server1.test.net:#test *** Channel joinflood detected (limit is 20 per 15 seconds), putting +i
    *** server1.test.net sets mode: +i
    <Evil2> fsdjfdshfdkjfdkjfdsgdskjgsdjgsdsdfsfdujsflkhsfdl
    <Evil12> fsdjfdshfdkjfdkjfdsgdskjgsdjgsdsdfsfdujsflkhsfdl
    <Evil15> fsdjfdshfdkjfdkjfdsgdskjgsdjgsdsdfsfdujsflkhsfdl
    <Evil10> fsdjfdshfdkjfdkjfdsgdskjgsdjgsdsdfsfdujsflkhsfdl
    <Evil8> fsdjfdshfdkjfdkjfdsgdskjgsdjgsdsdfsfdujsflkhsfdl
    -- snip XX lines --
    -server1.test.net:#test *** Channel msg/noticeflood detected (limit is 50 per 15 seconds), putting +m
    *** server1.test.net sets mode: +m
    *** Evil1 is now known as Hmmm1
    *** Evil2 is now known as Hmmm2
    *** Evil3 is now known as Hmmm3
    *** Evil4 is now known as Hmmm4
    *** Evil5 is now known as Hmmm5
    *** Evil6 is now known as Hmmm6
    *** Evil7 is now known as Hmmm7
    *** Evil8 is now known as Hmmm8
    -server1.test.net:#test *** Channel nickflood detected (limit is 7 per 15 seconds), putting +N
    *** server1.test.net sets mode: +N

Het kan zelfs nog geavanceerder/complexer:
In plaats van de standaard actie kun je voor sommige floodtypes nog een andere actie instellen, bijvoorbeeld: +f [20j#R,50m#M]:15
Dit zal het kanaal op +R zetten wanneer het joinlimiet is overschreden (>20 joins in 15 seconden), en zal het kanaal op +M zetten wanneer het berichtlimiet is overschreven (>50 messages in 15 seconden).
Er is ook een "verwijder modus na x minuten" mogelijkheid: +f [20j#R5]:15 zal het kenaal +R zetten wanneer het limiet bereikt is, en zal het weer -R zetten na 5 minuten.
Een server kan een standaard unsettime hebben (set::modef-default-unsettime), dus wanneer je +f [20j]:15 gebruikt kan het veranderen in +f [20j#i10]:15, het is gewoon een standaard waarde. Je kan nog altijd [20j#i2]:15 of iets anders gebruiken. Je kan zelfs de standaard waarde niet gebruiken, door +f [20j#i0]:15 (een expliciete 0) te gebruiken.
De oude +f modus (msgflood per gebruiker) is nog steeds beschikbaar als 't', +f 10:6 is nu +f [10t]:6 en +f *20:10 is nu +f [20t#b]:10. Op dit moment zal de ircd automatisch de oude +f modi typen converteren naar de nieuwe. Let op dat er geen unsettime is voor 't' bans ([20t#b30]:15 werkt niet).
Welke +f modus het beste te gebruiken is, hangt af van het kanaal... Hoeveel gebruikers zijn er? Heb je een spel dat de gebruikers veel berichten laat zenden (bv Trivia)? Of gebruiken mensen vaak popups? Is het een standaard kanaal, of joint iedereen automatisch? etc..
Er is geen perfecte kanaalmodus +f dat goed is voor alle kanalen, maar het helpt wanneer je naar het volgende voorbeeld kijkt en het aanpast naar je eigen smaak:
+f [30j#i10,40m#m10,7c#C15,10n#N15,30k#K10]:15
30 joins per 15 seconden, wanneer het limiet overschreden wordt, zet +i gedurende 10 minuten
40 berichten per 15 seconden, wanneer het limiet overschreven wordt, zet +m gedurende 10 minuten
7 ctcps per 15 seconden, wanneer het limiet overschreven wordt, zet +C gedurende 15 minuten
10 naamsveranderingen per 15 secondsen, wanneer het limiet overschreden wordt, zet +N gedurende 15 minuten
30 knocks per 15 seconden, wanneer het limiet overschreven wordt, zet +K gedurende 10 minuten
Wanneer het een groter kanaal betrefd (> 75 gebruikers?), wil je wellicht het join limiet (bijv. naar 50) en het berichtlimiet (bijv naar 60 of 75) verhogen.
Met name de verwijder-modus tijd zijn een kwestie van eigen smaak.. Je moet je bedenken.. Wat als er geen op aanwezig is om te handelen in de situatie, wil ik dan dat het kanaal voor 15 minuten op slot gaat (wat niet leuk is voor de gebruikers), of voor 5 minuten (wellicht wachten de flooders dan gewoon 5 minuten en starten ze weer). Het ligt ook aan het floodtype, gebruikers die niet kunnen joinen (+i) of niet kunnen spreken (+m) is erger dan dat ze hun naam niet kunnen veranderen (+N) of dat ze geen CTCPs naar het kanaal kunnen zenden (+C). Dus wellicht wil je verschillende verwijder-tijden gebruiken.
Kanaal modus j
De modus +f gaat join floods tegen, maar deze mogelijkheid is "global". Bijvoorbeeld, wanneer het gezet is op 5:10 en 5 verschillende gebruikers joinen in 10 seconden, wordt de flood protectie geactiveerd. Kanaal modus +j is anders. Deze werkt per gebruiker. In plaats van het beschermen tegen join floods, is het ontworpen om te beschermen tegen join-part floods ("draaideur floods"). De modus accepteert een parameter in de vorm van X:Y, waar X het aantal joins is, en Y het aantal seconden. Wanneer een gebruiker dit limiet overschrijdt, wordt hem/haar het onmogelijk gemaakt het kanaal opnieuw te joinnen.

3.13 - Ban types

Basis bantypes en cloaked hosts
UnrealIRCd ondersteunt de basis bantypes, zoals +b nick!user@host.
Tevens, wanneer de host van iemand 'rox-ACB17294.isp.com' is, kun je een ban plaatsen op *!*@rox-ACB17294.isp.com. Wanneer de gebruiker zichzelf -x zet (en zijn host bijvoorbeeld dial-123.isp.com wordt), dan is de gezette ban nog steeds effectief. Bans worden altijd gecontroleerd op echte host EN cloaked host.
Ook IP bans zijn mogelijk (bijv: *!*@128.*) en worden ook altijd gecontroleerd.
Bans op cloaked IPs hebben wat uitleg nodig:
Wanneer een gebruiker het IP 1.2.3.4 heeft, zijn cloaked host zou 341C6CEC.8FC6128B.303AEBC6.IP kunnen zijn.
Wanneer je *!*@341C6CEC.8FC6128B.303AEBC6.IP banned, ban je in feite *!*@1.2.3.4 (vanzelfsprekend...)
Wanneer je *!*@*.8FC6128B.303AEBC6.IP banned, ban je *!*@1.2.3.*
Wanneer je *!*@*.303AEBC6.IP banned, ban je *!*@1.2.*
Deze informatie is wellicht hulpzaam wanneer je wilt bepalen hoe ver een ban moet gaan.
Uitgebreide bantypes
Uitgebreide bans zien eruit als ~[!]<type>:<stuff>. Op dit moment zijn de volgende mogelijkheden bescikbaar:

type: | naam | uitleg:
~q | stilte | Mensen die voldoen aan deze ban kunnen het kanaal joinen, maar kunnen niet spreken, tenzij ze +v of hoger hebben. Bijv: ~q:*!*@blah.blah.com
~n | naamsverandering | Mensen die voldoen aan deze ban kunnen hun naam niet veranderen, tenzij ze +v of hoger hebben. Bijv: ~n:*!*@*.aol.com
~c | [prefix]kanaal | Wanneer de gebruiker in het betreffende kanaal zit, kan hij/zij niet joinen. Een voorvoegsel kan tevens gebruikt worden (+/%/@/&/~) wat erop neer komt dat wanneer de gebruiker bepaalde rechten (of hoger) in het kanaal heeft, hij/zij niet kan joinen Bijv: +b ~c:#lamers, +e ~c:@#trusted
~r | echte naam | Wanneer de echte naam van de gebruiker hieraan voldoet, kan hij/zij niet joinen. Bijv: ~r:*Stupid_bot_script* Opmerking: een underscore ('_') geldt voor een spatie (' ') en een underscore ('_'), dus deze ban werkt tevens als 'Stupid bot script v1.4'.

Deze bantypes worden ook ondersteund in de kanaal exceptie lijst (+e).
Modules kunnen ook andere uitgebreide ban types toevoegen.

3.14 - Spamfilter

Spamfilter is een nieuw systeem om tegen spam, adverteren, worms en andere dingen te vechten. Het werkt ongeveer zoals het "badword" systeem, maar met enkele voordelen.

Spamfilters worden toegevoegd door het /spamfilter commando, wat de volgende syntax gebruikt:
/spamfilter [add|del|remove|+|-] [type] [action] [tkltime] [reason] [regex]

[type] | Specificeert het doel type:
Teken: | Heeft nut op: | Beschrijving:
c | kanaal | Kanaal bericht
p | prive | Prive bericht (user->user)
n | prive-notice | Prive notice
N | kanaal-notice | Kanaal notice
P | part | Part reden
q | quit | Quit reden
d | dcc | DCC bestandsnaam
a | away | Away bericht
t | topic | Een topic instellen
u | gebruiker | gebruikersban ban, zal gecontroleerd worden tegen nick!user@host:realname
Je kan meerdere doelen opgeven, zoals: cpNn
[action] | Specificeert de te ondernemen actie (slechts 1 action is mogelijk)
kill | killt de gebruiker
tempshun | shuns de huidige sessie van de gebruiker (wanneer hij/zij opnieuw verbindt, is de shun weg)
shun | zet een shun op de host
kline | zet een kline op de host
gline | zet een gline op de host
zline | zet een zline op de host
gzline | zet een gzline (global zline) op de host
block | blokkeer het bericht enkel
dccblock | markeer de gebruiker zodat hij/zij geen DCCs kan verzenden
viruschan | part alle kanalen, join set::spamfilter::virus-help-channel, maak alle commando's behalve PONG, ADMIN en berichten/notices gericht aan set::spamfilter::virus-help-channel onbruikbaar
[tkltime] | De duur van een *line/shun toegevoegd door het filter, gebruik '-' om de standaardwaarde te gebruiken (bijv: wanneer action = 'block')
[reason] | Block/*line/shun reden.. Je kunt GEEN spaties hierin gebruiken, maar een underscore ('_') zal een spatie worden zodra het uitgevoerd wordt. Een dubbele underscore ('__') zal een underscore ('_') worden. Weer, gebruik '-' voor de standaard reden.
[regex] | Dit is de echte regex of "bad word" waarop we actie willen ondernemen

Hier is een voorbeeld: /spamfilter add pc gline - - Come watch me on my webcam
Wanneer de tekstcome watch me on my webcam gevonden wordt in of een prive bericht, of een kanaal bericht, wordt deze geblokkeerd en een gline zal meteen gezet worden.
Nog een voorbeeld: /spamfilter add pc block - - come to irc\..+\..+
Dit is een regex dat voldoet aan Hi, come to irc.blah.net etc...
Nu een voorbeeld met een gespecificeerde tijd/reden:
/spamfilter add p gline 3h Please_go_to_www.viruscan.xx/nicepage/virus=blah Come watch me on my webcam
Wanner come watch me on my webcam gevonden wordt in een prive bericht, zal de gebruiker voor 3 uur een gline krijgen met de reden Please go to www.viruscan.xx/nicepage/virus=blah.
Spamfilters toegevoerd met behulp van /spamfilter gelden op het gehele netwerk. Ze werken altijd, of een gebruiker of kanaal nu modus +G heeft of niet. Alleen opers en U:Lines (Services) vormen een uitzondering.

Je kan ook spamfilters in het configuratiebestand toevoegen, maar deze werken alleen lokaal (niet over het gehele netwerk, hoewel je hiervoor remote includes ("van afstand ingeladen") kunt gebruiken). De syntax van deze spamfilter { } blokken worden hier uitgelegd
Voorbeeld:

    spamfilter {
    	regex "//write \$decode\(.+\|.+load -rs";
    	target { private; channel; };
    	reason "Generic $decode exploit";
    	action block;
    };

set::spamfilter::ban-time geeft je de mogelijkheid om de standaardtijd voor *lines/shuns aan te passen (standaard: 1 day)
set::spamfilter::ban-reason geeft je de mogelijkheid een standaardreden op te geven (standaard: 'Spam/advertising')
set::spamfilter::virus-help-channel geeft je de mogelijkheid een kanaal te specificeren dat gejoined wordt door 'viruschan' (standaard: #help)
set::spamfilter::virus-help-channel-deny geeft je de mogelijkheid om normale joins in virus-help-channel te blokkeren (standaard: no)

3.15 - CIDR

UnrealIRCD geeft je nu ook de mogelijkheid om IP reeksen te bannen, door middel van CIDR (Classess Interdomain Routing). IPs worden door ISPs uitgedeeld door middel van CIRD. Dit geeft je de mogelijkheid om heel makkelijk een ISP te bannen. CIDR wordt ondersteund voor zowel IPv4 als IPv6. CIDR masks zijn toegestaan in allow::ip, ban user::mask, ban ip::mask, except ban::mask except throttle::mask, en except tkl::mask (for gzline, gline en shun). Tevens kan CIDR gebruikt worden met /kline, /gline, /zline, /gzline en shun. UnrealIRCd gebruikt de standaard syntax van IP/bits, zoals 127.0.0.0/8 (komt overeen met 127.0.0.0 - 127.255.255.255), en fe80:0:0:123::/64 (komt overeen met fe80:0:0:123:0:0:0:0 - fe80:0:0:123:ffff:ffff:ffff:ffff).

3.16 - Nick Character Sets

UnrealIRCd geeft je nu ook de mogelijkheid om te specificeren welke charsets/talen gebruikt morgen worden in namen. Dit doe je door middel van set::allowed-nickchars.
Een tabel met alle mogelijke keuzes:

Naam: | Beschrijving: | Character set/encoding:
catalan | Catalaanse letters | iso8859-1 (latin1)
danish | Deense letters | iso8859-1 (latin1)
dutch | Nederlandse letters | iso8859-1 (latin1)
french | Franse letters | iso8859-1 (latin1)
german | Duitse letters | iso8859-1 (latin1)
swiss-german | Zweeds-Duitse letters (geen es-zett) | iso8859-1 (latin1)
icelandic | IJslandse letters | iso8859-1 (latin1)
italian | Italiaanse letters/td> | iso8859-1 (latin1)
spanish | Spaanse letters | iso8859-1 (latin1)
swedish | Zweedse letters | iso8859-1 (latin1)
latin1 | Catalaanse, Deense, Nederlandse, Franse, Duitse, Zweeds-Duitse, Spaanse, IJslandse, Italiaanse en Zweedse letters | iso8859-1 (latin1)
hungarian | Hongaarse letters | iso8859-2 (latin2), windows-1250
polish | Poolse letters | iso8859-2 (latin2)
romanian | Roemeense letters | iso8859-2 (latin2), windows-1250, iso8859-16
latin2 | Hongaarse, Poolse en Roemeense | iso8859-2 (latin2)
polish-w1250 | Poolse letters, Windows variant (helaas meer voorkomend dan iso) | windows-1250
slovak-w1250 | Slowaakse letters, Windows variant | windows-1250
czech-w1250 | Tsjechisch characters, Windows variant | windows-1250
windows-1250 | polish-w1250, slovak-w1250, czech-w1250, Hongaars, Roemeens | windows-1250
greek | Griekse letters | iso8859-7
turkish | Turkse letters | iso8859-9
russian-w1251 | Russische letters | windows-1251
belarussian-w1251 | Wit-Russische letters | windows-1251
ukrainian-w1251 | Oekrainse letters | windows-1251
windows-1251 | russian-w1251, belarussian-w1251, ukrainian-w1251 | windows-1251
hebrew | Hebreeuwse letters | iso8859-8-I/windows-1255
chinese-simp | Vereenvoudigd Chinees | Multibyte: GBK/GB2312
chinese-trad | Traditioneel Chinees | Multibyte: GBK
chinese-ja | Japans Hiragana/Pinyin | Multibyte: GBK
chinese | Chinese-* | Multibyte: GBK
gbk | Chinese-* | Multibyte: GBK

Opmerking 1: Let op dat het combineren voor problemen kan zorgen. Bijvoorbeeld het mengen van latin* en chinese-* kan niet goed afgehandeld worden door de IRCd en Unreal zal dan ook een error geven. Het door elkaar gebruiken van andere charsets kan voor problemen worden. UnrealIRCd zal hierom een waarschuwing weergeven wanneer je latin1/latin2/greek/en andere tegenstelde charsets wilt gebruiken.

Opmerking 2: Het herkennen van kleine en grote letters wordt gedaan volgens het US-ASCII systeem. Dit Betekent dat o" en O" niet als dezelfde letter herkend wordt. Daarom kan iemand de naam B"ar hebben, en iemand anders de naam BA"r. Dit is een limitatie van het huidige systeem, en kan op dit moment niet opgelost worden. Let hier goed op. Merk op dat deze limitatie altijd al geeft gegolden voor de namen van kanalen, waarin bijna alle letters zijn toegestaan en US-ASCII altijd is uitgevoerd.

Opmerking 3: De basis letters (a-z A-Z 0-9 [ \ ] ^ _ - { | }) zijn altijd toegestaan.

Voorbeeld 1, voor mensen uit West-Europa:

    set { allowed-nickchars { latin1; }; };

Voorbeeld 2, voor wanneer je voornamelijk Chinese gebruikers hebt, en de "normale" chinese letters wil toestaan:

    set { allowed-nickchars { chinese-simp; chinese-trad; }; };

3.17 - CGI:IRC ondersteuning

UnrealIRCd ondersteunt voor CGI:IRC host spoofing, wat inhoudt dat je bepaalde CGI:IRC gateways als "trusted" kan bestempelen, zodat de IRCd overal de echte host/ip van de gebruiker laat zien, in plaats van de CGI:IRC gateway.

Zie het cgiirc block voor informatie over het configureren

3.18 - Tijd Synchronisatie

Heb hebben van de juiste tijd is enorm belangrijk voor IRC servers. Zonder de correcte tijd kunnen channels desynchen, ongeschuldige gebruikers gekilled worden, channels komen niet goed in /LIST, samengevat: grote problemen ontstaan.

UnrealIRCd heeft een ingebouwde tijd synchronisatie ondersteuning. Hoewel deze niet optimaal is (kan nog enkele seconden speling zijn), lost het de meeste tijd-gerelateerde problemen op. Als het mogelijk is, wordt je nog steeds aangeraden een tijdsynchronisatie programma te gebruiken zoals ntpd op *UNIX of de tijdsynchronisatie service van Windows (in dat geval kun je Unreals tijdsynchronisatie uitzetten, meer volgt later).

Wat UnrealIRCd probeert (standaard) is het eenmaling instellen van de tijd wanneer ze gestart wordt. Ze stuurt (standaard) een verzoek naar verschillende tijdservers en wanneer ze het eerste (snelste) antwoord ontvangt, past ze de interne IRCd clock aan (NIET de systeem clock). Als, voor welke reden dan ook, Unreal geen antwoord krijgt van de tijdserver binnen 3 seconden, start ze gewoon op zonder tijdsaanpassing (zal vrijwel nooit gebeuren).

Tijd synchronisatie wordt ingesteld (en kan uitgezet worden) door het set::timesynch block, zie de set documentatie voor meer informatie.

3.19 - Andere mogelijkheden

UnrealIRCd heeft heel veel mogelijkheden, dus niet alles staat beschreven hier... Je vindt het vanzelf wel.

4.0 - Aanpassen van je unrealircd.conf

Ten eerste, het maken van je eerste unrealircd.conf kost tijd (zeg 15 tot 60 minuten). Het maken van een goede kost nog meer tijd. Haast je niet om je IRCd online te krijgen, maar doe alles stap voor stap. Wanneer je tegen problemen aanloopt, controleer je syntax, controleer deze handleiding en de FAQ voordat je hulp zoekt of een bug meldt.

4.1 Configuratie bestand uitgelegd

Het nieuwe systeem gebruikt een indeling op basis van blokken. Elke invoer, of blok, heeft een nieuw en specifiek format. Hieronder een voorbeeld:

    <block-name> <block-value> {
    	<block-directive> <directive-value>;
    };

<block-name> staat voor het type blok, zoals me of admin. <block-value> heeft soms een waarde, zoals bij een /oper login. Andere keren is het een onderverdeling, zoals in ban user

<block-directive> is een individuele, specifieke variabele voor het blok, en <directive-value> is de bijhorende waarde. Wanneer <directive-value> spaties, of tekens die een opmerking voorstellen, bevat, moet het tussen aanhalingstekens (" en ") geplaatst worden. Wanneer je een (") wil gebruiken binnen de string, gebruik dan (\").

Een <block-directive> kan verschillende waardes in zich hebben. Wanneer dat zo is, zullen deze waardes tussen accolades geplaatst worden. Sommige blokken hebben geen waardes, en worden alleen gevolgd door <block-value>, bijvoorbeeld een include. Merk ook op dat er geen vaste indeling is, een blok kan op 1 regel of over verschillende regels verdeeld worden. De indeling hierboven is het meest gebruikelijk (en overzichtelijk).

Opmerking: het configuratiebestand is op dit moment hoofdlettergevoelig, dus BLOCK-NAME is niet hetzelfde als block-name. Er is een speciale manier om aan te duiden hoe iets gebruikt moet worden in het configuratiebestand. In het bovenstaande voorbeeld zeg je bijvoorbeeld <block-name>::<block-directive>. Wanneer er nog een waarde bij hoort, voeg je gewoon nog een :: en de naam van de waarde toe.

Wanneer je spreekt over een waarde zonder naam, doe je <block-name>::. Dit betekent in dit geval <block-value>, of het is een waarde die geen naam heeft.

Drie soorten commentaren worden ondersteund:

# Een-lijns commentaar
// Een-lijnscommentaar
/* Meerdere lijnen
commentaar */

Nu je weet hoe het werkt, kopieer doc/example.conf naar je UnrealIRCd map (bv: /home/user/Unreal3.2) en hernoem het naar unrealircd.conf (OF je maakt een compleet nieuwe unrealircd.conf). Het wordt ten zeerste aangeraden om stap voor stap alle blocken door te werken en de instellingen in je conf. Gebruik deze handleiding als leidraad.

4.2 - Me Block BENODIGD (Dit was de M:Line)

Syntax:

    me {
    	name <name-of-server>;
    	info <server-description>;
    	numeric <server-numeric>;
    };

De waardes zijn nogal duidelijk. De naam staat voor de naam van de server, info staat voor de informatie lijn van de server, numeric staat voor de numerieke representatie van de server. Dit moet een waarde tussen 0 en 254 zijn, die UNIEK is. Dit betekent dat geen enkele server in je netwerk dezelfde numeric mag hebben.

Voorbeeld:

    me {
    	name "irc.foonet.com";
    	info "FooNet Server";
    	numeric 1;
    };

4.3 - Admin Block BENODIGD (Dit was de A:Line)

Syntax:

    admin {
    	<text-line>;
    	<text-line>;
    };

Het admin blok vormt de tekst afgebeeld in een /admin commando. Je kan zoveel regels opgeven als je wilt, en ze kunnen bevatten wat je wilt. Het is echter standaard om de naam en het email adres van de admin als minimun te gebruiken.

Voorbeeld:

    admin {
    	"Bob Smith";
    	"bob";
    	"widely@used.name";
    };

4.4 - Class Block BENODIGD (Dit was de Y:Line)

Syntax:

    class <name> {
    	pingfreq <ping-frequency>;
    	connfreq <connect-frequency>;
    	maxclients <maximum-clients>;
    	sendq <send-queue>;
    	recvq <recv-queue>;
    };

Class blokken zijn klassen waarin connections geplaatst worden (bijvoorbeeld vanuit allow blocks, of servers vanuit link blocks). Normaal gesproken heb je meerdere class blocks (bijv: voor servers, gebruikers en opers).

name is de naam van de class, bijvoorbeeld "clients" of "servers". Deze naam wordt gebruikt om deze class aan te duiden in allow/link/oper/etc blocks.

pingfreq is het aantal seconden tussen PINGs van de server (een waarde tussen 90 en 180 wordt aangeraden).

connfreq wordt alleen gebruikt voor servers en is het aantal seconden tussen het proberen te verbinden, wanneer autoconnect aan staat.

maxclients stelt het maximale (totale) aantal van clients/servers in deze class in.

sendq stelt de grootte van data dat in de send queue mag zijn (zeer hoog voor servers met lage bandwidth, gemiddeld voor gebruikers).

recvq stelt de grootte van data dat in de receive queue mag zijn en wordt gebruikt voor flood-controle (alleen van toepassing op gewone gebruikers, probeer waardes tussen 3000 en 8000. 8000 is de standaardwaarde).

Voorbeelden:

    class clients {
    	pingfreq 90;
    	maxclients 500;
    	sendq 100000;
    	recvq 8000;
    };

    class servers{
    	pingfreq 90;
    	maxclients 10; /* Maximaal aantal servers dat we tegelijk gelinkt kunnnen hebben */
    	sendq 1000000;
    	connfreq 100; /* Hoeveel seconden tussen elke poging om een verbinding te maken */
    };

4.5 - Allow Block BENODIGD (Dit was de I:Line)

Syntax:

    allow {
    	ip <user@ip-connection-mask>;
    	hostname <user@host-connection-mask>;
    	class <connection-class>;
    	password <connection-password> { <auth-type>; };
    	maxperip <max-connections-per-ip>;
    	redirect-server <server-to-forward-to>;
    	redirect-port <port-to-forward-to>;
    	options {
    		<option>;
    		<option>;
    		...
    	};
    };

Door middel van een allow class geef je aan wie er allemaal een connectie mag maken met je server. Je mag meerdere allow blocks hebben.

Matches
De toegangscontrole werkt als volgt: ip komt OF host komt overeen, dus "hostname *@*"; en "ip *@1.2.3.4" betekent dat er altijd een overeenkomst is. Tevens worden de allow blocks van boven naar beneden gelezen, dus je moet de specifieke host/IP allow blocks NA je algemene *@* allow block plaatsen. Wanneer je een allow block wilt dat alleen werkt met een overeenkomstig IP, stel hostname dan in als iets ongeldigs zoals "hostname NOBODY;".

ip
De vorm van de IP mask is user@ip. User is de ident, meestal wordt * gebruikt. IP is de IPmask. Enkele voorbeelden: *@* (iedereen), *@192.168.* (alleen vanaf IPs startende met 192.168), etc.

host
Ook weer een user@host mask. Voor user wordt meestal * gebruikt. Enkele voorbeelden: *@* (iedereen), *@*.planet.nl (alleen vanaf planet.nl).

password (optioneel)
Er is een wachtwoord nodig om een verbinding te maken. Je kan ook een wachtwoord met encryptie gebruiken.

class
De naam van de class waarin de connectie thuis hoort.

maxperip (optioneel, maar wordt aangeraden)
Je kunt een maximaal aantal connecties per IP instellen (bijv. maxperip 4;)

redirect-server (optioneel)
Wanneer de class vol is, worden de gebruikers naar deze server gestuurd (wanneer het programma het ondersteunt [mIRC 6+ does]).

redirect-port (optioneel)
Wanneer je een redirect-server hebt opgegeven, kun je ook een aparte poort opgeven. Wanneer je dit veld leeg laat, wordt poort 6667 genomen.

options block (optional)
geldige opties zijn::
useip laat altijd het IP zien in plaats van de hostnaam
noident gebruik geen ident maar gebruik de gebruikersnaam van de client
ssl alleen geldig wanneer de gebruiker een connectie via SSL gebruikt
nopasscont ga door met controle wanneer geen wachtwoord opgegeven is (zodat je gebruikers in speciale classes kan stoppen wanneer ze wel een wachtwoord geven).

Voorbeelden:

    allow {
    	ip *;
    	hostname *;
    	class clients;
    	maxperip 5;
    };

    allow {
    	ip *@*;
    	hostname *@*.passworded.ugly.people;
    	class clients;
    	password "f00Ness";
    	maxperip 1;
    };

4.6 - Listen Block BENODIGD (Dit was de P:Line)

Syntax:

    listen <ip:port> {
    	options {
    		<option>;
    		<option>;
    		...
    	};
    };

Dit blok geeft je de mogelijkheid in te stellen op welke poorten de IRCd moet luisteren. Wanneer geen opties nodig zijn, hoef je geen andere waardes te gebruiken. Je kan dan gewoon "listen <ip:port>;" gebruiken.

ip and port
Je kan het IP instellen als *, zodat er op beschikbare IPs geluisterd wordt. Of je geeft 1 IP op (meestal nodig bij shell providers). De poort is de poort waarop geluisterd moet worden. Je kan ook een poortreeks opgeven. Bijvoorbeeld 6660-6669 zal luisteren op de poorten 6660 tot en met 6669. IPv6 gebruikers, zie lager.

Info for IPv6 users
Wanneer je een server met IPv6 ondersteuning hebt, moet je het IP insluiten in haken. zoals [::1]:66667 (luister op localhost op poort 6667). Wanneer je IPv6 gebruikt en je wilt luisteren op een bepaald IPv4 address, moet je ::ffff:IPv4IP gebruiken. Bijvoorbeeld: [::ffff:203.123.67.1]:6667. Dit zorgt ervoor dat je IRCd luistert op 203.123.67.1 op poort 6667. Natuurlijk kun je ook gewoon * gebruiken.

options block (optional)
Je kan ook speciale opties opgeven met betrekking tot de poort. Geldige opties zijn:

clientsonly | poort kan alleen gebruikt worden door gebruikers
serversonly | poort kan alleen gebruikt worden door servers
java | CR javachat ondersteuning
ssl | SSL encrypted poort

Voorbeelden:

    listen *:6601 {
    	options {
    		ssl;
    		clientsonly;
    	};
    };

Of wanneer er geen opties zijn:

listen *:8067;
listen 213.12.31.126:6667;
listen *:6660-6669;

4.7 - Oper Block AANBEVOLEN (Dit was de O:Line)

    oper <name> {
    	from {
    		userhost <hostmask>;
    		userhost <hostmask>;
    	};
    	password <password> { <auth-type>; };
    	class <class-name>;
    	flags <flags>;
    	flags {
    		<flag>;
    		<flag>;
    		...
    	};
    	swhois <whois info>;
    	snomask <snomask>;
    	modes <modes>;
    	maxlogins <num>;
    };

Het oper block geeft je de mogelijkheid om IRC Operators aan te duiden voor je server. De oper:: geeft de inlog naam voor /oper. De oper::from::userhost is een user@host mask welke de gebruiker moet matchen. Je kan meerdere hostmasks opgeven door meerdere opers::from::userhost toe te voegen. De oper::password> is het wachtwoord van de gebruiker. oper::password:: geeft je de mogelijkheid om een authenticatie-methode op te geven voor het betreffende wachtwoord. Wanneer je een tekst-wachtwoord wilt gebruiken, laat je oper::password:: weg.

Merk op dat zowel de loginnaam als het wachtwoord hoofdlettergevoelig zijn.

oper::class zegt in welke class een oper zich bevindt. Deze class moet boven het oper block zelf staan.

oper::flags heeft 2 verschillende indelingen. Wanneer je de oude manier wilt gebruiken, bijvoorbeeld OAa, gebruik je de flags <flags> methode. Wanneer je de nieuwe manier wilt gebruiken, bijvoorbeeld services-admin, dan moet je de flags { <flag>; } methode gebruiken. Hieronder volgt een lijst met alle mogelijke flags, in beide methodes, en wat ze doen.

Oude Flag | Nieuwe Flag | Beschrijving
o | local | Maakt je een lokale Operator
O | global | Maakt je een globale Operator
C | coadmin | Maakt je een Co-Admin
A | admin | Maakt je een Admin
a | services-admin | Maakt je een Services Admin
N | netadmin | Maakt je een Netwerk Admin
r | can_rehash | Je mag /rehash gebruiken
D | can_die | Je mag /die gebruiken
R | can_restart | Je mag /restart gebruiken
h | helpop | Je krijgt de gebruikersmodus +h (Helpop)
w | can_wallops | Je kan een /wallops zenden
g | can_globops | Je kan een /globops zenden
c | can_localroute | Je kan lokale servers laten verbinden
L | can_globalroute | Je kan globale servers laten verbinden
k | can_localkill | Je kan een /kill uitoefenen op lokale gebruikers
K | can_globalkill | Je kan een /kill uitoefenen op globale gebruikers
b | can_kline | Je kan /kline gebruiken
B | can_unkline | Je kan /kline -user@host gebruiken
n | can_localnotice | Je kan lokale server berichten zenden
G | can_globalnotice | Je kan globale server berichten zenden
z | can_zline | Je kan /zline gebruiken
t | can_gkline | Je kan /gline, /shun en /spamfilter gebruiken
Z | can_gzline | Je kan /gzline gebruiken
W | get_umodew | Je krijgt gebruikersmodus +W wanneer je /oper doet
H | get_host | Je krijgt de speciale oper host
v | can_override | Je kan OperOverride gebruiken
q | can_setq | Je kan gebruikersmodus +q gebruiken
X | can_addline | Je kan /addline gebruiken
d | can_dccdeny | Je kan /dccdeny en /undccdeny gebruiken

Bepaalde flags geven je standaard ook andere flags:

local | global | admin/coadmin | services-admin | netadmin
can_rehash | can_rehash | can_rehash | can_rehash | can_rehash
helpop | helpop | helpop | helpop | helpop
can_globops | can_globops | can_globops | can_globops | can_globops
can_wallops | can_wallops | can_wallops | can_wallops | can_wallops
can_localroute | can_localroute | can_localroute | can_localroute | can_localroute
can_localkill | can_localkill | can_localkill | can_localkill | can_localkill
can_kline | can_kline | can_kline | can_kline | can_kline
can_unkline | can_unkline | can_unkline | can_unkline | can_unkline
can_localnotice | can_localnotice | can_localnotice | can_localnotice | can_localnotice
| can_globalroute | can_globalroute | can_globalroute | can_globalroute
| can_globalkill | can_globalkill | can_globalkill | can_globalkill
| can_globalnotice | can_globalnotice | can_globalnotice | can_globalnotice
|  | global | global | global
|  | can_dccdeny | can_dccdeny | can_dccdeny
|  |  | can_setq | can_setq
|  |  |  | admin
|  |  |  | services-admin

oper::swhois geeft je de mogelijkheid een extra regel to the voegen aan de whois van de betreefende oper [optioneel]

oper::snomask geeft je de mogelijkheid in te stellen welke server berichten een oper automatisch ontvangt wanneer hij /oper doet. Voor een lijst van de snomasks, zie Sectie 3.3 [optioneel]

oper::modes geeft je de mogelijkheid een oper verschillende modi te geven wanneer hij /oper doet. [optioneel]

oper::maxlogins limiteert het aantal logins van de betreffende oper. Wanneer je dit bijvoorbeeld op 1 zet, kan maar 1 persoon oper zijn via dit blok. [optioneel]

Voorbeeld:

    oper bobsmith {
    	class clients;
    	from {
    		userhost bob@smithco.com;
    		userhost boblaptop@somedialupisp.com;
    	};
    	password "f00";
    	flags {
    		netadmin;
    		can_gkline;
    		can_gzline;
    		can_zline;
    		can_restart;
    		can_die;
    		global;
    	};
    	swhois "Voorbeeld van een whois mask";
    	snomask frebWqFv;
    };

Wat informatie over OperOverride:
OperOverride geeft je de mogelijkheid om bijvoorbeeld een +ikl kanaal te joinen, om bans te omzeilen (je moet jezelf wel eerst /invite'n), jezelf oppen in een kanaal, etc.
De can_override flag is toegevoegd om te proberen het oper-misbruik te stoppen. Geen enkele oper kan standaard overriden, je moet ze dus expliciet de can_override flag geven.

4.8 - DRpass Block AANBEVOLEN (Dit was de X:Line)

Syntax:

    drpass {
    	restart <restart-password> { <auth-type>; };
    	die <die-password> { <auth-type>; };
    };

Dit blok zet de benodigde wachtwoorden voor /restart en /die. drpass::restart:: en ::drpass:die:: geven je de mogelijkheid om een authenticatie methode op te geven. crypt, md5, sha1 en ripemd-160 worden ondersteund.

Voorbeeld:

    drpass {
    	restart "I-love-to-restart";
    	die "die-you-stupid";
    };

4.9 - Include Directive

Syntax:
include <file-name>;

Hiermee kun je externe configuratiebestanden laden. Het bestand mag elk type blok bevatten, en mag ook andere bestanden laden. Wildcards zijn ook toegestaan, zodat je meerdere bestanden tegelijk kan laden.

Voorbeeld 1: een netwerk bestand

    include mynetwork.network;

Dit heb je nodig wanneer je een apart netwerk bestand wilt gebruiken. Deze is echter niet meer nodig, je kan alle informatie nu gewoon in unrealircd.conf plaatsen.

Voorbeeld 2: aliases

    include aliases/ircservices.conf

Nog een voorbeeld is deze manier om alias blocks te laden. UnrealIRCd wordt geleverd met enkele bestanden welke de juiste aliases voor de meeste services bezitten:

- aliases/ircservices.conf (IRCServices, Daylight)
- aliases/epona.conf (Epona)
- aliases/anope.conf (Anope)
- aliases/auspice.conf (Auspice)
- aliases/generic.conf (Magick, Sirius, Wrecked)
- aliases/cygnus.conf (Cygnus)
- aliases/operstats.conf (OperStats)
- aliases/genericstats.conf (GeoStats, NeoStats)

4.10 - LoadModule Directive BENODIGD

Syntax:
loadmodule <file-name>;

Kijk hier waarom modules handig zijn.

Modules die standaard bij Unreal3.2 geleverd worden:

commands.so / commands.dll - Alle / commando's (nou, nog niet alle, maar binnenkort wel) BENODIGD
cloak.so / cloak.dll - Cloaking module BENODIGD (of een andere cloaking module)

Je moet deze modules laden:

    loadmodule "src/modules/commands.so";
    loadmodule "src/modules/cloak.so";

of voor Windows:

    loadmodule "modules/commands.dll";
    loadmodule "modules/cloak.dll";

4.11 - Log Block AANBEVOLEN

Syntax:

    log <file-name> {
    	maxsize <max-file-size>;
    	flags {
    		<flag>;
    		<flag>;
    		...
    	};
    };

Het log blok geeft je de mogelijkheid om verschillende dingen naar verschillende logbestanden weg te schrijven. log:: bevat de naam van het bestand. log::maxsize is optioneel. Het geeft je de mogelijkheid aan te geven hoe groot een logbestand maximaal mag worden. Je kan hier een afkorting gebruiken, MB voor megabytes, KB voor kilobytes, GB voor gigabytes. De log::flags geven aan welke gebeurtenissen gelogd moeten worden. Zie de lijst hier beneden

Je mag ook verschillende log blokken hebben, om verschillende dingen op te slaan in verschillende logbestanden.

Beschikbare flags:

errors | logt errors
kills | logt /kill berichten
tkl | logt informatie over *lines, shuns en spamfilters (toevoegen/verwijderen/verlopen)
connects | logt gebruikers die verbinding maken/verbreken
server-connects | logt server verbindingen/verbrekingen
kline | logt het gebruik van /kline
oper | logt /oper pogingen (succesvolle en mislukte)
sadmin-commands | logt het gebruik van /sa* (samode, sajoin, sapart, etc.)
chg-commands | logt het gebruik van /chg* (chghost, chgname, chgident, etc.)
oper-override | logt het gebruik van operoverride
spamfilter | logt spamfilter matches

Voorbeeld:

    log ircd.log {
    	maxsize 5MB;
    	flags {
    		errors;
    		kills;
    		oper;
    		kline;
    		tkl;
    	};
    };

4.12 - TLD Block OPTIONEEL (Dit was de T:Line)

Syntax:

    tld {
    	mask <hostmask>;
    	motd <motd-file>;
    	rules <rules-file>;
    	shortmotd <shortmotd-file>;
    	opermotd <opermotd-file>;
    	botmotd <botmotd-file>;
    	channel <channel-name>;
    	options {
    		ssl;
    	}
    };

Het TLD blok geeft je de mogelijkheid om een MOTD, rules en kanaal op te geven voor een gebruiker op basis van zijn/haar host. Dit is handig wanneer je MOTDs in verschillende talen wilt gebruiken. De tld::mask is een user@host mask welke de gebruiker moet matchen. De tld::motd, tld::shortmotd, tld::opermotd, tld::botmotd en tld::rules specificeren de motd, shortmotd, opermotd, botmotd en rules bestand welke gebruikt moeten worden voor een bepaalde host. De tld::shortmotd, tld::opermotd en tld::botmotd zijn optioneel. tld::channel is tevens optioneel. Het geeft je de mogelijkheid een gebruiker een kanaal te laten joinen wanneer hij/zij verbinding maakt met je server. Wanneer deze bestaat, zal het standaard auto-join kanaal overschreven worden. Het tld::options blok geeft je de mogelijkheid om extra benodigdheden op te stellen. Op dit moment kun je tld::options::ssl, voor die gebruik maken van een SSL connectie, en tld::options::remote, voor mensen die van een andere server de MOTD vragen, gebruiken.

TLD blokken worden van onder naar boven gelezen.

Voorbeeld:

    tld {
    	mask *@*.fr;
    	motd "ircd.motd.fr";
    	rules "ircd.rules.fr";
    };

4.13 - Ban Nick Block OPTIONEEL (Dit was de Q:Line)

Syntax:

    ban nick {

    	mask <nickname>;
    	reason <reason-for-ban>;
    };

Het ban nick blok zorgt ervoor dat een bepaalde naam niet gebruikt mag worden op de server. Wildcards zijn toegestaan in de ban::mask, om meerdere namen in te stellen. ban::reason geeft je de mogelijkheid om een reden te gebruiken. Meestal wordt dit block gebruikt om de namen van meest gebruikte Services te beschermen.

Voorbeeld:

    ban nick {
    	mask "*C*h*a*n*S*e*r*v*";
    	reason "Gereserveerd voor Services";
    };

4.14 - Ban User Block OPTIONEEL (Dit was de K:Line)

Syntax:

    ban user {
    	mask <hostmask>;
    	reason <reason-for-ban>;
    };

Dit blok zorgt ervoor dat je een user@host kan beletten tot het verbinden met de server. Wildcards zijn toegestaan in ban::mask, en ban::reason is de reden tot de ban. Let op; dit is alleen lokaal, dus de gebruiker kan nog wel verbinden met een server elders in het netwerk.

Voorbeeld:

    ban user {
    	mask *tirc@*.saturn.bbn.com;
    	reason "Idiot";
    };

4.15 - Ban IP Block OPTIONEEL (Dit was de Z:Line)

Syntax:

    ban ip {
    	mask <ipmask>;
    	reason <reason-for-ban>;
    };

Dit blok zorgt ervoor dat je een bepaald IP kan beletten tot het verbinden met de server. Gebruikers en servers zijn hierbij inbegrepen. ban::mask bevat het IP dat je wil bannen, wildcards zijn toegestaan. ban::reason is de reden. Omdat deze ban ook betrekking heeft op servers, moet je voorzichtig zijn met het gebruik ervan.

Voorbeeld:

    ban ip {
    	mask 192.168.1.*;
    	reason "Get a real ip u lamer!";
    };

4.16 - Ban Server Block OPTIONEEL (Dit was de q:Line)

Syntax:

    ban server {
    	mask <server-name>;
    	reason <reason-for-ban>;
    };

Dit blok zorgt ervoor dat een server niet meer kan verbinden met het netwerk. Wanneer de server naar jouw server linkt, zal de connectie geweigerd worden. Wanneer de server naar een andere server in het netwerk linkt, zal de lokale server de verbinding met het netwerk verbreken. ban::server is de naam van de server die je wil bannen, wildcards zijn toegestaan. ban::reason is de reden van plaatsing.

Voorbeeld:

    ban server {
    	mask broken.server.my.network.com;
    	reason "Its broken!";
    };

4.17 - Ban RealName Block OPTIONEEL (Dit was de n:Line)

Syntax:

    ban realname {
    	mask <realname-mask>;
    	reason <reason-for-ban>;
    };

Het ban realname blok geeft je de mogelijkheid om een gebruiker te bannen op basis van zijn/haar GECOS (realname, echte naam). Dit is bruikbaar om clone floods te stoppen, omdat clones meestal dezelfde realname gebruiken. ban::mask is de realname die je wil bannen, wildcards zijn toegestaan. ban::reason is de reden.

Voorbeeld:

    ban realname {
    	mask "Bob*";
    	reason "Bob sucks!";
    };

4.18 - Ban Version Block OPTIONEEL

Syntax:

    ban version {
    	mask <version-mask>;
    	reason <reason-for-ban>;
    	action [kill|tempshun|shun|kline|zline|gline|gzline];
    };

Dit blok zorgt ervoor dat je een gebruiker op basis van het IRC programma kan bannen. Het vraagt de CTCP version van de gebruiker, en controleert dan of deze is toegestaan. Wanneer een gebruiker geen CTCP version antwoord heeft, zal de ban niet werken. Dit blok geeft je alleen de mogelijkheid om boosaardige scripts te bannen. ban::mask is de versie die je wil bannen, wildcards zijn toegestaan. ban::Reason is de reden. Je kan ook een actie die ondernomen moet worden instellen, door middel van ban::action. Een kill is de standaardwaarde. tempshun zal de gebruiker alleen deze verbinding /shun'n, wat zeer effectief is zombies/bots met dynamische IPs omdat het geen onschuldige gebruikers zal schaden. shun/kline/zline/gline/gzline zal een ban plaatsen van het opgegeven type op het IP (*@IP). De duur van deze bans kan ingesteld worden door set::ban-version-tkl-time. De standaardwaarde is 1 day.

Voorbeeld:

    ban version {
    	mask "*SomeLameScript*";
    	reason "SomeLameScript contains backdoors";
    };

    ban version {
    	mask "*w00tZombie*";
    	reason "I hate those hundreds of zombies";
    	action zline;
    };

4.19 - Ban Exceptions Block OPTIONEEL (Dit was de E:Line)

Syntax:

    except ban {
    	mask <hostmask>;
    };

Door middel van dit blok kun je een user@host opgeven, welke een ban zal overslaan. Dit is handig wanneer je een ISP wilt bannen, maar enkele gebruikers nog steeds op je netwerk wil toestaan. except::mask bevat de user@host van de gebruiker die je niet wil bannen.

Voorbeeld:

    except ban {
    	mask myident@my.isp.com;
    };

4.20 - TKL Exceptions Block OPTIONEEL

Syntax:

    except tkl {
    	mask <hostmask>;
    	type <type>;
    	type {
    		<type>;
    		<type>;
    		...
    	};
    };

Dit blok zorgt ervoor dat de user@host een tkl ban op een bredere host zal overslaan. Dit is handig wanneer je een ISP wil bannen, maar enkele gebruikers nog steeds op je netwerk wil toestaan. except::mask is de user@host die je wil toestaan. except::type is het type ban dat je wil overslaan. Geldige types zijn gline, gzline, qline, gqline en shun (Glines, Global Zlines, Qlines, Global Qlines, shuns). Wanneer je het formaat { } gebruikt, zijn meerdere types toegestaan.

Voorbeeld:

    except tkl {
    	mask myident@my.isp.com;
    	type gline;
    };

4.21 - Throttle Exceptions Block OPTIONEEL

Syntax:

    except throttle {
    	mask <ipmask>;
    };

Met dit blok kun je een IP mask instellen dat het throttling systeem zal overslaan. Het werkt alleen wanneer je throttling ingeschakeld hebt. except::mask bevat het IP dat niet gebanned moet worden.

Voorbeeld

    except throttle {
    	mask 192.168.1.*;
    };

4.22 - Deny DCC Block OPTIONEEL (Dit was dccdeny.conf)

Syntax:

    deny dcc {
    	filename <file-to-block>;
    	reason <reason-for-ban>;
    	soft [yes|no];
    };

Door middel van dit blok kun je instellen welke bestandsnamen niet verzonden mogen worden via DCC over de server. Dit is zeer effectief om de verspreiding van trojans en virii te stoppen.

deny::filename geeft aan welke bestandsnaam niet is toegestaan. Wildcards hierin zijn toegestaan. deny::reason is de reden tot het blokkeren.

Er is ook een deny::soft optie; wanneer deze op ýes' staat, wordt de DCC geblokkeerd, tenzij de gebruiker het expliciet toelaat door middel van /DCCALLOW +naam-van-degene-die-zendt. Zie dccallow.conf voor een goede voorbeeld configuratie.

Voorbeeld

    deny dcc {
    	filename virus.exe;
    	reason "This is a GD Virus";
    };

    deny dcc {
    	filename "*.exe";
    	reason "Executable content";
    	soft yes;
    };

4.23 - Deny Version Block OPTIONEEL (Dit was de V:Line)

Syntax:

    deny version {
    	mask <server-name>;
    	version <version-number>;
    	flags <compile-flags>;
    };

Dit blok geeft je de mogelijkheid om een server te blokkeren, op basis van de versie die de server draait of welke compile opties gebruikt zijn. Het formaat is misschien een beetje moeilijk, maar makkelijk te snappen. deny::mask is een wildcard op de naam van de server die niet mag linken. deny::version is de protocol-versie die geweigerd moet worden.

Als voorbeeld, 3.0 is 2302, 3.1.1/3.1.2 is 2302 en 3.2 is 2303. Het eerste teken van deze parameter mag >, <, =, of ! zijn. Dit eerste teken zegt UnrealIRCd hoe ze moet omgaan met de versie. Als het eerste teken een > is, worden alle versies groter dan de opgegeven versie geweigerd. Wanneer het een < is, worden alle versies lager geweigerd. Wanneer het een = is, wordt alleen die versie geweigerd. Wanneer je een ! opgeeft, worden alle versies behalve deze geweigerd. deny::flags geeft je de mogelijkheid om aan te geven welke flags wel of niet gebruikt mogen zijn ten tijde van het compilen. De flags moeten achter elkaar geplaatst worden, zonder tussenkomst van andere tekens. Wanneer je een ! als voorvoegsel gebruikt, mag de flag niet gebruikt worden. Wanneer je geen ! gebruikt, moet de server deze flag wel bezitten.

4.24 - Deny Link Block OPTIONEEL (Dit was de D/d:Line)

Syntax:

    deny link {
    	mask <server-name>;
    	rule <crule-expression>;
    	type <type-of-denial>;
    };

Dit blok geeft je de mogelijkheid om een server te weigeren aan de hand van enkele voorwaardes. deny::mask is een wildcard op de servernaam waarop de regels betrekking moeten hebben. deny::rule is zeer complex. Je krijgt de mogelijkheid om in groot detail op te geven wat je wil. connected(<servermask>) geeft true wanneer een server verbonden is met een server die servermask matcht. directcon(<servermask>) geeft true wanneer de server, die met servermask matcht, direct verbonden is met deze server. via(<viamask>,<servermask>) geeft true wanneer een server, die met servermask matcht, verbonden is met een server die matcht met viamask. Tenslotte, directop() geeft true wanneer een oper die de /connect heeft gegeven daadwerkelijk op deze server zit. Je kan deze 4 vormen door elkaar gebruiken met behulp van && (and/en) en || (or/of). Je kan ze ook tussen haakjes ( '( )' ) zetten, om groepen te vormen. Wanneer een van de vormen vooraf gegaan wordt door een !, wordt er gecontroleerd of de vorm false is. Wanneer de vorm true geeft, wordt de server geweigerd. deny::type bestaat uit 2 vormen, auto (van toepassing op autoconnects, /connect werkt nog steeds), en all (van toepassing op alle verbindingspogingen).

4.25 - Deny Channel Block OPTIONEEL (Previously known as chrestrict.conf)

Syntax:

    deny channel {
    	channel "<channel-mask>";
    	reason <reason-for-ban>;
    	redirect "<channel-name>";
    	warn [on|off];
    };

Je kan met dit blok instellen dat gebruikers sommige kanalen niet mogen gebruiken. deny::channel is de naam van het kanaal dat geweigerd moet worden, en mag wildcards bevatten. deny::reason is de reden tot het weigeren. Optioneel kun je ook deny::redirect instellen. De gebruiker wordt dan naar dit kanaal gestuurd in plaats van naar deny::channel. deny::warn zal, mits het aangezet is, een bericht zenden naar alle opers (door middel van EYES snomask) wanneer een gebruiker het verboden kanaal wil joinen.

Voorbeeld

    deny channel {
    	channel "#unrealsucks";
    	reason "No it don't!";
    };

    deny channel {
    	channel "#*teen*sex*";
    	reason "You == dead";
    	warn on;
    };

    deny channel {
    	channel "#operhelp";
    	reason "Our network help channel is #help, not #operhelp";
    	redirect "#help";
    };

4.26 - Allow Channel Block OPTIONEEL

Syntax:

    allow channel {
    	channel "<channel-mask>";
    };

Door dit blok geef je gebruikers de mogelijkheid om bepaalde kanalen wel toe te staan. allow::channel is het kanaal dat wel gejoined mag worden, wildcards zijn toegestaan

Voorbeeld:

    allow channel {
    	channel "#something";
    };

4.27 - Allow DCC Block OPTIONEEL

Syntax:

    allow dcc {
    	filename "<filename-mask>";
    	soft [yes|no];
    };

Hiermee kun je uitzonderingen voor het denydcc block instellen. Wildcards zijn toegestaan. Wanneer allow dcc:soft op 'yes' staat, valt het onder 'soft dcc bans'. Wanneer het op 'no' staat, valt het onder de normale ('hard') dcc bans.

Voorbeeld:

    allow dcc {
    	filename "*.jpg"; /* Images are usually safe */
    	soft yes;
    };

4.28 - Vhost Block OPTIONEEL (Dit was vhosts.conf)

Syntax:

    vhost {
    	vhost <vhost>;
    	from {
    		userhost <hostmask>;
    		userhost <hostmask>;
    		...
    	};
    	login <login-name>;
    	password <password> { <auth-type>; };
    	swhois "<swhois info>";
    };

Je kan een inlognaam en wachtwoord opgeven, zodat iemand het /vhost commando kan gebruiken. vhost::vhost kan een user@host zijn, of gewoon een host die de gebruiker zal krijgen wanneer hij met succes /vhost uitvoert. vhost::from::userhost bevat een user@host welke de gebruiker moet matchen om in aanmerking te komen voor deze vhost. Je mag meerdere userhosts invoeren. vhost::login is de inlognaam die gebruikt moet worden, en vhost::password is het wachtwoord. Door middel van vhost::password:: kun je een authenticatie type opgeven. Op dit moment kan dat zijn; crypt, md5, sha1 en ripemd-160. Als laatste kun je met vhost::swhois een extra regel toevoegen aan een whois, net zoals de oper::swhois.

Voorbeeld:

    vhost {
    	vhost my.own.personal.vhost.com;
    	from {
    		userhost my@isp.com;
    		userhost myother@isp.com;
    	};
    	login mynick;
    	password mypassword;
    	swhois "Im Special";
    };

4.29 - Badword Block OPTIONEEL (Dit was badwords.*.conf)

Syntax:

    badword <type> {
    	word <text-to-match>;
    	replace <replace-with>;
    	action <replace|block>;
    };

Met dit blok kun je een lijst opstellen van woorden die vervangen moeten worden wanneer gebruikers +G hebben of een kanaal +G heeft. badword:: geeft het type aan; geldige types zijn channel, message, quit en all. channel is voor kanalen met +G, message voor gebruikers met +G, quit om quit berichten te censureren en all voor alle drie deze dingen. badword::word kan gewoon een woord zijn, of een reguliere expressie waarnaar we zoeken. badword::replace is het woord waarmee we badword::word moeten vervangen. Wanneer badword::replace leeg is, zal het woord vervangen worden door <censored>. Met badword::action kun je een actie instellen die ondernomen moet worden wanneer een woord gevonden wordt. Wanneer je hier replace invult, wordt het woord vervangen. Wanneer je block invult, wordt het hele bericht geblokkeerd. Wanneer je badword::action leeg laat, wordt er uitgegaan van replace.

Voorbeeld:

    badword channel {
    	word shit;
    	replace shoot;
    };

4.30 - ULines Block OPTIONEEL (Dit was de U:Line)

Syntax:

    ulines {
    	<server-name>;
    	<server-name>;
    	...
    };

U:lines geven bepaalde servers extra mogelijkheden. Dit moet gebruikt worden voor Services en Stats, dus niet voor normale servers. Elke regel is de naam van de server die extra mogelijkheden ontvangen moet.

Voorbeeld

    ulines {
    	services.mynetwork.com;
    	stats.mynetwork.com;
    };

4.31 - Link Block OPTIONEEL (Previously known as C/N/H:Lines)

Syntax:

    link <server-name> {
    	username <usermask>;
    	hostname <ipmask>;
    	bind-ip <ip-to-bind-to>;
    	port <port-to-connect-on>;
    	password-connect <password-to-connect-with>;
    	password-receive <password-to-receive> { <auth-type>; };
    	hub <hub-mask>;
    	leaf <leaf-mask>;
    	leafdepth <depth>;
    	class <class-name>;
    	ciphers <ssl-ciphers>;
    	options {
    		<option>;
    		<option>;
    		...
    	};
    };

Dit blok is nodig voor het linken van servers. Neem de tijd om dit door te nemen, dit is een van de moeilijkste dingen en gebruikers maken hier vaak fouten.

server-name is de naam van de andere server, de naam die de server in zijn me { } block heeft, zoals hub.blah.com (niet het IP en kan verschillen van de hostnaam).

username
Je kan een ident opgeven voor authenticatie, normaal zet je dit op "*".

hostname
De hostnaam of het IP van de andere server. Dit wordt gebruikt voor het verbinden EN de authenticatie van de inkomende connectie. Enkele voorbeelden:

1.2.3.4 | gewone IP
hub.blah.com | host: alleen voor uitgaand, kan geen _inkomende_ connecties accepteren tenzij link::options::nohostcheck is ingesteld
* | kan niet verbinden NAAR maar zal alle server connecties (met het juiste wachtwoord) accepteren
::ffff:1.2.3.4 | voor het linken van IPv6 naar IPv4

bind-ip (optional)
Kan gebruikt worden om een specifiek IP te binden (bijv. 192.168.0.1) van waaruit we moeten verbinden. Wordt zelden gebruikt.

port
Poort waar naartoe we moeten verbinden (op welke de andere server luistert).

password-connect
Het wachtwoord voor het verbinden met de andere server, moet gewone tekst zijn.

password-receive
Het wachtwoord dat we ontvangen van de andere server. Kan encrypted zijn (crypt, md5, sha1 of ripemd-160). Je kan de authenticatie parameter weglaten wanneer je gewone tekst wilt gebruiken. Dit wachtwoord is meestal hetzelfde als password-connect.

hub vs leaf
Een hub heeft meerdere servers aan zich gelinkt, een leaf heeft maar 1 server.. naar jou. Een server is of een hub, of een leaf, je kan ze niet mengen.

hub (optioneel)
De waarde is de mask van de servers waarmee deze hub mag verbinden (bijv. *.my.net)

leaf (optioneel)
De waarde is de mask van waartegen deze server zich als een leaf zal gedragen.

leaf-depth (optioneel)
Wanneer leaf ingesteld is, moet dit ook worden ingesteld. De waarde is het aantal hops (aantal servers) welke deze server onder zich mag hebben.

class
De class waarin de server geplaatst wordt. Meestal is er een aparte server-class.

compression-level (optioneel)
De waarde is het compressie-level (1-9). Wordt alleen gebruikt wanneer link::options::zip ook wordt gebruikt.

ciphers (optioneel)
Zegt welke SSL sleutels gebruikt moeten worden voor deze link. Om een lijst te krijgen van de beschikbare sleutels, gebruik "openssl ciphers". Sleutels moeten gescheiden worden door een :.

options block
Je kan een of meerdere opties gebruiken. Soms is dit niet nodig.

ssl | wanneer je op een SSL poort verbindt.
autoconnect | de server zal automatisch proberen te verbinden, tijd staat in je class::connfreq (het werkt het beste wanneer dit van 1 kant wordt ingesteld, zoals leaf->hub).
zip | wanneer je gecomprimeerde links wil gebruiken, moet je hiermee compilen + gezet worden op beide servers.
nodnscache | sla het IP voor de uitgaande server connectie niet op. Gebruik dit wanneer de host vaak verandert (zoals dyndns.org).
nohostcheck | valideer de andere host (link::hostname) niet. Gebruik dit wanneer de host vaak verandert (zoals dyndns.org)
quarantine | opers op deze server kunnen geen globale rechten krijgen (alleen lokale), anders worden ze gekilled. Handig voor test servers e.d.

Voorbeeld:

    link hub.mynet.com {
    	username *;
    	hostname 1.2.3.4;
    	bind-ip *;
    	port 7029;
    	hub *;
    	password-connect "LiNk";
    	password-receive "LiNk";
    	class servers;
    	options {
    		autoconnect;
    		ssl;
    		zip;
    	};
    };

4.32 - Alias Block OPTIONEEL

Syntax [standard alias]:

    alias <name> {
    	target <nick-to-forward-to>;
    	type <type-of-alias>;
    	spamfilter <yes|no>;
    };

(Opmerking: kijk ook hier voor informatie over de standaard alias files van UnrealIRCd)

Met alias blok [standaard alias] kun je een commando van een gebruiker doorsturen naar iemand anders. Bijvoorbeeld /chanserv zendt een bericht naar ChanServ. alias:: is de naam van het commando dat je wil doorsturen (bv chanserv), alias::target is het doel waarnaar het commando gestuurd moet worden. Dit kan een gebruiker of een kanaal zijn. Wanneer alias:: hetzelfde is als het doel, kun je alias::target ook weglaten. alias::type is het type. Geldige types zijn services (doel zit op de services-server), stats (doel zit op de stats-server), normal (doel zit op een willekeurige server) of channel (doel is een kanaal). Wanneer alias::spamfilter (optioneel) op 'yes' staat, worden spamfilters gecontroleerd. Standaard staat dit uit ('no').
Het alias blok heeft nog een doel, wat hieronder wordt uitgelegd.

Syntax [command alias]:

    alias <name> {
    	/* Voor aliases die gezonden moeten worden naar gebruikers/channels */
    	format <regex-expression> {
    		target <nick-to-forward-to>;
    		type <type-of-alias>;
    		parameters <parameter-string>;
    	};

    	/* Voor 'echte aliases' */
             format <regex-expression> {
                     command <command>;
                     type real;
                     parameters <parameter-string>;
             };
             /* Etc... Je kan zoveel blokken als je wilt instellen.. */

    	format <regex-expression> {
    		...
    	};
    	type command;
    	spamfilter <yes|no>;
    };

Wanneer het alias block gebruikt wordt in dit formaat, heeft het een veel bredere functie. Je kan bijvoorbeeld /identify maken. alias:: is hetzelfde als hierboven, de naam van het alias commando. alias::format is de reguliere expressie die de tekst, meegegeven door het commando, controleert. Wanneer dit matcht, worden de regels eronder uitgevoerd. Je kan meerdere formats opgeven, zodat hetzelfde commando meerdere functies krijgt, afhangend van de tekst die gezonden wordt. alias::format::target is het doel waarnaar het bericht gezonden moet worden. Als een 'echte alias' gebruikt wordt, zal het bericht echter naar alias::format::command gezonden worden. alias::format::type is het type. Behalve de types die we in "Syntax [standard alias" behandeld hebben, is ook het type "real" toegestaan voor "echte aliases". alias::format::parameters is de tekst die gezonden moet worden. Dit is een % gevolgd door een nummer. Wanneer je alles na een bepaald nummer wil zenden, doe het nummer dat je wilt (bijv 2), met een - erachter, dus %2-. Dit stuurt alle tekst vanaf het tweede tot het laatste woord. Je kan ook %n gebruiken om de naam van degene die het commando mee te sturen.
Voor voorbeelden betreffende het gebruik van het alias block, zie doc/example.nl.conf.

4.33 - Help Block OPTIONEEL

Syntax:

    help <name> {
    	<text-line>;
    	<text-line>;
    	...
    };

(Note: normally you just include help.conf)

Met het help blok kun je dingen toevoegen aan /helpop. help:: is de waarde die moet worden meegegeven aan /helpop, als parameter. Wanneer help:: leeg wordt gelaten, hoeft geen parameter aan /helpop te worden meegegeven. De waardes voor het help blok zijn de teksten die moeten worden weergegeven.

4.34 - Official Channels Block OPTIONEEL

Syntax:

    official-channels {
    	"#channel" { topic "The default topic"; };
    };

Officiële kanalen worden weergegeven in /list, ook als er geen gebruikers in het kanaal zitten. topic is optioneel, en wordt alleen weergegeven in /list wanneer er 0 gebruikers zijn.

Voorbeeld:

    official-channels {
    	"#Help" { topic "The official help channel, if nobody is present type /helpop helpme"; };
    	"#Home";
    	"#Main" { topic "The main channel"; };
    };

4.35 - Spamfilter Block OPTIONEEL

Het spamfilter blok laat je lokale spamfilters toevoegen (dus niet over het gehele netwerk).
Zie Features - Spamfilter voor meer informatie over spamfilters.

Syntax:

    spamfilter {
    	regex <word>;
    	target { <target(s)> };
    	action <action>;
    	reason <reason>;
    	ban-time <time>;
    };

regex is de regex waaraan voldaan moet worden
target is het doel, zie hier voor een lijst (bijv: 'channel').
action sis de actie die ondernomen moet worden, zie hier voor een lijst (bijv: 'gline').
reason optioneel: geeft een reden, anders wordt de standaardwaarde gebruikt.
ban-time optioneel: geeft de duur aan, standaard 1 dag.

Voorbeelden:

    spamfilter {
    	regex "Come watch me on my webcam";
    	target { private; channel; };
    	action gline;
    	reason "You are infected, please go to www.antivirus.xx/blah/virus=GrrTrojan";
    	ban-time 6h;
    };

    spamfilter {
    	regex "come to irc\..+\..+";
    	target { private; channel; };
    	action gline;
    	action gline;
    	reason "No spamming allowed";
    };

4.36 - Cgiirc Block OPTIONEEL

The cgiirc block allows you to configure host spoofing for CGI:IRC gateways you trust (more info).

Syntax:

    cgiirc {
            type <webirc|old>;
            username <mask>; /* optioneel */
            hostname <mask>;
            password <password>; /* alleen voor het type webirc */
    };

type is ofwel 'webirc' ofwel 'old'.
username wordt gecontroleerd op de ident (als deze er is. Zo niet, dan wordt "*" aangenomen.
hostname wordt de hostnaam op gematched.
password is het webirc wachtwoord, alleen gebruiken bij type 'webirc'.

Hoe te configureren met 'webirc' (aangeraden methode)
In je CGI:IRC configuratiebestand (cgiirc.conf) stel je webirc_password in op een goed wachtwoord.
Daarna voeg je aan unrealircd.conf een cgiirc block toe, om de host en het wachtwoord toe te staan, en stel je cgiirc::type in op 'webirc'.
Voorbeeld:
In je CGI:IRC configuratiebstand (cgiirc.conf) voeg je toe:

    webirc_password = LpT4xqPI5

Daarna voeg je dit cgiirc block toe aan je unrealircd.conf:

    cgiirc {
            type webirc;
            hostname "1.2.3.4";
            password "LpT4xqPI5";
    };

Hoe te configureren met de methode 'old'
Opmerking: Deze methode wordt niet aangeraden omdat ze 2 nadelen heeft: Deze methode zendt de IP/host om te spoofen als server wachtwoord, wat inhoudt dat je geen server wachtwoord als CGI:IRC gebruiker kan opgegeven. Bijkomend is dat de toegang alleen per IP te bepalen is, en niet met een wachtwoord zoals met de 'webirc' methode. Je moet deze methode dus niet gebruiken, alleen als je er een goede reden voor hebt.
In je CGI:IRC configuratiebestand (cgiirc.conf) zet je realhost_as_password op 1.
Daarna voeg je een cgiirc block toe aan je unrealircd.conf om deze host toe te staan.
Voorbeeld:
In je CGI:IRC configuratiebstand (cgiirc.conf) voeg je toe:

    realhost_as_password = 1

Daarna voeg je dit cgiirc block toe aan je unrealircd.conf:

    cgiirc {
            type old;
            hostname "1.2.3.4";
    };

4.37 - Set Block BENODIGD (Dit was unrealircd.conf/networks file)

Dit blok was eerder ons networks/unrealircd.conf en ons netwerk bestand. Op een netwerk met maar 1 server is het makkelijker om deze 3 bestanden te combineren in 1 bestand door middel van de set:: in unrealircd.conf. Op netwerken met meerdere servers kun je het beste aparte netwerk bestanden gebruiken.

Wanneer je server deel uitmaakt van een netwerk, zullen de meeste instellingen hetzelfde zijn. Daarom is het handig om 1 netwerk bestand te kunnen laden. Zie include voor meer informatie. Nu volgt een lijst met beschikbare opties voor set::.

Syntax:

    set {
    	<entry> <value>;
    	<entry> <value>;
    	...
    };

Met het set blok kun je individuele opties instellen voor je server. Elk ding doet iets anders, en zal om deze reden hieronder beschreven worden. Sommige dingen hebben nog dingen onder zich, welke ook beschreven zullen worden. Er zijn veel set opties om te beschreven, alles hieronder kan geschreven worden in EEN set block.

Voorbeeld:

    set {
    	kline-address my@emailaddress.com;
    	auto-join #welcome;
    	options {
    		hide-ulines;
    	};
    	hosts {
    		local LocalOp.MyNet.com;
    		global globalop.mynet.com;
    	};
    };

Je kan een set block ook op 1 regel zetten. Dit maakt het wel onoverzichtelijk.
Voorbeeld:
set { options { hide-ulines; no-stealth; }; };

set::kline-address <email-address>;
Het email adres naar waar K:Line vragen gezonden kunnen worden. Deze waarde moet ingevuld worden.

set::gline-address <email-address>;
Het email adres naar waar G:Line vragen gezonden kunnen worden.

set::modes-on-connect <+modes>;
De modi die de gebruiker ontvangt zodra hij verbindt.

set::snomask-on-connect <+modes>
De snomask die een gebruiker ontvangt zodra hij verbindt.

set::modes-on-oper <+modes>;
De modi die een gebruiker ontvangt wanneer hij /oper't.

set::snomask-on-oper <+modes>;
De snomask die een gebruiker ontvangt wanneer hij /oper't.

set::modes-on-join <+modes>;
De modi die op een kanaal worden gezet zodra deze wordt gemaakt. Niet alle modi kunnen gebruikt worden. +qaohvbeOAzlLk kunnen NIET gezet worden door dit commando.

set::restrict-usermodes <modes>
Weerhoudt gebruikers ervan om deze modi te zetten/verwijderen (gebuik geen + of -).
Voorbeeld: je kan +G in modes-on-connect zetten en G in retrict-usermodes. Op deze manier behouden gebruikers altijd +G.

set::restrict-channelmodes <modes>
Weerhoudt gebruikers ervan deze modi te zetten/verwijderen op een kanaal (gebruik geen + of -).
voorbeeld: je kan +G in modes-on-join zetten en G in restrict-channelmodes. Op deze manier zal een kanaal altijd +G houden.
Opmerking: Je kan deze modi wel nog aanpassen via MLOCK in Services. Helaas kunnen wij hier niets aan doen.

set::restrict-extendedbans <types|*>
Weerhoudt gebruikers ervan om uitgebreide bans ("*") te zetten, of sta bepaalde bans (bijv. "gc") niet toe.

set::auto-join <channels>;
Het/De kanaal/kanalen welke gebruikers automatisch joinen wanneer ze verbinden. Wanneer je meerdere kanelen wilt gebruiken, scheidt ze door een komma.
[Opmerking: vergeet de aanhalingstekens niet, dus: autojoin "#chan";]

set::oper-auto-join <channels>;
Het/De kanaal/kanalen welke een oper automatisch joint wanneer hij /oper't. Om meerdere kanelen in stellen, scheidt ze door een komma.
[Opmerking: vergeet de aanhalingstekens niet, dus: autojoin "#chan";]

set::anti-spam-quit-message-time <timevalue>;
Een tijdswaarde die zegt hoelang een gebruiker verbonden moet zijn voordat een /quit bericht wordt afgebeeld. Gebruikt om spam tegen te gaan. De waarde is een numerieke string waarin d voor dag staan, h voor uur, m voor minute en s voor seconde. Voorbeeld: 1d2h3m betekent 1 dag, 2 uur en 3 minuten.

set::prefix-quit <text-to-prefix-quit>;
Stelt een voorvoegsel in voor quit berichten. Wanneer deze ingesteld wordt op 0, zal er "Quit: " gebruikt worden.

set::static-quit <quit message>;
Zet een standaard quit bericht, dat altijd gezonden wordt wanneer een gebruiker de verbinding verbreekt. anit-spam-quit-message-time is niet meer nodig, evenals set::prefix-quit, wanneer je dit gebruikt. Het vervangt GEEN problemen met static-quit berichten.

set::static-part <no|yes|part message>;
Wanneer dit op 'yes' staat, worden alle part berichten weggehaald. Wanneer het op 'no' staat, werkt het zoals gewoon. Al het andere kan ook gebruikt worden, bijvoorbeeld static-part "Bye!". Dit kan irritant worden, dus gebruik het wijs.

set::who-limit <limit>;
Zet een limiet op het maximaal aantal resultaten dat een /who geeft. Wanneer je dit weglaat, is er geen limiet.

set::silence-limit <limit>;
Zet een limiet op de maximale grootte van de SILENCE lijst. Wanneer je dit weglaat, staat het limiet op 15.

set::maxbans <limit>;
Stelt het maximum toegestane aantal bans per kanaal in. Standaard staat dit op 60. Indien je dit wijzigt, vergeet dan niet ook naar de maxbanlength instelling te kijken (zie volgende)!

set::maxbanlength <limit>;
Lijkt op voorgaande, maar dit stelt het maximum aantal tekens van alle bans tezamen in, kortgezegd zet je d.m.v. deze instelling dus een (semi-)maximum op de hoeveelheid geheugen die gebruikt kan worden voor alle bans per kanaal. Standaard staat dit op 2048 (bytes). Tezamen met de set::maxbans standaard instelling van 60 laat dit dus gemiddeld 2048:60=34 tekens per ban toe.

set::oper-only-stats <stats-list>;
Stelt de modi in die alleen door opers gebruikt mogen worden. De flags worden door niets gescheiden. Je kan dit leeg laten als je wilt dat iedereen alle flags mag gebruiken, of een * wanneer je wilt dat gebruikers geen enkele modus mogen gebruiken. Alleen korte flags mogen gebruikt worden hier.

set::oper-only-stats {<stats-flag>; <stats-flag>;};
Stelt de stats flags in die alleen gebruikt mogen worden door opers. Dit werkt alleen met lange stats flags.

set::maxchannelsperuser <amount-of-channels>;
Stelt het aantal kanalen in waarin een gebruiker zich tegelijk mag bevinden.

set::maxdccallow <amount-of-entries>;
Stelt het maximaal aantal invoeringen in dat een gebruiker mag hebben in zijn/haar DCCALLOW lijst.

set::channel-command-prefix <command-prefixes>;
Stelt het voorvoegsel dat nodig is voor Services "in kanaal commando's". Berichten die starten met het ingestelde teken worden nog steeds gezonden zelfs als de gebruiker +d heeft. De standaardwaarde is "`!.".

set::allowed-nickchars { <list> };
Character sets / talen die toegestaan zijn in namen, zie Nick Character Sets.

set::allow-userhost-change [never|always|not-on-channels|force-rejoin]
Geeft aan wanneer een user@host mag veranderen (+x/-x/chghost/chgident/setident/vhost/etc).
never blokkeert alle commando's, always betekent altijd zelfs in kanalen (kan een desync veroorzaken) [default], not-on-channels betekent dat het toegestaan is wanneer een gebruiker zich niet op een kanaal bevindt, force-rejoin zal een rejoin voor alle kanalen doen, en de status (voice/op etc) teruggeven.

set::options::hide-ulines;
Wanneer dit aanstaat, zullen U:Lined servers niet zichtbaar zijn in /links voor non-opers.

set::options::flat-map;
Wanneer dit aanstaat, zullen alle servers als direct gelinkt staat in /map en /links, dus je kan niet zien welke server aan welke gelinkt is. Dit helpt een beetje tegen (D)DoS aanvallen, omdat de gemene mensen geen zwakke punten kunnen zien.

set::options::show-opermotd;
Wanneer dit aanstaat, zal de opermotd getoond worden na een successvolle /oper.

set::options::identd-check;
Wanneer dit aanstaat, zal de aanwezigheid van een ident server gecontroleerd worden, en de gegeven waarde zal als gebruikersnaam gebruikt worden. Wanneer er niets terug gegeven wordt, zal de door de gebruiker gespecificeerde naam gebruikt worden, met het voorvoegsel ~. Wanneer dit uitstaat, zal er niet gecontroleerd worden op een ident server.

set::options::show-connect-info;
Als dit aanstaat, zullen de berichten "ident request", "hostname lookup" etc weergegeven worden zodra een gebruiker een verbinding maakt.

set::options::dont-resolve;
Wanneer dit aanstaat zal de host van gebruikers niet geresolved worden. Dit kan handig zijn als vele gebruikers een host hebben die niet snel verbindt.

Let op dat je geen op host gebaseerde blokken kan hebben, omdat de host niet geresolved wordt.

set::options::mkpasswd-for-everyone;
Stelt in dat /mkpasswd door iedereen gebruikt kan worden, in plaats van door opers alleen. Het gebruik van dit commando door normale gebruikers zal door middel van een EYES snomask kenbaar worden gemaakt.

set::options::allow-part-if-shunned;
Staat een shunned gebruiker toe /part te gebruiken.

set::options::fail-oper-warn;
Als dit aanstaat, zal een gebruiker erop geattendeerd worden dat de mislukte /oper wordt gelogd.

set::dns::timeout <timevalue>;
Een tijdsduur die specificeert hoelang een DNS server erover mag doen voordat er een timeout volgt. De tijd is een numerieke waarde, waarin de d voor dag staat, de h voor uur, m voor minute en s voor seconde. Voorbeeld: 1d2h3m betekent 1 dag, 2 uur en 3 minuten.

set::dns::retries <number-of-retries>;
Een numerieke waarde die instelt hoeveel keer er opnieuw geprobeerd moet worden een DNS lookup te voltooien.

set::dns::nameserver <name-of-dns-server>;
De hostnaam die gebruikt moet worden voor een DNS lookup.

set::dns::bind-ip <ip>;
Het IP waaraan gebonden moet worden voor het resolven. Bijna nooit nodig.

set::network-name <name-of-network>;
De naam van het netwerk waar deze server deel van uitmaakt. Deze waarde moet precies gelijk zijn op alle servers.

set::default-server <server-name>;
De standaardserver waarnaar verbonden moet worden wanneer deze server vol is.

set::services-server <server-name>;
De naam van de server waar de Services op lopen. Benodigd, maak er services.yournet.com van wanneer je geen Services hebt.

set::stats-server <server-name>;
De naam van de server waar de Stats bot op loopt. Als er geen Stats bot is, kan deze waarde worden weggelaten.

set::help-channel <network-help-channel>;
De naam van het help kanaal op dit netwerk.

set::cloak-keys { "key1"; "key2"; "key3"; };
De sleutels die gebruikt worden om een +x host te generen. De sleutels moeten op alle servers binnen het netwerk hezelfde zijn, anders linken de servers niet. Elk van de 3 sleutels moet een string van 5 tot 100 tekens zijn (10 tot 20 is goed genoeg), bestaande uit een mix van kleine letters (a-z), grote letters (A-Z) en getallen (0-9). Merk op dat het ligt aan de cloaking module die je hebt geladen hoe je deze sleutels moet instellen.

set::hiddenhost-prefix <prefix-value>;
Het voorvoegsel voor een verborgen host (+x). Dit zijn meestal 3 tot 4 letters die de netwerk naam voorstellen.

set::hosts::local <locop-host-name>;
De hostnaam die lokale opers krijgen wanneer ze +x zetten. Je kan ook user@host hier gebruiken.

set::hosts::global <globop-host-name>;
De hostnaam die globale opers krijgen wanneer ze +x zetten. Je kan ook user@host hier gebruiken.

set::hosts::coadmin <coadmin-host-name>;
De hostnaam die co-admins krijgen wanneer ze +x zetten. Je kan ook user@host hier gebruiken.

set::hosts::admin <admin-host-name>;
De hostnaam die admins krijgen wanneer ze +x zetten. Je kan ook user@host hier gebruiken.

set::hosts::servicesadmin <servicesadmin-host-name>;
De hostnaam die service-admins krijgen wanneer ze +x zetten. Je kan ook user@host hier gebruiken.

set::hosts::netadmin <netadmin-host-name>;
De hostnaam die netadmins krijgen wanneer ze +x zetten. Je kan ook user@host hier gebruiken.

set::hosts::host-on-oper-up <yes/no>;
Wanneer dit op 'yes' staat, zal de oper automatisch +x krijgen en de bovenstaande host krijgen. Wanneer dit op 'no' staat, moet de gebruiker handmatig +x zetten om bovenstaande host te krijgen.

set::ssl::egd <filename>;
Stelt in of EGD (Entropy Gathering Daemon) ondersteuning gebruikt moet worden. Wanneer je OpenSSL 0.9.7 of hoger draait, zullen /var/run/egd-pool, /dev/egd-pool, /etc/egd-pool en /etc/entropy automatisch doorzocht worden, dus er is geen bestandsnaam nodig. Wanneer je een eerdere versie van OpenSSL gebruikt, of wanneer je een EGD socket wil gebruiken die ergens anders staat, moet je de bestandsnaam van de UNIX Domain socket opgeven waarop EGD luistert.

set::ssl::certificate <filename>;
Stelt in waar het SSL certificaat van de server staat.

set::ssl::key <filename>;
Stelt in waar de SSL sleutel van de server staat.

set::ssl::trusted-ca-file <filename>;
Stelt in waar de certificaten van de vertrouwde CAs staan.

set::ssl::options::fail-if-no-clientcert;
Gebruikers zonder certificaat worden geweigerd.

set::ssl::options::no-self-signed;
Verbindingen met zelf getekende certificaten worden geweigerd.

set::ssl::options::verify-certificate;
Stelt in dat UnrealIRCd bepaalt of een SSL certificaat geldig is alvorens de connectie te accepteren.

set::throttle::period <timevalue>
Stelt in hoelang een gebruiker moet wachten voordat hij/zij opnieuw kan verbinden na set::throttle::connections pogingen.

set::throttle::connections <amount>;
Stelt in hoeveel keer een gebruiker met dezelfde host moet verbinden alvorens tegengehouden te worden.

set::ident::connect-timeout <amount>;
Aantal seconden waarna het verbinden met een ident server opgegeven moet worden (standaard: 10s).

set::ident::read-timeout <amount>;
Stelt in hoeveel seconden er gewacht moet worden op een antwoord (standaard: 30s).

set::anti-flood::unknown-flood-bantime <timevalue>;
Stelt in hoelang de ban van een onbekende verbindings flooder duurt.

set::anti-flood::unknown-flood-amount <amount>;
Stelt in hoeveel data (in KiloBytes) een onbekende verbinding moet zenden alvorens deze gekilled wordt.

set::anti-flood::away-flood <count>:<period>
Away flood bescherming: Stelt een limiet aan /away. 'count' keer per 'period' secondes. NO_FLOOD_AWAY moet aanstaan in config. Voorbeeld: away-flood 5:60s; betekent dat er maximaal 5 keer per 60 seconden van status veranderd mag worden.

set::anti-flood::nick-flood <count>:<period>
Nickname flood bescherming: Stelt een limiet aan het aantal naamsveranderen. Voorbeeld: nick-flood 4:90 Er zijn 4 naamsveranderingen in 90 seconden toegestaan. De standaardwaarde is 3 per 60.

set::default-bantime <time>
Standaard duur van een /kline, /gline, /zline, /shun etc zonder tijdsindicatie. (zoals /gline *@some.nasty.isp). De standaardwaarde is permanent (0). Voorbeeld: default-bantime 90d;.

set::modef-default-unsettime <value>
Voor kanaalmodus +f kun je een standaard unsettime instellen. Wanneer je bijvoorbeeld 10 instelt, zal +f [5j]:15 veranderen in [5j#i10]:15. Er is geen standaardwaarde.

set::modef-max-unsettime <value>
De maximale waarde van een modus +f unsettime (in +f [5j#i<TIME>]:15). Dit is een waarde tussen 0 en 255. Standaard is het 60 (= 1 uur).

set::ban-version-tkl-time <value>
Wanneer je /zline/gline/etc uitvoert in het ban version block, kun je hier instellen hoelang het IP gebanned moet worden. Standaard is dit 86400 (1 day).

set::spamfilter::ban-time <value>
Hetzelfde als bovenstaande, maar voor *lines/shuns toegevoegd door spamfilter.

set::spamfilter::ban-reason <reason>
De reden die gebruikt moet worden door spamfilter.

set::spamfilter::virus-help-channel <channel>
Het kanaal dat gebruikt moet worden voor de'viruschan' actie in spamfilter.

set::spamfilter::virus-help-channel-deny <yes|no>
Wanneer dit op 'yes' (of '1') staat, wordt er "invite only" tegen gebruikers gezegd die het virus-help-channel proberen te joinen. Alleen opers, mensen die een spamfilter matchen, of mensen die ge-/invite zijn, kunnen joinen.

set::spamfilter::except <target(s)>
Deze kanalen worden niet gecontroleerd door spamfilters. Dit kan 1 kanaal zijn, of een reeks kanalen gescheiden door een komma (bijv: except "#help,#spamreport";).

set::check-target-nick-bans <yes|no>
Wanneer de gebruiker zijn naam verandert, controleer of de NIEUWE nick gebanned zou worden. Zo ja, sta de naamsverandering niet toe. Standaard is dit 'yes'.

set::timesynch::enabled <yes|no>
Activeer of deactiveer de tijd synchronisatie bij het opstarten. Standaard is yes.

set::timesynch::server <IP>
Server waarmee gesynchroniseerd moet worden. Dit kunnen maximaal 4 IPs zijn, gescheiden door commas. De servers moeten NTP protocol versie 4 ondersteunen. Standaard worden 3 servers gebruikt (US,EU,AU). De verzoeken worden parallel verzonden, het snelste antwoord wint.

set::timesynch::timeout <time>
Maximale wachttijd voor een antwoord. Dit is een waarde tussen 1 en 5, hoger kan niet vanwege een te hoge incorrectheid. Standaard is dit 3, en er is waarschijnlijk geen goede reden om dit aan te passen.

5 – Aanvullende bestanden

Als aanvulling op het configuariebestand heeft Unreal nog een aantal andere bestanden, zoals MOTD, OperMOTD, BotMOTD en Rules. Hieronder staan de bestanden en hun functie.
Merk op dat MOTDs (alle) en Rules bestanden apart kunnen worden ingestel door het tld block. Dit zijn slechts de standaard bestanden (en voor MOTD/Rules vanaf andere servers).

ircd.motd | Wordt afgebeeld wanneer een /motd wordt uitgevoerd (en wanneer ircd.smotd niet bestaat) wanneer een gebruiker verbindt.
ircd.smotd | Wordt alleen afgebeeld wanneer een gebruiker verbindt (short MOTD/korte MOTD)
ircd.rules | Wordt afgebeeld wanneer een /rules wordt uitgevoerd
oper.motd | wordt afgebeeld wanneer je /opermotd uitvoert of wanneer je /oper'd
bot.motd | Wordt afgebeeld wanneer je /botmotd uitvoert of wanneer je gebruikersmode +B doet

6 – Gebruiker & Kanaal modus

Mode | Beschrijving
Kanaal Modes
A | Alleen Administrators mogen joinen
a <nick> | Maakt nick een kanaal admin
b <nick!user@host> | Bant de gegeven gebruiker van het kanaal
c | ANSI kleuren kunnen niet naar het kanaal gezonden worden
C | CTCPs zijn niet toegestaan in het kanaal
e <nick!user@host> | Uitzonderingsban – Wanneer iemand dit matcht, kunnen ze het kanaal wel joinen, zelfs als ze gebanned zijn
f [<number><type>]:<seconds> | Kanaal flood bescherming. Zie section 3.12 voor een uitgebreide beschrijving
G | Woorden in het kanaal worden gecontroleerd door de badword blocks, en zo nodig vervangen
h <nick> | Geeft half-op status aan de nick
i | Een uitnodiging is nodig
I <nick!user@host> | Uitnodigings uitzonderingen ("invex") - Wanneer iemand dit matcht, gaan ze om een +i op het kanaal heen
j <joins:seconds> | joins per seconds seconden zijn toegestaan per gebruiker
K | /knock is niet toegestaan
k <key> | Een wachtwoord is nodig om het kanaal te joinen
l <##> | Zet een limiet op het aantal mensen
L <Chan> | Wanneer het limiet van +l bereikt is, worden mensen naar dit kanaal gestuurd
M | Je hebt een geregistreerde naam (+r) nodig om te praten
m | Gemodereerd kanaal. Alleen mensen met +v of hoger mogen praten
N | Naamsveranderingen zijn niet toegestaan
n | Berichten van buiten het kanaal zijn niet toegestaan
O | Alleen IRCOps mogen joinen
o <nick> | Geeft nick kanaal operator status
p | Maakt een kanaal prive
q <nick> | Maakt nick de kanaal eigenaar
Q | Alleen U:Lined servers kunnen mensen kicken
R | Je hebt een geregistreerde naam nodig om te joinen
S | Haalt alle kleuren weg
s | Maakt een kanaal geheim
t | Alleen kanaal operators kunnen de topic veranderen
T | NOTICE's gericht aan het kanaal zijn niet toegestaan
u | Auditorium – /names en /who #kanaal worden alleen getoond aan ops
V | /invite is niet toegestaan
v <nick> | Geeft nick voice (kan spreken in +m kanalen)
z | Alleen mensen met een SSL verbinding mogen joinen

Mode | Beschrijving
Gebruiker Modes
A | Server Admin (te zetten in het Oper Block)
a | Services Admin (te zetten in het Oper Block)
B | Markeert je als een Bot
C | Co-Admin (te zetten in het Oper Block)
d | Je ontvangt geen kanaal PRIVMSGs (uitgezonderd berichten die vooraf gaan met bepaalde tekens, zie set::channel-command-prefix)
G | Filtert alle badwords die ingesteld zijn
g | Kan globops en locops verzenden & lezen
H | Verbergt IRCOp status (alleen voor IRCops)
h | Beschikbaar voor hulp (Helpop) (te zetten in het Oper Block)
i | Onzichtbaar (niet te zien in /who)
N | Network Administrator (te zetten in het Block)
O | Lokale IRC Operator (te zetten in het Oper Block)
o | Globale IRC Operator (te zetten in het Oper Block)
p | Verbergt de kanalen waarin je je bevindt in een /whois
q | Alleen U:Lined servers kunnen je kicken (alleen voor Services Admins)
R | Je kunt alleen PRIVMSGS/NOTICES van geregistreerde (+r) gebruikers ontvangen
r | Identificeert je naam als geregistreerd
S | Wordt gebruikt om Services Daemons te beschermen
s | Kan server notices zien (zie sectie 3.3 voor meer informatie)
T | Je kan geen CTCPs ontvangen
t | Zegt dat je een /vhost gebruikt
V | Zegt dat je een WebTV gebruiker bent
v | Ontvang geinfecteerde DCC Zend afwijzingen
W | Laat je zien dat mensen een /whois op je doen (Alleen voor IRCOps)
w | Je kan wallop berichten zien
x | Geeft je een verborgen hostnaam
z | Geeft aan dat je een SSL verbinding gebruikt

7 – Gebruikers & Opers commando's

Opmerking: de /helpop documentatie is recenter. Gebruik /helpop commando (of /helpop?commando wanneer je een oper bent) om meer informatie over het commando te krijgen.

Commando | Beschrijving | Wie kan het gebruiken
nick <newnickname> | Verandert je naam naar newnickname. Andere mensen zien je naamsverandering | Iedereen
whois <nick> | Laat informatie over nick zien. Dit houdt in de volleidge naam, de host, de kanalen waarin de persoon zich bevindt, en of hij Oper is | Iedereen
who <mask> | Met who kun je gebruikers zoeken. Masks zijn: naam; #kanaal, hostmask (*.attbi.com) | Iedereen
whowas <nick> <maxreplies> | Geeft je informatie over een persoon die niet meer online is. <max replies> is optioneel, en geeft aan hoeveel resultaten weergegeven moeten worden | Iedereen
ison <nick1 nick2 nick3 ...> | Controleert of een gebruiker of een lijst van gebruikers online is/zijn. Zeer handig voor scripts. | Iedereen
join <channel1,channel2, ...> | Hiermee kun je een kanaal binnengaan. Door /join #chan1,#chan2,#chan3 ga je meerdere kanalen tegelijk binnen. /join 0 zorgt ervoor dat je alle kanalen verlaat (PART) | Iedereen
cycle <channel1, channel2, ...> | Door een /cycle PART je het kanaal, om daarna weer te JOINen | Iedereen
motd <server> | Laat de servers MOTD zien. Wanneer je een servernaam toevoegd, krijg je de MOTD van de betreffende server | Iedereen
rules <server> | Geeft de ircd.rules van de server weer. Wanneer je een servernaam tovoegd, krijg je de regels van de betreffende server | Iedereen
lusers <server> | Laat het huidige en maximale aantal gebruikers zien, zowel lokaal als globaal. Als je een servernaam toevoegd, krijg je de informatie van de betreffende server | Iedereen
map | Laat de netwerkmap zien | Iedereen
quit <reason> | Verbreek de verbinding met de server. Wanneer je een reden opgeeft, wordt deze getoond op alle kanalen waarin je je bevond | Iedereen
ping <user> | Zendt een PING aanvraag naar een gebruiker. Wordt gebruikt om te kijken of de verbinding er nog is of om te kijken of er lag is. Servers zenden elke XX seconden een ping om te kijken of de gebruiker nog steeds verbonden is | Iedereen
version <nick> | Zendt een CTCP VERSION aanvraag naar een gebruiker. Wanneer ingesteld staat dat er een antwoord gegeven moet worden, zul je dit krijgen | Iedereen
links | Geeft een lijst van alle servers gelinkt in het netwerk | Iedereen
Admin <server> | Laat de admin informatie zien van de server. Wanneer de servernaam is toegevoegd, krijg je informatie over de betreffende server | Iedereen
userhost <nick> | Laat de userhost van de nick zien. Meestal gebruikt door scripts | Iedereen
topic <channel> <topic> | /topic <channel> laat het huidige topic zien van het kanaal. /topic <channel> <topic> zal het topic veranderen. | Iedereen
invite <nick> <channel> | Nodigt de gebruiker uit naar het kanaal. | Kanaal Operator
kick <channel, channel> <user, user> <reason> | Kickt de persoon of pesonen van het kanaal of kanalen. Een reden kan gegeven worden | Kanaal Operator
away <reason> | Markeert je als zijnde weg. Een reden kan ook gegeven worden | Iedereen
Watch +-<nick> +-<nick> | Watch is een nieuw systeem in UnrealIRCd wat sneller is en minder resources gebruikt. De server zendt je een bericht wanneer een naam op je watch-lijst inlogt of uitlogt. De watch-lijst wordt NIET onthouden. Jij, of je script, moet de namen steeds opnieuw toevoegen wanneer je opnieuw verbindt met een server | Iedereen
helpop ?<topic> or !<topic> | HelpOp is een nieuw systeem om hulp te krijgen over de IRC Server. Je typt of /HELPOP ? <help system topic> or /HELPOP ! <vraag>. De ? betekent dat je het helpsysteem wil raadplegen. Wanneer je geen antwoord krijgt, kun je de ! gebruiken, je vraag wordt dan gezonden naar alle Help Operators die online zijn. Wanneer je geen ? of ! gebruikt, zal eerst het helpsysteem geraadpleegd worden. Wanneer er niets gevonden wordt, wordt het bericht gestuurd naar de Help Operators | Iedereen
list <search string> | Wanneer je geen search string opgeeft, krijg je een lijst met alle kanalen. Hieronder staan de opties die je gebruiken kunt. >nummer - geeft een lijst met meer dan <nummer> mensen <nummer - geeft een lijst met minder dan <nummer> mensen C>nummer - geeft een lijst met kanalen die tussen nu en <nummer> minuten geleden gemaakt zijn C<nummer - geeft een lijst met kanalen die ouder dan <nummer> minuten zijn T>nummer - geeft een lijst met kanalen waarvan de topic ouder is dan <nummer> minuten T<nummer - geeft een lijst met kanalen waarvan de topic jonger is dan <nummer>minuten *mask* - geeft een lijst met kanalen die *mask* matchen !*mask* - geeft een lijst met kanalen die *mask* niet matchen | Iedereen
Knock <channel> <message> | Hiermee kun je 'kloppen' op een invite-only kanaal, en vragen om binnen te komen. Werkt niet wanneer het kanaal op +K of +V staat. Werkt ook niet wanneer je gebanned bent | Iedereen
setname | Hiermee kun je je Real Name (echte naam) veranderen, zonder opnieuw te verbinden | Iedereen
vhost <login> <password> | Verbergt je hostnaam door een vhost van de server te gebruiken | Iedereen
mode <chan/nick> <mode> | Hiermee kun je kanaal en gebruiker modi zien. Zie Gebruikers & Kanaal Modi voor een lijst | Iedereen
credits | Laat een lijst zien van wie allemaal heeft meegeholpen aan het maken van UnrealIRCd | Iedereen
license | Laat de GNU License zien | Iedereen
time <server> | Laat de datum en tijd van de server zien. Wanneer je een servernaam opgeeft, krijg je de datum en tijd van de betreffende server | Iedereen
botmotd <server> | Laat je de BOTMOTD van de server zien. Wanneer je een servernaam opgeeft, krijg je de BOTMOTD van de betreffende server | Iedereen
identify <password> | Zendt je wachtwoord naar de Services om je nick te identificeren | Iedereen
identify <channel> <password> | Zendt je wachtwoord naar de Services om je als kanaal eigenaar te identificeren | Iedereen
dns <option> | Geeft informatie over de servers DNS cache. Opmerking: omdat bijna alle programmas een ingebouwd DNS commando hebben, is het mogelijk dat je /raw DNS moet gebruiken. Opers kunnen een l opgeven als eerste parameter wanneer ze een lijst willen ontvangen van alle ingevingen. | Iedereen
userip <nick> | Geeft het IP adres van nick | Iedereen
oper <userid> <password> | Geeft je IRC Operator status wanneer userid en password goed zijn volgens een Oper block | IRCop
wallops <message> | Zendt een bericht naar iedereen met gebruikersmodus +w | IRCop
globops <message> | Zendt een bericht naar alle IRCOps | IRCop
chatops <message> | Zendt een bericht naar alle IRCOps met gebruikersmodus +c | IRCop
locops <message> | Zendt een bericht naar alle lokale IRCOps | IRCop
adchat <message> | Zendt een bericht naar alle Admins | IRCop
nachat <message> | Zendt een bericht naar alle Net Admins | IRCop
kill <nick> <reason> | Killt een gebruiker op het netwerk | IRCop
kline [+|-]<user@host | nick> [<time to ban> <reason>] | Bant de hostmask van de server waarop het wordt uitgevoerd. Een kline is geen globale ban time to ban is: a) een waarde in secondes, b) een tijdswaarde, zoals '1d' voor 1 dag of c) 0 voor permanent. Tijd en reden zijn optioneel. Wanneer ze niet opgegeven worden, worden set::default-bantime en 'no reason' gebruikt. Om een kline weg te halen, gebruik /kline -user@host | IRCop
zline [+|-]<*@ip> [<time to ban> <reason>] | Bant een IP adres op de server waarop het wordt uitgevoerd. Dit is geen globale ban. Zie kline voor de syntax. Gebruik /zline -*@IP om een zline te verwijderen | IRCop
gline [+|-]<user@host | nick> [<time to ban> <reason>] | Voegt een globale ban toe voor iedereen die matcht. Zie kline voor de syntax. Gebruik /gline -user@host om een gline te verwijderen | IRCop
shun [+|-]<user@host | nick> [<time to shun> <reason>] | Belet een gebruik om commando's te gebruiken en om te spreken. Shuns zijn globaal (zoals glines). Zie kline voor de syntax. Gebruik /shun -user@host om een shun weg te halen
| IRCop
gzline [+|-]<ip> <time to ban> :<reason> | Voegt een globale zline toe. Zie kline voor de syntax. Gebruik /gzline -*@IP om een gzline weg te halen | IRCop
rehash <server> –<flags> | Herlaadt het configuratiebestand. Wanneer je een servernaam opgeeft, herlaad je het bestand van de betreffende server. Je kan ook verschillende flags opgeven. -motd - Herlaad alleen de MOTD en RULES bestanden -opermotd - Herlaad alleen de OPERMOTD -botmotd - Herlaad alleen de BOTMOTD -garbage - Forceer een garbage collection | IRCop
restart <password> <reason> | Herstart het IRCd proces. Wachtwoord is benodigd wanneer drpass { } gezet is. Je kan ook een reden opgeven | IRCop
die <password> | Beeindigt het IRCd proces. Een wachtwoord is benodigd wanneer drpass { } gezet is | IRCop
lag <server> | Dit commando is zoals Sonar of Traceroute, maar dan voor IRC. Je typt /LAG <server> en krijgt een overzicht van alle servers die je langs moet plus de tijden. Handig wanneer je lag wil onderzoeken. | IRCop
sethost <newhost> | Verandert je vhost naar wat je zelf wil | IRCop
setident <newident> | Verandert je ident naar wat je zelf wil | IRCop
chghost <nick> <newhost> | Verandert de hostnaam van een gebruiker die verbonden is | IRCop
chgident <nick> <newident> | Verandert de ident van een gebruiker die verbonden is | IRCop
chgname <nick> <newname> | Verandert de realname van een gebruiker die verbonden is | IRCop
squit <server> | Verbreekt de verbinding van een server in het netwerk | IRCop
connect <server> <port> <server> | Wanneer een server gegeven is, zal geprobeerd worden een verbinding te maken met deze server. Wanneer twee servers gegeven zijn, zal er geprobeerd worden een verbinding te maken tussen beide servers. Zet de leaf op de eerste plaats, de hub op de tweede | IRCop
dccdeny <filemask> <reason> | Voegt een DCCDENY toe zodat het bestand niet verzonden kan worden | IRCop
undccdeny <filemask> | Verwijdert een DCCDENYY | IRCop
sajoin <nick> <channel>, <channel> | Dwingt een gebruiker ertoe een kanaal te joinen. Alleen beschikbaar voor Services en Network Admins | IRCop
sapart <nick> <channel>, <channel> | Dwingt een gebruiker een kanaal te verlaten. Alleen beschikbaar voor Services en Network Admins | IRCop
samode <channel> <mode> | Network en Services Admins kunnen een modus in een kanaal veranderen zonder kanaal operator te zijn | IRCop
rping <servermask> | Berekent de lag in miliseconden tussen servers | IRCop
trace <servermask|nickname> | Wanneer gebruikt op een gebruiker, kun je de class en lag zien. Wanneer je het gebruikt op een server, krijg je de class/versie/link informatie te zien | IRCop
opermotd | Laat de OPERMOTD zien | IRCop
addmotd :<text> | Voegt de gegeven tekst toe aan het einde van de MOTD | IRCop
addomotd :<text> | Voegt de gegeven tekst toe aan het einde van de OPERMOTD | IRCop
sdesc <newdescription> | Server Admins kunnen de beschrijving van hun server aanpassen zonder de server te herstarten | IRCop
addline <text> | Voegt regels aan unrealircd.conf toe | IRCop
mkpasswd <password> | Zal een tekst wachtwoord encrypten welke toegevoegd kan worden aan unrealircd.conf | IRCop
tsctl offset +/- <time> | Past de interne IRCd klok aan (NIET gebruiken wanneer je niet weet wat het precies doet!) | IRCop
tsctl time | Geeft je een TS rapport | IRCop
tsctl alltime | Geeft je een TS rapport van ALLE servers | IRCop
tsctl svstime <timestamp> | Zet de TS tijd op alle servers (NIET gebruiken wanneer je niet weet wat dit doet) | IRCop
htm <option> | Instellingen met betrekking tot "high traffic mode" (HTM). HTM zal sommige commando's, zoals list, whois, who etc uitzetten wanneer er sprake is van veel verkeer op de server. De Opties zijn: -ON Dwingt de server HTM aan te zetten -OFF Dwingt de server HTM uit te zetten -NOISY Server zendt een bericht wanneer HTM aan/uit gaat -QUIET Server zendt GEEN bericht wanneer HTM aan/uit gaat -TO <value> Zeg HTM wanneer hij geactiveerd moet worden | IRCop
stats <option> | B - banversion - Zend de banversion lijst b - badword - Zend de badword lijst C - link - Zend de link block lijst d - denylinkauto - Zend de deny link (auto) block lijst D - denylinkall - Zend de deny link (all) block lijst e - exceptthrottle - Zend De except throttle block lijst E - exceptban - Zend de except ban en except tkl block lijst f - spamfilter - Zend de spamfilter lijst F - denydcc - Zend de deny dcc block lijst G - gline - Zend de gline and gzline lijst Extended flags: [+/-mrs] [mask] [reason] [setby] m Geeft glines die matchen/niet matchen met de mask r Geeft glines met een reden die matcht/niet matcht met de gegeven reden s Geeft glines (niet) gezet door gebruikers met de gegeven naam I - allow - Zend de allow block lijst j - officialchans - Zend de offical channels lijst K - kline - Zend de ban user/ban ip/except ban block lijst l - linkinfo - Zend link informatie L - linkinfoall - Zend alle link informatie M - command - Zend een lijst met hoe vaak elk commando gebruikt is n - banrealname - Zend de ban realname block lijst O - oper - Zend de oper block lijst P - port - Zend informatie over poorten q - sqline - Zend de SQLINE lijst Q - bannick - Zend de ban nick block lijst r - chanrestrict - Zend de channel deny/allow block lijst R - usage - Zend gebruiksinformatie S - set - Zend de set block lijst s - shun - Zend de shun lijst Extended flags: [+/-mrs] [mask] [reason] [setby] m Geeft shuns die matchen/niet matchen met de maskk r Geeft shuns met een reden die matcht/niet matcht met de gegeven reden s Geeft shuns (niet) gezet door gebruikers met de gegeven naam t - tld - Zend de tld block lijst T - traffic - Zend traffic informatie u - uptime - Zend de server uptime en aantal verbindingen U - uline - Zend de ulines block lijst v - denyver - Zend de deny version block lijst V - vhost - Zend de vhost block lijst X - notlink - Zend de lijst van servers die op dit moment niet verbonden zijn Y - class - Zend de class block lijst z - zip - Zend compressie informatie over ziplinked servers (wanneer ziplink ondersteuning gecompiled is) Z - mem - Zend geheugen gebruik informatie | Iedereen
module | Geeft een lijst van alle geladen modules | Iedereen
close | Dit commando verbreekt alle onbekende verbindingen van de IRC server | IRCOp

8 – Veiligheids tips/checklist

Wanneer je bezorgd bent om veiligheid (wat je zou moeten zijn!) geeft deze sectie je een overzicht van de risico's die er zijn. Je kunt dit ook als een "checklist" gebruiken om je netwerk veilig te maken.

De volgorde van de lijst is populariteit/risico niveau/meest-gebruikte-aanval

8.1 Wachtwoorden

-Kies goede oper, link etc wachtwoorden:
- Gebruik kleine en grote letters, en getallen ("whbv1wf5") en/of iets langs ("blaheeteenvis", "AlphaBeta666").
- Gebruik oper/link wachtwoorden niet voor iets anders, bijvoorbeeld je email account, bot wachtwoord, forums, etc...

8.2 Niet-IRCd gerelateerde lekken

Er is een veel grotere kans dat je systeem gehackt wordt door iets wat niet met IRC te maken heeft dan door een bug in UnrealIRCd. Als je bijvoorbeeld http, dns, smtp en ftp servers hebt lopen, loop je een veel grotere kans. Wanneer je een multi-user systeem (bijv. een shell) gebruikt, is er een risico dat lokale exploits en verkeerde rechten (zie het volgende punt) gebruikt worden. Het is een vrij groot risico, dus pas goed op bij het kiezen van een shell provider.

8.3 Rechten en het configuratiebestand

Let erop dat je home en UnrealIRCd directory de juiste rechten hebben. (group/)anderen mogen geen lees-rechten hebben. Anders kan een lokale gebruiker je configuratiebestand zo uitlezen en op zoek gaan naar wachtwoorden. doe chmod -R go-rwx /path/naar/Unreal3.2 wanneer je hier onzeker over bent.
Andere gerelateerde dingen: plaats UnrealIRCd nooit in je webroot map of een andere shared map. Met betrekking tot backups, let erop dat deze ook de juiste rechten hebben! Het gebeurt vaker dat alles veilig is, maar er ergens een backup.tar.gz slingert, leesbaar voor iedereen.
Je doet er ook goed aan encrypted wachtwoorden te gebruiken, wanneer mogelijk. Waneer je met OpenSSL ondersteuning compiled (wat je doet, want je bent bezorgt om veiligheid, toch?) dan raad ik je aan om sha1 of ripemd160 wachtwoorden te gebruiken. Anders gebruik je md5. Wanneer je oper blocks van Unreal3.2.1 of eerder gebruikt, raad ik je aan om de wachtwoorden opnieuw te encrypten, omdat 3.2.1 een nieuw anti-crack beveiliging heeft (het vertraagt het kraken 14x).
Dit is niet "nog een extra beveiliging", want wanneer je slechte wachtwoorden gebruikt, kan alles nog vrij makkelijk gekraakt worden. Wanneer iemand je configuratiebestand te pakken krijgt, zal het de aanvaller vast helpen, bijvoorbeeld link::password-connect.

8.4 Gebruikers gerelateerde problemen

Net zoals de meeste dingen ligt dit niet niet aan UnrealIRCd, maar...
Wees wijs met het toevoegen van opers en admins, en onthoudt het concept van de zwakste link. Hoewel je alles goed hebt gedaan, en dit document hebt uitgevoerd, kan je vriend, die oper is, iets stoms doen. Zoals z'n harde schijf delen via netbios/kazaa/morpheus/..., ontvangt een trojan, gebruikt een makkelijk wachtwoord, etc etc.. Helaas heb jij het niet altijd voor het zeggen.
Let altijd op met het geven van rechten aan opers (oper::flags).

8.5 SSL/SSH & sniffing

Gebruik een SSL connectie tussen servers en als een oper. Dit beschermt je tegen "sniffen". Sniffen is mogelijk wanneer iemand een gehacked systeem tussen jou en je IRCd server heeft. Hij kan dan ALLE traffic zien dat langskomt. Hij kan gesprekken bekijken, alle wachtwoorden lezen (oper, logins, nickserv, etc).. Gebruik daarom altijd ssh in plaats van telnet.

8.6 Denial of Service attacks (DoS) [of: hoe bescherm ik mijn hub]

Veel netwerken hebben ervaren hoe "leuk" een flood of (D)DoS aanval is. Je kan de gevolgen echter beperken. De meeste netwerken hebben een hub server. Wat veel mensen vergeten, is dat het vrij makkelijk is om een hub server te beschermen tegen aanvallen.
Ik zal het hier uitleggen:
1. Stel de naam van de hub in op een naam die niet bestaat, bijv "hub.yournet.com", maar
voeg geen dns record toe. Op deze manier kan de aanvaller de host niet resolven en
kan hij de hub ook niet flooden. Dan link je servers naar de hub door
het IP of een andere niet-publieke hostnaam
Voorbeeld 1: link visibiblename.yournet.com { hostname 194.15.123.16; [etc] };.
Voorbeeld 2: link visibiblename.yournet.com { hostname thehostnamethatworks.yournet.com; [etc] };.
Let op; bij het laatste voorbeeld moet je er zeker van zijn dat je nameservers geen zone transfers toestaan, maar dat is veel te off-topic voor deze documentatie.
2. Een andere belangrijke stap is het verbergen van 'stats C', en andere stats informatie, anders
kunnen aanvallers gewoon je link block zien. Wanneer je zo paranoide bent (zoals
Syzop ;)) kun je dat zo oplossen: set { oper-only-stats "*"; }; to restrict all /stats usage.
Als je dat niet wil doen, verberg dan tenminste "CdDlLXz". Meer hierover in de volgende sectie.
Natuurlijk zijn deze stappen niet bepaald effectief na een aanval omdat de aanvallers
de IPs toch al weten... Maar het wel raadzaam om ze te volgen.
Aanvallers kunnen alle non-hub servers nog steeds flooden, maar dan moeten ze meer moeite
doen dan het aanvallen van 1 of 2 zwakke punten (hubs). Op deze manier blijven je hub en
Services wel nog online.

8.7 Extra informatie

STATS
Het /stats commando geeft veel informatie, het is aan te raden het gebruik ervan zoveel mogelijk te beschermen. Je moet jezelf de vraag stellen "Wat wil ik dat m'n gebruikers kunnen zien?". De meeste grote netwerken kiezen voor niets, daar waar anderen kiezen voor '/stats g' en '/stats k'.
Ik raad je aan om set { open-only-stats "*"; }; te zetten zodat non-opers het /stats commando niet kunnen gebruiken. Wanneer je dit niet wil, kijk dan in de /stats lijst wat non-opers wel mogen zien. Als je twijfelt, stel dan in dat non-opers het niet mogen zien (wat moeten ze met de informatie?).
Om een aantal voorbeelden te geven:
- /stats o: geeft je de namen van opers en hostmasks.
- /stats c: geeft je een idee van serverlinks, en welke als 'backup' te gebruiken
- /stats g, /stats k: meestal gebruikt voor het bannen van proxies.. dit geeft aanvallers gewoon een lijst van proxies die ze kunnen gebruiken.
- /stats E, /stats e: gevoelige informatie, zeker wanneer een aanvaller deze adressen kan gebruiken
- /stats i, /stats y: kan een aanvaller helpen voor het vinden van hosts
- /stats P: helpt hem om serveronly poorten te vinden
etc etc...
MAP / LINKS
Verschillende mensen hebben gevraagd of er een manier was om /map of /links onbruikbaar te maken. Wij denken dat het onzinnig is en een vals gevoel van veiligheid geeft. Hieronder de uitleg... Het verbergen van servers die gebruikt worden door mensen is dom, omdat ze de servers toch al weten! Voor servers die niet gezien morgen worden, zie sectie 8.6.
Wat kun je WEL doen? Sinds 3.2.1 is er een optie genaamd 'flat map' (set::options::flat-map). Dit zal de servers als 'direct gelinkt' laten zien in /map en /links. Gewone gebruikers kunnen dus niet meer zien welke server aan welke gelinkt is. Dit kan een extra niveau van veiligheid zijn, zodat een kiddie geen zwakke punten meer kan zien. Het gebruik hiervan wordt dan ook aangeraden. Let op dat dit niet alles verbergt. Wanneer er een netsplit plaatsvindt, kan men nog steeds zien welke server aan welke gelinkt was.
GEWONE GEBRUIKERS & SNOMASKS
Een mogelijkheid die niet bekend is, is dat gewone gebruikers ook een aantal snomasks kunnen gebruiken, namelijk +s +sk. Op deze manier zien ze rehashes, killes en verschillende andere berichten.
Om het gebruik te stoppen, moet je set::restrict-usermodes gebruiken, set { restrict-usermodes "s"; };.
Het verbergen van deze informatie is geen "echte" beveiliging. Het maakt het echter wel moeilijker om aanvallen te plegen op je servers.

8.8 Bescherming tegen exploits

Er zijn kernel patches die het moeilijker maken om stack- en heap-based exploits te laten werken. Dit is aardig, maar moet niet je hoofdpunt zijn, er zijn veel grotere risicos..
Een ding dat je altijd moet doen, is DE LAATSTE NIEUWE VERSIE GEBRUIKEN. Je kan je aanmelden op de unreal-notify mailinglist. Op deze manier blijf je op de hoogte van nieuwe versies. Je ontvangt eens in de x maanden een e-mail. In deze e-mail wordt ook vermeld of updaten ten zeerste wordt aangeraden in verband met veiligheid.

8.9 Samenvatting

Zoals je nu hopelijk begrijpt, kun je nooit 100% beveiligd zijn. Jij (en wij) moeten elk gat vinden en oplossen, terwijl een aanvaller slechts 1 server met 1 gat hoeft te vinden. Alles wat hier uitgelegd is, HELPT wel enorm bij het verkleinen van risico's Neem dus je tijd voor het beveiligen van je netwerk, en leer het je opers ook. Veel mensen geven niet om veiligheid, totdat ze een keer gehackt worden. Probeer dit te vermijden.

9 – Veel gestelde vragen (FAQ)

De FAQ staat hier online (nog niet vertaald naar het Nederlands!).

A Regular Expressions

Reguliere expressions worden op veel plaatsen gebruikt in Unreal (badwords, spamfilter, aliases). Reguliere expressies zijn een zeer complex instrument voor het vinden van patronen. Ze worden ook wel "regexp" of "regex." genoemd. Unreal gebruikt de TRE regexp library voor haar regex. Deze library ondersteunt enkele zeer complexe en geavanceerde expressies die wellicht verwarrend zijn. Hieronder staat informatie over het gebruik van regexps. Wanneer je geinteresseerd bent in meer technische details over de regex syntax in Unreal, ga dan naar de TRE homepage.

A.1 Letters

Literals zijn de basis componenten van een regexp. Het zijn letters die behandeld worden als gewone tekst. Het patroon "test" bestaat uit vier letters, "t", "e", "s" en "t". In Unreal worden letters niet behandeld als hoofdlettergevoelig, dus "test" zou net zo goed "TEST" kunnen zijn. Elk teken dat geen "meta teken" (wordt verderop uitgelegd) is, wordt behandeld als een letter. Je kan een teken ook expliciet een letter maken, door een backslash (\) te gebruiken. Bijvoorbeeld, de punt (.) is een metateken. Wanneer je de letter . wil gebruiken, moet je \. gebruiken. Unreal zal dit dan zien als een echte punt. Het is ook mogelijk dat je een teken wil gebruiken dat niet makkelijk te typen is, bijvoorbeeld ASCII teken 3 (kleur). In plaats van het gebruiken van een IRC client om dit teken te maken, kun je ook een speciale tekenvolgorde gebruiken, de \x. Wanneer je \x3 typt, zal dit worden opgevat als ASCII teken 3. Het nummer achter \3 is een hexidecimaal getal tussen \x0 en \xFF.

A.2 Dot Operator

De punt (.) operator wordt gebruikt om "welk teken dan ook" aan te geven. Het geeft 1 teken aan. Bijvoorbeeld, als je "a.c" gebruikt, zal dit "abc", "adc" enz zijn. Het zal echter niet voor "adb" staan, omdat de "a" en "c" erin moeten zitten.

A.3 Repetition Operators

Een veel voorkomende fout die gemaakt wordt met regex, is dat mensen aannemen dat ze met wildcards werken. Dat houdt in, de * en ? tekens stellen een wildcard voor. Hoewel deze tekens dezelfde functie hebben in een regex, zijn ze niet precies hetzelfde. Daarbijkomend, regex ondersteunt veel ingewikkeldere methoden van herhaling.

De basis van een herhalings-operator is de ? operator. Deze operator matcht 0 of 1 van de vorige tekens. Dit ,"van de vorige tekens", is waar de ? in regex verschilt met een wildcard. In een wildcard, "a?c" zou "a" gevolgd door elk teken (of geen teken) matchen, gevolgd door een "c". In regex heeft het een andere betekenis. Het matcht 0 of 1 letter "a", gevolgd door de letter "c". Het komt erop neer dat de ? de a aanpast, zodanig dat het instelt hoeveel a's gebruikt mogen worden. Om een ? na te bootsen in een wildcard, wordt de . operator gebruikt. De regex "a.?c" is hetzelfde als de eerder genoemde wildcard. Het matcht de letter "a", gevolgd door 0 of 1 willekeurige letter (de ? heeft de . aangepast), gevolgd door een "c".

De volgende herhalende operator is de *. Eveneens, deze operator is gelijk aan een wildcard. Het matcht 0 of meer van de vorige tekens. Let op dat "van de vorige tekens" iets is dat kenmerkend is voor herhalende operators. De regex "a*c" matcht 9 of meer a's, gevolgd door een "c". "aaaaac" zal dus matchen. Eveneens werkt dit als een wildcard, je moet dus "a.*c" gebruiken. Dit zal de . laten veranderen door de *.

De + operator lijkt heel veel op de *. Maar in plaats van 0 of meer, matcht deze 1 of meer. "a*c" matcht "c" (0 a's gevolgd door een c), waar "a+c" niet zou matchen. De "a+" geeft aan dat er minstens 1 a moet zijn. Dus "c" matcht niet, maar "ac" en "aaaaaaaac" wel.

De meest ingewikkelde herharlings operator is de "boundary" (grens). Een boundary geeft je de mogelijkheid om precies aan te geven hoeveel van het vorige teken er moeten zijn. Bijvoorbeeld anneer je precies 8 a's wil hebben, of minstens 8 a's, of tussen de 3 en 5 a's. Een boundary laat je dit alles instellen. De basis syntax is {M,N}, waar M de linkergrens en N de rechtergrens zijn. Een match tussen 3 en 5 a's zou dus zijn "a{3,5}". Je hoeft niet beide waardes op te geven. Wanneer je "a{8}" opgeeft, moeten er precies 8 a's zijn. Daarom is "a{8}" gelijk aan "aaaaaaaa". Wanneer je enkel het minimale aantal wil opgeven, kun je "a{8,}" gebruiken. Er moeten dan minimaal 8 a's aanwezig zijn.

Standaard zijn alle herhalingsoperatoren "greedy" (gretig). Dit is een beetje een ingewikkeld idee. Het komt erop neer dat een operator zoveel mogelijk tekens zal matchen als mogelijk. Dit kan het beste uitgelegd worden aan de hand van een voorbeeld.

Stel, we hebben de volgende tekst:
HELLO
En de volgende regex:
.+L

Je zou misschien denken dat .+ matcht met "HE.". Maar, dit is fout. Omdat de + greedy is, matcht het "HEL.". De achterliggende reden is dat het de grootste deel van de ingevoerde tekst die gematched kan worden pakt, terwijl de hele regex nog geldt. In dit voorbeeld koos het voor "HEL" omdat de enige andere vereiste achter een bepaalde tekst gematched door .+ een "L" moest zijn. Omdat de tekst "HELLO" is, wordt "HEL" gevolgd door een "L", en daarom matcht het. Soms is het handig om een operator niet-greedy te maken. Dit doe je door een ? te plaatsen achter de herhalingsoperator. ".+?L" matcht nu "HE" in plaats van "HEL" omdat het op niet-greedy gezet is. De ? kan achter elke herhalingsoperator geplaatst worden: ??, *?, +?, {M,N}?.

A.4 Bracket Expressions

Haken-expressies zijn een handige manier om een "of" operator te maken. Bijvoorbeeld anneer je "matcht een a of een b" wil maken. De naam komt omdat het tussen haken staat ([]). De basis syntax is dat er in de expressie een serie tekens staan. Deze tekens worden dan behandeld alsof er een "of" tussenstaat. Als voorbeeld; "[abc]" matcht een "a", "b" of "c". Om deze reden matcht de regexp "a[bd]c" wel "abc" en "adc", maar niet "acc".

Een veel voorkomend geval is het controleren op een letter of een getal. In plaats van "[0123456789]" kun je ook ranges gebruiken. Ranges werken met een begin- en eindpunt, met een - ertussen. Een makkelijkere manier om te controleren op een getal is dan ook "[0-9]". Je kan hetzelfde doen met letters, zelfs met elke ASCII waarde. Wanneer je elke letter wil matchen, gebruik je "[a-z]". Je kan ook meerdere ranges gebruiken in dezelfde expressie. Om bijvoorbeeld een getal of letter te matchen, gebruik je "[0-9a-z]". Een probleem dat dit kan veroorzaken is dat de - een speciaal teken is. Om zo'n streepje te matchen, plaats je deze gewoon als eerste of laatste teken van een expressie. Bijvoorbeeld "[0-9-]" zal een getal of een streepje matchen.

Om het nog makkelijker te maken zijn er verschillende "character classes", die gebruikt mogen worden in bracket expressies. These character classes eliminate the need to define certain ranges. Character classes are written by enclosing their name in :'s. For Voorbeeld, "[0-9]" could also be written as "[:isdigit:]". The list below shows all of the available character classes and what they do:

- `alnum` - alphanumerieke tekens
- `alpha` - alphabetische tekens
- `blank` - lege tekens
- `cntrl` - control tekens
- `digit` - decimale getallen (0 tot 9)
- `graph` - alle afbeeldbare tekens, zonder spatie
- `lower` - kleine letters
- `print` - alle afbeeldbare tekens, met spatie
- `punct` - alle afbeeldbare tekens, zonder spatie of alphanumeriek
- `space` - witruimte tekens
- `upper` - hoofdletters
- `xdigit` - hexadecimale nummers

Een belangrijke opmerking over teken classes is dat ze het enige element in een expressie MOETEN zijn [:isgetal:-] is NIET toegestaan. Je moet dit doen door de expressies in te nestelen. Om "[0-9-]" te bereiken, kun je "[[:isgetal:]-]" gebruiken.

De laatste mogelijkheid van een bracket expressie is de ontkenning. Soms handig om te zeggen "alles behalve deze tekens". Wanneer je bijvoorbeeld wil controleren of een teken "geen letter is", is het makkelijker om a-z te controleren en te zeggen "deze niet". Om een ontkenning te maken gebruik je een "^" als eerste teken. Bijvoorbeeld "[^a-z]" matcht elke niet-letter. Net als met een streepje, moet je dit teken niet op de eerste plaats zetten, maar achteraan wanneer je letterlijk een ^ wil matchen ("[a-z^]". Tevens, om een character less te ontkennen, moet je ook deze weer nestelen. "[^[:isdigit:]]" zou elk niet-getal matchen.

A.5 Assertions

Assertions geven je de mogelijkheid om bepaalde voorwaardes die niet uit te drukken zijn in teken strings, en bieden shortcuts voor enkele veel gebruikte bracket expressies.

Het ^-teken wordt gezien als het "linker anker" (left anchor). Dit teken slaat terug op het begin van een string. Wanneer je een regexp als "test" geeft, matcht het bijvoorbeeld "dit is een test", omdat er "test" in de string zit. Soms is het bruikbaar om aan te geven dat een string met een patroon begint. Dit kan gedaan worden door ^. "^test" betekent bijvoorbeeld dat de tekst moet beginnen met "test". Bijkomend, het $-teken is het "rechter anker". Dit teken slaat terug op het einde van een string. Dus wanneer je "^test$" gebruikt, moet de string exact gelijk zijn aan "test".

Overeenkomstige testen bestaan ook voor woorden. Alle andere assertions worden aangegeven door een \ gevolgd door een bepaald teken. Bijvoorbeeld, om het begin en einde van een woord te controleren, kun je \< en \> gebruiken.

The remaining assertions all come with two forms, a positive and a negative. These assertions are listed below:

- `\b` - Woord grens
- `\B` - Niet-woord grens
- `\d` - Getal teken (gelijk aan `[[:digit:]]`)
- `\D` - Niet-getal teken (gelijk aan `[^[:digit:]]`)
- `\s` - Spatie teken (gelijk aan `[[:space:]]`)
- `\S` - Niet-spatie teken (gelijk aan `[^[:space:]]`)
- `\w` - Woord teken (gelijk aan `[[:alnum:]_]`)
- `\W` - Niet-woord teken (gelijk aan `[^[:alnum:]_]`)

A.6 Alternation

Alternatie is een methode om "of" te zeggen. De alternatie operator is een verticale streep (|). Wanneer je bijvoorbeeld "a of b" wil zeggen, kun je "a|b" gebruiken. Voor normale letters kan dit vervangen worden door bracket expressies, maar alternatie kan ook gebruikt worden in subexpressies (zie volgende sectie).

A.7 Subexpressions

Subexpressies zijn onderdeel van een regex die behandeld wordt als een aparte gedaante. Er zijn twee manieren om een subexpressie te maken. De twee methodes verschillen in "back references", wat later uitgelegd wordt. Om een subexpressie die een back reference aangeeft aan te geven, sluit je het in met (). Om een subexpressie die geen back reference gebruikt, vervang je de open haken door "(?:". Zoals "([a-z])" en "(?:[a-z])". De reden waarom subexpressies handig zijn is dat je operators kan toevoegen aan een expressie. Alle herhalingsoperators, bijvoorbeeld, die aangaven "X of meer van de vorige tekens" kunnen ook gebruikt worden om "X of meer van de vorige subexpressie" aan te geven. Als je bijvoorbeeld de regex "[0-9][a-z][0-9]" hebt om een getal, gevolgd door een letter, gevolgd door een getal aan te geven en dan besluit om deze regex twee keer te laten matchen. Normaal zou je "[0-9][a-z][0-9][0-9][a-z][0-9]" gebruiken. Maar met behulp van subexpressies kun je simpelweg ([0-9][a-z][0-9]){2}" gebruiken.

A.8 Back References

Back references geven je de mogelijkheid om terug te grijpen op een string die gematched was door een van de subexpressies van een regex. Je gebruikt een back reference door een backslash (\) gevolgd door een nummer, 0-9, te gebruiken. Bijvoorbeeld \1. \0 is een speciale reference die terugslaat op de hele regex, in plaats van een subexpressie. Back references zijn handig wanneer je iets dezelfde string twee keer wil matchen. Je hebt bijvoorbeeld een nick!user@host. Je weet dat er een trojan is die de nick en username gebruikt die "[0-9][a-z]{5}" matcht, en zowel de nickname als de username zijn hetzelfde. Het gebruik van "[0-9][a-z]{5}![0-9][a-z]{5}@.+" zal niet werken, omdat het toestaat dat verschillende nicknames en usernames mogelijk zijn. De nick zou bijvoorbeeld 1abcde kunnen zijn, en de username 2fghij. Met behulp van back references kun je dit omzeilen. Het gebruik van "([0-9][a-z]{5})!\1@.+" werkt precies zoals verwachten. Dit zoekt naar de nickname die overeenkomt met de gegeven subexpressie, en gebruikt dan een back reference die zegt dat de username precies hetzelfde moet zijn als de nickname.

Omdat je maar 9 back references, is de (?:) notatie handig. Je kan een subexpressie maken, zonder een back reference te verspillen. Bijkomend, omdat back reference informatie niet opgeslagen hoeft te worden, is het ook sneller. Om deze redenen zouden niet-back reference expressies gebruikt moet worden wanneer back references niet nodig zijn.

A.9 Case Sensitivity

Zoals al eerder aangegeven was, maakt Unreal alle regexps niet hoofdlettergevoelig. De hoofdreden voor dit gedrag is dat er meer redenen zijn dat je niet hoofdlettergevoelig gebruikt in plaats van wel. Bijvoorbeeld, wanneer je de tekst "www.test.com" wil blokkeren, wil je "WWW.TEST.COM" ook blokkeren. Er zijn ook gevallen waar je juist wel hoofdlettergevoeligheid wil toepassen, bijvoorbeeld voor het vinden van bepaalde trojans. Om deze reden is er een manier om hoofdlettergevoeligheid dynamisch aan en uit te zetten. Om het uit te zetten, gebruik je "(?-i)", en om het aan te zetten "(?i"). Bijvoorbeeld, "(?-i)[a-z](?i)[a-z]" zal een kleine letter matchen (hoofdlettergevoeligheid staat uit), gevolgd door of een hoofdletter of een kleine letter (hoofdlettergevoeligheid staat aan). In plaats van het steeds onthouden om de hoofdlettergevoeligheid weer aan te zetten wanneer je klaar bent, kun je ook aangeven dat de gevoeligheid alleen in subexpressies gebruikt moet worden. "(?-i:[a-z])[a-z]" is bijvoorbeeld gelijk aan de vorige regexp, omdat de -i alleen van toepassing is op de gegeven subexpressie.