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/)
-   mIRC Scripting Dersleri (https://www.ircforumlari.net/mirc-scripting-dersleri/)
-   -   Basit Otomatik Güncelleştirme (https://www.ircforumlari.net/mirc-scripting-dersleri/29643-basit-otomatik-guncellestirme.html)

McKruGer 31 Mart 2007 01:26

Basit Otomatik Güncelleştirme
 
Ders Sahibi Cleus nickidir.

Açıklama:
Bu kod ile scriptinizin yeni bir sürümü veya güncellemesi yayınlandığında, eski sürümleri kullananları haberdar eder.

Çalışma İlkesi:
Belirli süreler ile bir internet adresine bağlanır ve oradaki verileri kendi verileri ile karşılaştırıp sonuca ulaşır.

Kod:

alias guncelleme_kontrolu {
  ;önce varsa açık olan bağlantıyı kapatalım
  sockclose guncelle
  ;şimdi bağlantıyı tekrar açalım (http:// koymadan!)
  sockopen guncelle
Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir.
80
}
;burada bağlantı sağlandığı anda yapılacakları söylüyoruz.
on 1:sockopen:guncelle: {
  ;eğer hata varsa kullanıcıya hata mesajı verelim ($sockerr 1'den büyük olunca hata var demek olur)
  if $sockerr > 1 {
    echo -a Dikkat: Bağlantı kurulmaya çalışılırken bir sorun ile karşılaşıldı.
    return
  }
  ;şimdi hangi dosyayı okumak istediğimizi söylüyoruz (burada / çok önemli)
  sockwrite -n $sockname GET /guncelleme.txt HTTP/1.1
  sockwrite -n $sockname Host:
Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir.
ise, almaya basladigimiz verileri degerlendirecegiz
on 1:sockread:guncelle: {
  ;hata varsa dur (hata mesaji yerleştirmek size kalmış)
  if $sockerr > 1 { return }
  ;sockread buradaki en önemli komut. o an okunan satırı %t değişkenine atar.
  sockread %t
  ;---------------
  ; buradan sonrası tüm yorumlama işlerinin yapılacağı yer.
  ; buraya devam etmeden önce txt dosyasını tekrar gözden geçirmenizi tavsiye ederim
  ;---------------
  if *SurumNo=* iswm %t {
    var %x = $remove(%t,SurumNo=)
    if %x > %KullanicininSurumNosu { echo -a YENİ SÜRÜM BULUNDU! }
  }
}

İşin script kısmı bitti, şimdi guncelleme.txt diye bir dosya yaratalım ve içine şunları yazalım.
Kod:

SurumNo=2000
buraya amacsizca birseyler yazalim. nedenini daha sonra aciklayacagim

Artık deneme.txt dosyasını web sitenize upload edebilirsiniz. Yukarıda bahsettiğim amaçsız satır, HTTP protokolünün bize yaptığı bir azizlik. mIRC, sockread işlemi sırasında, okunan dosyadaki EN SON SATIRI OKUMAZ. Biz de en sona gereksiz birşey yazarak zaten okunmayacağı için bize gereken kısmı güvene alıyoruz :)

deneme.txt dosyasını sunucuya yolladıktan sonra, script kısmında gerekli adres düzeltmelerini yapıp /guncelleme_kontrolu yazdığımızda kontrol gerçekleşir.

Bir diğer önemli nokta ise, %KullanicininSurumNosu değişkeni. Örnek olarak Hurafe Script diye bir scriptimiz olsun. Bu scriptimizin 1.0 sürümünde %KullanicininSurumNosu değişkeninin değeri 1000 olsun. Gel zaman git zaman Hurafe Script v2'yi çıkarmak isteyelim. İşte tüm hikaye burada başlıyor. Hurafe Script v2'nin çıktığını duyurmak için, guncelle.txt dosyamıza

Kod:

SurumNo=2000
buraya amacsizca birseyler yazalim.

yazıyoruz. Bu 2000 yerine, v1'deki %KullanicininSurumNosu değerinden büyük herhangi bir değeri yazabiliriz. Tüm mantık, yeni çıkacak scriptin %KullanicininSurumNosu değerinin, bir önceki sürümün %KullanicininSurumNosu değerinden büyük olmasında.

Live 12 Nisan 2007 15:25

Cevap: Basit Otomatik Güncelleştirme
 
Cok Guzelbır sey Tbrıkler efendım.

Live 12 Nisan 2007 15:26

Cevap: Basit Otomatik Güncelleştirme
 
sockwrite -n $sockname GET /guncelleme.txt HTTP/1.1
sockwrite -n $sockname Host: [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] $+ $crlf $+ $crlf
Bu kısımda yardım edermısınız?

McKruGer 16 Nisan 2007 01:20

Cevap: Basit Otomatik Güncelleştirme
 
Alıntı:

Live Nickli Üyeden Alıntı
sockwrite -n $sockname GET /guncelleme.txt HTTP/1.1
sockwrite -n $sockname Host: [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] $+ $crlf $+ $crlf
Bu kısımda yardım edermısınız?

ne yapmak istediğini söyle? ne gibi o kısımda yardım istiyorsun?

MavipikSeL 16 Temmuz 2007 18:03

Cevap: Basit Otomatik Güncelleştirme
 
Eğer ben, script'i startladığımda; ircforumlari.net/xfile.txt'yi download edip, $mircdir'deki xfile.txt ile değiştirmek istediğimde, ne gibi editlemeler yapmam gerekecekti, McKruGeR ?

Doktrin 16 Temmuz 2007 19:40

Cevap: Basit Otomatik Güncelleştirme
 
Aşağıdaki örneği inceleyerek istediğini yapabilirsin.

Kod:

on *:START: { guncelleme_kontrolu }
alias guncelleme_kontrolu {
  if $sock(guncelle) {
    sockclose guncelle
  }
  unset %dr
  sockopen guncelle
Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir.
80
}

on *:SOCKCLOSE:guncelle: {
  halt
}

on *:SOCKREAD:guncelle: {
  if %dr != 1 {
    var %h
    sockread %h
    while $sockbr {
      if * !iswm %h {
        set %dr 1
        break
      }
      sockread %h
    }
  }
  sockread 4096 &d
  while $sockbr {
    bwrite xfile.txt -1 -1 &d
    sockread 4096 &d
  }
}

on *:SOCKOPEN:guncelle: {
  if $sockerr {
    return
  }
  write -c xfile.txt
  sockwrite -nt $sockname GET /xfile.txt HTTP/1.0
  sockwrite -nt $sockname Accept: */*
  sockwrite -nt $sockname Host:
Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir.
sockwrite -nt $sockname
}


MavipikSeL 17 Temmuz 2007 17:24

Cevap: Basit Otomatik Güncelleştirme
 
Erman, kod gayet verimli çalışıyor, teşekkür ederim. Ben birden çok .txt veya .mrc belgesi indirmek istediğimde bi sorun çıktı. Dosya isimlerini girdiğin yerlere bakarak, altlarına değişik belgeleride ekledim ama ilki hatasız, ikincisinde txt indirdi; içindeki bilgilerde html kodlar çıktı. :)

Demek istediğim, xfile.txt, yfile.txt, zfile.txt bunları nasıl çoğaltabilirim?

Doktrin 17 Temmuz 2007 20:16

Cevap: Basit Otomatik Güncelleştirme
 
Demek istediğini tam anlamadım ama farklı bi şekilde yapılabilir.İndireceğin dosyaları bir .zip dosyası olarak indirip daha sonra zipden çıkartılabilir.Biraz uzun olur ama bu şekilde scriptini tamamen güncelleyebilirsin.

MavipikSeL 17 Temmuz 2007 21:42

Cevap: Basit Otomatik Güncelleştirme
 
Şöyle bi çözüm ürettim. Aynı kodu kullanarak, bi .mrc içine farklı isimlerle 10 tane socket açıp ayrı ayrı dosyaları indirtebilicem. Teşekkürler. :)

XcLusive 28 Temmuz 2007 04:38

Yanıt: Basit Otomatik Güncelleştirme
 
update sistemi yapabilirsiniz webden dosyalari alarak ve dosya boyutunu yuklu olan dosya ile karsilastirip eger dosya boyutlari degisikse guncelleyebilirsiniz.. hersey mantiga ve biraz olsun bilgiye bakar kendi script'imden birkac alinti yapacagim..

Kod:


alias su { if ($sock(update,0) == 1) { sockclose update } | sockopen update [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] 80 }
;</su komutu ile sock'u siteye bağladık>
;<remote bölümü sock bağlanıp siteden dosya.txt dosyasını okuyacak..>
on 1:sockopen:update:{
  if ($sockerr) { echo $color(info) -at Sock Bağlanamıyor Lütfen Tekrar Deneyin | halt }
  echo -a Update Kontrol Ediliyor..
  .sockwrite -n update GET /dosya.txt HTTP/1.1
  .sockwrite -n update Host: update.site.com
  .sockwrite -n update $clrf
}
;<dosya.txt dosyasının içinde olanlar
dosya script.ini
the end
<fazladan the end yazısını ekledim bu sockta hata vermemesi içindi.>
on 1:sockread:update:{
  sockread %temp
  if (content-length isin %temp) { set %dosyab $remove($gettok(%temp,2,58),$chr(32)) }
  updates %temp
}
;<sock botumuz sitemize bağlanıp dosya boyutunu alıyor ve /updates komutunu uyguluyor>
;</updates komutu işlevleri>
alias updates {
  if $1 != dosya { goto end } ;< 1. kelime dosya değilse :end satirina git
  aspas $2- ;< aspas komutunu uygula 2. kelimeyi kullanarak
  set %aspas x ;<aspas değerini x yap>
  :end
  if $1 == yok { echo -a Güncellenecek Dosya Yok.. } <;1. kelime yok ise güncellemeyi yok yap.>
  if $1 == the && $2 == end { echo -a Dosya Bilgisi Alındı..  } <;söylememe gerek yok sanırım :)>
}
alias x  writeini $mircdir\xclusive.ini $1- <ini dosyasına yazdırmak için..>
x3 return $readini(xclusive.ini,$1,$2-) <ini dosyasını okutmak için>
;<aspas komutunun görevleri>
alias aspas {
  var %asfa dat $+ $rand(111,999) ;<%asfa değerini 111,999 arasi olustur dat567 gibi. bu siteye socku baglayip dosyayi indirmek icin>
  sockopen %asfa update.ahkalbim.net 80 <bagla>
  $x(sock, $+ %asfa $+ ,$1-) <ini dosyasına yazdırmak için..>
  $x(update, $+ %asfa $+ ,$1-) <ini dosyasına yazdırmak için..>
}
-----------
<dat adindaki sock botumuz baglandiginda yapacagi islevler>
on 1:sockopen:dat*:{
  if ($sockerr) { echo $color(info) -at Sock Bağlanamıyor Lütfen Tekrar Deneyin | halt }
  sockwrite -n $sockname GET / $+ $x3(sock, $+ $sockname $+ ) HTTP/1.1 <ini dosyasından sock botumuzun adını kullanarak hangi dosyayı indireceğini belirliyoruz>
  sockwrite -n $sockname Connection: keep-alive
  sockwrite -n $sockname Host: %d.host
  sockwrite $sockname $crlf
}
<dat* isimli sock botumuzu okutuyoruz>
on 1:sockread:dat*:{
  sockread %sas
  if (content-length isin %sas) { set %fsiz $remove($gettok(%sas,2,58),$chr(32)) | dsy $x3(sock, $+ $sockname $+ ) | $x4(sock, $+ $sockname $+ ) }
}
<ilk olarak dosya boyutunu alıyoruz %fsiz değeri..2. olarak dsy komutunu uyguluyoruz $x4 değeri ile ini dosyamızdan siliyoruz>
x4  remini $mircdir\xclusive.ini $1- < $x4 değeri.
;<dsy komutu>
alias dsy {
  var %fs $findfile($mircdir, $+ $1 $+ ,0)
  var %fx 1
  while (%fx <= %fs) {
    if $file($findfile($mircdir, $+ $1 $+ ,%fx)).size != %fsiz {
<yukardaki komut satırı ile bilgisayarımıza yüklü dosya boyutuna baktırdık eğer dosya boyutları farklı ise dosyamızı bilgisayarımıza yükleyeceğiz
      if ($sock(rep,0) == 0) { dsydevam } <dosya yüklemesinin devamı>
    }
    inc %fx
  }
}
<dosya yüklemesinin devamı /dsydevam>
alias dsydevam {
  var %baydi $ini(xclusive.ini,update,0)
  var %baydi2 $ini(xclusive.ini,update,1)
  if %baydi == 0 { echo -a Güncelleme Tamamlandi | goto end }
  var %okuini $readini(xclusive.ini,update, $+ %baydi2 $+ )
  $x4(update, $+ %baydi2 $+ )
  dl [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] $+ %okuini < dosyayı yükletiyoruz /dl komutu ile>
  echo -a %okuini Dosyası Yükleniyor... <bilgi beriyoruz>
  :end
}
 
<dosya yükletme komutu /dl>
alias dl {
  set %d.path $remove($1,%d.host,[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]))
  if ($exists($mircdir $+ /update/ $+ $gettok(%d.path,$numtok(%d.path,47),47))) {
      set %hmm $input($gettok(%d.path,$numtok(%d.path,47),47) Bu Dosya Daha Önceden Yüklenmiş $+ $chr(44) $crlf $+ Tekrar Yüklemek İstiyormusunuz?,y)
    if (%hmm == $true) { .remove $mircdir $+ update/ $+ $gettok(%d.path,$numtok(%d.path,47),47) | goto start }
    else { halt }
  }
  :start
  set %time.total $ctime
  if (http:// isin $1) { set %d.host $gettok($1,2,47) }
  else { set %d.host $gettok($1,1,47) }
  set %d.path $remove($1,%d.host,[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]))
  sockopen rep $remove(%d.host,[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]) 80
  :end
}
<dosyayı script'e yükledik..>
peki yükledikten sonra nasıl güncelleme yaparız?
/yukle dosyaadi.uzanti
alias yukle {
  var %gnc $1
  var %gnca $mircdirupdate\ $+ %gnc <scriptimizin içinde update klasörünün içindeki dosyayı alıyoruz>
  var %gncd $findfile($mircdir, $+ %gnc $+ ,0) <aynı dosya adında başka bir dosya varmı aratıyoruz varsa bulunduğu klasörün adını alıyoruz>
  var %gncs 1
  while (%gncs <= %gncd) {
    var %gncx $findfile($mircdir, $+ %gnc $+ , $+ %gncs $+ ) <tekrar dosyayı aratıyoruz>
    if (update !isin %gncx) { <klasörün adı update değilde bu komut olmasa çakışma olabilri>
      var %klasor $remove(%gncx, $+ %gnc $+ )
      .copy -o %gnca %klasor <dosyayı gönderiyoruz -o komut satırı var olan dosyayı değiştirmek için>
      echo -a %gnc Dosyası Başarıyla Script'e Kopyalandı
    }
    inc %gncs 1
    if %gncs > %gncd { .remove %gnca } <yüklenen dosyayı update klasöründen sildiriyoruz>
  }
}
 
<dl komutu rep adinda sock botu baglar rep adindaki sock botunun kodlari>
on *:SOCKREAD:rep: {
  if (%d.check == 0) {
    sockread %dat
    if (*HTTP/* 404 Not Found* iswm %dat) { sockclose rep | echo -a HATA: Dosya Bulunamadi Sock Kapatildi | remini xclusive.ini update | remini xclusive.ini | halt }
    if (content-length isin %dat) { set %fsize $remove($gettok(%dat,2,58),$chr(32)) }
    if ($len(%dat) < 4) {
      set %d.check 1
    }
  }
  elseif (%d.check == 1) {
    sockread &tmp
    set %read $calc(%read + $sockbr)
    set %rt $calc(%rt + $sockbr)
    set %percents $int($calc(%read / %fsize * 100))
    bwrite $mircdir $+ update/ $+ $gettok(%d.path,$numtok(%d.path,47),47) -1 &tmp
    if (%read == %fsize) {
      echo -a $gettok(%d.path,$numtok(%d.path,47),47) Dosyası Başarıyla Yüklendi
      sockclose rep  }
    }
  }
}

bu benim scriptten aldığım ve tamamiyle kendi yazdığım kodlar arkadaşlar burda size nasıl bir update sistemi yapabileceğinizi anlattım basit ufak birşey kodlar ne kadar çalışır ne kadar çalışmaz bilemem saat gecenin 4.5 uykusuz bir şekilde yazdım sizlere anlatmak istedim hatalardan dolayı kusura bakmayın :) amacım sizlere bu işin mantığını vermek nasıl olabilir? sorusunu kafanızdan kaldırmanız.eğer size bir yol gösterebilmiş isem ne mutlu bana iyi çalışmalar dilerim bu kodu derli toplu bir şekilde gösterdim isteyen arkadaşlar olursa scriptteki kodu olduğu gibi buraya alabilirim yeterki siz öğrenmek ve birşeyler yapmak isteyin..


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

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