/* * example.conf von Daniel Hawton AKA Osiris (osiris@unrealircd.org). * $Id$ * * Arbeitet mit Unreal3.2 und darüber * * Dies hier ist die neue example.conf. Sie ähnelt irgendwie ein wenig C++ und sie * soll sie jedenfalls einmal erläutert werden. Es ist ein wenig schwer, erstmals * damit umzugehen, aber mit ein Wenig Übung und sorgfältigem Lesen sollte das zu * verstehen sein. * * Diese Datei ist einfach in das Hauptverzeichnis des UnrealIRCD zu kopieren und in * 'unrealircd.conf' umzubenennen. * * ZU BEACHTEN: Sämtliche Zeilen außer der mit einer '{' zu Beginn werden mit dem Zeichen * ';' beendet, auch die Zeile mit '}'. (Beliebter Syntaxfehler!) * Kommentar Zeilen werden vom IRCd ignoriert. * * BITTE LESE die doc/unreal32docs.html! Sie ist auch online erhältlich bei: * www.vulnscan.org/UnrealIrcd/unreal32docs.html * Diese Datei enthält zahlreiche ergänzende Informationen über jeden Block, Variablen usw. * Übersetzung durch stylus740@smart-irc.de (bei irc.smart-irc.net) */ /* Kommentar Typen */ #Kommentar Typ 1 (Shell Typ) // Kommentar Typ 2(C++ Stil) /* Kommentar Typ 3 (C Stil) */ #Solche Zeilen vom Typ 1, 2 oder 3 werden vom ircd ignoriert. /* * UnrealIRCd arbeitet mit Modulen, die geladen werden, wenn sie benötigt werden. * Man benötigt mindestens das commands Modul und ein cloaking Modul. */ /* FÜR *NIX (Unix, Linux, Xenix etc.), sind diese 2 Zeilen auszukommentieren: */ //loadmodule "src/modules/commands.so"; //loadmodule "src/modules/cloak.so"; /* FÜR Windows sind diese 2 Zeilen auszukommentieren: */ //loadmodule "modules/commands.dll"; //loadmodule "modules/cloak.dll"; /* * Man kann über eine 'include' Anweisung auch weitere Konfigurationsdateien einfügen. * help.conf enthält sämtliche /helpop Texte. Die badwords.*.conf filtert alle badword * Einträge für den Modus +G... * Die spamfilter.conf enthält einige wirksame Regeln für aktuelle Trojaner. * Falls man diese Dateien mit einfügen möchte: */ include "help.conf"; include "badwords.channel.conf"; include "badwords.message.conf"; include "badwords.quit.conf"; include "spamfilter.conf"; /* * NEU: me {} * ALT: M:Line * me {} legt Name, Beschreibung und eindeutige Nummer ('numeric') für diesen Server fest. * Syntax ist wie folgt: * me { * name "server.name"; * info "Server Beschreibung"; * numeric (server numeric*); * }; * Falls der Server mit anderen gelinkt wird, darf muss die Nummer bei 'numeric' eindeutig * sein, darf also von keinem anderen Server im Netzwerk verwendet werden. */ me { name "irc.foonet.com"; info "FooNet Server"; numeric 1; }; /* * NEU: admin {} * ALT: A:Line * Admin liefert Informationen über den Server Administrator. Man kann * so viele Zeilen unter 'admin {' angeben, wie man will. * Syntax ist wie folgt: * admin { * "erste Zeile"; * "zweite Zeile"; * [usw] * }; */ admin { "Bob Smith"; "bob"; "widely@used.name"; }; /* * NEU: class {} * ALT: Y:line (alte Form war verwirrend) * Hiermit werden Klassen und ihre Einstellungen festgelegt. Eine Klasse ist eine Gruppen- * einstellung für Verbindungen. So kann man beispielsweise Server Verbindungen in einer * eigenen Klasse behandeln, statt zusammen mit Clients. * Syntax ist wie folgt: * class (class name) * { * pingfreq (wie oft in Sekunden wird ein user/server angepingt); * maxclients (wie viele Verbindungen sind in dieser Klasse möglich); * sendq (maximale send Queue einer Verbindung); * recvq (maximale Empfangs Queue einer Verbindung [Flood Kontrolle!]); * }; */ class clients { pingfreq 90; maxclients 500; sendq 100000; recvq 8000; }; class servers { pingfreq 90; maxclients 10; /* Wieviele Servers können gleichzeitig gelinkt sein */ sendq 1000000; connfreq 100; /* Wieviele Sekunden zwischen jedem Verbindungsversuch */ }; /* * NEU: allow {} * ALT: I:Line * Hier wird festgelegt, welche Verbindungen erlaubt sind... * Grundlegend kann man damit Clienten erlauben, zu verbinden und hat etwas Kontrolle * Syntax ist wie folgt: * allow { * ip (ip Maske für allow); * hostname (host Maske); * class (Klasse, die zugewiesen wird [siehe class {}]); * password "(password)"; (optional) * maxperip (wie viele Verbindungen je IP); (optional) * }; */ allow { ip *@*; hostname *@*; class clients; maxperip 5; }; /* Passworded allow line */ allow { ip *@255.255.255.255; hostname *@*.passworded.ugly.people; class clients; password "f00Ness"; maxperip 1; }; /* * NEU: allow channel {} * ALT: chrestrict * Erlaubt es Usern, einen Channel zu betreten... * Ist wie eine Ausnahme von 'deny channel'. * Syntax ist wie folgt: * allow channel { * channel "channel name"; * }; */ allow channel { channel "#WarezSucks"; }; /* * NEU: oper {} * ALT: O:Line * Legt einen IRC Operator fest * IRC Operatoren halten den Server in Ordnung, warten ihn und halten die Verbindung * zum Netzwerk. * Syntax ist wie folgt: * oper (login) { * class (Klasse, die zugewiesen wird, falls anders als meine, wird eine neuee Klasse * zugewiesen); * from { * userhost (ident@host); * userhost (ident@host); * }; * flags * { * (Flags hier*); * }; * ODER * flags "alte Form von Flags, wie OAaRD"; * }; */ /* Die Liste möglicher Oper Flags kann in doc/unreal32docs.html#operblock nachgelesen werden * [WIRKLICH empfehlenswert, zu lesen!] */ oper bobsmith { class clients; from { userhost bob@smithco.com; }; password "f00"; flags { netadmin; can_zline; can_gzline; can_gkline; global; }; }; /* * NEU: listen {} * ALT: P:Line * Legt den Port fest, an dem der ircd 'lauscht', um Usern/Servern zu erlauben, eine * Verbindung zum Server aufzunehmen. * Syntax ist wie folgt: * listen (ip number):(port number) * { * options { * (options here); * }; * }; * oder für ein einfaches listen: * listen (ip):(port); * * ACHTUNG: für ipv6 ips (3ffe:b80:2:51d::2 etc), benutze listen [ip]:port; * * Das funktioniert ebenfalls. */ /* Options for listen: OLD | NEW S serversonly C clientsonly J java s ssl * standard */ /* ZU BEACHTEN BEI SSL PORTS: SSL Ports sind nicht standardisiert. * Es wird oft gesagt, man solle den Port 994 benutzen, weil dies der * offizielle SSL Port sei. Aber das erfordert root Rechte! Andererseits * ist der Port 194 der offizielle Port und wann hat man je einen Ircd * auf diesem Port laufen gesehen? * Unsere Empfehlung ist, den Port 6697 für SSL zu benutzen, wie es auch * bei vielen anderen Netzwerken gemacht wird und für z.B. StunTour benutzt wird. * Man kann so viele SSL Ports öffnen, wie man will, aber wenn man (auch) den Port * 6697 benutzt, hilft man mit, die Welt ein klein wenig zu standardisieren ;). */ listen *:6697 { options { ssl; clientsonly; }; }; listen *:8067; listen *:6667; /* ACHTUNG: Wird der IRCd auf einer Shell mit verschiedenen IP's ausgeführt, kann * die Fehlermeldung 'Address already in use' ('Adresse wird schon benutzt') * in den Logfiles auftauchen und der IRCd startet nicht. * Das bedeutet, dass man eine spezifische Adresse anstelle von '*' definieren * MUSS, wie z.B.: * listen 1.2.3.4:6667; * Es sollte klar sein, dass die IP durch die zu ersetzen ist, die einem * zugewiesen ist. */ /* * NEU: link {} * ALT: C/N:Lines * Hiermit wird ein okay für eine Server Verbindung festgelegt. * ACHTUNG: BEIDE SERVER MÜSSEN EINE LINK {} EINSTELLUNG HABEN, UM KORREKT ZU VERBINDEN! * Syntax ist wie folgt: * link (server name) * { * username (username, * funktioniert auch); * hostname (ip Nummer/Hostmaske); * bind-ip (Welche IP soll zum Verbinden benutzt werden, oder *); * port (Port, zu dem verbunden werden soll); * hub (Wenn dies ein Hub ist, funktioniert * , oder Servermasken); * [oder leaf *;] * password-connect "(Passwort zu senden)"; * password-receive "(Passwort, welches wir emfangen sollten)"; * class (Klasse, in die Server sollen); * options { * (options hier*); * }; * // Wird SSL benutzt, kann bestimmt werden, welche Verschlüsselung im SSL * // Modus zu benutzen ist * // Bei mehreren "openssl ciphers" sind die einzelnen Verschlüsselungen * // durch ':' zu trennen * * ciphers "DES-CBC3-MD5"; * * }; */ /* options: OLD | NEW S ssl Z zip N/A autoconnect N/A quarantine N/A nodnscache */ link hub.mynet.com { username *; hostname 1.2.3.4; bind-ip *; port 7029; hub *; password-connect "LiNk"; password-receive "LiNk"; class servers; options { /* Achtung: autoconnect sollte nicht benutzt werden, wenn man Services linkt */ autoconnect; ssl; zip; }; }; /* * * NEU: ulines {} * ALT: U:Line * U-lines geben Servern mehr Möglichkeiten/Befehle, sie sollten NUR für Services/Stats * gesetzt werden und NIEMALS für normale UnrealIRCd Server! * Syntax ist wie folgt: * ulines { * (server to uline); * (server to uline); * [etc] * }; */ ulines { services.roxnet.org; stats.roxnet.org; }; /* * NEU: drpass {} * ALT: X:Line * Hiermit werden die Passworte für /die und /restart festgelegt. * Syntax ist wie folgt: * drpass { * restart "(Passwort für Restart)"; * die "(Passwort für die (die = 'sterben' = Abschaltung))"; * }; */ drpass { restart "I-love-to-restart"; die "die-you-stupid"; }; /* * NEU: log {} ALT: N/A Festlegung von Namen und Speicherort der Logfiles. Man kann * beliebig viele festlegen. * * FLAGS: errors, kills, tkl, connects, server-connects, oper * * Syntax: * log "log file" * { * flags * { * flag; * flag; * etc.. * }; * }; */ log "ircd.log" { /* Lösche das Logfile und starte ein neues, wenn 2MB erreicht wurden, nichts festlegen, wenn man immer das gleiche Log will */ maxsize 2097152; flags { oper; kline; connects; server-connects; errors; sadmin-commands; chg-commands; oper-override; spamfilter; }; }; /* * NEU: alias {} * ALT: N/A * Hier kann man Befels Aliasse festlegen, wie z.B. /nickserv, /chanserv usw. * FLAGS: services, stats, normal * * Syntax: * alias "name" { * target "points to"; * type aliastype; * }; * * [ACHTUNG: Mann kann hier auch eine Datei mit vordefinierten Aliassen per include * einfügen. Siehe auch: doc/unreal32docs.html Abschnitt 2.9] */ // Hiermit wird der Befehl /nickserv an den User NickServ geleitet, welcher zur Einstellung set::services-server server verbunden ist /*alias NickServ { target "NickServ"; type services; };*/ // Soll der Befehl auf denselben Nick wie das der Befehl leiten, kann man den Nick auslassen //alias ChanServ { type services; }; // leitet den /statserv Befehl an den User StatServ aus set::stats-server server //alias StatServ { type stats; }; // leitet den /superbot Befehl an den User SuperBot //alias SuperBot { type normal; }; /* Standard Aliasse */ alias NickServ { type services; }; alias ChanServ { type services; }; alias OperServ { type services; }; alias HelpServ { type services; }; alias StatServ { type stats; }; /* * NEU: alias {} * ALT: N/A * Hier können Befehls Aliase, wie z.B.: /identify, /services, usw festgelegt werden. * * Syntax: * alias "name" { * format "format string" { * target "zeigt auf"; * type aliastype; * parameters "zu sendende Parameter"; * }; * type command; * }; */ /* Die nachfolgenden Zeilen eigens deshalb, um zu zeigen, dass trotz gleichem Namens die vorherige Anweisung * völlig unterschiedlich in der Syntax ist, obwohl eine ähnliche Funktion unterstützt wird. */ /* alias "identify" { format "^#" { target "chanserv"; type services; parameters "IDENTIFY %1-"; }; format "^[^#]" { target "nickserv"; type services; parameters "IDENTIFY %1-"; }; type command; }; */ /* Die alias::format Anweisung ist ein regulärer Ausdruck. Das erste Format passt auf den /identify Befehl, * wenn das erste Zeichen ein # ist. Dann wird dies an den chanserv alias mit dem Parameters IDENTIFY * %1- übergeben. Das zweite Format passt auf den /identify Befehl, wenn das erste Zeichen kein # ist. Danach * wird der Befehl an den nickserv alias mit den Parameters IDENTIFY %1- geleitet. */ /* Die alias::format::parameters Scripting Sprachen ähnlich. %N (wobei N einen Nummer ist) repräsentiert einen * Parameter, der an den Befehl (in diesem Fall /identify) zu senden ist. Wird %N- angegeben, bedeutet dies * alle Parameter vom N bis zum letzten Parameter des Strings. Man kann ebenso %n angeben, welches durch den * Nicknamen des users ersetzt wird. */ /* Standard Aliasse */ alias "services" { format "^#" { target "chanserv"; type services; parameters "%1-"; }; format "^[^#]" { target "nickserv"; type services; parameters "%1-"; }; type command; }; alias "identify" { format "^#" { target "chanserv"; type services; parameters "IDENTIFY %1-"; }; format "^[^#]" { target "nickserv"; type services; parameters "IDENTIFY %1-"; }; type command; }; /* * NEU: tld {} * ALT: T:Line * Hiermit werden unterschiedliche motd und rules Dateien in Abhängigkeit * von der Hostmaske des Clients eingestellt. * Syntax ist wie folgt: * tld { * mask (ident@host); * motd "(motd file)"; * rules "(rules file)"; * }; */ tld { mask *@*.fr; motd "ircd.motd.fr"; rules "ircd.rules.fr"; }; /* zu beachten: Will man nur die default motd/rules Dateien (ircd.motd, ircd.rules) * für jedermann benutzen, genügt es, den obigen Beispiel Block einfach zu löschen. */ /* * NEU: ban nick {} * ALT: Q:Line * Bannt einen Nicknamen, so dass dieser nicht benutzt werden kann. * Syntax ist wie folgt: * ban nick { * mask "(nick to ban)"; * reason "(reason)"; * }; */ ban nick { mask "*C*h*a*n*S*e*r*v*"; reason "Reserviert für Services"; }; /* * NEU: ban ip {} * ALT: Z:Line * Bannt eine IP, so dass diese nicht mehr zum Netzwerk verbinden kann. * Syntax: * ban ip { mask (ip Nummer/Hostmaske); reason "(Grund)"; }; */ ban ip { mask 195.86.232.81; reason "Server nicht mehr gelinkt"; }; /* * NEU: ban server {} * ALT: Server Q:Line * Nimmt einem Server die Möglichkeit, zum Neztwerk zu verbinden. * Wenn der Server zu einem anderen Server des Netzwerkes linkt, wird der * lokale server die Verbindung zum Netzwerk trennen. * Syntax ist wie folgt: * ban server { * mask "(Server Name)"; * reason "(angegebener Grund)"; * }; */ ban server { mask eris.berkeley.edu; reason "Hau ab hier."; }; /* * NEU: ban user {} * ALT: K:Line * Bewirkt, dass ein User mit einer bestimmten Maske nicht mehr zum Server verbinden kann. * Syntax: * ban user { mask (Hostmaske/ip Nummer); reason "(Grund)"; }; */ ban user { mask *tirc@*.saturn.bbn.com; reason "Idiot"; }; /* * NEU: ban realname {} * ALT: n:Line * Verhindert, dass ein bestimmter Realname benutzt werden kann. * Syntax: * ban realname { * mask "(Realname)"; * reason "(Grund)"; * }; */ ban realname { mask "Swat Team"; reason "mIRKFORCE"; }; ban realname { mask "sub7server"; reason "sub7"; }; /* * Sämtliche Banns dürfen durch zusätzliche Einträge wiederholt werden! * * NEU: except ban {} * ALT: E:Line * Diese Maske ist von Banns ausgenommen. * Syntax: * except ban { mask (ident@host); }; * except ban {} kann so oft angegeben werden, wie man für verschiedene Hosts will. */ except ban { /* don't ban stskeeps */ mask *stskeeps@212.*; }; /* * NEU: deny dcc {} * ALT: dccdeny.conf * Mit diesem Block können dcc send's geblockt werden... Gut, um Viren aufzuhalten. * Syntax: * deny dcc * { * filename "zu sperrende Datei(ie, *exe)"; * reason "Grund"; * }; */ deny dcc { filename "*sub7*"; reason "Möglicherweise Sub7 Virus"; }; /* * NEU: deny channel {} * ALT: N/A (NEW) * Verhindert, dass angegebene Channels benutzt werden können. * Syntax: * deny channel { * channel "(channel)"; * reason "Grund"; * }; */ deny channel { channel "*warez*"; reason "Warez sind illegal"; }; /* * NEU: vhost {} * ALT: Vhost.conf file * Setzt eine Fake IP für Nicht-Opers, oder opers, die zu bequem für /sethost sind.... :P * Syntax: * vhost { * vhost (vhost.com); * from { * userhost (ident@host um die Nutzung zu gestatten); * }; * login (Loginname); * password (Passwort); * }; * um den vhost zu nutzen, mache /vhost (login) (password) im IRC */ vhost { vhost i.hate.microsefrs.com; from { userhost *@*.image.dk; }; login stskeeps; password moocowsrulemyworld; }; /* Man kann hier weitere Config Dateien einfügen */ /* include "klines.conf"; */ /* Network configuration */ set { network-name "ROXnet"; default-server "irc.roxnet.org"; services-server "services.roxnet.org"; stats-server "stats.roxnet.org"; help-channel "#ROXnet"; hiddenhost-prefix "rox"; /* prefix-quit "no"; */ /* Cloak keys müssen angegeben sein und sie müssen die selben auf allen Servern * im Netzwerk sein. Sie werden zur Generierung der maskierten Hosts verwendet * und sie sollten geheim gehalten werden. * Die Keys sollten 3 zufällige Strings von 5-100 Zeichen Länge sein (10-20 Zeichen * (sind ganz ok) und müssen aus Kleinbuchstaben(a-z), Großbuchstaben (A-Z) und * Ziffern (0-9) bestehen [wie im ersten Key Beispiel]. * TIPP: Auf *NIX, kann man in der Shell './unreal gencloak' aufrufen und durch * Unreal 3 Zufalls Stings erzeugen und anzeigen lassen. */ cloak-keys { "aoAr1HnR6gl3sJ7hVz4Zb7x4YwpW"; "und noch einer"; "und noch einer"; }; /* on-oper Host */ hosts { local "locop.roxnet.org"; global "ircop.roxnet.org"; coadmin "coadmin.roxnet.org"; admin "admin.roxnet.org"; servicesadmin "csops.roxnet.org"; netadmin "netadmin.roxnet.org"; host-on-oper-up "no"; }; }; /* Server spezifische Configuration */ set { kline-address "setze.diese.email"; modes-on-connect "+ixw"; modes-on-oper "+xwgs"; oper-auto-join "#opers"; options { hide-ulines; /* Man kann hier ident checking aktivieren, wenn man will */ /* identd-check; */ show-connect-info; }; maxchannelsperuser 10; /* Die Mindestzeit, die ein User verbunden sein muss, bevor er eine QUIT Meldung * senden darf (Das wird offentlich helfen, Spam zu verhindern) */ anti-spam-quit-message-time 10s; /* Macht die Meldung statisch, die in allen Quit Meldungen angezeigt wird. Somit sind keine individuellen Quts auf dem lokalen Server mehr erlaubt */ /* static-quit "Client quit"; */ /* Man kann auch sämtliche Part Meldungen blocken, indem man dies auskommentiert * und 'yes' sagt oder einen anderen Text angibt (z.B. "Bye bye!") /* static-part yes; */ /* Hiermit kann man bestimmte stats auf ausschliesslich Opers beschränken. Für * alle Stats kann man * benutzen. Wenn man es weglässt, können alle User alle * Stats abfragen. Eine vollständige Liste erhält man mit dem Befehl '/stats'. * Manche Admins entfernen 'kGs' und erlauben so normalen Usern die Anzeige von * klines, glines and shuns. */ oper-only-stats "okfGsMRUEelLCXzdD"; /* Throttling: Dieses Beispiel setzte ein Limit von 3 Verbindungen je 60s (pro Host). */ throttle { connections 3; period 60s; }; /* Anti Flood Schutz */ anti-flood { nick-flood 3:60; /* 3 Nickänderungen pro 60 Sekunden (Default) */ }; /* Spam Filter */ spamfilter { ban-time 1d; /* Default Dauer eines *line Banns durch Spamfilter */ ban-reason "Spam/Belästigung"; /* default Grund */ virus-help-channel "#help"; /* Channel, der für die 'viruschan' action benutzt wird*/ /* except "#help"; Channel, der von Filtern ausgenommen wird */ }; }; /* * Probleme? Weitere Hilfe nötig? * 1) www.vulnscan.org/UnrealIrcd/unreal32docs.html * 2) www.vulnscan.org/UnrealIrcd/faq/ <- enthält 80% deiner Fragen - Wetten Dass? * 3) Hat man dann noch Probleme, kann man den Chat bei irc.unrealircd.org * #unreal-support aufsuchen. Achtung, wir setzen voraus, dass zuvor die * DOKU GELESEN WURDE (genauso, wie die FAQ!)! */