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:
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:
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!
Installation Instructions
Linux:
Windows:
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.
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 netwerk. 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).
Tip: Wanneer je met een *NIX systeem werkt, kun je './unreal gencloak' gebruiken in je shell. Dit genereert 3 willekeurige strings die je kunt gebruiken.
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).
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.
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 ServicesUnrealIRCd 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
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
UnrealIRCd heeft veel machtige oper commando's welke uitgelegd worden in User & Oper Commands. Je zult deze waarschijnlijk willen doornemen na installatie
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:6697Wanneer 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].
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
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. |
*** 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: +NHet kan zelfs nog geavanceerder/complexer:
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'. |
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:
| |||||||||||||||||||||||||||||||||
[action] | Specificeert de te ondernemen actie (slechts 1 action is mogelijk)
| |||||||||||||||||||||||||||||||||
[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 |
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)
Slow Spamfilter Detection
Een spamfilter regex kan de IRCd aanzienlijk trager maken. Dit hangt
sterk af van de regex die je gebruikt (en hoe de regex engine deze
gebruikt). Sommige zijn erg snel en UnrealIRCd kan er duizenden
uitvoeren per seconde. Anderen kunnen enorm traag zijn en de IRCd
bevriezen.
Om dit tegen te gaan, heeft Unreal Slow Spamfilter Detection:
voor elke spamfilter checkt Unreal, elke keer wanneer het uitgevoerd
wordt, hoelang het uitvoeren duurt. Wanneer een bepaalde grens bereikt
wordt, waarschuwt de IRCd of verwijdert de IRCd de complete spamfilter.
De waarschuwing wordt ingesteld door set::spamfilter::slowdetect-warn
(standaard: 250ms) en het automatisch verwijderen wordt ingesteld door set::spamfilter::slowdetect-fatal (standaard: 500ms).
Je kunt ze beiden op 0 (nul) zetten om de functies uit te schakelen.
Deze feature is momenteel niet beschikbaar voor Windows.
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, oper::from::userhost, 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).
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; }; };
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
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.
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:
poort kan alleen gebruikt worden door gebruikers | |
poort kan alleen gebruikt worden door servers | |
CR javachat ondersteuning | |
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.
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:
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"; };
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:
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";
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 altijd een leaf, tenzij je hub instelt. Ze is ook een leaf als je leaf * hebt, of leafdepth 1 is.
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 waartegen deze hub niet mag verbinden. Als je * instelt krijg je hetzelfde
effect als geen hub directive instellen.
leaf-depth (optioneel)
Deze waarde geeft aan hoeveel hops (aantal servers) deze server onder zich mag hebben. Bijvoorbeeld,
1 betekent dat deze server geen enkele andere server onder zich mag hebben (een leaf). 2 betekent dat
er gelinkt mag worden naar servers die geen servers onder zich hebben (een hub die alleen leafs linkt).
De waarde 0 betekent geen limiet en is de standaard waarde.
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; }; };
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.
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"; };
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 = LpT4xqPI5Daarna 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 = 1Daarna 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.
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 (NOG NIET INGEVOERD).
set::dns::retries <number-of-retries>;
Een numerieke waarde die instelt hoeveel keer er opnieuw geprobeerd moet worden
een DNS lookup te voltooien (NOG NIET INGEVOERD).
set::dns::nameserver <name-of-dns-server>;
De hostnaam die gebruikt moet worden voor een DNS lookup (NOG NIET INGEVOERD).
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::server-cipher-list <cipherlist>;
Stelt in welke ciphers toegestaan worden, standaard laten we dit over aan OpenSSL.
Zie http://www.openssl.org/docs/apps/ciphers.html
hoe je een lijst van ciphers instelt.
set::ssl::renegotiate-bytes <value>;
Stelt in na hoeveel bytes een SSL sessie opnieuw moet worden ingesteld (bijv: 20m voor 20 megabytes).
set::ssl::renegotiate-timeout <timevalue>;
Stelt in na welke periode een SSL sessie opnieuw moet worden ingesteld (bijv: 1h voor 1 uur).
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::spamfilter::slowdetect-warn <value>
Wanneer het uitvoeren van een spamfilter langer duurt dan de hier opgegeven tijd
in milliseconden (1000ms = 1 seconde), wordt er een waarschuwing gestuurd naar alle
opers (standaard: 250).
Zie ook Slow Spamfilter Detection.
set::spamfilter::slowdetect-fatal <value>
Wanneer het uitvoeren van een spamfilter langer duurt dan de hier opgegeven tijd
in milliseconden (1000ms = 1 seconde), wordt de spamfilter verwijderd (standaard: 500).
Zie ook Slow Spamfilter Detection.
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.
set::pingpong-warning <yes|no>
Wanneer NOSPOOF aan staat (meestal op Windows), stuur dan een bericht naar de gebruiker
om '/quote pong ..' te typen als ze problemen hebben met verbinden? Standaard is no
set::watch-away-notification <yes|no>
Geeft je de mogelijkheid AWAY notificaties in WATCH aan/uit te zetten. Standaard is yes (ja).
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 |
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.2 Niet-IRCd gerelateerde lekken
8.3 Rechten en het configuratiebestand
8.4 Gebruikers gerelateerde problemen
8.6 Denial of Service attacks (DoS) [of: hoe bescherm ik mijn hub]
8.8 Bescherming tegen exploits
9 – Veel gestelde vragen (FAQ)
De FAQ staat hier online (nog niet vertaald naar het Nederlands!).
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.
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.
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.
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}?.
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:
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.
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:
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.