/* UnrealIRCd 4.0 Yapılandırma Dosyası
 *
 * Biz buna basit bir 'unrealircd.conf' dosyası diyoruz.
 * Bu dosyası satır satır editleyip conf/ dizinine kopyalayınız. (düzenleyin!)
 *
 * Önemli: Satırların hepsi, açılış başına { satır sonuna ;
 * }; dahil edin. Bu çok önemli, eğer siz ayrıştırıcıyı ;
 * eksik koyarsanız yapılandırma dosyası hata verecek
 * ve dosya doğru işlemde olmayacaktır!
 * Bu sizin UnrealIRCd yapılandırması ile ilk deneyiminiz ise
 * dosyayı okumanız için birkaç dakika ayırmanızı öneniriz,
 * bu size bilgi edinmeniz açısından yardımcı olacaktır:
 * https://www.unrealircd.org/docs/Configuration#Configuration_file_syntax
 *
 * UnrealIRCd 4.0 belgeleme (çok geniş!):
 * https://www.unrealircd.org/docs/UnrealIRCd_4_documentation
 *
 * Sıkça Sorulan Sorular:
 * https://www.unrealircd.org/docs/FAQ
 *
 */

/* Bu bir açıklamadır, burada tüm metin göz ardı edilir (açıklama tipi #1) */
// Bu da bir açıklamadır, bu satır göz ardı edilir (açıklama tipi #2)
# Bu da bir açıklamadır, bu satır yine göz ardı edilir (açıklama tipi #3)

/* UnrealIRCd yoğun modul kullanımını kolaylaştırır. UnrealIRCd'de
 * etkinleştirmek istediğiniz özellikleri tamamen moduller ile aktif edebilirsiniz.
 * Görmek için; https://www.unrealircd.org/docs/Modules
 *
 * Biz 'modules.default.conf' dosyasını okumak için IRCd talimatı altında kullanarak
 * UnrealIRCd ile birlikte gelen 150'den fazla modülleri yükleyecektir.
 * Başka bir deyişle: Bu sadece UnrealIRCd'de mevcut tüm özelliklerini yükleyecektir.
 * İlk kez UnrealIRCd kuruyorsanız size bunu kullanmanızı öneririz.
 */
include "modules.default.conf";

/* Şimdi de diğer bazı dosyaları dahil edelim:
 * - help/help.conf /HELPOP sistemi
 * - badwords.conf kanal ve kullanıcı modu için +G
 * - spamfilter.conf için örnek olarak spamfilter kullanımı
 * - operclass.default.conf oper bloklarında kullanabileceğiniz
 *   oper sınıflarını görüntüler.
 */
include "help/help.conf";
include "badwords.conf";
include "spamfilter.conf";
include "operclass.default.conf";

/* me { } bloğu genelde kim olduğumuzu belirtir.
 * Sunucumuz için isim, birkaç satır bazı bilgileri belirler "sid".
 * Sunucu kimliği (sid) iki basamağı veya harf tarafından izlenen bir rakam ile
 * başlamalıdır. Sid IRC ağı için benzersiz olmalıdır (her sunucu için
 * kendi sid olmalıdır).
 */
me {
	name "irc.foonet.com";
	info "FooNet Server";
	sid "001";
};

/* admin { } bloğu /ADMIN sorgusunda kullanıcılara görüntülenecek metni belirler.
 * Normalde yöneticiye ulaşma konusunda bilgi içerir.
 */
admin {
	"Bob Smith";
	"bob";
	"widely@used.name";
};

/* Kullanıcılar ve sunucular için class { } bloğu belirtilir.
 * Class blokları aşağıdaki işlemlerden oluşur:
 * - pingfreq: kullanıcı/sunucu için ping'ler arası zaman belirtir (saniyede)
 * - connfreq: sunucuya bağlanmaya çalıştığınızda tekrar için zaman belirtir (saniyede)
 * - sendq: bir bağlantı için maksimum veri boyutu
 * - recvq: bir bağlantı için maksimum alınan veri boyutu (flood kontrol)
 */

/* Kullanıcılar için varsayılan class ayarları */
class clients
{
	pingfreq 90;
	maxclients 1000;
	sendq 200k;
	recvq 8000;
};

/* IRCOp'lar için varsaylan yüksek limitli özel class ayarları */
class opers
{
	pingfreq 90;
	maxclients 50;
	sendq 1M;
	recvq 8000;
};

