IRCForumları - IRC ve mIRC Kullanıcılarının Buluşma Noktası

IRCForumları - IRC ve mIRC Kullanıcılarının Buluşma Noktası (https://www.ircforumlari.net/)
-   TCL Scriptler (https://www.ircforumlari.net/tcl-scriptler/)
-   -   Badnick.tcl - kanal koruma (https://www.ircforumlari.net/tcl-scriptler/451319-badnicktcl-kanal-koruma.html)

Heartbroken 10 Şubat 2012 05:02

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 [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] banlandın gülüm..
!addban [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] 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:

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


house 10 Şubat 2012 06:31

Cevap: Badnick.tcl - kanal koruma
 
Bu TCL yi 2 gün önce indirip kullandım evet bu türkçe versiyonu gayet güzel. Ama sevmediğim bir yanı var mesela opers kanalında tek komutla tüm kanallarda badnick eklemiyo. Kanalların hepsine tek tek eklemek zorunda kalıyoruz. Wildcard kullanımına izin veriyo ve host felan eklenebiliyo ident vs bu özelliği güzel. Ama tek komut olsa daha iyiydi kanımca. Herşeye rağmen mevcut en iyi badnick tcl bu bana göre. Eline sağlık.

Heartbroken 10 Şubat 2012 08:39

Cevap: Badnick.tcl - kanal koruma
 
Bu, daha ziyade kanal yetkililerinin kullanımına yönelik hazırlanmış.tabi her sunucunun yönetim şekli-anlayışı farklı .benim olduğum sunucuda sunucu yönetimi kanal içi işlere karışmazdı.kanal sahibi sunucu yetkilisine gel şunu hallet demediği sürece...sunucu yetkilileri adminler ircoplar vs.. sadece sunucuyu korumak kollamakla alakalıydı kanalı korumak tamamen o kanal yetkililerine bırakılmıştı...

buna benzer yazılmış-yayınlanmış-paylaşılmış bir iki kod mevcud ..ekleme-çıkarma-listeleme işi yapan ..ancak bu net üzerinde yabancı sitelerde paylaşılmış olanlardan farklı ,o sunucu için düzenlenmiş-geliştirilmişti..yerlide zaten olmaz ya yabancı sitelerde de olduğunu-paylaşıldığını sanmıyorum çünkü bunlara erişim sunucu yetkililerindeydi.. bende olmasının nedeni bu..

o sunucuda kullanmış olduğumuz başka koruma kodlarınıda peyderpey burda paylaşıcam...

Yunus 27 Nisan 2012 19:26

Cevap: Badnick.tcl - kanal koruma
 
Denedim fakat bot saçmalıyor , !listbadnick yazıyorum Ban listesi boş diyor.Badnick listesi boş demesi lazım.Ve wildcard kullanarak badnick ekleyemiyorum.

CLubber 27 Nisan 2012 19:55

Cevap: Badnick.tcl - kanal koruma
 
Bot db oluşturamıyor olabilir, kodu detaylı bir şekilde incelemek gerek yazan çok karmaşık yazmış.

Bu arada;

Alıntı:

!addbadnick [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] banlandın gülüm..

!addban *!adamim*@*.bilmemne.us de get..
Ban sebeplerine bayıldım, Heartbroken ;s49

saywhat 27 Nisan 2012 20:01

Cevap: Badnick.tcl - kanal koruma
 
Kod:

        puthelp "privmsg $nick : $chan kanalında ban listesi boş."
bu satırdaki yazıyı Badnick listesi boş yada istediğiniz şekilde değişebilirsiniz.çeviren böyle çevirmeyi uygun görmüş. bu sorun değil..

ancak çalışmıyor demişiniz asıl bu sorun...

botun .user dosyasında banın eklendiği her kanal için

ayrı ayrı:

Kod:

::#kanal-adı bans
- *!*5B27DB@*:+0:+1316267152:0:k_1:"do not PM users without asking permission first. "
- *!*AA482D@*:+0:+1315978361:0:Chief-Roc:"access denied"
- *!*99EE29@*:+0:+1315965113:0:k_1:"don't pm channel users without asking permission first. "
- *!*stevin@*:+0:+1315964904:0:k_1:"no way in.."
- *pthc*!*@*:+0:+1315742740:0:k_1:"forbidden for perverts"
- *!*2D7FA4@*:+0:+1315744919:0:k_1:" banned out !!"

şeklinde bu kodla eklenmiş ban listesi gözüküyor olmalı. (eğer kod düzgün çalışıyorsa)
bu kodla eklenen banlar direk olarak botun bot.user dosyasına kayıt ediliyor ..ayrı bir badnick.txt vs oluşturmuyor.

eğer sizin ekledikleriniz user dosyasında görünmüyorsa bir sorun var demektir.

bu kodun sağlamlığına kefil olabilirim çünkü bu kodu ana kanallarında,en kalabalık kanallarında kullanan en az iki yabancı sunucu adı verebilirim .son 10 yıldır bu kodu kullanıyorlar ..kodun sağlıklı işlemesi için bot.user dosyasını görebilmesi ve botun kanalda op olması gerekir.

Yunus 27 Nisan 2012 20:03

Cevap: Badnick.tcl - kanal koruma
 
Evet karışmış birbirine arkadaş çevirdim diyor belki o bir yerde hata yapmıştır.Bunun gibi ekleme/silme yapabileceğimiz bir tcl varmı bildiğiniz ?

saywhat 27 Nisan 2012 20:09

Cevap: Badnick.tcl - kanal koruma
 
buyrun size direk bu kodun orjinalini çevrilmemiş halini vereyim..bundan daha iyi badnick scripti piyasada yok. pek çoğunu denemiş biri olarak rahatlıkla söyleyebilirim.

not: kopyala -yapıştır yaparken Windows notepad ile eklenen kodlarda kayma bozulma bazı karakterlerin yok olması vs gibi problemler olabiliyor.bu tür kodlarda size bu kodları kaydetmek için [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] notepad++'yı önerebilirim bu tür sorunlar bunla olmaz copy-paste olayında..

Kod:

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# BADNICK.TCL
set badnick_version "2.3"
# PREVIOUS CHANGELOG:
# (removed the changelog entries about e-ops; using the eBotnet system made it unused)
# Unk: 12Jan2004: TODO: Allow these to be done in PM.. Find a way to doglobal securly.
# Unk: 11Jan2004: Initial creation
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# TODO:
#  Check the ban mask format, probably using a regexp.
#  Add a way to do it in PM.. bind msg o|o blahbadnick #chan *!*@*
#  Make the banlist date/time readable for humans :)
#
#
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# init on rehash
set listbadnick 0
unset listbadnick
 
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# LISTBANS - LISTBADNICK
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
bind pub - 'ListBadNick BadNick:pub:ListBadNick
bind pub - 'ListBadNicks BadNick:pub:ListBadNick
bind pub - 'ListBans BadNick:pub:ListBadNick
proc BadNick:pub:ListBadNick {nick uhost hand chan arg} {
 
  if { ![isop $nick $chan] && ![ishalfop $nick $chan] } {
      return 0
  }
 
  global listbadnick
  if { [ info exists listbadnick ] == 1 } {
      putserv "PRIVMSG $nick :Someone is currently viewing a Banlist, please try again later."
      return 0
  }
 
  set listbadnick 1
  puthelp "PRIVMSG $nick :Start Internal Banlist for $chan:"
  foreach ban [banlist $chan] { 
      # hostmask, comment, expiration timestamp, time added, last time active, and creator
      # ban mask
      set banmask [lindex $ban 0]
      # comment
      set bancomment [lindex $ban 1]
      # expire - not used, all are perm
      # set banexpire [ctime [expr [lindex $ban 2]]]
      # time added
      set bantimeadded [ctime [expr [lindex $ban 3]]]
      # time last active
      set banlastactive [ctime [expr [unixtime] - [lindex $ban 4]]]
      # creator
      set bancreator [lindex $ban 5]
 
      if { $arg == "full" | $arg == "all" } {
        puthelp "PRIVMSG $nick :$chan Banlist: $banmask ($bancomment) added by $bancreator on $bantimeadded (Last active: $banlastactive)"
      } elseif { $arg == "raw" } {
        puthelp "PRIVMSG $nick :$chan Banlist: $ban"
      } else {
        puthelp "PRIVMSG $nick :$chan Banlist: $banmask ($bancomment) by $bancreator"
      }
 
  }
  puthelp "PRIVMSG $nick :End Internal Banlist for $chan"
  unset listbadnick
}
 
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# ADDBAN - ADDBADNICK
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
bind pub - 'AddBadNick BadNick:pub:AddBadNick
bind pub - 'AddBan BadNick:pub:AddBadNick
proc BadNick:pub:AddBadNick {nick uhost hand chan arg} {
  # Where the hell does this come from ??
  global EngNickChangeTrigWarn EngNickChangeMsgBan EngNickChangeBanTime
 
  if { ![isop $nick $chan] && ![ishalfop $nick $chan] } {
      return 0
  }
 
  set name [lindex [split $arg] 0]
      set reason [join [lrange [split $arg] 1 end]];
      if { $reason == "" } {
      puthelp "NOTICE $nick :Please provide a reason."
      return 0
  }
  # No need to retest the reason, we just did it...
  if { ($name == "") || ($reason == "") } {
      puthelp "NOTICE $nick :Please provide a name and a reason."
      return 0
  }
  if {( [string first "!" $name ] == -1 )} {
      newchanban $chan $name!*@* $nick \"$reason\" 0 none
      puthelp "NOTICE $nick :$name!*@* should be added to $chan nickban list."
  } else {
      newchanban $chan $name $nick \"$reason\" 0 none
      puthelp "NOTICE $nick :$name should be added to $chan nickban list."
  }
}
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# REMBAN - REMBADNICK
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
bind pub - 'RemBadNick BadNick:pub:RemBadNick
bind pub - 'RemBan BadNick:pub:RemBadNick
proc BadNick:pub:RemBadNick {nick uhost hand chan arg} {
  # Where the hell does this come from ??
  global EngNickChangeTrigWarn EngNickChangeMsgBan EngNickChangeBanTime
 
  if { ![isop $nick $chan] && ![ishalfop $nick $chan] } {
      return 0
  }
 
  if { ($arg == "") } {
      puthelp "NOTICE $nick :You need to tell me which ban to remove =)"
      return 0
  }
  set name [lindex $arg 0]
 
  if {( [string first "!" $name ] == -1 )} {
      if ([killchanban $chan $name!*@*]) {
        puthelp "NOTICE $nick :$name!*@* should be removed from $chan nickban list"
      } else {
        puthelp "NOTICE $nick!*@* :Nickban wasn't removed."
      }
      return 0
  }
 
  if ([killchanban $chan $name]) {
      puthelp "NOTICE $nick :$name should be removed from $chan nickban list"
  } else {
      puthelp "NOTICE $nick :Nickban wasn't removed!"
  }
 
}
 
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# FILTER
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
proc BadNick:filter {str} {
#  regsub -all --
{\003[0-9]{0,2}(,[0-9]{0,2})?|\017|\037|\002|\026|\006|\007} $str "" str
  regsub -all -nocase {[^a-z*?@!]} $str "" str
  return $str
}
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
putlog "BadNick v$badnick_version loaded."


Yunus 27 Nisan 2012 20:11

Cevap: Badnick.tcl - kanal koruma
 
Alıntı:

saywhat Nickli Üyeden Alıntı (Mesaj 1041103304)
Kod:

        puthelp "privmsg $nick : $chan kanalında ban listesi boş."
bu satırdaki yazıyı Badnick listesi boş yada istediğiniz şekilde değişebilirsiniz.çeviren böyle çevirmeyi uygun görmüş. bu sorun değil..

ancak çalışmıyor demişiniz asıl bu sorun...

botun .user dosyasında banın eklendiği her kanal için

ayrı ayrı:

Kod:

::#kanal-adı bans
- *!*5B27DB@*:+0:+1316267152:0:k_1:"do not PM users without asking permission first. "
- *!*AA482D@*:+0:+1315978361:0:Chief-Roc:"access denied"
- *!*99EE29@*:+0:+1315965113:0:k_1:"don't pm channel users without asking permission first. "
- *!*stevin@*:+0:+1315964904:0:k_1:"no way in.."
- *pthc*!*@*:+0:+1315742740:0:k_1:"forbidden for perverts"
- *!*2D7FA4@*:+0:+1315744919:0:k_1:" banned out !!"

şeklinde bu kodla eklenmiş ban listesi gözüküyor olmalı. (eğer kod düzgün çalışıyorsa)
bu kodla eklenen banlar direk olarak botun bot.user dosyasına kayıt ediliyor ..ayrı bir badnick.txt vs oluşturmuyor.

eğer sizin ekledikleriniz user dosyasında görünmüyorsa bir sorun var demektir.

bu kodun sağlamlığına kefil olabilirim çünkü bu kodu ana kanallarında,en kalabalık kanallarında kullanan en az iki yabancı sunucu adı verebilirim .son 10 yıldır bu kodu kullanıyorlar ..kodun sağlıklı işlemesi için bot.user dosyasını görebilmesi ve botun kanalda op olması gerekir.

Kodun düzgün çalışıp çalışmadiğindan emin olmadiğin halde nasıl kefil olabiliyorsun ? Bence önce kendin bu kodu denemelisin ondan sonra bu mesajı yazmaliydin.Yinede ilgin için tşkler.

saywhat 27 Nisan 2012 20:16

Cevap: Badnick.tcl - kanal koruma
 
yaklaşık 8 yıl kadar bu kodla tecrübem var ..aksi halde o bot.user dosyasındaki ban mesajlarını size gösteremezdim..buna erişimim olmazdı ve bu kodun 3-4 farklı versionu orijinalleri elimde olmazdı...


Tüm Zamanlar GMT +3 Olarak Ayarlanmış. Şuanki Zaman: 18:48.

Powered by vBulletin® Version 3.8.8 Beta 3
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
Search Engine Friendly URLs by vBSEO
Copyright ©2004 - 2024 IRCForumlari.Net