/* UnrealIRCd 5 için yapılandırma dosyası
 * Türkçe Çeviri: Diablo - (Serkan Sepetçi)
 * İletişim: irc.trirc.com:6667 - diablo@unrealircd.org
 *
 * 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 5 belgeleme (çok geniş!):
 * https://www.unrealircd.org/docs/UnrealIRCd_5_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.
 * UnrealIRCd'yi ilk kez kuruyorsanız bunu kullanmanızı öneririz.
 * Daha sonra her şey hazır olduğunda ve çalışıyorsa (eğer isterseniz) 
 * listeyi özelleştirmek için geri dönebilirsiniz.
 */
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.example.org";
	info "ExampleNET 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";
	"email@example.org";
}

/* 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 {
	mask *;
	class clients;
	maxperip 3;
}

/* Ö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 {
	mask 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.
 *
 * IRCOp olmak ve nasıl Admin olunacağı hakkında daha fazla bilgi için
 * https://www.unrealircd.org/docs/IRCOp_guide
 *
 * Oper {} bloğunun kendisi ile ilgili ayrıntıları 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.example.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 { tls; }
}

/* Özel SSL/TLS sadece sunucuları bağlamak için port */
listen {
	ip *;
	port 6900;
	options { tls; 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.example.org
{
	incoming {
		mask *@something;
	}

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

	/* Kimlik doğrulaması için diğer sunucunun SPKI parmak izini kullanıyoruz.
	 * Kullanmamız için diğer tarafda './unrealircd spkifp' uygulayıp çalıştırıyoruz.
	 */
	password "AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUV=" { spkifp; }

	class servers;
}

/* Servis'ler için bağlantı bloğu genellikle çok daha basittir.
 * Servis'lerin ne olduğu hakkında daha fazla bilgi için,
 * https://www.unrealircd.org/docs/Services
 */
link services.example.org
{
	incoming {
		mask 127.0.0.1;
	}

	password "changemeplease";

	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!!!
 */
ulines {
	services.example.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 ban bloğu, sizi 'tüm' GLINE, GZLINE, QLINE, SHUN gibi banlardan koruyacaktır */
except ban {
	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";
}

/* Blacklist blokları, bir kullanıcı bağlandığında IP adresinin drone saldırılarına
 * neden olduğunu, bilinen bir saldırıya uğramış bir makine olup olmadığını görmek
 * için harici bir DNS Kara Liste hizmetinden sorgulayacaktır.
 * Belgeleme: https://www.unrealircd.org/docs/Blacklist_block
 * veya aşağıdaki bloklar satırına bakınız.
 */

/* DroneBL, muhtemelen IRC Sunucuları tarafından kullanılan en popüler kara liste.
 * Belgeler ve cevap (reply) tiplerin anlamlarını görmek için https://dronebl.org/
 * adresine bakınız. Bu zamanda aşağıdaki cevap (reply) tiplerini kullanıyoruz:
 * 3: IRC Drone, 5: Bottler, 6: Unknown spambot or drone,
 * 7: DDoS Drone, 8: SOCKS Proxy, 9: HTTP Proxy, 10: ProxyChain,
 * 11: Web Page Proxy, 12: Open DNS Resolver, 13: Brute force attackers,
 * 14: Open Wingate Proxy, 15: Compromised router / gateway,
 * 16: Autorooting worms.
 */
blacklist dronebl {
        dns {
                name dnsbl.dronebl.org;
                type record;
                reply { 3; 5; 6; 7; 8; 9; 10; 11; 12; 13; 14; 15; 16; }
        }
        action gline;
        ban-time 24h;
        reason "Proxy/Drone belirlendi. Ayrıntılar için https://dronebl.org/lookup?ip=$ip adresine bakınız.";
}

/* EFnetRBL, belgeler ve cevap (reply) tiplerini görmek için https://rbl.efnetrbl.org/
 * adresine bakınız.
 * Yazma sırasında: 1 is open proxy, 4 is TOR, 5 is drones/flooding.
 *
 * NOT: Sunucunuzda TOR proxy'lerine izin vermek istiyorsanız,
 *       cevap (reply) tiplerinden '4;' öğesini kaldırmanız gerekiyor.
 */
blacklist efnetrbl {
        dns {
                name rbl.efnetrbl.org;
                type record;
                reply { 1; 4; 5; }
        }
        action gline;
        ban-time 24h;
        reason "Proxy/Drone/TOR belirlendi.  Ayrıntılar için https://rbl.efnetrbl.org/?i=$ip adresine bakınız.";
}

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

/* Ağ yapılandırması */
set {
	network-name 		"ExampleNET";
	default-server 		"irc.example.org";
	services-server 	"services.example.org";
	stats-server 		"stats.example.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	 "+xws"; /* 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; */

	/* Anti flood Koruması
	 * Görmeniz için: https://www.unrealircd.org/docs/Set_block#set::anti-flood
	 */
	anti-flood {
	}

	/* 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 */
	}
}
/* Son olarak, bir MOTD (Günün Mesajı) oluşturabilirsiniz, bu
 * conf/ dizininde 'ircd.motd' metin dosyası oluşturarak yapabilirsiniz.
 * Bu dosyanın içeriği bağlantı kuran kullanıcılara gösterilecektir.
 * Daha fazla bilgi için https://www.unrealircd.org/docs/MOTD_and_Rules bölümünü inceleyiniz.
 */

/*
 * 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:
 *    - Forums: https://forums.unrealircd.org/
 *    - IRC: irc.unrealircd.org (SSL on port 6697) / #unreal-support
 *    İlk önce Dökümantasyon ve FAQ kısmını okumanızı gerektirdiğini unutmayın!
 */