/* Sunucular için varsayılan class ayarları */
class servers
{
	pingfreq 60;
	connfreq 15; /* Her 15 saniyede bir bağlanmayı dener */
	maxclients 10; /* maksimum kullanıcı */
	sendq 5M;
};

/* Allow blockları sunucunuza kimlerin bağlanabileceğini belirtir.
 * Bir sunucu şifresi eklenebilir veya belirlitilen bir IP adresi için
 * giriş izini verilebilir. Ayrıca IP başına ne kadar bağlantıya izin
 * verileceğini belirtir.
 * Görmeniz için: https://www.unrealircd.org/docs/Allow_block
 */

/* IP başına sadece 5 bağlantı izini verir */
allow {
	ip *@*;
	class clients;
	maxperip 5;
};

/* Örnek olarak özel bir IP bloğu izini:
 * Bu IP bir şifre ile bağlantı yapması olduğunu gerektirir.
 * Şifre doğru ise o zaman bu IP 20 bağlantıya izin verecektir.
 */
allow {
	ip *@192.0.2.1;
	class clients;
	password "somesecretpasswd";
	maxperip 20;
};

/* Oper bloğu, IRC Operatorleri tanımlar.
 * IRC Operatörler, diğer kullanıcılara göre "ekstra haklara" sahip kullanıcılardır.
 * örneğin diğer kullanıcılara /KILL uygulayabilmesi, sunucu birleştirmesinin başlatılması,
 * /JOIN yaptığı odalardan banlansa bile tekrar giriş yapabilmesi, vs.
 * Görmeniz için: https://www.unrealircd.org/docs/Oper_block
 */

/* Örnek bir oper bloğu için 'bobsmith' ile şifresi 'test'.
 * Bunu değiştirmeniz GEREKİR!!
 */
oper bobsmith {
	class opers;
	mask *@*;
	password "test";
	/* Oper izinleri bir "operclass 'bloğunda tanımlanır.
	 * Görmeniz için: https://www.unrealircd.org/docs/Operclass_block
	 * UnrealIRCd varsayılan bloklar makalesi için,
	 * tam listesine bakınız. Buradan 'netadmin' seçiyoruz.
	 */
	operclass netadmin;
	swhois "is a Network Administrator";
	vhost netadmin.mynet.org;
};

/* Listen blokları sunucu portu için gereken bağlantı noktalarını tanımlar.
 * Diğer bir deyişle: Bu portlar kullanıcılar ve serverlar için
 * sunucuya bağlantı kurmasını sağlar.
 * 
 * Kullanımı:
 * listen
 * { 
 *   ip <ip numarası>;
 *   port <port numarası>;
 *   options {
 *     <seçenekler....>;
 *   };
 * };
 */

/* Standard IRC port 6667 */
listen {
	ip *;
	port 6667;
};

/* Standard IRC SSL/TLS port 6697 */
listen {
	ip *;
	port 6697;
	options { ssl; };
};

/* Özel SSL/TLS sadece sunucuları bağlamak için port */
listen {
	ip *;
	port 6900;
	options { ssl; serversonly; };
};

/* DiKKAT: Eğer bir çok IP barındıran bir IRCd Shell kullanıyorsanız
 *       logunuzda olası 'Address already in use' hatasını alacaksınız
 *       ve ircd başlamayacaktır.
 *       Bunun anlamı '*' yerine belirli bir IP yazmanız GEREKİR anlamına gelir:
 *       listen 1.2.3.4:6667;
 *       Açıkçası, IP yi önceden koyduğunuz IP ile değiştirin.
 */

/*
 * Link blockları bir ağ oluşturmak için birden fazla sunucu bağlamaya izin verir.
 * Görmek için: https://www.unrealircd.org/docs/Tutorial:_Linking_servers
 */
link hub.mynet.org
{
	incoming {
		mask *@something;
	};

	outgoing {
		bind-ip *; /* veya açıkça bir IP */
		hostname hub.mynet.org;
		port 6900;
		options { ssl; };
	};

	password "00:11:22:33:44:55:66:77:88:99:AA:BB:CC:DD:EE:FF"; /* diğer sunucu için SSL fingerprint */

	class servers;
};

