Socket ile proxy / VPN / TOR listeleri çekilir
DNSBL (DroneBL)
JOIN’e bağlı değil
WHO ile IP alınır
1️⃣ giriş → KILL
2️⃣ giriş → 1 gün KLINE
3️⃣ giriş → kalıcı GLINE
Oper notice
#xline dashboard (renkli)
False positive önlemeli
Tek dosya / tek script
Kod
; =========================
; AYARLAR
; =========================
set %dashchan #xline
set %kline.time 86400
; Renkler
set %c.info 12
set %c.alert 4
set %c.notice 8
; =========================
; BAŞLANGIÇ
; =========================
on *:START:{
.timerLIST 0 86400 list_update
list_update
}
; =========================
; PROXY / VPN / TOR LİSTELERİ
; =========================
alias list_update {
fetch proxylist raw.githubusercontent.com /TheSpeedX/PROXY-List/master/http.txt proxy.txt
fetch vpnlist raw.githubusercontent.com /ipdumper/vpn/main/vpn.txt vpn.txt
fetch torlist check.torproject.org /exit-addresses tor.txt
}
alias fetch {
if ($sock($1)) sockclose $1
sockopen $1 $2 80
set %path. [ $+ [ $1 ] ] $3
set %file. [ $+ [ $1 ] ] $4
write -c $4
}
on *:SOCKOPEN:*:{
if ($left($sockname,4) != prox && $left($sockname,4) != vpnl && $left($sockname,4) != torl) return
sockwrite -n $sockname GET %path. [ $+ [ $sockname ] ] HTTP/1.1
sockwrite -n $sockname Host: $sock($sockname).ip
sockwrite -n $sockname $crlf
}
on *:SOCKREAD:*:{
if ($sockerr) return
sockread %d
if ($regex(%d,/^\d+\.\d+\.\d+\.\d+/)) {
write %file. [ $+ [ $sockname ] ] $regml(0)
}
}
; =========================
; SUNUCUYA GİREN HERKESİ WHO İLE SORGULA
; =========================
on *:CONNECT:{
.timerWHOALL 0 30 quote WHO 0 o
}
on *:RAW:352:{
if (!$oper) return
var %nick = $7
var %ip = $10
if (%ip == $null) return
proxy_check %nick %ip
}
; =========================
; DNSBL
; =========================
alias dnsbl {
var %rev = $gettok($2,4,46) $+ . $+ $gettok($2,3,46) $+ . $+ $gettok($2,2,46) $+ . $+ $gettok($2,1,46)
dns -l dnsbl. $+ $1 %rev $+ .dnsbl.dronebl.org
}
on *:DNS:{
if ($dns(0).ip) proxy_action $gettok($dns(0).name,2,46) $2 DNSBL
}
; =========================
; ANA KONTROL
; =========================
alias proxy_check {
if ($2 iswm 127.* || $2 iswm 10.* || $2 iswm 192.168.*) return
if ($read(proxy.txt,w,$2)) { proxy_action $1 $2 PROXY | return }
if ($read(vpn.txt,w,$2)) { proxy_action $1 $2 VPN | return }
if ($read(tor.txt,w,$2)) { proxy_action $1 $2 TOR | return }
dnsbl $1 $2
}
; =========================
; AKSİYON SİSTEMİ
; =========================
alias proxy_action {
var %nick $1
var %ip $2
var %src $3
var %count = $read(proxy_seen.txt,w,%ip)
if (%count == $null) %count = 0
inc %count
write -c proxy_seen.txt %ip %count
if (%count == 1) {
quote KILL %nick :%src tespit edildi
msg &opers [NOTICE] %src %nick %ip (1)
msg %dashchan $chr(3) %c.info [INFO] %src %nick %ip
return
}
if (%count == 2) {
quote KLINE %kline.time *@%ip :%src tekrar
quote KILL %nick :%src engellendi
msg &opers [NOTICE] %src %nick %ip (KLINE)
msg %dashchan $chr(3) %c.alert [ALERT] %src %nick %ip → KLINE
return
}
quote GLINE *@%ip :%src kalıcı
quote KILL %nick :%src engellendi
msg &opers [NOTICE] %src %nick %ip → GLINE
msg %dashchan $chr(3) %c.alert [ALERT] %src %nick %ip → GLINE
}