/*
 * example.conf door Daniel Hawton AKA Osiris (osiris@unrealircd.org).
 * $Id$
 * Vertaald door Mark
 * 
 * Werkt voor Unreal3.2 en hoger
 * 
 * Dit is de nieuwe example.conf. Het lijkt veel op C++.
 * Het begin is wellicht moeilijk, maar met wat ervaring en lezen
 * zul je het wel begrijpen.
 *
 * Kopieer dit bestand naar je hoofd UnrealIRCd dir en noem het 'unrealircd.conf'.
 * 
 * OPMERKING: Alle regels, behalve de openings { regel, eindingen met een ;, dus
 * ook de sluitende } regel. Commentaar regels worden door de IRCd niet verwerkt.
 *
 * LEES doc/unreal32docs.html! De online versie is tevens te bereiken op:
 * www.vulnscan.org/UnrealIRCd/unreal32docs.html
 * Er staat heel veel informatie in over het configbestand: informatie over
 * elk block, variabele, etc..
 * Wanneer je dit bestand aanpast zonder de documentatie grondig te lezen,
 * zul je gegarandeerd falen!
 */

/* Type van commentaar */
#Commentaar type 1 (Shell type)
// Commentaar type 2(C++ style)
/* Commentaar type 3 (C Style) */
#Deze regels worden niet verwerkt door de IRCd.

/*
 * UnrealIRCd ondersteunt modules, het laden van sommige is benodigd.
 * Je hebt tenminste een commands module en een cloacking module nodig.
 */

/* VOOR *NIX, haal de commentaartekens weg bij de volgende 2 regels: */
//loadmodule "src/modules/commands.so";
//loadmodule "src/modules/cloak.so";

/* VOOR Windows, haal de commentaartekens weg bij de volgende 2 regels: */
//loadmodule "modules/commands.dll";
//loadmodule "modules/cloak.dll";

/*
 * Je kan tevens andere configuratiebestanden toevoegen.
 * help.conf bevat alle /helpop tekst. De badwords.*.conf
 * bestanden bevatten alle badword instellingen voor mode +G..
 * spamfilter.conf bevat enkele goede regels voor huidige trojans.
 * Je wilt deze waarschijnlijk laden:
 */
 
include "help.conf";
include "badwords.channel.conf";
include "badwords.message.conf";
include "badwords.quit.conf";
include "spamfilter.conf";

/*
 * NIEUW: me {} 
 * OUD: M:Line 
 * me {} definieert de naam, beschrijving en unreal numeriek voor deze server.
 * De syntax is als volgt:
 * me { 
 *  name "server.naam"; 
 *  info "Server Beschrijving";
 *  numeric (server numeric*);
 * }; 
 * Waneer je servers linkt, mag de numeric niet door een andere server in gebruik zijn.
 */
me
{
	name "irc.foonet.com";
	info "FooNet Server";
	numeric 1;
};

/*
 * NIEUW: admin {} 
 * OUD: A:Line
 * Admin geeft informatie over de server admin. Je mag hier
 * zo veel regels opgeven als je wilt.
 * De syntax is als volgt:
 * admin {
 *   "eerste regel"; 
 *   "tweede regel"; 
 *   [etc]
 * };
 */
admin {
	"Bob Smith";
	"bob";
	"widely@used.name";
};

/*
 * NIEUW: class {} 
 * OUD: Y:line (de oude was verwarrend) 
 * Hiermee stel je de classes in. Een class is een groepsinstelling voor
 * connections. Server connecties stuur je naar een andere class dan
 * gebruikers.
 * De syntax is als volgt:
 * class (class naam)
 * {
 *     pingfreq (hoe vaak er gepingt moet worden naar een gebruiker/server in seconden);
 *     maxclients (hoeveel connecties er maximaal in deze class mogen zijn);
 *     sendq (maximale send queue voor 1 connectie);
 *     recvq (maximale receive queue voor 1 connectie [flood control]);
 *  };
 */

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

class           servers
{
	pingfreq 90;
	maxclients 10;		/* Hoeveel servers we maximaal tegelijk gelinkt kunnen hebben */
	sendq 1000000;
	connfreq 100; /* Hoeveel seconden tussen een poging to verbinden */
};

/*
 * NIEUW: allow {} 
 * OUD: I:Line
 * Hiermee stel je het toestaan van connecties in.
 * Gebruikers kunnen verbinden, en jij hebt wat controle en kan eventueel
 * een wachtwoord instellen.
 * De syntax is als volgt: 
 * allow {
 *    ip (ip mask dat toegestaan moet worden);
 *    hostname (host mask);
 *    class (class waarnaar ze gestuurd moeten worden [see class {}]);
 *    password "(wachtwoord)"; (optioneel)
 *    maxperip (hoeveel connecties per IP); (optioneel) 
 * };
 */

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