/* U-lines satırları sunuculara daha güç/komut kazandırır.
 * Eğer hizmetlerini kullanmak istiyorsanız onları buraya eklemeniz gerekir.
 * ASLA buraya (normal) UnrealIRCd sunucunun adını yazmayınız!!!
 * ( Eğer servisler kaynağını görmek istiyorsanız bakınız;
 *   https://www.unrealircd.org/docs/Services )
 */
ulines {
	services.mynet.org;
};

/* Bu blok /DIE ve /RESTART için şifre tanımlamanızı sağlar. Sadece IRCOp'lar içindir.
 * Bu genelde kazara sunucuyu yeniden başlatma ve kapanmasına karşı biraz
 * koruma sağlamak içindir.
 */
drpass {
	restart "restart";
	die "die";
};

/* Bu log bloğu hangi dosyaya ve nelerin olması gerektiğini tanımlar.
 * Görmeniz için: https://www.unrealircd.org/docs/Log_block
 */

/* Varsayılan ayarlar, neredeyse her şeyi kaydedecektir */
log "ircd.log" {
	flags {
		oper;
		connects;
		server-connects;
		kills;
		errors;
		sadmin-commands;
		chg-commands;
		oper-override;
		tkl;
		spamfilter;
	};
};

/* Bazı kullanıcılara veya botlara bir mesaj göndermek için "aliases"
 * takma ad oluşturmanızı sağlar. Genellikle servisler için kullanılır.
 *
 * Biz önceden ayarlanmış bir takma adı dosyaları dizini oluşturduk, alias/ dizini kontrol ediniz.
 * Örnek olarak, burada anope servisler ve kullanılan tüm diğer servisler adları bulunmaktadır.
 */
include "aliases/anope.conf";

/* Ban nick bloğu bir nickin sunucuda kullanımını yasaklamanıza olanak sağlar */
ban nick {
	mask "*C*h*a*n*S*e*r*v*";
	reason "Servisler için ayrılmış";
};

/* Ban ip.
 * Normalde bunun için /KLINE, /GLINE ve /ZLINE kullanıldığını unutmayınız.
 */
ban ip {
	mask 195.86.232.81;
	reason "Senden nefret ediyorum";
};

/* Ban server - bir sunucunun bağlanmasını devredışı kılar */
ban server {
	mask eris.berkeley.edu;
	reason "Defol git buradan.";
};

/* Ban user - normalde /KLINE veya /GLINE kullanıldığını unutmayınız */
ban user {
	mask *tirc@*.saturn.bbn.com;
	reason "Salak";
};

/* Ban realname bloğu bir kullanıcıyı, GECOS kısmı esas alınarak 
 * banlamanıza olanak sağlar.
 */
ban realname {
	mask "Swat Team";
	reason "mIRKFORCE";
};

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

/* Ban ve TKL istisnaları. Kullanıcıları / makineleri gözetmeksizin
 * KLINE, GLINE, gibi banlardan muaf tutmanıza olanak sağlar.
 * Eğer statik IP (ve bu IP üzerinde güvenilmeyen kişiler) ile bir IRCOp
 * iseniz o zaman kendinizi burada eklemenizi öneririz. Yanlışlıkla kendinize
 * bir *LINE ban koyarsanız bile yinede muaf tutulacaksınız.
 */

/* except ban bloğu, sizi KLINE ve ZLINE gibi banlardan koruyacaktır */
except ban {
	mask *@192.0.2.1;
	// burada daha fazla mask girdileri ekleyebilirsiniz..
};

/* except tkl bloğu, sizi 'tüm' GLINE, GZLINE, QLINE, SHUN gibi banlardan koruyacaktır */
except tkl {
	mask *@192.0.2.1;
	type all;
};

/* Deny dcc bloğu, sunucu üzerinden DCC yoluyla dosya gönderilmesine izin vermeyecektir */
deny dcc {
	filename "*sub7*";
	reason "Olası Sub7 Virüsü";
};

/* Deny channel bloğu, kullanıcıların belirtilen kanallara girmesini engeller */
deny channel {
	channel "*warez*";
	reason "Warez is illegal";
	class "clients";
};

/* VHosts (Virtual Hosts) bloğu, kullanıcının yeni bir host alabilmesine olanak sağlar.
 * Görmeniz için; https://www.unrealircd.org/docs/Vhost_block
 */

/* Kullanabileceğiniz örnek vhost. IRC tipi: /VHOST test test
 * DiKKAT: Güvenlik açısından aşağıdaki vhost::mask yönergesinde
 *       maske 'unrealircd.com' olarak belirlenmiştir.
 */
