/*
 * example.conf von Daniel Hawton AKA Osiris (osiris@unrealircd.org).
 * $Id$
 * 
 * Arbeitet mit Unreal3.2.x
 * 
 * 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!)!
 */