/* Allow met wachtwoord */
allow {
	ip             *@255.255.255.255;
	hostname       *@*.passworded.ugly.people;
	class           clients;
	password "f00Ness";
	maxperip 1;
};

/*
 * NIEUW: allow channel {} 
 * OUD: chrestrict 
 * Geeft de mogelijkheid een kanaal te joinen,
 * als uitzondering voor een deny channel {}
 * De syntax is als volgt:
 * allow channel {
 *   channel "kanaal naam";
 * };
 */
allow           channel {
	channel "#WarezSucks";
};

/*
 * NIEUW: oper {} 
 * OUD: O:Line 
 * Stelt een IRC Operator in
 * IRC Operators zorgen voor orde op de server en zorgen er
 * tevens voor dat de server verbonden blijft met het netwerk.
 * De syntax is als volgt: 
 * oper (login) { 
 *     class (class waarin ze geplaatst moeten worden.); 
 *     from { 
 *        userhost (ident@host);
 *        userhost (ident@host);
 *     }; 
 *     flags
 *     { 
 *       (flags hier*);
 *     };
 *     OF
 *     flags "oud type flags, zoals OAaRD";
 * };
 */


/* Voor een lange lijst van oper flags, zie doc/unreal32docs.html#operblock
 * [wordt ten zeerste aangeraden te lezen!]
 */

oper bobsmith {
	class           clients;
	from {
		userhost bob@smithco.com;
	};
	password "f00";
	flags
	{
		netadmin;
		can_zline;
		can_gzline;
		can_gkline;
		global;
	};
};

/*
 * NIEUW: listen {}
 * OUD: P:Line
 * Hiermee stel je een poort in voor de IRCd, zodat
 * gebruikers/servers kunnen verbinden met je server.
 * De syntax is als volgt:
 * listen (ip nummer):(port nummer)
 * { 
 *   options {
 *     (opties hier);
 *   };
 * };
 * of een gewone:
 * listen: listen (ip):(port);
 * 
 * OPMERKING: voor IPv6 IPs (3ffe:b80:2:51d::2 etc), gebruik listen [ip]:port;
 * 
 * Dat werkt ook.
 */

/* Opties voor listen:
	OUD	| 	NIEUW
	S		serversonly
	C		clientsonly
	J		java
	s		ssl
	*		standard
*/


/* Opmerking voor SSL poorten: SSL poorten zijn niet echt
 * standaard. Mensen zeggen dat je SSL op poort 994 moet laten
 * lopen, omdat dit de standaard SSL poort is.. Maar meestal worden
 * hogere poorten gebruikt. Om poort 994 te gebruiken, moet je root
 * zijn! Tevens is poort 194 de officiele IRC poort. Maar heb je daar
 * ooit een IRCd op zien lopen?
 * Wij raden je aan om poort 6697 voor SSL te gebruiken. Dit wordt op
 * vrijwel alle netwerken gebruikt en wordt herkend door bijvoorbeeld
 * StunTour. Je mag zoveel SSL poorten openen als je wil, maar als je
 * (tevens) 6697 gebruikt, help je mee de wereld meer uniform te maken ;).
 */
 
listen         *:6697
{
	options
	{
		ssl;
		clientsonly;
	};
};

listen         *:8067;
listen         *:6667;


/* Opmerking: Als je een IRCd shell gebruikt met meerdere IPs, krijg
 *            je wellicht een "Address already in use" error in je log
 *            en de IRCd zal niet starten. Dit betekent dat je MOET binden
 *            naar een specifiek IP in plaats van '*', bijvoorbeeld:
 *            listen 1.2.3.4:6667l
 *            Natuurlijk moet je het IP vervangen door het IP dat je toewezen is.
 */
 
/*
 * NIEUW: link {}
 * OUD: C/N:Lines
 * Geeft een server toegang om te verbinden.
 * OPMERKING: Beiden servers hebben een link { } nodig om goed te kunnen verbinden!
 * De syntax is als volgt:
 * link (server naam)
 * {
 *	username	(username, * werkt ook);
 * 	hostname	(ip number/hostmask);
 *	bind-ip		(welk IP te binden wanneer je connect, of *);
 *	port		(poort om naar te verbinden);
 *	hub (Als dit een hub is, werkt '*');
 *	[of leaf *;]
 *	password-connect "(wachtwoord te zenden)";
 *	password-receive "(wachtwoord te ontvangen)";
 *	class		(class waarin de server geplaatst moet worden);
 *	options {
 *		(opties hier*);
 *	};
 *      // Als we SSL gebruiken, kunnen we kiezen welke cipher we willen gebruiken in SSL mode
 *      // Verkrijg een lijst door "openssl ciphers", onderscheid ciphers met :'s
 *      ciphers "DES-CBC3-MD5";
 * 
 * };
*/