vhost {
	vhost i.hate.microsefrs.com;
	mask *@unrealircd.com;
	login "test";
	password "test";
};

/* Diğer yapılandırma dosyalarını dahil edebilirsiniz */
/* include "klines.conf"; */

/* Ağ yapılandırması */
set {
	network-name 		"MYNet";
	default-server 		"irc.mynet.org";
	services-server 	"services.mynet.org";
	stats-server 		"stats.mynet.org";
	help-channel 		"#Help";
	hiddenhost-prefix	"Clk";
	prefix-quit 		"Quit";

	/* Gizleme anahtarları ağ üzerindeki bütün sunucularda aynı olmalı.
	 * Bu anahtarlar maskeli hostlar yaratmak ve bunları saklamak için kullanılır.
	 * Anahtarlar 5-100 karakterlik (10-20 karakter yeterli) 3 rastgele diziden oluşmalı ve 
	 * küçük harf (a-z), büyük harf (A-Z) ve rakamlardan (0-9) meydana gelmelidirler.. [ilk örneğe bakınız].
	 * IPUCU: './unreal gencloak' Unreal sizin için rastgele 3 adet dizin oluşturur.
	 *        Bunu NIX üzerinde çalıştırabilirsiniz.
	 */
	cloak-keys {
		"aoAr1HnR6gl3sJ7hVz4Zb7x4YwpW";
		"ve diğeri";
		"ve diğeri";
	};
};

/* Sunucunun kendine özgü yapılandırması */

set {
	kline-address "set.this.to.email.address"; /* bir kullanıcı banlandığında e-mail yada URL satırı gösterir */
	modes-on-connect "+ixw"; /* kullanıcılar bağlandığında, bu modları alacaktır */
	modes-on-oper	 "+xwgs"; /* Birisi IRC Operatör olduğunda bu modları alacaktır */
	oper-auto-join "#opers"; /* IRCoplar bu kanala otomatik olarak giriş yapacaktır */
	options {
		hide-ulines; /* U-lines satırları /MAP ve /LINKS komutunda gözükmez */
		show-connect-info; /* sunucuya bağlanırken "looking up your hostname" mesajı görüntülenecektir */
	};

	maxchannelsperuser 10; /* bir kullanıcının maksimum girebileceği kanal sayısı */

	/* QUIT mesajının görüntülenebilmesi için, bir kullanıcının sunucuya bağlı kalması
	 * gereken süre. Bu durum umarım spamları durdurmak için yardımcı olacaktır.
	 */
	anti-spam-quit-message-time 10s;

	/* Kullanıcı sunucudan ayrılırken çıkış sebebini sabitler. /QUIT sebeb gözardı edilecektir. */
	/* static-quit "Client quit";	*/

	/* static-part /PART komutu ile aynı işi görür */
	/* static-part yes; */

	/* /STATS komutunu operler için kısıtlar. Önerilen * (TÜMÜ) */
	oper-only-stats "*";

	/* Anti flood Koruması */
	anti-flood {
		nick-flood 3:60;	/* Her 60 saniyede 3 nick değişikliği (varsayılan) */
		connect-flood 3:60;     /* Her 60 saniyede 3 bağlantı girişi izni (varsayılan) */
		away-flood 4:120;	/* Her 2 dakikada 4 kez /AWAY kullanımı izni (varsayılan) */
	};

	/* Spam filter Ayarları */
	spamfilter {
		ban-time 1d; /* varsayılan spamfilter tarafından ban süresini belirtir */
		ban-reason "Spam/Advertising"; /* varsayılan sebep */
		virus-help-channel "#help"; /* 'viruschan' eylemi için kullanılacak kanal */
		/* except "#help"; Spamfilter'den muaf tutulacak kanal */
	};
};

/*
 * Sorununuza veya daha fazla yardımamı ihtiyacınız var?
 * 1) https://www.unrealircd.org/docs/UnrealIRCd_4_documentation
 * 2) https://www.unrealircd.org/docs/FAQ <- sorularınızın %80 ini kapsamakta!
 * 3) Eğer probleminiz hala devam ediyorsa irc.unrealircd.org sunucusu #unreal-support kanalına girebilirsiniz
 *    DÖKÜMANTASYON ve FAQ kısmını okumanızı gerekli gördüğümüzü belirtiyoruz!
 */
