Tekil Mesaj gösterimi
Alt 11 Ağustos 2026, 13:45   #1
Kyo
✓
Kayıtlı Üye
Kyo - ait Kullanıcı Resmi (Avatar)

Standart 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.