Tekil Mesaj gösterimi
Alt 10 Şubat 2012, 05:02   #1
Çevrimdışı
Heartbroken
Kullanıcıların profil bilgileri misafirlere kapatılmıştır.
IF Ticaret Sayısı: (0)
IF Ticaret Yüzdesi:(%)
Badnick.tcl - kanal koruma




Selam...

bir zamanlar yetkili olduğum bir uluslararası sunucudaki (artık böyle bir yer yok) resmi yardım kanallarını korumakla yetkilendirilmiş eggdroplar için kullandığımız, o sunucudaki coderlar tarafından zamanla ekler yapılarak bu sunucu için geliştirilmiş koruma kodlarından birini burda paylaşıyorum...

Kodun belli bir yazarı-sahibi olduğunu söylemek zor ''anonim'' olduğunu söylemek daha doğru olacaktır sanırım.

bu kod ne yapar -nasıl çalışır?

öncelikle botun op (@) olması gerekir. op olduğu kanallarda en az halfop (%) yetkisine sahip kanal yetkilileri bu kod için kullanılan .

!addbadnick rumuz*!*@* ban sebebi (alternatif olarak !addban komutu)
!rembadnick rumuz*!*@* (alternatifi !remban komutu)
!listbadnick (alternatifleri !listbadnicks yada !listbans komutları) kullanılabilir.


eklenen banlar botun oluşturduğu user-kullanıcı dosyası içinde her kanal için bans-banlar listesi içinde eklenir-listelenir.

ban eklerken sadece rumuz-nicke değil idente - host mask'e yada bunların belirlenen kısımlarına wildcard kullanarak ban eklemek mümkün..

örnek vermek gerekirse.

!addbadnick *!k?t?k*@* ban sebebi buraya bir boşlukla yazın
!addbadnick
Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir.
banlandın gülüm..
!addban
Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir.
de get..

vs vs .. gibi..

tabiki ingilizce bir koddu sizlerin kullanabileceğiniz şekilde lüzumlu yerlerini Türkçe'ye çevirmeye çalıştım.. halen aktif olarak etkin bir şekilde kullanılan hızlı,etkili bir kanal koruma kodudur. sanırım işinize yarayacaktır.

güle güle kullanın..