/*
	opties:
	OUD	|	NIEUW
	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 {
			/* Opmerking: Gebruik geen autoconnect naar Services */
			autoconnect;
			ssl;
			zip;
		};
};
/*
 *
 * NIEUW: ulines {}
 * OUD: U:Line
 * U:Lines geven servers meer macht/commando's. Gebruik het alleen voor
 * services en stats, en NOOIT voor normale UnrealIRCd servers!
 * De syntax is als volgt:
 * ulines {
 *	(server to uline);
 *	(server to uline);
 *  [etc]
 * };
*/
ulines {
	services.roxnet.org;
	stats.roxnet.org;
};

/*
 * NIEUW: drpass {}
 * OUD: X:Line
 * Stelt de wachtwoorden voor /die en /restart in.
 * De syntax is als volgt:
 * drpass { 
 *  restart		"(wachtwoord voor herstart)";
 *  die		    "(wachtwoord voor beeindigen)";
 * };
 */
drpass {
	restart "I-love-to-restart";
	die "die-you-stupid";
};

/*
 * NIEUW: log {}
 * OUD: N/A
 * Laat de IRCd weten wat en waar te loggen. Je kan er
 * zoveel instellen als je wilt.
 * 
 * FLAGS: errors, kills, tkl, connects, server-connects, kline, oper
 * 
 * De syntax is als volgt: 
 *
 * log "log file" 
 * {
 *    flags
 *    {
 *        flag;
 *        flag; 
 *        etc.. 
 *    }; 
 * };
 */

log "ircd.log" {
  /* Verwijder het logbestand en begint een nieuwe wanneer de oude 2MB groot is. Laat dit leeg om altijd
     hetzelfde bestand te gebruiken */
	maxsize 2097152;
	flags {
		oper;
		kline;
		connects;
		server-connects;
		kills;
		errors;
		sadmin-commands;
		chg-commands;
		oper-override;
		spamfilter;
	};
};

/*
 * NIEUW: alias {}
 * OUD: N/A
 * Hiermee stel je commando's zoals /nickserv, /chanserv etc in.
 * FLAGS: services, stats, normal
 *
 * De syntax is als volgt:
 * alias "naam" {
 *	target "wijst naar";
 *	type aliastype;
 * };
 *
 * [Opmerking: Je kan ook een standaard alias bestand gebruiken, zie doc/unreal32docs.nl.html sectie 2.9]
 */

// Dit wijst het commando /nickserv naar de gebruiker NickServ welke verbonden is met set::services-server

/*alias NickServ {
	target "NickServ";
	type services;
};*/

// Als je het commando naar dezelfde nick als het commando wil sturen, kun je "target" weglaten.
//alias ChanServ { type services; };

// Wijst het /statserv commando naar de gebruiker Statserv verbonden met set::stats-server
//alias StatServ { type stats; };

// Wijst het /superbot commando naar de gebruiker SuperBot
//alias SuperBot { type normal; };

/* Standaard aliases */
alias NickServ { type services; };
alias ChanServ { type services; };
alias OperServ { type services; };
alias HelpServ { type services; };
alias StatServ { type stats; };

/*
 * NIEUW: alias {}
 * OUD: N/A
 * Hiermee stel je commando's zoals /identify, /services in.
 *
 * De syntax is als volgt:
 * alias "naam" {
 *	format "format string" {
 *		target "wijst naar";
 *    type aliastype;
 *		parameters "parameters te verzenden";
 *	};
 *	type command;
 * };
 */

/* Hier wordt apart notitie van gemaakt, hoewel het dezelfde naam heeft als het vorige block. Het verschilt veel
 * in syntax, maar het maakt gebruik van dezelfde functies.
 */

/*
alias "identify" {
	format "^#" {
		target "chanserv";
		type services;
		parameters "IDENTIFY %1-";
	};
	format "^[^#]" {
		target "nickserv";
		type services;
		parameters "IDENTIFY %1-";
	};
	type command;
};
*/

