AntiTrojan TCL paylaşıyorum, ne işe yaradığına gelince, kanallarınıza girişte kullanıcı random nick, random ident kullanmışsa, renk kodlarını aşırı (veya belirticeğiniz sayıda) kullanmışsa, belirli kelime ve karakterleri notice felan atıyosa kullanıcıyı banlicak. Kullanıcı kanaldan atıldığında bi seçenek sunulacak (kick mesajında var) ve dicek ki eğer bot değilsen /msg Botnick removeme yap ve ıspatla ki kanala girebilesin. Ayarları tcl içinden yapıp kullanabileceğiniz gibi, bota konsoldan bağlanıp .chanset #kanal +özellik / -özellik gibi de kullanabilirsiniz. Detaylı bişey kullanışlı da. Buyrun;
PHP Kod: Kodu kopyalamak için üzerine çift tıklayın!
# botun giriceği kanal(lar) set trojan_testchan "#Kontrol #Opers"
# nick ve ident tamamen büyük harflerden oluşuyorsa ceza puanı set trojan_only_big 10
# felancı kadar sayı varsa ceza puanı set digits_in_nickname 4
# veya felancıdan daha fazla sayı varsa ceza puanı set digits_in_ident 4
# nick sayı fazlalığında eklenicek ceza puanı set trojan_digit_nickname 10
# ident sayı fazlalığında eklenicek ceza puanı set trojan_digit_ident 10
# random fullname varsa eklenicek ceza puanı set trojan_random_realname 30
# fullname içinde aşırı renk kodu varsa eklenicek ceza set trojan_realname_with_color 0
# tüm renkler (fullname/away mesajı) set trojan_colors " "
# tüm reklam/küfürler (fullname/away mesajı) set trojan_badwords "# Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir. style="color: #FF8000"># ident random ise ceza set trojan_random_authname 0
# away mesajında küfür varsa ceza set trojan_away_with_badword 0
# fullname kısmında reklam/küfür varsa ceza set trojan_realname_with_badword 0
# away mesajın random ise ceza set trojan_random_away 0
# away mesajı renk kodu içeriyosa ceza set trojan_away_with_color 0
# kullanıcı şu süre kadar suskun kalabilir, aksi halde ceza (dakika cinsinden) set trojan_idletime 30
# aksi halde ceza uygula? (0/1) set trojan_less_idle 0
# cezalı kişiler kanallarda yetkiliyse cezayı daha da artır ki aklı başına gelsin set trojan_status_op 3 set trojan_status_voice 2 set trojan_status_regular 2 set trojan_status_delayed 2
# en az şukadar kanalda olması lazım birinin set trojan_minimum_chans 4
# eğer değilse şu kadar puan ceza set trojan_to_less_chans 10
# şu kelimeleri hariç tut trojan sayma set trojan_goodwords "bnc off et cs play game zzz"
# random nickte ceza puanı set trojan_random_nickname 30
# random identte ceza puanı set trojan_random_ident 20
############################# # - Remove from trojan list #############################
# eğer kişilerin kendilerini trojan listesinden silmesini istemiyorsanız aşağıdaki satırın başına # koyun bind msg - removeme trojan:msg:removeme
# kickmsg: # trojanbot <- bu kelime önemli. biri kendini listeden silince bu kelime de yasaklı listesinden çıkarılır. # bu kelimenin kick mesajında olmasını sağlayın. set trojan_kick_reason "1..:: Sebep: Trojan botu tespit edildi! :: Eğer flood botu değilseniz tekrar giriş yapın :: ve şu komutu kullanarak bot olmadığınızı ıspatlayın: /msg :botnick: removeme 1 :: badpoints: :points: :: ID: :id: ::.."
# ceza puanı şu sayıya ulaşırsa banla set trojan_max_points 11
# trojanları banla? (1 veya 0) # ban kendi kendine açılmayacak, oplar açarsa ayrı tabi. set trojan_ban 1
# trojanları kickle? set trojan_kick 1
# ayı IP den girenleri de temizle? set trojan_newchanban 0
# ban süresi (dakika) set trojan_newchan_bantime 10
# global ban kullan? (önerilir) set trojan_newban 0
# global ban süresi (dakika) set trojan_newban_bantime 1
################### # - Debug olayı ###################
# konsolda banlanan veya kicklenenleri göster set trojan_debugmode 1
# hata ayıklamak için daha fazla mesaj set ::trojan_debug_mode 1
# bir kullanıcı nekadar suskun kalabilir? (dakika) set authed_time 60
# kullanıcı nekadar away kalabilir? set away_time 60
# kullanıcı nekadar suskun kalabilir sunucu yetkilisiyken? set ircop_time 1400
# botun whois kontrolü yapıcağı zaman aralığı (dakika) # milleti korkutmamak için sayıyı fazla düşürme :) set trojan_floodprot 5
################################################################################################################################### # less channels (alpha) # ###################################################################################################################################
################################################################################################################################### # meltdowns nickchecker (copy right in script header) # ###################################################################################################################################
proc trojan:meltdown { input } { set result 0 set check(cons) "bcdfghjklmnpqrstvxyz" set check(good) "tt ll ss" set check(affixture) "off bnc \[ \] afk" set const_count 0 set score 0 set txt [string map "0 o 1 l 3 e 7 t 4 a" $input] foreach x [split $check(good)] { set txt [string map -nocase "$x \"\"" $txt] } foreach x [split $check(affixture)] { if { [string match -nocase *$x* $txt] } { set txt [string map -nocase "$x \"\"" $txt] set score [expr {$score - 10}] } } for { set x 0 } { $x < [string length $txt] } { incr x } { if { [string last [string index $txt $x] $check(cons) ] > -1 } { incr const_count if { $const_count >= 3 } { set score [expr {$score+10}] } } else { set const_count 0 } } if { $score >= 30 } { set result 1 } return $result }
################################################################################################################################### # trojan raw 330 - auth # ###################################################################################################################################
bind raw - 330 trojan:raw:330
proc trojan:raw:330 { from key text } { global trojan_random_authname authed_time set nickname [lindex [split $text " "] 1] set authname [lindex [split $text " "] 2] # putlog "trojan: nickname: $nickname -- authname: $authname " set nickname [string tolower $nickname] global botnick set botnic [string tolower $botnick] if { $nickname == $botnic } { return } if { ! [info exists ::trojan_points($nickname) ] } { set ::trojan_points($nickname) 0 } if { [trojan:meltdown $authname] } { # putlog "trojan: nickname: $nickname -- points: $::trojan_points($nickname) -- + trojan_random_authname $trojan_random_authname" set ::trojan_points($nickname) [expr {$::trojan_points($nickname) + $trojan_random_authname}] } set ::authed($nickname) $authname utimer $authed_time [list catch { unset ::authed($nickname) } error] }
################################################################################################################################### # is authed or not # ###################################################################################################################################
################################################################################################################################### # trojan raw 301 - away # ###################################################################################################################################
bind raw - 301 trojan:raw:301
proc trojan:raw:301 { from key text } { putlog "trojan:raw:301 -- away -- $text" global trojan_random_away away_time trojan_colors trojan_away_with_color trojan_badwords trojan_away_with_badword set nickname [lindex [split $text " "] 1] set nickname [string tolower $nickname] global botnick set botnic [string tolower $botnick] if { $nickname == $botnic } { return } set away [lindex [split $text ":"] end] if { ! [info exists ::trojan_points($nickname) ] } { set ::trojan_points($nickname) 0 } if { [trojan:meltdown $away] } { # putlog "trojan: nickname: $nickname -- points: $::trojan_points($nickname) -- + trojan_random_away $trojan_random_away" set ::trojan_points($nickname) [expr {$::trojan_points($nickname) + $trojan_random_away}] } foreach color $trojan_colors { if { [string match "*$color*" $away] } { # putlog "trojan: nickname: $nickname -- points: $::trojan_points($nickname) -- + trojan_away_with_color $trojan_away_with_color" set ::trojan_points($nickname) [expr {$::trojan_points($nickname) + $trojan_away_with_color}] break } } foreach badword $trojan_badwords { if { [string match "*$badword*" $away] } { # putlog "trojan: nickname: $nickname -- points: $::trojan_points($nickname) -- + trojan_away_with_badword $trojan_away_with_badword" set ::trojan_points($nickname) [expr {$::trojan_points($nickname) + $trojan_away_with_badword}] break } } set ::away($nickname) 1 if { $away == "" } { catch { unset ::away($nickname) } error } utimer $away_time [list catch { unset ::away($nickname) } error] }
################################################################################################################################### # is away or not # ###################################################################################################################################
################################################################################################################################### # trojan raw 313 - irc op # ###################################################################################################################################
bind raw - 313 trojan:raw:313
proc trojan:raw:313 { from key text } { global ircop_time set nickname [lindex [split $text " "] 1] set nickname [string tolower $nickname] global botnick set botnic [string tolower $botnick] if { $nickname == $botnic } { return } if { ! [info exists ::trojan_points($nickname) ] } { set ::trojan_points($nickname) 0 } set ::trojan_points($nickname) 0 set ::ircop($nickname) 1 if { $::trojan_debug_mode } { putlog "trojan:raw:313: $nickname is an IRC Operator" } # timer $ircop_time [list catch { unset ::ircop($nickname) } error] }
################################################################################################################################### # is ircop or not # ###################################################################################################################################
if { ! [info exists ::trojan_points($nickname) ] } { set ::trojan_points($nickname) 0 }
set op_channels 0 set voice_channels 0 set regular_channels 0 set delay_channels 0
set count_chans 0 foreach channel $chans { set status [string index $channel 0] set count_chans [expr {$count_chans +1}] if { $status == "@" } { set op_channels [expr {$op_channels +1}] } if { $status == "+" } { set voice_channels [expr {$voice_channels +1}]
} if { $status == "#" } { set regular_channels [expr {$regular_channels +1}] } if { $status == "<" } { set delay_channels [expr {$delay_channels +1}] } }
set oppoints [expr {$op_channels * $trojan_status_op}] set voicepoints [expr {$voice_channels * $trojan_status_voice}] set regularpoints [expr {$regular_channels * $trojan_status_regular}] set delaypoints [expr {$delay_channels * $trojan_status_delayed}]
if { $count_chans < $trojan_minimum_chans } { if { $::trojan_debug_mode } { putlog "trojan: nickname: $nickname -- points: $::trojan_points($nickname) -- user is only in $count_chans chans -> + $trojan_to_less_chans" } set ::trojan_points($nickname) [expr {$::trojan_points($nickname) + $trojan_to_less_chans}] }
}
################################################################################################################################### # trojan raw 318 - end whois # ###################################################################################################################################
bind raw - 318 trojan:raw:318
proc trojan:raw:318 { from key text } {
set nickname [lindex [split $text " "] 1] set nickname [string tolower $nickname]
global botnick set botnic [string tolower $botnick] if { $nickname == $botnic } { return }
if { ! [info exists ::trojan_points($nickname) ] } { set ::trojan_points($nickname) 0 }