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)

saywhat 28 Ağustos 2013 13:59

torstatus.tcl
 
aslında dün sabaha karşı yaptığım bir tcl..
şöyle bir sorun var ki deneyemiyorum.:Ğ

gönüllü deneyip bana sorunu iletecek biri/leri lazım ki bende ona göre düzenleyebileyim..

kod hakkında :
denemeye niyet edeceklerin bilmesi-kod içinde yapması gereken işler/değişimler söz konusu olabilir.bu nedenle deneyecekler altta anlatacaklarıma dikkat etmeliler...

daha önce yaptığım çek-gönder tcl adını verdiğim kod denemeleri sırasında gördüğüm şu ki Unreal versionlarına göre kullanıcı girişindeki alınan sNoticeler farklılık gösteriyormuş..

o kodu deneyen kişi sürüm yükselttiğinde artık kullanıcı nickini yakalamaz olmuştu.sonra baktık ki nick bilgisi sırası değişmiş ve artık koddaki sıraya denk gelmiyor.

o nedenle : ben bu kod içinde userhost kısmını yakalayacak kod satırında (identi@hostu/ip-si) yakalayacak/denk gelecek sırayı "9" olarak belirttim şurda -> [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] bahsettiğim duruma dayanarak...

siz oper/admin yetkisindeki kişiler olarak bu snotice'leri görüyorsunuz zaten ,kendi sunucunuzdaki userhost'a denk gelen hangi sıraysa/farklıysa bunu bu kodu denerken o "9"'u 10 yada 8 ile denk gelen sırayla değişmelisiniz.


