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/)
-   -   bot log arama (https://www.ircforumlari.net/tcl-scriptler/602819-bot-log-arama.html)

saywhat 03 Ağustos 2014 10:48

bot log arama
 
[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]

Kod:

# hangi kanal/lar üstünde kullanılacaksa :
# .chanset #kanal +logrec
setudef flag logrec

# botunuzun log dosyası ,dizini ve adı
set logrecfile "logs/b-BoTz.log"

# tcllib struct paketi gerektirir.
package require struct::list

# komutu kullanma erişimi kimlerde olacak
set logflags "mnf|oaf"

# komut başına gelecek:
set logtrig "!"

# komut/lar ne olacak (araya boşlukla girin):
set logkomut "log bak search"

# maksimum kaç satır çıktı gösterilsin:
set logsatr "5"

# flood kontrolü "saniye"
set logflud "10"

# kanala/özele postalama yöntemi ne olacak
# NOTICE %nick%  yada PRIVMSG %nick%
# olarak da tercih edebilirsiniz.
set logpost "PRIVMSG %chan%"


foreach bind [split $logkomut " "] {
      bind pub $logflags $logtrig$bind log_search_pub
  }

proc log_search_pub {nick uhost hand chan text} {
    if {![channel get $chan logrec]} { return 0 }
        log_search $nick $uhost $hand $chan $text
      }
     
proc log_search {nick uhost hand chan text} {
        set change(%nick%) $nick
        set change(%chan%) $chan
        set posta [string map [array get change] $::logpost]
        set ara [join [lrange [split $text] 0 end]]

  if {[llength $ara] eq "0"} {
      puthelp "$posta :Kullanımı:\002 $::lastbind <aranacak>\002"
      return 0
    }
   
      set host [lindex [split $uhost @] 1]
  if {[throttled $host,$chan $::logflud]} {
      puthelp "$posta :\002Flood yapmayın !!!\002 - \
      \00314[expr {[clock seconds] - $::throttled($host,$chan)}] saniye sonra deneyin...\003"
      return 0
    }

      set ara *[string map {" " *} $ara]*
      putserv "$posta :\002$ara\002 aranıyor..."
      set i 0
     
      set fp [open $::logrecfile r]
      set lines [split [read -nonewline $fp] "\n"]
      foreach line [struct::list reverse $lines] {
   
  if {[string match -nocase $ara $line]} {
      if {$i == $::logsatr} break
          puthelp "$posta :$line"
          incr i
          } 
      }
      close $fp

  if {$i} {
          putquick "$posta :gösterilen arama sonucu : \002$i \002 [expr {$i == 1?"":"adet..."}]..."
        } else {
          putserv "$posta :\002aramayla eşleşen kayıt bulunamadı...\002"
          return 0
        }
  }

# http://is.gd/SVU9r1

proc throttled {id time} {
    global throttled
    if {[info exists throttled($id)]} {
      return 1
    } {
      set throttled($id) [clock seconds]
      utimer $time [list unset throttled($id)]
      return 0
    }
 } 

putlog "Ok..."


SeckiN 03 Ağustos 2014 11:10

Cevap: bot log arama
 
@[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] emeğine sağlık abi. Aynı mantık üzerinden sunucuya giriş yapan ip adreslerini log aldırsak. Arşiv tutsa binevi.

saywhat 03 Ağustos 2014 12:02

Cevap: bot log arama
 
-> [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] burada altta verdiğim kod o iş için...



*** Notice -- Client connecting on port 6667: dsd (Samata@[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]-net.57.69) \[clients\]
bir yabancı bunu istemişti.ondaki notice böyleydi...buna uyumlu yaptım...
onda unreal ve insprIRCd sunucular varmış da birbirlerine linklilermiş vs.. sürüme/versiona göre fark edebiliyor sanırım bu client connecting notice'leri...
sizde farklıysa ,ona göre düzenleriz..

bot.conf üzerinde raw-log ,keep-all-logs ve quick-logs ayarlarını 1 yapıp aktif edersenizde oper bot/lar log dosyasına işleyecektir sunucu snotice'lerini.


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

Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2025, vBulletin Solutions, Inc.
Search Engine Friendly URLs by vBSEO
Copyright ©2004 - 2025 IRCForumlari.Net Sparhawk