Kod:   Kodu kopyalamak için üzerine çift tıklayın!
set badnick_version "2.4.4" #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # AYARLAR #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ namespace eval ::badnick { # BINDS set binds(list) "!ListBadNick !ListBadNicks !ListBans" set binds(add) "!AddBadNick !AddBan" set binds(delete) "!RemBadNick !RemBan" # özelde okutulacak banlist'in uzunluğu ne kadar olsun? (sunursuz olması için 0 girin) set cfg(maxlist) 120 # rapor gönderilecek admin kanalı girin set cfg(adminchan) "#admin-abiler" # hata raporlarının gösterileceği kanal (gerekli değilse boş bırakın)... set cfg(debug) "#ağır-abiler" } #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # KURULUM SONU -- ne yaptığınızı bilmiyorsanız bundan sonrasına dokunmayın :) #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # init on rehash set ::badnick::listbadnick 0 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ proc ::badnick::binding { } { variable binds foreach { type triggers } [array get binds] { foreach trigger $triggers { bind pub - $trigger ::badnick::b${type} } } } #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # LISTBANS - LISTBADNICK #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ proc ::badnick::blist { nick uhost hand chan arg } { if { ![isop $nick $chan] && ![ishalfop $nick $chan] } { return } variable listbadnick if { $listbadnick != 0 } { putserv "PRIVMSG $nick :Banlist'e şu an başka biri bakıyor .Daha sonra deneyin." return } set listbadnick [unixtime]${chan} set banlist [banlist $chan] set banlistlength [llength $banlist] if { $banlistlength == 0 } { puthelp "privmsg $nick : $chan kanalında ban listesi boş." set listbadnick 0 return } proc isdigit {string} { regexp {^[0-9]+$} $string } # öntanımlı seçenekler set order "date" set fulloutput 0 set range 0 # öntanımlı output set out(range) "" foreach argument $arg { switch -glob -- [string tolower $argument] { "-h" - "--help" { putserv "notice $nick :Syntax: \002$::lastbind <options>\017. Valid options are:" putserv "notice $nick :\002--countonly\017 : returns the number of bans from $chan)" putserv "notice $nick :\002--full\017 : returns all the fields from each ban. --all is identical)" putserv "notice $nick :\002--sortby=<key>\017 : (<key> can be \002date\017, \002rdate\017, \002lastactive\017, \002rlastactive\017. Example: \002$::lastbind --sortby=rdate\017" putserv "notice $nick :\002--last=<num>\017 : return only <num> results. Example: \002$::lastbind --last=5\017" return set listbadnick 0 } "-c" - "--countonly" { set length [llength [banlist $chan]] putserv "notice $nick :$chan Ban List has [expr { ($length == 0) ? "no" : $length }] bans." set listbadnick 0 return } "-f" - "--full" - "-a" - "--all" { set fulloutput 1 } "-s=*" - "--sortby=*" { switch -- $argument { "--sortby=date" { set order "date" } "--sortby=rdate" { set order "reverse date" } "--sortby=lastactive" { set order "last active date" } "--sortby=rlastactive" { set order "reverse last active date" } default { ::badnick::report "$nick!$uhost @ $chan: Unknown --sortby argument: [lindex [split $argument "="] 1]" putserv "notice $nick :Unknown --sortby argument: [lindex [split $argument "="] 1]" } } } "-l=*" - "--last=*" { set range [lindex [split $argument "="] 1] if { ! [isdigit $range] } { puthelp "notice $nick :The --last option accepts only integer digits." ::badnick::report "$nick!$uhost @ $chan: Unknown --last argument: $range" set range 0 } } default { ::badnick::report "$nick!$uhost @ $chan: Unknown argument: $argument" putserv "notice $nick :Unknown argument: $argument" } } } # banlist switch -- $order { "date" { set banlist [lsort -increasing -index 3 $banlist] } "reverse date" { set banlist [lsort -decreasing -index 3 $banlist] } "last active date" { set banlist [lsort -increasing -index 4 $banlist] } "reverse last active date" { set banlist [lsort -decreasing -index 4 $banlist] } default { putlog "Bad sort option: $order" } } set out(order) ", sorted by $order" set length [llength $banlist] if { $length != $banlistlength } { set out(length) "$length bans on $banlistlength" } else { set out(length) "$banlistlength bans" } # Limit the output if requested # Suggest --last if the ban list is too long variable cfg if { $range != 0 } { set banlist [lrange $banlist end-[expr $range -1] end] set out(range) ", last $range bans" } elseif { $banlistlength > $cfg(maxlist) } { puthelp "notice $nick :Mevcud ban listesi $banlistlength uzunluğunda.., lütfen --last seçeneğini kullanın. Örnek: $::lastbind [join $arg] --last=$cfg(maxlist)" set listbadnick 0 return } set out(start) [string map[list "@length" $out(length) "@order" $out(order) "@[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]ge" $out(range)] "Ban listesi $chan kanalı (@length@order@[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]ge):"] puthelp "PRIVMSG $nick :$out(start)" foreach ban $banlist { # *!*@[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] {"some tests in progress"} 0 1166470558 0 ToM # hostmask, comment, expiration timestamp, time added, last time active, creator # 0 1 2 3 4 5 # ban mask set banmask [lindex $ban 0] # yorum set bancomment [lindex $ban 1] # expire - not used, all are perm # set banexpire [ctime [expr [lindex $ban 2]]] # eklendiği zaman set bantimeadded [clock format [lindex $ban 3] -format "%Y/%m/%d %H:%M"] # son aktıf zaman if { [lindex $ban 4] == 0 } { set banlastactive "Never" } else { set banlastactive [clock format [lindex $ban 4] -format "%Y/%m/%d %H:%M"] } # creator set bancreator [lindex $ban 5] if { $fulloutput == 1 } { puthelp "PRIVMSG $nick :$chan: $banmask ($bancomment) - $bancreator tarafından ($bantimeadded - Last active: $banlastactive) eklendi." } else { puthelp "PRIVMSG $nick :$chan: $banmask ($bancomment) $bancreator tarafından eklendi." } } puthelp "PRIVMSG $nick : $chan kanalı için ban listesi sonu." set listbadnick 0 return } #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # ADDBAN - ADDBADNICK #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ proc ::badnick::badd { nick uhost hand chan arg } { if { ![isop $nick $chan] && ![ishalfop $nick $chan] } { return 0 } set victim [lindex [split $arg] 0] if { $victim == "" } { puthelp "NOTICE $nick :Bir nick/mask ve bir sebep belirtiniz lütfen." return 0 } set reason [join [lrange [split $arg] 1 end]]; if { $reason == "" } { puthelp "NOTICE $nick :Bir sebep belirtiniz lütfen." return 0 } if { [string first "!" $victim ] == -1 && [string first "@" $victim ] == -1 } { # Turn the single nick to a complete hostmask set banmask "$victim!*@*" } else { # Trying to correct the wrong masks set banmask $victim if { [string equal [string range $banmask 0 0] "!"] } { set banmask "*$banmask" } if { [string equal [string range $banmask end end] "!"] } { set banmask "$banmask*@*" } if { [string equal [string range $banmask end end] "@"] } { set banmask "$banmask*" } set banmask [string map {"!@" "!*@"} $banmask] } # Final test if { ! [regexp -- {^[^!@]+![^!@]+@[^!@]+$} $banmask] } { puthelp "NOTICE $nick :Görünüşe göre\002 $victim\002 hatalı bir mask. Doğru bir nick!ident@host mask girdiğinize emin olunuz." ::badnick::report "!AddBan: $nick!$uhost @ $chan: hatalı mask ($victim): $arg" return 0 } # Let's add the ban now ! if { [isban $banmask $chan] } { set out "$banmask halihazırda ban listesinde var. Ban sebebi değiştirildi. \"$reason\"." } else { set out "$banmask $chan kanalında ban liste eklendi." } newchanban $chan $banmask $nick $reason 0 none puthelp "NOTICE $nick :$out" } #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # REMBAN - REMBADNICK #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ proc ::badnick::bdelete { nick uhost hand chan arg } { if { ! [isop $nick $chan] && ! [ishalfop $nick $chan] } { return 0 } if { $arg == "" } { puthelp "NOTICE $nick :Bana hangi banı kaldırmak istediğinizi yazmalısınız.. Böyle deneyiniz. \002$::lastbind --help\017" return 0 } if { [lindex $arg 0] == "--help" || [lindex $arg 0] == "-h" } { puthelp "NOTICE $nick :Syntax: \002$::lastbind <masks>\017 (Birkaç mask verebilirsiniz, aralarında boşluk bırakınız)." return 0 } set removed [list] ; set notfound [list] ; set missed [list] foreach mask [lrange $arg 0 end] { if { [string first "!" $mask ] == -1 } { append mask "!*@*" } if { [killchanban $chan $mask] } { lappend removed $mask } elseif { [isban $mask $chan] } { # This should never happen lappend missed $mask } else { lappend notfound $mask } } proc banbans { masklist } { return [expr { ([llength $masklist] == 1) ? "Ban" : "Bans" }] } if { [llength $removed] } { putserv "notice $nick :[banbans $removed] başarıyla kaldırıldı.: [join $removed ", "]" } if { [llength $notfound] } { putserv "notice $nick :[banbans $notfound] $chan kanalı Ban Listinde \002Bulunamadı\017 $chan Ban List: [join $notfound ", "]" } if { [llength $missed] } { putserv "notice $nick :\002Bir \0034Hata\003 oluştu [banbans $missed]\017: [join $missed ", "] ... :(" putserv "privmsg $::badnick::cfg(adminchan) :Bu banları kaldırırken bir hata oluştu: [join $missed ", "] ( $nick!$uhost tarafından $chan kanalında)" } return } #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # Araçlar #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ proc ::badnick::edebug { text } { variable cfg if { $cfg(debug) == "" } { return } putserv "privmsg $cfg(debug) :\00315(badnick) $text\017" } proc ::badnick::report { text } { variable cfg if { $cfg(adminchan) == "" } { return } putserv "privmsg $cfg(adminchan) :<BadNick.tcl> $text" } #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ catch ::badnick::uninstall ::badnick::binding #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ bind evnt - prerehash ::badnick::uninstall proc ::badnick::uninstall { args } { foreach bind [binds [namespace current]::*] { foreach {a b c d e} $bind break unbind $a $b $c $e } namespace delete [namespace current] } #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ putlog "BadNick v$badnick_version loaded."


__________________
Beş Tas Has Hoş Hoşaf.
 
Alıntı ile Cevapla

IRCForumlari.NET Reklamlar
sohbet odaları reklam ver Benimmekan Mobil Sohbet