kod içinde iki farklı tor listesi alması (saatte bir yenilenmiş listeyi alacak şekilde yaptım saatler her ..:30'u bulduğunda.. 10:30'da - 11:30'da ... gibi)

bu listelerden birinde çıplak tor IP'leri var yani 192.16.15.14 vs gibi....diğerindeyse tor hostları var.. 145.tor.exit-server vs gibi..
bu iki farklı kritere göre kod içinde iki farklı check etme durumu söz konusu.
şöyleki eğer giren kullanıcının yakaladığımız ip/hostu sayılardan oluşuyor ise şu listeye bakmalısın yok eğer sayı ve harflerden oluşuyorsa o halde şu listede aramalısın..tek liste yerine böyle olmasıda botun kaynaklarını kullanmakta bir tasarruf +hız unsuru olacaktır..

şöyleki her bir listede 5-6000 adres oluyor.tek dosyada toplanmış olsaydı her giriş için 10-12bin'lik listede aratmış olacaktık şimdi bunun yarısı kadar daha kısa listede bakacaktır ..

listeyi almak için http socket vs kullanmadım .bota shell komutu verdirerek liste dosyalarını çektirdim ki benim kendi şahsi görüşüm bu çok daha hızla gerçekleşebilecek bi işlem ayrıca botun kaynakları kullanılmadan yormadan yapılmış oluyor.
diğer bir deyişle sizin shell'iniz üstünde wget komutu kullanmanızla aynı şekilde alıyor.bağlantı kurup dosyayı çeken aslında botunuz değil direk olarak shell'iniz.

burda kodun altındaki prosedürde bota wget uygulattırıyorum shell üstünde yanlız wget ile ilgili:
wget -r link.. bu şekilde eski aynı isimdeki dosyanın üstüne yenisi yazdırılmış oluyor. ancak sistem redhat tabanlı ise yani CentOs vs gibi o zaman bu wget komutunu wget -N link... şeklinde değişmelisiniz. aynı iş için...

bu konularda benim yapabileceğim bişey yok bu değişiklikleri siz yapmalısınız çünkü herkesin durumu kullandığı sunucu/shell farklı farklı...

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

kodu deneyip burda varsa sorun/ları bildirenlere şimdiden teşekkür ederim...

saywhat 29 Ağustos 2013 14:38

Cevap: torstatus.tcl
 
kod içinde IP-host eşleşmesi yakalamakta kullandığım regex'ler ilginç bir şekilde
eggdrop tcl için işlemiyor...

ilginç ,şöyleki bunları tcl basekit üzerinde deneyip,işe yaradığını görüp öyle kullanmıştım oysaki...

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

safe Tcl için doğru olan eggdrop tcl için pek te doğru olmuyormuş dimek...

o nedenle kodu yenisini/çalışanını yazıncaya kadar kaldırdım.

planım iki ayrı kod yapmak. birini işleyip işlemediğini görmek için kanal koruması gibi yapıcam ki bunu kendi botumda deneyebilirim böylece..

diğeri asıl burda paylaşacağım kod,diğer deneyip çalıştığını gördüğüm kodu sunucu girişlerini tarayacak şekilde çeviricem...

şimdi sabah daha ayılmadım henüz.akşamları zihnim daha açık oluyor ..inşallah başka bi durum oluşmazsa ,bu akşama bitirip postalarım...

bilgilerinize...

saywhat 30 Ağustos 2013 06:25

Cevap: torstatus.tcl
 
Sunucu girişleri için :-> [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]

kanal girişleri için :-> [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]

saywhat 30 Ağustos 2013 08:47

Cevap: torstatus.tcl
 
buda biraz daha farklı yazılmış hali :-> [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]

bunda çıplak IP için iki dosyada birden tarattırıyorum...hostların olduğu dosya ip'leri hostları portları ve diğer tüm bilgileri içeriyor.o nedenle örnek : 123.54.65.413 gibi bi ip ile giriş
yapmışsa önce çıplak iplerin listelendiği dosyada ordan geçincede diğer host+ip vs tüm bilgilerin olduğu dosya içinde arattırılıyor... yukardakilerle farkı bu.. çalışma mantığı anlamında...

bunu yeni bitirdim..ondan geç kaldı iki ayrı post oldu...arada markete vs gidip geldim film izledim. (hala izliyorum yarıda durdurup aklıma geldiği için birde bu şekilde yazıp buraya atıyorum)

saywhat 30 Ağustos 2013 17:36

Cevap: torstatus.tcl
 
denemeye niyet edenler,kodu hemen içine atınca çalışacağını beklememeliler...dosyaları,
csvfile1 "Tor_ip_list_ALL.csv" csvfile2 "Tor_query_EXPORT.csv" bu iki dosya yüklenir yüklenmez oluşturulmuyor.saati gelince indirip kendi oluşturuyor.
o nedenle hemen işe koyulmasını istiyorsanız :
Kod:

http://torstatus.blutmagie.de/ip_list_all.php/Tor_ip_list_ALL.csv 
http://torstatus.blutmagie.de/query_export.php/Tor_query_EXPORT.csv

bu iki linkten iki dosyayıda kendiniz çekip botun ana dizinine atmalısınız aksi halde :
bind time - "30 *" prosedür-adı

bu satırda zaman olarak ne belirtilmişse o zamanda istenen işlemi yapacaktır :

"30 *" anlamı saatler her :30 buçuğu çaldığında demek. yani dakika saat olarak sıralanıyor. * işaretinin "herhangi bir" gibi bi anlamı var.
"30 12" yapılsa hergün saatler 12:30'u vurduğunda olur. "* *" yapılırsa her dakikada bi olur.yada sadece tek bir "*" de aynı işi görür.her dakika olur.
"?0 *" olursa her 10 dakikada bir olur. bind time'ın prosedürüne bakarsanız minute hour day month year olarak sıralanmış.yani dakika saat gün ay yıl.. o nedenlede,
bind time flag "dakika saat gün ay yıl" prosedür-adı şeklinde oluşturuluyor..


o nedenle ya elle indirip ftp ile botun ana dizinine atmalı yada shell üzerinde botun ana dizinine girip orda wget ile bu linklerdeki dosyaları oraya çekmelisiniz. sonra .rehash/restart edip botun hemen o dosyaları görmesini sağlarsanız bot saatin buçuk olmasını beklemeden
gördüğü/bulduğu dosyalarla işlem yapmaya çalışacaktır.

saywhat 02 Eylül 2013 01:21

Cevap: torstatus.tcl
 
güncelleme :-> [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]

saywhat 02 Eylül 2013 11:44

Cevap: torstatus.tcl
 
yukardaki güncellemede,yeni kodda bi hata,mantık hatası yapmışım.
proc toripfile prosedüründe 46. satırdaki return 0 ile ,49. satırdaki torhostsipfile tor
satırı yer değişmeli...

nedeni bu prosedürde sadece IP adreslerinin olduğu listeye bakılıyor.bulunmadığında diğer torhostsfile prosedürü çağrılıyor ki,ikinci dosyadakilere de baksın eşleşen var mı diye..

yani mantıken öyle olmalıydı..oysa dün verdiğim haliyle yakalandıktan sonra diğer proc çağrılmış oluyor (ki bu saçma..yakalanmışsa yakalanmıştır.. atıyorsun gidiyor orda zaten.bi daha başka proc çağırıpda diğer dosyayada bak demek mantıksız).yakalanmadığındaysa tamam buraya kadarmış napalım denilmiş gibi olmuş.tam tersi olmalıydı... (aslında plan bir ana prosedür üzerinden diğer child prosedürleri çağırma, bunları birbirine bağlama ,düşüncesinin/planın nedeni de buydu..ama bu iki satırı ters yerleştirerek kafamdaki bu planı bozmuş olmuşum.)

önce bi-iki gün kafamda nasıl yapayım diye planlayıp sonra dün bi oturuşta yazıverdim.bu gözümden kaçmış. bu iki satır yer değişmeli... yani -> [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] olmalı...

saywhat 05 Eylül 2013 15:45

Cevap: torstatus.tcl
 
güncellendi -> [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]

isteğe bağlı bir kanalda anons etme eklendi.
yapılan işlemi saydırmada gözden kaçan durum onarıldı...

ulusalchat 07 Eylül 2013 04:39

Cevap: torstatus.tcl
 
merhaba calısmalarinizi takip ediyorum ve gercekden diger emek veren arkadaslar kadar taktir ediyorum ve hemen soruma geciyorum
demissiniz ki
Alıntı:

kod hakkında :
denemeye niyet edeceklerin bilmesi-kod içinde yapması gereken işler/değişimler söz konusu olabilir.bu nedenle deneyecekler altta anlatacaklarıma dikkat etmeliler...

daha önce yaptığım çek-gönder tcl adını verdiğim kod denemeleri sırasında gördüğüm şu ki Unreal versionlarına göre kullanıcı girişindeki alınan sNoticeler farklılık gösteriyormuş..

o kodu deneyen kişi sürüm yükselttiğinde artık kullanıcı nickini yakalamaz olmuştu.sonra baktık ki nick bilgisi sırası değişmiş ve artık koddaki sıraya denk gelmiyor.

o nedenle : ben bu kod içinde userhost kısmını yakalayacak kod satırında (identi@hostu/ip-si) yakalayacak/denk gelecek sırayı "9" olarak belirttim şurda -> [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] bahsettiğim duruma dayanarak...

siz oper/admin yetkisindeki kişiler olarak bu snotice'leri görüyorsunuz zaten ,kendi sunucunuzdaki userhost'a denk gelen hangi sıraysa/farklıysa bunu bu kodu denerken o "9"'u 10 yada 8 ile denk gelen sırayla değişmelisiniz.
benim ki bu sekil
Kod:

-NOTICE- *** Notice -- Client connecting on port 6667: misafir (
Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir.
.xxx.xx)
-NOTICE- *** Notice -- Client connecting on port 6667: misafir (
Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir.
-6-8b.dynamic.ziggo.nl) [clients]
 [clients]

Konuda anlattiginiza göre sayarsak benım ki 12 ye geliyor userhost
Bu sekil yapmam lazım dogrumu :
Kod:

set ip [string range [lindex [split [lindex [split $arg] 12] @] 1] 0 end-1]
birde sanki Tor_ip_list_ALL.csv ve Tor_query_EXPORT.csv dosyalari güncellenmiyor cünki benım attigim tarihde ki gibi duruyor yani dosya degistirme tarihine bakıyorum güncelleme görünmüyor

saywhat 07 Eylül 2013 05:51

Cevap: torstatus.tcl
 
ip/host yakalama konusunda ,verdiğiniz client connecting'li notice'ler için kod içersinde hiçbir değişiklik yapmanıza gerek yoktur.

çünkü halihazırda :
[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]

yakalar....

overwrite : diğer değişle "üzerine yazdırma" hakkındaysa ,kullandığınız OS distro'ya göre farklılık gösteriyor "wget" -flagları..

bu nedenle kendi botun üzerinde işlediği distro'ya uygun "wget" -flağını bulmalısınız.
("man -k wget" yardımcı olabilir) ben kodu yazarken biraz gugıl'da araştırmıştım.bir yabancı forumda debian tabanlıysa wget -r ... redhat tabanlıysa "wget -N .." şeklinde kullanılabileceği yazıyordu.

Kod:

set one "wget -N $::toripurl DEBUG" 
  set two "wget -N $::torhosturl DEBUG"

koddaki bu iki satır üzerinden sizin distro'ya uyan wget flağı neyse (overwrite / üzerine yazdırma için) onla değişmeniz gerekiyor ..sanırım -N flağı sizin shell'e uygun düşmemiş.

siz yine kendiniz de bir araştırın...

saatler her buçuğu vurduğunda bu wget'ler işler.o anda bota bağlı olursanız ,partyline'da izleyebilirsiniz. bu indirme/üzerine yazdırma işlemini ve nasıl sonuçlandığını ..çünkü debug ederek bunun izlenebilmesine de olanak sağlamış olduk..

direk wget uygulandığında üzerine yazmıyor..(bunu da açıklamak gerekir) tor_ip.csv1 ... csv2 gibi her indirmede farklı dosya oluşturup çoğaltıyor..bu nedenle wget komutunu overwrite/üzerine yazdırma wget -flağıyla birlikte kullanmak gerekiyor ki,eskisinin yerine yenisi gelsin...

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

ulusalchat 09 Eylül 2013 20:41

Cevap: torstatus.tcl
 
hemen deniyorum

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

malesef yine aynı
Kod:

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


saywhat 09 Eylül 2013 20:52

Cevap: torstatus.tcl
 
siz bu noticeleri nerden alıyorsunuz ? bot'a bağlanıp gördükleriniz mi ? yoksa kendi mircinizden gördüğünüz müdür bunlar?

sormak zorundayım çünkü demin verdiğim kodla bot [clients] göremez ..
onu ortadan kaldıracak şekilde -yok sayıcak şekilde düzenledik çünkü...

kodu etkisiz hale getirip birde öyle bakarmısınız..hala aynı invalid mask" atıyor mu diye..

örnek:

[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]
resimde de göreceğiniz gibi son verdiğim kod [clients] yazısını ortadan yok eder... bot'tan bunu artık göremezsiniz.

yada size yukarda ilk verdiğim kod satırı [ ] bracketleri yok eder..hiçe sayar...

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

ulusalchat 09 Eylül 2013 21:07

Cevap: torstatus.tcl
 
terminal konsoldan görüyorum bot u eggdrop -mn botadi.conf seklinde calistirdigim da online olarak görebiliyorum verdigi hatalari yada yaptigi islemleri

MesqeN 09 Eylül 2013 21:29

Cevap: torstatus.tcl
 
Alıntı:

saywhat Nickli Üyeden Alıntı (Mesaj 1041338122)
@[Ü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
}


Adamın dibisin. geliştirilebilir güzel işe yarar bişi

Fakat ßazen şöyle bir hata veriyor.

PHP- Kodu:

[21:26Tcl error [domain:whois]: can't read "regi": no such variable
[21:26] Tcl error [domain:whois]: can'
t read "regi"no such variable 

gibi

saywhat 09 Eylül 2013 21:37

Cevap: torstatus.tcl
 
pekala ,
şimdi size bir deneme için kod parçası vericem..botun sahibi sizseniz.ve sizi bot tanıyabiliyorsa. (bunu bota bağlanıp .whois <handle'iniz> <-- bota bağlanırken kullandığınız login-name...görebilirsiniz. yada .channel #kanal-adı (kanaldaki tüm nickleri listeler.botta ekli user flag sahipleri ve kanal'da yetkileri olanlarda görünür.sizin nickiniz yanında "n" sahip flağıyla görünürsünüz.sizin nick-host-handle iniz yanında "n" flagı diğer flaglarla birlikte görünüyorsa siz permanent owner -sınız "mutlak sahip-tam erişimi olan kişi*") bu alttaki kod parçasıyla bot size sunucuya giren kişinin yakaladığı host/IP kısmını özelinize atacak...

invalid mask ise gerçekten bu torstatus kodunda yakaladığı sizin özelinize gelecek olanlarda invalid olmalıdır.

Kod:

bind raw * notice own:not

proc own:not {from keyword arg} {
    set arg [string map -nocase {"\[clients\]" ""} [join $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]
    puthelp "privmsg $::owner :$ip"
    return 0
}

ayrıca invalid mask hatası gelir gelmez .bota bağlıyken .tcl .set komutlarını aktif etmişseniz : .tcl set ::errorInfo komutu verin hata mesajı attıran kod parçasını sorun hakkında daha ayrıntılı bilgi atar.yada [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] bunu kullanın aynı iş için...



@[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] onu karşılığı olmayan yada hatalı sorgulamalarda atacaktır. doğaldır.. nedenide kod içinde her olasılığa göre kod yazmamış olmamızdandır.
bot kod içinde tanımlanmamış bir durumla karşılaştığında bunu atar."tanımlanmamış değişken" gibisinden..bu kod'da hata olduğundan ziyade kodun olabilecek en kısa -en kestirme yolla hazırlanmasından...

bu arada bi başka site daha bulup yapmıştım -> [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] sabah erken saatlerde...bunuda deneyebilirsiniz. artık hangisi hoşunuza giderse...

saywhat 09 Eylül 2013 23:47

Cevap: torstatus.tcl
 
hata sunucu girişindeki aldığı notice'lerdeki özel durumdan kaynaklı değilse,başka kodun hangi kısmı invalid mask gibi bi hata attırmasına neden olabilir?
(::errorInfo komutu bunun direk cevabını verebilir.. nereye bakmamız gerektiğini...)

bu elde olmadan/deneme şansıda elde olmadan (ki bu gidişle en sonunda kendim sunucu kurucam galiba bu kodu denemek için....üşenmesem yapacam artık...)

geriye bana düşen yine ,mantık yürütmek... işlem yaptırılan satırlara bak diyor içgüdülerimde... onlara baktığımda da gözüme çarpan ,lsearch ... acaba mask'a denk mi düşmüyor kullandığımız? deneyemediğimiz üçün bilemiyoruz...

öleyse ne yapabiliriz. değişelim madem orayıda diğer prosedürlerdekiyle aynı yapalım..dedik... yani direk $ip kullandık işlemde...!search'lü komut yerine...-> [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...][Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]

ulusalchat 10 Eylül 2013 01:10

Cevap: torstatus.tcl
 
[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] özel olarak görüsebilirmiyiz

Sephiroth 31 Ekim 2013 14:14

Cevap: torstatus.tcl
 
[/COLOR][14:12] <K9> [14:11:18] -NOTICE- *** Notice -- Client connecting on port 6667: test (.@[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...].174.57.203) [clients]
[14:12] <K9> [14:11:18] -NOTICE- Error: no user@host specified

gibi hata alıyorum..

set arg [string map {\[ "" \] ""} [join $arg]]
set ip [string range [lindex [split [lindex [split $arg] 9] @] 1] 0 end-1]
tcl bu sekilde ayarlı

sunucu girişlerim :[14:12] -irc.chatwork.net- *** Notice -- Client connecting on port 6667: test (.@[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...].174.57.203) [clients]

saywhat 31 Ekim 2013 17:40

Cevap: torstatus.tcl
 
[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]
Kod:

set ip [string range [lindex [split [lindex [split $arg] 10] @] 1] 0 end-1]
olarak değişin.

Sephiroth 01 Kasım 2013 13:31

Cevap: torstatus.tcl
 
[13:27] <K9> [13:25:55] -NOTICE- *** Notice -- Client connecting on port 6667: test (admin@[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...].174.57.203) [clients]
[13:27] <K9> [13:25:56] Tcl error [notc:serv]: bad option "-nocase": must be -all, -ascii, -decreasing, -dictionary, -exact, -glob, -increasing, -inline, -integer, -not, -real, -regexp, -sorted, or -start


[13:31] <K9> [13:30:01] Tcl error [csv:wget]: --2013-11-01 13:30:00-- [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]
[13:31] <K9> Resolving torstatus.blutmagie.de... 192.251.226.204, 2a02:3010:100:1::1:2483
[13:31] <K9> Connecting to torstatus.blutmagie.de|192.251.226.204|:80... connected.
[13:31] <K9> HTTP request sent, awaiting response... 200 OK
[13:31] <K9> Length: unspecified [application/force-download]
[13:31] <K9> Last-modified header missing -- time-stamps turned off.
[13:31] <K9> --2013-11
Değiştirdikten sorada böle bir hata alıyorum.. kusura bakma senide rahatsız ediyorum..

saywhat 01 Kasım 2013 17:36

Cevap: torstatus.tcl
 
buradaki kopya mı -> [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] kullandığınız..en son burada bırakmıştım bu kodu...
sizdeki sunucu girişlerinde alınan Notice'de kullanıcının hostu 11. sıraya denk geliyor ki buda tcl'de 0'dan başlandığı için saymaya 10'a denk geliyor.

"Tcl error [notc:serv]: bad option "-nocase": must be -all, -ascii, -decreasing, -dictionary, -exact, -glob, -increasing, -inline, -integer, -not, -real, -regexp, -sorted, or -start "

bu hata enteresan daha evvel deneyenler bildirmemişti böyle birşeyi.
kopyala-yapıştırdan/kullandığınız editörün tcl desteklememesinden de kaynaklanan bir hata olabilir. (kodda bozulmaya/kaymaya neden olabiliyor desteklemeyen bir editörle açmak/editlemek)

olmadı:
Kod:

if {![string match -nocase "*client connecting*" $arg] || [string match -nocase "*!*@*" $from]} { return 0;}
bu satırdaki ikinci string match'deki -nocase kaldırabilir yada yerine -all değişilebilir hala sıkıntı devam ederse..

şu ise :
Kod:

[13:31] <K9> Last-modified header missing -- time-stamps turned off.
dosyaları aldığı sitenin bir sorunu.banada bir iki kez denk gelmişti. dosyalardan biri sanırım içinde tor host,IP ve diğer tüm ayrıntılı bilgilerinin olduğu dosyayı çekmeye çalıştığında sunucusundan kaynaklı bir sorun yaşıyor.

bu sonradan kendileri sanırım fark edip düzeltiyorlar.dosyaları çekme konusunda küçük bir kod parçası yazıp denemeler yaptığımda bunla karşılaşmış ,hatta direk site sahibi (aynı zamanda tor project'in geliştiriici / yapımcılarından biriymiş) bulup mailleştim. attığım maile cevap yazdı ve onarmıştı ama sonra yine tekrarlandı,yine onarıldı....


bu kod ile alakalı son iki aydır hiç bir çalışma yapmadım. öylece bıraktım.
nedenine gelince:

kodun bu son halini , tcl programcılarına ve eggdrop geliştiricilerinden samimi olduğum birkaçına gösterdim.
"böyle bir kod yazdım, ama deneme şansım yok,ben daha bir hata/eksik göremiyorum,siz herhangi bir sorun yada hata/kusur görüyormusunuz" diye danıştım/sordum..

kodu gören/inceleyenler arasında eggdrop tcl kod yazarları madalin, Spike ( bogus trivia'nın yapımcısı) speechles ayrıca eggdrop geliştiricilerinden thommey tcl geliştiricisi stu ve dkf bunlara danışıp fikirlerini sordum.benim görmediğim/bilmediğim bir hata/eksik gedik görüyorlar mı diye...

hiçbiri tek bir hata/kusur ,mantık hatası vs göremedi.kod ile alakalı bana şurayı şöyle değiş vs demedi.

yalnız thommey aklımda yer eden şöyle birşey söyledi:
" bir programcı ortalama her 10 satır yazdığı kodda bir hata/bug yapar bu normaldir/ortalama kabul edilebilir hata oranıdır.
ancak programcı yazdığı kodu mutlaka öncelikle kendi denemelidir. mantık yürüterek kağıt üzerinde kod yazılmaz/olmaz.mutlaka yazdığın kodu çalışırken görmelisin" dedi özetle...

işte benimde bu kodla alakalı sıkıntım bu olduğundan ve defalarca silbaştan yazıp çok fazla bu tek bir koda zaman harcayıp ,artık sıkıldığımdan olduğu gibi bıraktım.

yeni bir bahar / heves gelipde yeniden bu kodla ilgili bir motivasyon yakalarsam, localhost'a ircd kurup bir bot sokup kurduğum sunucuya saldırarak deneyip görücem ...

Sephiroth 01 Kasım 2013 19:30

Cevap: torstatus.tcl
 
Alıntı:

;# IP-host eşleşmesinde yapılacak işlemde kullanılacak kullanıcıyı uzaklaştırma sebebiniz:
set sebep "Guvenlik nedeniyle Chatwork.NET sunucusundan uzaklastirildiniz. Wingate/Socks/Proxy/Tor/Drones baglanti girisleri yasaktir."

;# 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 arg [string map {\[ "" \] ""} [join $arg]]
set ip [string range [lindex [split [lindex [split $arg] 10] @] 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 [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] DEBUG"
set torhosts "wget -N [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] DEBUG"
eval exec $torips
utimer 1[list eval exec $torhosts]
}

putlog "ok...."
Kodu bu şekilde kullanıyorum son halinde hata veriyordu onuda paylaşırım.. Ayrıca ilgin alakan için teşekkür ederim.. Eğer yanlış anlamazsan ve kabul edersen kodları bana ait test sunucumda deneyebilirsin vps makina var bende zaten önce kodları test sunucumda kontrol ediyorum daha sora irc sunucuma monte ediyorum.. Eğer kabul edersen test sunucumun bilgilerini seninle paylaşabilirim.. tekrardan teşekkür ederim ilgin alakan için..

saywhat 01 Kasım 2013 22:01

Cevap: torstatus.tcl
 
üstünden ne kadar zaman geçti tam söyleyemem ,epey geçti üzerinden, ya efnet ya freenode üstünde biri gelip kod / yardım istemişti,, yine ya sunucudan ya servislerden gelen notice mesajı yakalayıp işlem yapmakla alakalı bişeydi.

10-15 satırlık bi kodla kolayca halledilecek bişeydi,, bende kanal üstüne yazıverdim istediği kodu... o sıra thommey araya girdi, "peki ya kullanıcının biri aynı notice mesajını bota gönderip aklını karıştırırsa ne olacak ? " gibi bişi söyledi ...bende hmm öyleyse böyle yaparız diye buna önlem alacak satırı yazıverdimdi...

o zamandan itibaren ne zaman bu gibi sunucu/servislerden gelecek notice yakalama üzerine bir proc yazsam otomatik olarak bunu da ekliyorum.
Kod:

if {![string match -nocase "*client connecting*" $arg] || [string match -nocase "*!*@*" $from]} { return 0;}
bu satırda : eğer yakalanan arg *client connecting* içermiyorsa ve bir kullanıcıdan geliyorsa işlem yapma....

bu tür daha evvel yaptığım kodlarda bunu hep bu tarz/üslupta kullandım,şimdiye dek te bunla alakalı herhangi bi sorun/hata duymadım/görmedimdi..

şöyle düşünülebilir: nasıl bir zekaya sahip mahlukat , kalkıp girdiği sunucudaki bota "/notice bot bak client connecting yapıyorum bot" gibisinden bir notice göndermeye niyet etsin.....

ama işte thommey o zaman ortaya attı böyle bişey diye önlem mahiyetine bizde ekliyoruz o zamandan beri bunu...

o satırdaki -nocase büyük/küçük harf uyumu önemli değil* gibi anlam taşıyor ki kişiyi/kullanıcıyı check ettiği için orda olup olmaması gereksiz.yani olsada olmasada bi zararı yok böyle bir *match* seçeneğinin...o nedenle tamamen kaldırılıp :

Kod:

if {![string match -nocase "*client connecting*" $arg] || [string match "*!*@*" $from]} { return 0;}
halinde de kullanılabilir.. hatta yukarda izah etmeye çalıştığım sebeple "hade canım olur mu hiç öyle birşey" diye düşünerek tamamen o kontrol de ortadan kaldırılıp :
Kod:

if {![string match -nocase "*client connecting*" $arg]} { return 0;}
haliylede kullanmak tercih edilebilir....

yukarda bilmiyorum belki copy-paste yaptığınızda da oluşmuş olabilir ama bazı satır kayma hataları gözüme ilişti. yuıkardaki verdiğim linkten [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] "raw code" yazısına tıklayıp temiz bi kopya çekipde deneyebilirsiniz. çünkü dediğim gibi daha önce pek çok farklı kodlarda kullandığım bir yapı bu ve hiç sorun olduğu olmamıştı...

diğer yukarda söz ettiğim konuysa tamamen "motivasyonla" alakalı...benim kendi huyum suyum alışkanlıklarımla alakalı..imkanım yok vs konusu değil yoksa...
şu an kullandığım makinada CentOS, opensuse ve archlinux halihazırda kurulu. ayrıca birkaç tanede sanal makina üzerinde var.disklerden biri iso kalıplarıyla dolu...yeni çıkan bi distro yada sürüm olduğunda , bu benim hobilerimden biridir illa alır indirip kurarım,orasını burasını şöyle bir kurcalayıp bakarım.

bu işi öylece bırakma nedenim, diğer şuan bekleyip duran nerden baksanız onlarca diğer kodlar/proje/fikirlerle aynı sebepten.. hevesin kaçması, motivasyonun kaybolması yada kısacası artık sıkılıp başka şeylerle ilgilenmeye başlamam.

ne zaman gene aklıma gelir " ya Bismillah" deyip yine "niyet" edersem o zaman olacak o iş... de benim işlerim böyledir. bi iş uzun sürerse sıkılırım,sıkılıncada ortalık yerde bırakıverip,başka şeylere geçerim.bi yerde takılıp kalmayı sevmiyorum.afaganlar basıyor...

Sephiroth 01 Kasım 2013 23:56

Cevap: torstatus.tcl
 
Dostum sanada cidden zahmet veriyorum okadar bizler paylaşımlar yapiyorsun emek veriyorsun kusura bakmazsan son verdiğin Tcl code by nrt - 127 lines - codepad yükledikten sora bu seferde böle hata verdi.
[23:52] <K9> [23:51:05] Tcl error [notc:serv]: wrong # args: extra words after "else" clause in "if" command
[23:52] <K9> [23:51:05] -NOTICE- *** Notice -- Client connecting on port 6667: test (admin@[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...].174.57.203) [clients]

saywhat 02 Kasım 2013 03:19

Cevap: torstatus.tcl
 
->> [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]

saywhat 04 Kasım 2013 14:09

Cevap: torstatus.tcl
 
bugün itibariyle, ircforumlari'ndan ayrılıyorum.

bunun gibi ,sonunu getirmenin bir türlü kısmet olmadığı işleri, inşallah başkaları sonuna erdirip,paylaşır.

burda paylaştığım kodları/scriptleri vs. isteyen ,istediği şekilde kullanabilir,editleyebilir, sahipte çıkabilir.benden yana sorun yoktur. Helal-i hoş olsun...


öyle yada böyle herhangi birinizi üzdüm,kırdıysam, gücendirdiysem af ola.

Allah'a emanet olun...

Sephiroth 04 Kasım 2013 21:15

Cevap: torstatus.tcl
 
Yahu nereye... Bizlerle bilgi paylaşımı yapan bir kaç kişiden birtanesi sensin tcl eggdrop vs yönünde
sayende zengin bir arşivimiz oluştu.. ayrılmana cidden üzüldüm umarım birilerine kırılıp buradan ayrılmıyorsundur.. Emeklerin için teşekkürler ayrıca umarım sana ulaşıp yine senin bilgilerinden yararlanabiliriz..


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

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