| Kyo | 11 Ağustos 2026 13:45 | UnrealIRCd 3.2.10 Uyumlu Kyo Koruma Scripti Kod:
################################################################################
# Sistem: Sıfırdan Eggdrop Sunucu Gelişmiş Koruma ve Duyuru Scripti
# Sürüm: UnrealIRCd 3.2.10 Özel Versiyon
# Geliştirici: Kyo
# Dil: Tcl / Eggdrop 1.6, 1.8, 1.9+ Sürümleriyle Tam Uyumlu
################################################################################
namespace eval Kyo {
# --- UNREALIRCD 3.2.10 OPER / ADMIN AYARLARI ---
variable oper_user "KyoOper" ; # UnrealIRCd oper.conf içindeki login ismi
variable oper_pass "OperSifreniz" ; # UnrealIRCd oper.conf içindeki şifre
# --- CEZA VE AKSİYON AYARLARI ---
variable akick_sure 30 ; # Kanal banlarının süresi (Dakika)
variable gzline_sure "1d" ; # UnrealIRCd 3.2.10 için GZLINE süresi (Örn: 1d = 1 Gün, 1h = 1 Saat)
variable kufur_aksiyon "kickban" ; # Küfür durumunda: "kick", "ban" ya da "kickban"
# --- FLOOD VE KORUMA EŞİKLERİ ---
variable flood_mesaj_sayisi 4 ; # X saniyede atılabilecek maksimum mesaj
variable flood_mesaj_suresi 3 ; # Kontrol edilecek saniye aralığı
variable flood_join_sayisi 5 ; # X saniyede kanala girebilecek maksimum kullanıcı
variable flood_join_suresi 4 ; # Kontrol edilecek saniye aralığı
variable flood_nick_sayisi 3 ; # X saniyede yapılabilecek maksimum nick değişimi
variable flood_nick_suresi 5 ; # Kontrol edilecek saniye aralığı
# --- YASAKLI KELİMELER / REKLAM LİSTESİ ---
variable yasakli_kelimeler {
"www." ".com" ".net" ".org" "irc." "chate gel"
"oç" "******************" "piç" "******************" "*********" "göt" "pkk"
}
# --- DAHİLİ HAFIZA VE TAKİP DİZİLERİ ---
variable msg_tracker; array set msg_tracker[list]
variable join_tracker; array set join_tracker[list]
variable nick_tracker; array set nick_tracker[list]
# --- BINDING (TETİKLEYİCİLER) ---
bind evnt - init-server [namespace current]::bot_oper_giris
bind pubm - * [namespace current]::pub_mesaj_kontrol
bind join - * [namespace current]::join_ve_greet_kontrol
bind nick - * [namespace current]::nick_kontrol
bind raw - 381 [namespace current]::oper_basarili_log
# Yönetim Komutları
bind pub o|o .ban [namespace current]::admin_ban
bind pub o|o .unban [namespace current]::admin_unban
bind pub o|o .temizle [namespace current]::admin_clear
# --- FONKSİYONLAR AND KORUMA LOGİKLERİ ---
# 1. Otomatik Oper Giriş Mekanizması (UnrealIRCd 3.2.10 Raw Yapısı)
proc bot_oper_giris {type} {
variable oper_user
variable oper_pass
# UnrealIRCd 3.2.10 için standart OPER syntax komutu gönderilir
putquick "OPER $oper_user $oper_pass"
}
proc oper_basarili_log {from keyword arguments} {
putlog "Kyo [UnrealIRCd 3.2.10]: Sunucuda başarıyla GLOBAL OPER/ADMIN yetkisi alındı!"
}
# Gelişmiş Ceza Uygulama (UnrealIRCd 3.2.10 GZLINE / KLINE / BAN Sözdizimi)
proc ceza_ver {nick uhost chan sebep {global 0}} {
variable akick_sure
variable gzline_sure
variable kufur_aksiyon
set ip [lindex [split $uhost @] 1]
set mask "*!*@$ip"
# UnrealIRCd 3.2.10 Sözdizimi: GZLINE [mask] [süre] :[sebep]
if {$global == 1} {
putquick "GZLINE *@$ip $gzline_sure :Saldiri Girisimi Engellendi! (Kyo Guard)"
putquick "KLINE *@$ip $gzline_sure :Saldiri Girisimi Engellendi! (Kyo Guard)"
return 1
}
if {$kufur_aksiyon == "ban" || $kufur_aksiyon == "kickban"} {
newchanban $chan $mask "Kyo" $sebep $akick_sure
}
if {$kufur_aksiyon == "kick" || $kufur_aksiyon == "kickban"} {
putquick "KICK $chan $nick :$sebep"
}
}
# 2. Yazı Flood ve Kelime Filtresi
proc pub_mesaj_kontrol {nick uhost hand chan text} {
variable yasakli_kelimeler
variable flood_mesaj_sayisi
variable flood_mesaj_suresi
variable msg_tracker
if {[isop $nick $chan] || [isvoice $nick $chan]} { return 0 }
set low_text [string tolower $text]
foreach kelime $yasakli_kelimeler {
if {[string first $kelime $low_text] != -1} {
ceza_ver $nick $uhost $chan "Yasakli Kelime/Reklam Kullanimi Engellendi!"
return 1
}
}
set simdi [unixtime]
set u_id "$nick:$chan"
if {![info exists msg_tracker($u_id)]} { set msg_tracker($u_id)[list] }
set gecmis[list]
foreach t $msg_tracker($u_id) {
if {($simdi - $t) <= $flood_mesaj_suresi} { lappend gecmis $t }
}
lappend gecmis $simdi
set msg_tracker($u_id) $gecmis
if {[llength $gecmis] > $flood_mesaj_sayisi} {
ceza_ver $nick $uhost $chan "Mesaj Flood / Sunucu Korumasi Aktif!"
unset msg_tracker($u_id)
return 1
}
return 0
}
# 3. Kanala Giriş (Join Flood) ve UnrealIRCd 3.2.10 Uyumlu Greet Sistemi
proc join_ve_greet_kontrol {nick uhost hand chan} {
variable flood_join_sayisi
variable flood_join_suresi
variable join_tracker
# --- GREET / DUYURU SİSTEMİ ---
if {$nick != $::botnick} {
# UnrealIRCd 3.2.10'da o/a/o bayrakları veya doğrudan kanal @ durumu kontrolü
if {[matchattr $hand o] || [isop $nick $chan]} {
# Kanal içi duyuru
putquick "PRIVMSG $chan :\00304【 YETKİLİ GİRİŞİ 】\003 \002$nick\002 şu anda \002$chan\002 kanalına giriş yaptı. Hoş geldiniz!"
# Global kanallar arası döngüsel duyuru
foreach kanal [channels] {
if {$kanal != $chan} {
putquick "PRIVMSG $kanal :\00306【 SUNUCU DUYURUSU 】\003 Değerli Yönetici \002$nick\002 şu anda aktif olmuştur!"
}
}
}
}
if {[matchattr $hand o]} { return 0 }
# --- SALDIRI (JOIN FLOOD) KORUMASI ---
set simdi [unixtime]
if {![info exists join_tracker($chan)]} { set join_tracker($chan)[list] }
set gecmis[list]
foreach t $join_tracker($chan) {
if {($simdi - $t) <= $flood_join_suresi} { lappend gecmis $t }
}
lappend gecmis $simdi
set join_tracker($chan) $gecmis
if {[llength $gecmis] > $flood_join_sayisi} {
# Kitlesel saldırıda kanalı kilitle (+m)
putquick "MODE $chan +m"
putquick "PRIVMSG $chan :\00304【 Kyo Saldırı Koruması 】\003 Hızlı girişler algılandı! Kanal geçici olarak susturuldu (+m)."
# UnrealIRCd 3.2.10 mimarisinde saldırgan IP'ye anında küresel engelleme
ceza_ver $nick $uhost $chan "Mass Join Flood" 1
utimer 15[list putquick "MODE $chan -m"]
set join_tracker($chan)[list]
}
return 0
}
# 4. Nick Değiştirme (Nick Flood) Koruması
proc nick_kontrol {nick uhost hand chan newnick} {
variable flood_nick_sayisi
variable flood_nick_suresi
variable nick_tracker
if {[isop $newnick $chan]} { return 0 }
set simdi [unixtime]
set u_id "*!*@[lindex [split $uhost @] 1]"
if {![info exists nick_tracker($u_id)]} { set nick_tracker($u_id)[list] }
set gecmis[list]
foreach t $nick_tracker($u_id) {
if {($simdi - $t) <= $flood_nick_suresi} { lappend gecmis $t }
}
lappend gecmis $simdi
set nick_tracker($u_id) $gecmis
if {[llength $gecmis] > $flood_nick_sayisi} {
# Nick flood yapan IP'yi UnrealIRCd ağından temizle
ceza_ver $newnick $uhost $chan "Sık Nick Degistirme (Nick Flood) Yasak!" 1
unset nick_tracker($u_id)
}
return 0
}
# --- UNREALIRCD MİMARİSİNE UYGUN YÖNETİM ALIASLARI ---
proc admin_ban {nick uhost hand chan text} {
set hedef [lindex [split $text] 0]
set sebep [lrange [split $text] 1 end]
if {$hedef == ""} {
putquick "NOTICE $nick :Kullanım: .ban <nick> <sebep>"
return 0
}
if {$sebep == ""} { set sebep "Yönetici İsteği." }
set hedef_uhost [getchanhost $hedef $chan]
if {$hedef_uhost != ""} {
ceza_ver $hedef $hedef_uhost $chan $sebep
} else {
putquick "NOTICE $nick :$hedef kanalda bulunamadı."
}
}
proc admin_unban {nick uhost hand chan text} {
set hedef [lindex [split $text] 0]
if {$hedef == ""} {
putquick "NOTICE $nick :Kullanım: .unban <ban_maskesi/nick>"
return 0
}
if {[string first "!" $hedef] == -1} {
set h_host [getchanhost $hedef $chan]
if {$h_host != ""} { set hedef "*!*@[lindex [split $h_host @] 1]" }
}
killchanban $chan $hedef
putquick "MODE $chan -b $hedef"
putquick "PRIVMSG $chan :$hedef ban cezası $nick tarafından kaldırıldı."
}
proc admin_clear {nick uhost hand chan text} {
for {set i 0} {$i < 30} {incr i} { putpurple $chan " " }
putquick "PRIVMSG $chan :Kanal ekranı \002$nick\002 tarafından temizlendi."
}
}
putlog "Sıfırdan UnrealIRCd 3.2.10 Uyumlu Kyo Scripti Başarıyla Yüklendi! (Geliştirici: Kyo)" Sunucu Uyumluluğu: UnrealIRCd 3.2.10 mimarisine tam entegredir.
Oto-Oper Girişi: Sunucuya bağlandığı an otomatik OPER girişi yapar.
Gelişmiş GZLINE: Saldırı anında IP adreslerine otomatik GZLINE atar.
Anlık KLINE: Bot saldırılarını engellemek için KLINE komutunu yürütür.
Yazı Flood Koruması: Belirlenen sürede hızlı mesaj atanları anında cezalandırır.
Join Flood Koruması: Kanala hızlı bot girişlerinde odayı +m moduna alır.
Nick Flood Koruması: Seri nick değiştiren saldırganları sunucudan uzaklaştırır.
Kelime Filtresi: Küfür, hakaret ve reklam içerikli kelimeleri kanalda engeller.
Yetkili Karşılaması: Kanala giren operatörleri kullanıcılara renkli duyurur.
Global Admin Duyurusu: Aktif olan yöneticileri tüm ortak kanallarda ilan eder.
Hafıza Optimizasyonu: Zaman bazlı diziler kullanarak botun RAM tüketimini azaltır.
Güvenli Whitelist: Kanaldaki yetkilileri koruma filtrelerinden muaf tutar.
Pratik .ban Komutu: Kanal içinden yetkililerin hızlı ban atmasını sağlar.
Kolay .unban Komutu: Maske veya nick belirterek hızlıca ban kaldırır.
Ekran Temizleme: .temizle komutuyla kanal geçmişini hızlıca kaydırır /eggdrop/scripts/
Yoluna atın. Kyo.tcl oluşturun ve kodları içine yapıştırın.
Botu yeniden başlatın.
Umarım işinize yarar. |