/* De alias::format is een reguliere expressie. Het eerste formaat matcht het /identify commando wanneer
 * het eerste teken een # is. Daarna wordt het doorgezonden naar de chanserv alias met de parameters
 * IDENTIFY %1-. Het tweede formaat matcht het /identify commando wanneer het eerste teken geen # is. Daarna
 * wordt het commando doorgestuurd naar de nickserv alias met de parameters IDENTIFY %1-.
 */

/* Het alias::format::parameters is gelijk aan script-talen. %N (N is een nummer) staat voor de parameter die
 * gezonden is naar het commando (in dit geval /identify). Wanneer je %N- opgeeft, betekent dat alle parameters
 * vanaf N tot de laatste paramater in de string. Je kan ook %n gebruiken, waar %n vervangen wordt door de nick.
*/

/* Standaard aliases */
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;
};

/* Dit is een voorbeeld van een echt commando alias */	
/* Dit verwijst /GLINEBOT naar /GLINE <parameter> 2d etc... */	
alias "glinebot" {	
	format ".+" {	
		command "gline";	
		type real;	
		parameters "%1 2d Bots are not allowed on this server, please read the faq at http://www.example.com/faq/123";	
	};	
	type command;	
};

/*
 * NIEUW: tld {}
 * OUD: T:Line
 * Hiermee stel je verschillende MOTD en RULES bestanden in,
 * afhangend van de gebruikers hostmask.
 * De syntax is als volgt: 
 * tld {
 *    mask (ident@host);
 *    motd "(motd bestand)";
 *    rules "(rules bestand)";
 * };
 */

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

/* Opmerking: je kan het bovenstaande voorbeeld verwijderen.
 * In dat geval worden de standaard motd/rules bestanden (ircd.motd, ircd.rules).
 * gebruikt voor iedereen.
 */

/*
 * NIEUW: ban nick {}
 * OUD: Q:Line
 * Bant een nickname zodat deze niet gebruikt kan worden.
 * De syntax is als volgt:
 * ban nick {
 *	mask "(nick om te bannen)";
 *	reason "(reden)";
 * };
 */
 
ban nick {
	mask "*C*h*a*n*S*e*r*v*";
	reason "Reserved for Services";
};

/*
 * NIEUW: ban ip {}
 * OUD: Z:Line
 * Bant een IP van de server
 * De syntax is als volgt:
 * ban ip {
 *  mask (ip number/hostmask);
 *  reason "(reden)";
 * };
 */

ban ip {
	mask 195.86.232.81;
	reason "Delinked server";
};

/*
 * NIEUW: ban server {}
 * OUD: Server Q:Line
 * Zorgt ervoor dat een server niet kan verbinden met het netwerk.
 * Als de server naar een andere server linkt, zal de lokale server
 * de verbinding met het netwerk verbreken.
 * De syntax is als volgt:
 * ban server {
 *	mask "(server naam)";
 *	reason "(reden)";
 * };
 */

ban server {
	mask eris.berkeley.edu;
	reason "Get out of here.";
};
/*
 * NIEUW: ban user {}
 * OUD: K:Line
 * Zorgt ervoor dat een gebruiker met een bepaalde mask niet
 * kan verbinden met je server.
 * De syntax is als volgt:
 * ban user {
 *  mask (hostmask/ip number);
 *  reason "(reden)";
 * };
 */

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

/*
 * NIEUW: ban realname {}
 * OUD: n:Line
 * Belet het gebruik van een bepaalde realname.
 * De syntax is als volgt:
 * ban realname {
 *	mask "(real name)";
 * 	reason "(reden)";
 * };
 */

ban realname {
	mask "Swat Team";
	reason "mIRKFORCE";
};

ban realname {
	mask "sub7server";
	reason "sub7";
};

/*
 * OPMERKING VOOR ALLE BANS: Ze mogen herhaald worden voor extra toevoegingen!
 * 
 * NIEUW: except ban {} 
 * OUD: E:Line
 * Zorgt ervoor dat jij niet gebanned kan worden.
 * De syntax is als volgt:
 * except ban { mask (ident@host); };
 * Herhaal de except ban {} zo vaak als je wilt
 * voor andere hosts.
 */

except ban {
	/* don't ban stskeeps */
	mask           *stskeeps@212.*;
};

/*
 * NIEUW: deny dcc {} 
 * OUD: dccdeny.conf
 * Wordt gebruikt om DCC sends te blokkeren..
 * Stopt virii beter.
 * De syntax is als volgt: 
 * deny dcc 
 * { 
 *   filename "bestand te blokkeren (bv, *exe)";
 *   reason "reden";
 * };
 */
deny dcc {
	filename "*sub7*";
	reason "Possible Sub7 Virus";
};

