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/)
-   -   torstatus.tcl (https://www.ircforumlari.net/tcl-scriptler/544754-torstatustcl.html)

ulusalchat 07 Eylül 2013 06:26

Cevap: torstatus.tcl
 
centos kullanıyorum bende yani kod da kullanılan -N dogru ayrica denemek icin manuel olarak yaptigm da oluyor yani ssh konsol a baglanıp eggdrop klasörü icin de
wget -N [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]

yaptigim da dosyayin indirip üstüne yazıyor

saywhat 07 Eylül 2013 14:37

Cevap: torstatus.tcl
 
kusura bakmayın ,son cevabı yazdıktan sonra uyudum.(zaten zor duruyordum artık onu yazarken gözlerim kapanıyordu.)

doğrusu sorun çıkaracağına en son ihtimal verdiğim kısmı kodun bu kısmıydı...

çünkü : bu wget ve eggdrop tcl kod içinde "exec nasıl kullanılır" diye araştırmıştım..

yararlandığım / kullanımı referans aldığım linkide şimdi yine buldum : [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] (en alt kısımda "I tried the exec TCL command and it tells me couldn't execute "command bla": no such file or directory, but command is a valid command! So what?" başlığıyla verilmiş)

şimdi yeniden araştırma yaptığımda ,şunu görüyorum ki her kafadan ayrı ses çıkmış bu exec + wget kullanımıyla ilgili...
şöyleki :

açılan konularda bi denmiş ki exec+wget uygularken -b (background'da çalıştır) flağı ile kullanın botu etkiler vs denmiş...bknz -> [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]

birinde de denmiş ki aman ha -b flağıyla exec+wget yapma sadece direk -N kullan : [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]
........

bu arada tor export vs diye adı geçen ,tor host-ip'lerinin vs olduğu dosya linkinde yine sorun var.bulunduğu siteden- sunucusundan kaynaklı.(sanırım zaman eşleşmemesi-kayması gibi bi sorunları var...)

bu kodu ilk yazmaya başladığım günde bu sorunları oluşmuştu.site sahibi kişi Utah teknoloji bilimleri mezunu aynı zamanda tor projesininde kurucu-yapımcı-geliştiricilerinden oldukça genç (süper zeka dediğimiz tiplerden) bi delikanlı imiş...

tor project üzerinden kendisine ulaşmaya çalışmıştım o gün (daha kodu ilk halini yazdığım gündü) sunucularındaki sorunu ilettim.bir eggdrop tcl kodu üzerinde çalışıyorum bana bu sitenizin linki lazım,onarırsan iyi olur,beni oraya getirtme ...vs gibisinden)

ulaştı mı ulaşmadı mı bilmem ama bir -iki gün sonra denediğimde onarılmıştı.dosyayı çekebiliyordun....

ama şimdi denediğimde yine aynı sorun görünüyor sunucularında/yada o dosyada..

diğerinde sorun yok.

neyse birde şöyle deneyin: (aslında yukardakinden hemen hiçbir farkıda yok.olamazda çünkü exec kullanımı böyle başka yolu-yordamı yok.tek yaptığım var'içinde göstermeden yine direk komut içine yazmak linkleriki,aslında buda hiçbişey değiştirmez...çünkü bu budur başka başka çeşitleri -kullanımları olan bi komut/durum değil. o nedenlede zaten sorun* çıkarmasını en son düşüneceğim yeri burası idi...)

Kod:

;# IP-host eşleşmesinde yapılacak işlemde kullanılacak kullanıcıyı uzaklaştırma sebebiniz:
set sebep "IP/hostunuzda Tor proxy tespit edildi... bizi tercih ettiğiniz için teşekkür ederiz... selametle..."

;# yakalanan tor IP-hostları için yapılacak işlem:
set method "gzline"

;# yapılan işlem için gereken uzaklaştırma süresi:
set sure "30m"

;# anons yaptırılacak oda olacak mı ( 1 = evet - 0 = hayır)
set anons "1"

;# anons kanalı olacaksa adı ne olacak:
set anonsknl "#anons"

;# yakalanan her tor için bu sayıdan itibaren saydırılacak:
set torno "0"

;############burdan sonrasını değişmemelisiniz.####################################################################

;# tor IP'lerin olduğu birinci dosya:
set csvfile1 "Tor_ip_list_ALL.csv"

;# tor IP-host ve diğer tüm bilgilerinin olduğu dosya:
set csvfile2 "Tor_query_EXPORT.csv"

;##########################ayarlar bitti###########################################################################

bind raw * notice notc:serv
bind time - "30 *" csv:wget

proc notc:serv {from keyword arg} {
  if {![string match -nocase "*client connecting*" $arg] || [string match -nocase "*!*@*" $from]} { return 0;}
    set ip [string range [lindex [split [lindex [split $arg] 9] @] 1] 0 end-1]
    set stamp "[clock format [expr {3600 + [clock seconds]}] -format "Tarih: %d/%m/%Y - Saat: %H:%M:%S - %z"]"
    set ::tip $ip ;set ::tstamp $stamp
  if {[regexp {^(?:(?:[01]?\d?\d|2[04]\d|25[0-5])(\.|$)){4}$} $ip]} {
    tor:ip:file
    } else {
    tor:hosts:file tor
    }
  return 0
}

proc tor:ip:file {} {
    set ip $::tip ;set stamp $::tstamp
    set fp [open $::csvfile1 "r"]
    set data [read -nonewline $fp]
      close $fp
    set lines [split $data "\n"]
  if {[lsearch -nocase -index 0 $lines $ip] == -1} {
    putcmdlog "$ip ile ilgili $::csvfile1 dosyasında eşleşme bulunmadı. $stamp"
    tor:hosts:ip:file tor
    } else {
      incr ::torno
    putquick "$::method *@[lindex $lines [lsearch -nocase -index 0 $lines $ip] 0] $::sure :$::sebep:[concat $::torno - $stamp]"
  if {$::anons != "0"} {
    puthelp "privmsg $::anonsknl :$ip $::sure uzaklaştırıldı. sebep: :$::sebep:[concat $::torno - $stamp]"
      return 0
      }
  }
}
 
proc tor:hosts:ip:file {tor} {
    set ip $::tip ;set stamp $::tstamp
    set torip [lindex [split $tor ,] 4]
    set fp [open $::csvfile2 "r"]
    set data [read -nonewline $fp]
      close $fp
    foreach line [split $data "\n"] {
  if {$ip != $torip} {
    putcmdlog "$ip ile ilgili $::csvfile2 dosyasında eşleşme bulunmadı. $stamp"
      return 0
    } else {
      incr ::torno
      putquick "$::method *@$ip $::sure :$::sebep:[concat $::torno - $stamp]"
  if {$::anons != "0"} {
    puthelp "privmsg $::anonsknl :$ip $::sure uzaklaştırıldı. sebep: :$::sebep:[concat $::torno - $stamp]"
      return 0
      }
    }
  }
}

proc tor:hosts:file {tor} {
    set ip $::tip ;set stamp $::tstamp
    set torhost [lindex [split $tor ,] 5]
    set fp [open $::csvfile2 "r"]
    set data [read -nonewline $fp]
      close $fp
    foreach line [split $data "\n"] {
  if {$ip != $torhost} {
    putcmdlog "$ip ile ilgili $::csvfile2 dosyasında eşleşme bulunmadı. $stamp"
      return 0
    } else {
      incr ::torno
    putquick "$::method *@$ip $::sure :$::sebep:[concat $::torno - $stamp]"
  if {$::anons != "0"} {
    puthelp "privmsg $::anonsknl :$ip $::sure uzaklaştırıldı. sebep: :$::sebep:[concat $::torno - $stamp]"
      return 0
      }
    }
  }
}

proc csv:wget {minute hour day month year} {
    set torips "wget -N http://torstatus.blutmagie.de/ip_list_all.php/Tor_ip_list_ALL.csv DEBUG"
    set torhosts "wget -N http://torstatus.blutmagie.de/query_export.php/Tor_query_EXPORT.csv DEBUG"
    eval exec $torips
    utimer 1 [list eval exec $torhosts]
  }
 
putlog "ok...."

ayrıca bot üzerindende deneyebilirsiniz. direk shell konsol'undan hiçbir farkı yoktur.
ama öncelikle .tcl .set komutlarını kullanabilmeyi aktif etmelisiniz..

botun .conf'unda

Kod:

bind dcc n tcl *dcc:tcl
 bind dcc n set *dcc:set

satırlarını ekleyip (ki bunlar zaten vardır ancak unbind halindedir..yani pasif/etkisiz haldedirler unbindleri bind olarak değişebilir yada direk yukardaki iki satırı .conf'un herhangi bir yerine ekleyip botu .restart ederseniz aktif hale gelir.

sonrası bota bağlanıp :
.tcl exec wget -N ...link
komutuyla da deneyebilirsiniz.
tüm shell konsol üzerinde kullandığınız komutları bu şekilde .tcl exec komut yada .tcl exec -- komut şeklinde shell komutlarını işleyebilirsiniz.
tcl kodları içinde bu şekilde shell konsolunda çalışmak-işlem yapmak mümkün.ki bu komutlar iyi-doğru amaçlıda olabilir tam tersi amaçlada olabilir.
(bilhassa singapurluların yaptığı yada düzenlediği özellikle uzun eggdrop tcl kodları içinde kullanmayı denemeden evvel "exec" komutunu aratın.
sisteminize sızmak yada botunuzu ele geçirmek vs gibi işler için kod satırları araya ekleyebiliyorlar.ki binlerce satırlık uzun tcl kodları içinde bir-iki satırlık komut dikkat çekmiyor çoğunlukla..
bilhassa singapurlularda böyle bir olay var. marifetten sayıyorlar böyle fırlamalıkları..(daha evvel egghelp forum'unda bir singapurlunun tcl arşivinde paylaştığı kod içinde bu yakalanıp ifşa edilmişti)

saywhat 08 Eylül 2013 09:48

Cevap: torstatus.tcl
 
exec wget başka türlü ,daha garantili/sağlam nasıl kullanabiliriz diye düşünüp-taşınıp. (arada maç-film seyredip-uyuyup ..)
bu prosedürü ikiye ayırmanın ,exec'leride catch { } statement içine yatırmanın,
prosedür ikiye bölününce ikinci wget için kullandığımız utimer'dan da feragat edilip,bind time'ları ikiye çıkararak her yarım saatte bir dosya olacak şekilde düzenlemenin.....daha da sağlıklı,daha da garantili bir yol olabileceği kanısına vardım...

o nedenle (inşallah son) bir kez daha "güncelleme"
->> [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]

not:
ayrı bir küçük script halinde kendi botumun üzerinde denemek mümkün oldu ...
Kod:

set one "http://torstatus.blutmagie.de/ip_list_all.php/Tor_ip_list_ALL.csv"

set two "http://torstatus.blutmagie.de/query_export.php/Tor_query_EXPORT.csv"

bind time - "30 *" first:wget
bind time - "00 *" second:wget

proc first:wget {minute hour day month year} {
    set first "wget -N $::one DEBUG"
    catch {eval exec $first}
  }
 
proc second:wget {minute hour day month year} {
    set second "wget -N $::two DEBUG"
    catch {eval exec $second}
  }

bu şekilde..denedim. sorun yok ..tu ....

saatler 00 yani saat başında bir dosya ,saatler yarım/buçuk olduğunda diğer ikinci çekilecek.her yarım saatte bi tanesi..

bu arada tor ip/host dosyasındaki sorun giderilmiş yine çekebiliyor dosyayı tam olarak.

ulusalchat 08 Eylül 2013 21:34

Cevap: torstatus.tcl
 
hemen deniyorum

--IRCForumlari.NET ; Flood Engellendi -->-> Yeni yazılan mesaj 21:34 -->-> Daha önceki mesaj 21:22 --

malesef bucukda cekecegi dosyayi cekmedi saat basini bekleyip onun dasonucunu yazacam

bu arada bu cekilecek olan dosyalari neden cronla cektirmiyoruz

edit : malesef saat bası olan da cekmedi

MesqeN 08 Eylül 2013 23:12

Cevap: torstatus.tcl
 
hocam tclleriniz güzel hata Mükemel ama şöyle bir tcl ye ihtiyaç var bir nevi Kulanmıcak sunucu tanımıyorum. :)

dns Sorgulama Domain kayitli veyahut kayıtsızdır + Bilgileri Kayıt tarihi kayıt eden kişi
Domain düşme süresi gibi bilgileri içeren bir tcL ye ihtiyaç var ilgilenirse güzel bir işe imza atarsın

Sadece Bir Fikir. ilgine teşekkür ederim.

saywhat 09 Eylül 2013 05:47

Cevap: torstatus.tcl
 
@[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] botunuz "beni .restart et" diye yalvarıyor :p
bind time diğer bind türlerine pek benzemiyor. sadece rehash hafızadan temizlemek için yeterli gelmiyor.

sabah erken saatlerde yükleyip deneyip kaldırdığım yukardaki küçük kod,
.conf'dan silip .sadece rehash ettiğim için gecenin bu saatinde hala dosyaları çekip durmaya devam ediyor ki gün içinde 3 yada 4 kez shell'e bağlanıp dosyaları siliyorum o yine indirmeye devam ediyor ..ben .restart edene kadar da indirmeye devam edecektir. çünkü hala bind time'lar hafızasında....
[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] (.restart etmek istemiyorum bir süre daha ..neden : çünkü bu botum yabancıların olduğu bazı kanallarda da duruyor ve geçen gün 3-4 kez .restart ettim..milleti rahatsız etmek istemiyorum,sürekli gir-çık olmasın diye bekliyorum belki yarın yaparım..)

@[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] domain tcl zaten yok muydu ki forumda? ben CLubber yapmıştı diye hatırlıyorum...

demin nette şöyle bir baktım söylediğiniz işleri yapan sitelere ... yerli olanları genelde hosting firmaları ki onlarda "ticaret" amaçlı koymuşlar öyle çok ayrıntı vermekten ziyade domain kullanımda mı değil mi ,yani satabiliriz-satamayız sorgusu yapıyorlar gördüğüm kadarıyla..

yabancı ve birkaç böyle ayrıntılı domain whois sorgu yapan site var baktım ancak onlarda javascript üzerinden işletiyorlar ki bunun anlamı tcl koduyla veri çekebilmek ancak JSON ile mümkün ki hem bu tcllib paketine bağlı komutları / kullanımını -> [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] bilmek hemde dict olayına hakim olmak demek ki, ben şimdiye kadar json konusunun kapağını dahi açmadım.dict ile de lotto tcl için ilgilenmiştim aylar evvel o zamandan beri onada hiç uğramadım..

..yani iki seçenek var ya javascript çalıştırmadan bu işleri yapan bi yer bulunacak,yada json + dict konuları hatim edilecek.

dns çözümlemekse çok kolay iş exec ile kolayca tek komutla halledilir :
[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]
[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] gibi...




bu dns çözümlemek için az önce yazıverip -denedim :-> [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]

kullanım şekli : .dns IP yada host şeklinde ,
ben herkesin kullanabileceği şekilde flaglarda sınırlama koymadım,
siz sınırlamak isterseniz bind pub tan sonraki -|- değişebilirsiniz.
global flag|kanal flagı... şeklindedir.
mesala mn|oa bot sahibi ve masterı|kanaldaki op ve oto op olanlar kullanır ..gibi...


not: direk shell üstünden yürütülen komut çıktısını kanala yansıttığı için ,sistem ingilizceyse geri dönüşüde ingilizce oluyor..du..
bende Türkçe'leştirdim.yani sorgu cevabı size Türkçe yansıtılacak şekilde kod içinde ayarladım.(en azından gördüğüm yerleri çevirmeye çalıştım.)

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



Kod:

bind pub -|- .dns dns:captcha

 proc dns:captcha {nick uhost hand chan text} {
  set a [lindex [split $text] 0]
  set b "host $a"
  catch {eval exec $b} c
  set output $c
  if {$output == ""} { puthelp "privmsg $chan : sonuç yok.."
  return 0
  } else {
  set i 0
  foreach line [split $output "\n"] {
    putserv "privmsg $chan :[string map -nocase {"has address" "adresi" "is handled by" "tarafından sunuluyor" "domain name pointer" "etki alanı sahibi" "has IPv6 address" "var olan IPv6 adresleri" "is an alias for" "için takma adıdır"} [join $line]]"
    incr i
    }
  }
}

putlog "ok....""





Domain whois için de:

belki 10 tane siteye baktım,kaynak kodlarını denedim ....
bi burayı buldum uygun şöyle basit bişey yapıverdim..
-->> [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]

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

Kod:

package require http

bind pub -|- .d domain:whois

proc domain:whois {nick uhost hand chan text} {
  set q [lindex [split $text] 0]
 
::http::config -useragent "UserAgent"
set url [::http::geturl "
Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir.
15000]
set data [::http::data $url]
::http::cleanup $url
    regexp -- {>Hostname: <a href=".+">(.*?)</a></div>} $data "" adr
    regexp -- {>Google Pagerank: <strong>(.*?)</strong></div>} $data "" nmbr
    regexp -- {>Registrar</div><div id="reginfo_v">(.*?)<} $data "" regi
    regexp -- {>Whois Server</div><div id="reginfo_v">(.*?)<} $data "" wserv
    regexp -- {>Nameservers</div><div id="reginfo_v">(.*?)<} $data "" nserv
    regexp -- {>Status</div><div id="reginfo_v">(.*?)<} $data "" stts
    regexp -- {>Created</div><div id="reginfo_v">(.*?)<} $data "" crt
    regexp -- {>Expires</div><div id="reginfo_v">(.*?)<} $data "" eprs
    regexp -- {>Updated</div><div id="reginfo_v">(.*?)<} $data "" upda
    puthelp "privmsg $chan :$q = IP: $adr | Google Pagerank: $nmbr | kaydı: $regi | whois sunucusu: $wserv | alan-adı sunucusu: $nserv | durumu: $stts | oluşturulma tarihi: $crt | son bulma tarihi: $eprs | güncelleme zamanı: $upda"
    return 0
}


ulusalchat 09 Eylül 2013 17:44

Cevap: torstatus.tcl
 
merhaba yeniden
ben tcl yi her güncelledigim de botu zaten restart yani kil pidno ile kapatip yeniden baslatiyordum ama ne hikmet se son verdiginiz tcl den sonra cekmeye basladi dosyalari
ancak simdi söyle bir konu var user girislerin de
Kod:

-NOTICE- [error] Invalid mask.
seklinde hata veriyor
bir de yine her user girisin de
Kod:

30m uzaklastirildi. sebep: :IP/hostunuzda Tor Proxy tespit edildi... Ban Yediniz Afiyet Olsun:1 - Tarih: 09/09/2013 - Saat: 18:35:47 - +0300
seklinde anons kanalına uyari atiyor
anons kanalına sadece ban islemi yapınca atmasi gerekmez mi

saywhat 09 Eylül 2013 18:21

Cevap: torstatus.tcl
 
invalid mask ..gibi bi hata ,olsa olsa tcl'de escape edilmesi gereken karakterlerle karşılaşmışsa atabilir diye düşünüyorum..

verdiğiniz snotice örneklerine dayanarak :

bu kodun en son halini kullanıyorsanız:

Kod:

set arg [string map {\[ "" \] ""} [join $arg]]
bu satırı :
Kod:

set ip [string range [lindex [split [lindex [split $arg] 9] @] 1] 0 end-1]
satırının hemen üstüne yerleştirin.
[ ] tcl'de komut belirten özel karakterlerden ,sizin notice örneklerinizde bunlardan vardı.benim tahminim bunlar nedeniyle invalid* geçersiz-tanımlanmayan mask gibi bir hataya neden olmuş olabilir.

her defasında anons etme durumuysa eşyanın tabiiatına aykırı" denebilecek bi durum. şöyleki :
Kod:

if {$::anons != "0"} {
diyerek koşula bağlayarak ,set anons ayarı 0 değilse yani 1 ise anons'u yap demişiz.ve bunu sadece işlem yapıldığı durumlar içersinde belirtmişiz.. o nedenle buna anlam veremiyorum...

ulusalchat 09 Eylül 2013 20:09

Cevap: torstatus.tcl
 
deneyecem bakalım olmadi anons kanalını 0 yaparim aslolan listedeki iplere islem yapmasi

--IRCForumlari.NET ; Flood Engellendi -->-> Yeni yazılan mesaj 20:09 -->-> Daha önceki mesaj 20:03 --

malesef yine aynı
Kod:

[20:07] -NOTICE- *** Notice -- Client connecting on port 6667: sss (
Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir.
.xx) [clients]
[20:07] sss (
Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir.
) joined #Sohbet.
[20:07] -NOTICE- [error] Invalid mask.


saywhat 09 Eylül 2013 20:20

Cevap: torstatus.tcl
 
sizin şu notice'deki [clients] botun aklını alıyor...
->> [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] birde böyle deneyin ...olmadı string map'leri geçip regsub'lara geliceğiz artıkın...


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

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