En iyi Webmaster forumlari.
iyilerin buluşma noktasi.

Proxy koruma tcl

Başlatan Administrator, Ağu 01, 2025, 09:20 ÖÖ

« önceki - sonraki »

Administrator

  # proxycheck.tcl - proxy.txt üzerinden GLINE atan koruma sistemi

set proxylist_file "proxy.txt"
set oper_nick "BotNick"  ;# Oper yetkili nick'in burada tanımlı olmalı

bind evnt - init-server load_proxy_list
bind evnt - user-login check_user_proxy

# Proxy listesi belleğe yüklenir
proc load_proxy_list {} {
    global proxylist_file proxy_list

    if {![file exists $proxylist_file]} {
        putlog "ProxyCheck: proxy.txt bulunamadı!"
        return
    }

    set fp [open $proxylist_file r]
    set proxy_list {}
    while {[gets $fp line] >= 0} {
        set line [string trim $line]
        if {[regexp {^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+} $line]} {
            lappend proxy_list $line
        }
    }
    close $fp
    putlog "ProxyCheck: [llength $proxy_list] proxy IP yüklendi."
}

# Kullanıcı giriş yaptığında IP kontrolü yapılır
proc check_user_proxy {nick user host hand} {
    global proxy_list

    set fullip [getip $nick]
    if {$fullip eq ""} {
        putlog "ProxyCheck: $nick için IP alınamadı."
        return
    }

    foreach proxyip $proxy_list {
        if {[string match "$proxyip*" $fullip]} {
            putlog "ProxyCheck: $nick ($fullip) PROXY tespit edildi. GLINE atılıyor."
            send_gline $nick $fullip
            return
        }
    }
}

# GLINE gönderimi
proc send_gline {nick ip} {
    set reason "Proxy bağlantısı tespit edildi."
    putserv "OPER $::oper_nick password" ;# Gerekirse OPER ol
    putserv "GLINE *@$ip 1d :$reason"
    putlog "ProxyCheck: GLINE atıldı -> *@$ip ($reason)"
}

# IP adresini al
proc getip {nick} {
    if {[info exists ::laston($nick)]} {
        return $::laston($nick)
    }
    return ""
}
 
Webmasterforumlari.com yorumlarınız değerlidir..

Administrator

  # proxyconnect.tcl - Client connecting IP'lerine göre proxy kontrolü
# Eggdrop'ın oper olması gerekir (server notice alabilmeli)

set proxylist_file "proxy.txt"
set opernick "BotNick" ;# GLINE için oper nick (gerekirse)

# IP listesi yükleme
proc load_proxy_list {} {
    global proxy_list proxylist_file
    set proxy_list {}
    if {[file exists $proxylist_file]} {
        set fp [open $proxylist_file r]
        while {[gets $fp line] >= 0} {
            set line [string trim $line]
            if {$line ne ""} {
                lappend proxy_list $line
            }
        }
        close $fp
        putlog "ProxyConnect: [llength $proxy_list] IP yüklendi."
    } else {
        putlog "ProxyConnect: proxy.txt bulunamadı!"
    }
}
load_proxy_list

# Sunucu NOTICE'lerini yakala
bind raw - "NOTICE" raw_notice_handler

# NOTICE handler
proc raw_notice_handler {from keyword text} {
    global proxy_list

    # Örnek: *** Client connecting on port 6667: TestNick!user@1.2.3.4
    if {[regexp {Client connecting on port \d+: .*?@([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)} $text -> ip]} {
        putlog "ProxyConnect: Bağlantı IP tespit edildi: $ip"

        foreach proxyip $proxy_list {
            if {[string match "$proxyip*" $ip]} {
                putlog "ProxyConnect: Proxy IP tespit edildi: $ip -> GLINE gönderiliyor."
                send_gline $ip
                return
            }
        }
    }
}

# GLINE gönderimi
proc send_gline {ip} {
    set reason "Proxy bağlantısı tespit edildi."
    putserv "GLINE *@$ip 1d :$reason"
    putlog "ProxyConnect: GLINE atıldı -> *@$ip ($reason)"
}
 
Webmasterforumlari.com yorumlarınız değerlidir..