/*
 * NIEUW: deny channel {}
 * OUD: N/A (NIEUW)
 * Belet het gebruik van een kanaal.
 * De syntax is als volgt:
 * deny channel {
 * 	channel "(kanaal)";
 * 	reason "reden";
 * };
*/
deny channel {
	channel "*warez*";
	reason "Warez is illegal";
};

/*
 * NIEUW: vhost {}
 * OUD: Vhost.conf file
 * Dit zet een nep ip voor niet-opers, of voor opers
 * die te lui zijn /sethost te gebruiken ;)
 * De syntax is als volgt:  
 *   vhost { 
 *       vhost (vhost.com); 
 *       from {
 *            userhost (ident@host toegestaan de vhost te gebruiken);
 *       };
 *       login (login name);
 *       password (password);
 *   };
 * Om je vhost te gebruiken, typ /vhost (login) (password) op IRC
 */
vhost {
	vhost           i.hate.microsefrs.com;
	from {
		userhost       *@*.image.dk;
	};
	login           stskeeps;
	password        moocowsrulemyworld;
};

/* Je kan ook andere configuratiebestanden laden */
/* include "klines.conf"; */

/* Netwerk configuratie */
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 moeten op alle servers in het netwerk hetzelfde zijn.
	 * Ze worden gebruikt voor het maken van gemaskte hosts en moeten geheim blijven.
	 * De keys moeten 3 willekeurige strings zijn, bestaande uit 5-100 tekens
	 * (10-20 tekens is genoeg) en moeten bestaan uit kleine letters (a-z),
	 * hoofdletters (A-Z) en getallen (0-9) [zie de eerste key als voorbeeld].
     * 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.
	 */
	cloak-keys {
		"aoAr1HnR6gl3sJ7hVz4Zb7x4YwpW";
		"en nog eentje";
		"en nog eentje";
	};
	/* 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 gerelateerde configuratie */

set {
	kline-address "stel.dit.adres.in";
	modes-on-connect "+ixw";
	modes-on-oper	 "+xwgs";
	oper-auto-join "#opers";
	options {
		hide-ulines;
		/* Je kan hier ident checking aanzetten als je wilt */
		/* identd-check; */
		show-connect-info;
	};

	maxchannelsperuser 10;
	/* Hoelang een gebruiker minimaal verbonden moet zijn voordat hij toegestaan wordt het
	 * QUIT bericht te gebruiken. Dit stopt spam hopelijk. */
	anti-spam-quit-message-time 10s;
	/* Stelt een tekst in die standaard wordt gebruikt voor een quit.
	 * Houdt in dat er geen eigen quits gebruikt mogen worden op deze server. */
	/* static-quit "Client quit";	*/

  /* Je kan ook alle part-redenen blokkeren door hieronder het commentaar weg te halen
   * en er 'yes' neer te zetten. Je kan ook een standaard tekst gebruiken (bijvoorbeeld
   * "Bye bye!") om deze tekst altijd te gebruiken..
   */
	/* static-part yes; */

	/* Stelt in dat stats alleen door opers gebruikt mogen worden. Gebruik * voor alle stats,
	 * en laat het weg zodat gebruikers alle stats kunnen zien. Typ '/stats' voor een lijst
	 * van alle stats.
	 * Sommige admins willen 'kGs' wellicht verwijderen zodat gewone gebruikers een lijst van
	 * klines, glines en shunts kunnen zien.
	 */
	
	oper-only-stats "okfGsMRUEelLCXzdD";

	/* Throttle: dit voorbeeld zet een limie van 3 conneties per 60s (per host). */
	throttle {
		connections 3;
		period 60s;
	};

	/* Anti flood protectie */
	anti-flood {
		nick-flood 3:60;	/* 3 naamsveranderingen per 60 seconden (standaard) */
	};

	/* Spam filter */
	spamfilter {
		ban-time 1d; /* standaard duur van een *line gezet door spamfilter */
		ban-reason "Spam/Advertising"; /* standaard reden */
		virus-help-channel "#help"; /* kanaal te gebruiken voor 'viruschan' actie */
		/* except "#help"; kanaal waar niet gefilterd wordt */
	};
};

/*
 * Problemen of meer hulp nodig?
 * 1) www.vulnscan.org/UnrealIRCd/unreal32docs.html
 * 2) www.vulnscan.org/UnrealIRCd/faq/ <- hier staat 80% van je vragen!
 * 3) Als je nog steeds problemen hebt, kun je naar irc.unrealircd.org #unreal-support,
      maar je moet wel eerst de documentatie en FAQ gelezen hebben!
 */