mIRC Scripting

mIRC Scripting (https://www.mircscripting.net/)
-   Showcase - Hazır kodlar (https://www.mircscripting.net/showcase-hazyr-kodlar/)
-   -   FTP Upload v0.2a (https://www.mircscripting.net/showcase-hazyr-kodlar/540-ftp-upload-v0-2a.html)

L4roXyL 20 Kasım 2011 23:04

FTP Upload v0.2a
 
Yazan: L4roXyL - Hasan AYDENİZ
Kod: FTP Upload v0.2a
Tarih: 20/11/2011
Not: mIRCScripting.net dökümanıdır.


Açıklama: Kodun çalışma şekli, Türkiye'de her yerde bilinen ve kullanılan (ezbere tek yol olarak bilinen) /write sistemi ile değildir. Tamamen socket bağlantı, FTP Raw Command-ları ve ftp passive(pasif modda) işlem yaptırarak, işlem yapılır. Yetkiniz dahilindeki herhangi bir FTP sunucusuna istediğiniz dosyayı yükleyebilirsiniz. Aynı zamanda meraklısına iki farklı kullanım şekli sundum. İsteyen dialog-tablo üzerinden, isteyen direkt komut girerek custom-window üzerinden kodu çalıştırabilir. Kod içerisinde Binary files dosya işleme sistemini kullandım.(file handling ilede yapılabilir) Ek olarak upload edilecek dosya, boyutuna göre parça transfer etme işlemini 3 parçaya böldüm. Kısacası düşük boyutlu dosyalar ile yüksek boyutlu dosyaları upload ederken, hız konusunda herhangi bir sıkıntı yaşanmayacaktır.

Ek açıklama: Custom window-da dosya upload ederken, sonlandırmak için pencereyi kapatın veya Pause/Break tuşuna basın.

Kullanım şekli: /sendfile <d(ialog)|c(ommand)> <address> <username> <password> <dizin> <port>
Dialog için: /sendfile d
Pencere için: /sendfile c <address> <username> <password> <dizin> <port>
Pencere örnek: /sendfile c mircscripting.net kullanıcı_adım şifrem /www 21


Dialog menüsü resmi:

http://www.mircscripting.net/D-1.jpg


Custom window resmi:

http://www.mircscripting.net/W-1.jpg


-

Kod:

;-----------------------------------------------------------------------------------
;FTP upload v0.2a
;l4roxyl code series - 2011,,.
;date: 20/11/2011
;use: /sendfile <d(ialog)|c(ommand)> <address> <username> <password> <dizin> <port>
;-----------------------------------------------------------------------------------
;started code
alias -l _input $iif($input($1-,wo,Hata) = $true,,) | dialog -v ftp_ | halt
alias _did $iif($dialog(ftp_),did -ra ftp_ 15,$iif($window(@ftp_upload),aline -c2 $v1 +++)) $1-
alias _len if ($len($1-) >= 20) { return $left($1-,20) $+ .. } | else return $1-
alias _did2 if ($dialog(ftp_)) did - $+ $1 ftp_ 5-9,13,14
alias _file_byte {
  var %_. = $file($1).size
  if (%_. < 1048576) return 9182
  if (%_. > 1048576 && %_. < 3145728) return 18364
  if (%_. > 3145728) return 55092
}
on *:keydown:@ftp_upload:*: {
  if ($keyval = 19) {
    $iif($sock(ftp),sockclose ftp)
    $iif($sock(ftp2),sockclose ftp2)
    $iif($hget(_ftp),hfree _ftp)
    unset %_sfile
    window -c $target
  }
}
on *:load: {
  var %e = echo -ac info +++
  %e FTP Upload v0.2a yüklendi.
  %e Kullanım: /sendfile <d(ialog)|c(ommand)> <address> <username> <password> <dizin> <port>
  %e Dialog için: /sendfile d
  %e Pencere için: /sendfile c <address> <username> <password> <dizin> <port>
  %e Pencere örnek: /sendfile c mircscripting.net kullanıcı_adım şifrem /public_ftp 21
  linesep
  %e l4roxyl(Hasan AYDENİZ) - http://www.mIRCScripting.net - 20/11/2011
}
on *:close:@ftp_upload: {
  $iif($sock(ftp),sockclose ftp)
  $iif($sock(ftp2),sockclose ftp2)
  $iif($hget(_ftp),hfree _ftp)
  unset %_sfile
}
menu status,menubar {
  FTP Upload v0.2a
  .Run: if ($dialog(ftp_)) return | sendfile d
  .About:echo -aec info +++ l4roxyl(Hasan AYDENİZ) - http://www.mircscripting.net - 20/11/2011
}
dialog -l ftp_ {
  title "FTP Upload"
  size -1 -1 94 117
  option dbu
  text "FTP Adresi:", 1, 5 7 34 8
  text "Kullanıcı Adı:", 2, 5 17 34 8
  text "Şifre/login:", 3, 5 27 34 8
  text "Port(21):", 4, 5 37 34 8
  edit "", 5, 41 6 50 10, autohs
  edit "", 6, 41 16 50 10
  edit "", 7, 41 26 50 10, pass
  edit "", 8, 41 36 50 10
  button "Gönderilecek Dosyayı Seç", 9, 4 47 86 10, flat
  text "", 10, 4 60 86 8, center
  text "Hedef Klasör:", 12, 5 71 34 8
  edit "", 13, 41 70 50 10
  button "Karşıya Yükle", 14, 4 82 86 10, flat
  text "", 15, 4 106 86 8, center
  button "İptal", 16, 4 94 86 10, flat
}
alias sendfile {
  if (!$1) {
    echo -aec info +++ Err: /sendfile <d(ialog)|c(ommand)> <address> <username> <password> [port]
    return
  }
  if ($sock(ftp)) sockclose ftp
  if ($sock(ftp2)) sockclose ftp2
  if ($1 = d) $iif(!$dialog(ftp_),dialog -mdi ftp_ ftp_,_input Dialog zaten açık.)
  if ($1 = c) {
    if (!$6) {
      $iif($dialog(_ftp),dialog -c _ftp)
      echo -aec info +++ Err: /sendfile <d(ialog)|c(ommand)> <address> <username> <password> <dizin> <port>
      return
    }
    $iif(!$window(@ftp_upload),window -aCldk0 +l @ftp_upload -1 -1 300 300)
    $iif($window(@ftp_upload),clear $v1)
    $iif($dialog(ftp_),dialog -c $v1 $v1)
    %_sfile = $sfile($mircdir,Gönderilecek dosyayı seç,Seç)
    if (!%_sfile) {
      if ($window(@ftp_upload)) aline -c2 @ftp_upload Gönderilecek dosya seçilmedi.
      return
    }
    else {
      sockopen ftp $2 $iif($6,$6,21)
      var %_h = hadd -m _ftp
      %_h _user $3
      %_h _pass $4
      %_h _file $shortfn(%_sfile)
      %_h dir $iif($5,$5,/)
    }
  }
}
on *:dialog:ftp_:*:*: {
  if ($devent = close) {
    $iif($sock(ftp),sockclose ftp)
    $iif($sock(ftp2),sockclose ftp2)
    $iif($hget(_ftp),hfree _ftp)
    unset %_sfile
  }
  if ($devent = init) {
    $iif($window(@ftp_upload),window -c $v1)
    did -a $dname 10 Gönderilecek dosya seçilmedi.
    did -a $dname 15 Durum: Aktarım yok.
    did -a $dname 8 21
  }
  if ($devent = sclick) {
    if ($did = 16) {
      $iif($sock(ftp),sockclose ftp)
      $iif($sock(ftp2),sockclose ftp2)
      $iif($hget(_ftp),hfree _ftp)
      _did2 b
      dialog -c ftp_ ftp_
    }
    if ($did = 9) {
      %_sfile = $sfile($mircdir,Gönderilecek dosyayı seç,Seç)
      if (!%_sfile) {
        did -a $dname 10 Gönderilecek dosya seçilmedi.
        return
      }
      else did -ra $dname 10 Dosya: $_len($nopath(%_sfile))
    }
    if ($did = 14) {
      if (!$did($dname,5)) _input Adresi giriniz. $crlf $+ Örnek: mircscripting.net
      if (!$did($dname,6)) _input Kullanıcı adını girin.
      if (!$did($dname,7)) _input Şifre girin.
      if (!$did($dname,8)) {
        hadd -m _ftp port 21
        did -a $dname 8 21
      }
      else {
        if ($did($dname,8) !isnum) _input Port sadece rakamdan oluşur. $crlf $+ Örneğin: FTP için 21
      }
      if (!$did($dname,13)) _input Hedef klasör seçin. $crlf $+ Örnek: /www - /public_ftp - Anadizin için: /
      if (!%_sfile) _input Gönderilecek dosyayı seçin.
      if (%_sfile && $did($dname,5) && $did($dname,6) && $did($dname,7) && $did($dname,8) && $did($dname,13)) {
        $iif($sock(ftp),sockclose ftp)
        $iif($sock(ftp2),sockclose ftp2)
        $iif($hget(_ftp),hfree _ftp)
        hadd -m _ftp _file $shortfn(%_sfile)
        hadd -m _ftp address $did($dname,5)
        hadd -m _ftp _user $did($dname,6)
        hadd -m _ftp _pass $did($dname,7)
        hadd -m _ftp port $did($dname,8)
        hadd -m _ftp dir $did($dname,13)
        sockopen ftp $hget(_ftp,address) $iif($hget(_ftp,port),$v1,21)
        did -ra $dname 15 Durum: Bağlantı kuruluyor..
        _did2 b
      }
    }
  }
}
on *:sockopen:ftp: {
  if ($sockerr) {
    _did Durum: Bağlantı başarısız.
    _did2 e
    return
  }
}
on *:sockread:ftp: {
  if ($sockerr) {
    _did2 e
    _did Bağlantı başarısız.
    return
  }
  sockread %_data
  while ($sockbr) {
    var %_raw = $token(%_data,1,32)
    if (%_raw = 220) {
      sockwrite -n $sockname user $hget(_ftp,_user)
      _did Kullanıcı adı girildi.
    }
    if (%_raw = 331) {
      sockwrite -n $sockname pass $hget(_ftp,_pass)
      _did Şifre girildi, bekleniyor..
    }
    if (%_raw = 230) {
      sockwrite -n $sockname TYPE I
      _did Bağlantı doğrulandı.
    }
    if (%_raw = 200) sockwrite -n $sockname PASV
    if (%_raw = 227) {
      _did Pasif moda geçildi.
      var %s = $remove($token(%_data,-1,32),$chr(40),$chr(41))
      var %port = $token(%_data,5,44), %port2 = $token(%_data,6,44)
      var %port3 = $calc((%port * 2^8) + %port2)
      var %s = $replace($token(%s,1-4,44),$chr(44),$chr(46))
      sockopen ftp2 %s %port3
      sockwrite -n $sockname CWD $iif($hget(_ftp,dir),$v1,/)
    }
    if (%_raw = 250) {
      sockwrite -n $sockname STOR $nopath($longfn($hget(_ftp,_file)))
      _did Dizin seçildi: $token(%_data,-1,32)
      if ($window(@ftp_upload)) {
        aline -c2 $v1 +++ Dosya: $_len($nopath(%_sfile)) / $bytes($file(%_sfile).size).suf
      }
    }
    if (%_raw = 150) {
      _did Veri gönderme kabul edildi.
      %=t = $ctime
      var %_pos = 0, %file = $hget(_ftp,_file)
      bread %file %_pos $_file_byte(%file) &_file
      sockwrite ftp2 &_file
      hadd -m pos pos $calc(%pos + $bvar(&_file,0))
    }
    if (%_raw = 530) {
      _did Kimlik doğrulama başarısız.
      _did2 e
      .timer 1 2 _did Bağlantılar koparıldı.
    }
    if (%_raw = 226) {
      _did Dosya yüklendi.
      _did Yüklenme süresi: $duration($calc($ctime - %=t),3)
      _did2 e
      $iif($hget(_ftp),hfree $v1)
    }
    if (%_raw = 221) .timer 1 2 _did Çıkış yapıldı.
    sockread %_data
  }
  if (%_raw = 550) {
    _did Dizin bulunamadı.
    _did2 e
    $iif($sock(ftp),sockclose ftp)
    $iif($sock(ftp2),sockclose ftp2)
    _did Bağlantı koparıldı.
  }
}
on *:sockwrite:ftp2:{
  if ($sockerr) {
    _did Aktarımda sorun oluştu.
    _did2 e
    return
  }
  var %_pos = $hget(pos,pos), %_file = $hget(_ftp,_file)
  var %_p1 = $+(%,$round($calc((%_pos * 100)/ $file(%_file).size),1))
  var %_s = $bytes(%_pos,3).suf / $bytes($file(%_file).size,3).suf
  if ($dialog(ftp_)) did -ra ftp_ 15 Yük.. ( $+ %_p1 $+ ) - %_s
  if ($window(@ftp_upload)) {
    var %l = $line($v1,0) - 1
    rline -c2 $v1 $calc(%l +1) ++++ Yük.. ( $+ %_p1 $+ ) - %_s
  }
  if (%_pos < $file(%_file).size) {
    bread %_file %_pos $_file_byte(%_file) &_file
    sockwrite $sockname &_file
    hadd -m pos pos $calc(%_pos + $bvar(&_file,0))
  }
  else {
    sockclose $sockname
    sockwrite -n ftp QUIT
  }
}


Not: İleriki zamanlarda FTP socket bağlantıları hakkında geniş bir ders yazabilirim vaktim olursa.
Not2: Bu kod işlev yapma amacı ile yazıldığından herhangi bir görsellik öğesi aramamanız tavsiye edilir.
Not3: Birden fazla karmaşık veri işleyicileri ile yazıldığından, editleme yapmanız tavsiye edilmez. Aksi taktirde kodu bozabilirsiniz. (normalde editlemeniz beni ilgilendirmez)

WingmaN 20 Kasım 2011 23:06

Projelere devam :)

xyzzy 05 Aralık 2011 11:38

Merhaba, pencere sisteminde hata mevcut.
Kullanici adi olarak @domain.org seklinde tam uzanti eklenmeli aksi durumda baglanti saglanmiyor.
Suan @domain de kaliyor ve baglanti kurulamiyor.
Ornek resimdeki gibi sadece kullanici adi ile baglanti kurulamaz.

xyzzy 11 Aralık 2011 19:01

Mesajimi duzenleme zamani gecti sanirim :x
Kullanim sekli olan
/sendfile <d(ialog)|c(ommand)> <address> <username> <password> <dizin> <port>
Yerine
/sendfile <d(ialog)|c(ommand)> <address> <username> <password> <dizin> <port> <filename>
ile dosyayida eklemek iyi bir yol olabilir.

L4roXyL 22 Aralık 2011 20:29

Herhangi bir hata yok. Ben hatalı veya çalışmasında problem olan bir kod yayımlamam.
Sen kodu düzgün kullanırsan herhangi bir bağlantı sorunu yaşamazsın. Adresini, şifreni vb. bilgilerini doğru gireceksin ki bağlanabilesin. Yapay zeka bir kod değil ki bu. Hı yazılabilirmi? Evet. Ama profesyonel kullanıma yönelik olduğu için gerek duymadım. Yoksa basit 2-3 if sorgusu ile adres doğruluğu kontrol ettirilebilir.

Ek olarak diğer önerine gelince ise, sen dosyayı <filename> kısmında belirtsen dahi aranması gereken bir dizin olmalı değilmi? Direk dosya ismini girdiğinde mirc ana klasörü ($mircdir) içerisinde arayacaktır. Bulunamazsa herhangi bir işlem olmayacaktır. Dolayısıyla dediğin mantıksız. Gönderilmek istenen dosyayı her program veya programcık-da olduğu gibi sfile/msfile vb. dizin belirleme seçenekleri ile select yapmak işin doğrusu olur.

Ek açıklamalar;

13 yıllık internet aleminin verdiği sanal tecrübeye dayanarak kendine herhangi bir nick almanı veya en azından gerçek nickini kullanmanı tavsiye ederim.

Benim forumumda bazı kurallar vardır. Bunları okumanı öneririm. Forumda ortaya birşey koymayan, sadece amaçsız eleştiri yapan kişileri pek barındırmam. Buraya global veya portal bir forum gözü ile bakma. Gayet disiplinli ve amacı sadece mIRC Scripting olan kullanıcıların bulunduğu bir forumdur. Bunu 3 senedir açık olmasına rağmen üye sayısının 300-küsür olmasından anlayabilirsin zaten. Bu uyarıyı sana direk olarak yapmamın sebebine gelecek olursak, senin için olan gözlemlerim sonucu diyebilirim.

xyzzy 22 Aralık 2011 23:19

Herkes hata yapabilir.
Kodlamalari test edilip yorum veya elestiri yapmak, forumu forum yapan degil midir ?
Dosya secme ise sadece bir oneri iken bu neden tepki goruyor ki ?
Ek aciklamadan kasit nedir anlamadigim icin cevap vermiyorum.
Yine de sanirim bir kac sorunlu oldugunuz kisiden biri sandiniz ise yaniliyorsunuz.

L4roXyL 23 Aralık 2011 03:18

Alıntı:

Kodlamalari test edilip yorum veya elestiri yapmak, forumu forum yapan degil midir ?
Evet yorumlar forumu forum yapandır. Ama gerekli ve yerinde olan yorumlar. Ek olarak burası IF vb. forumu değil. Eğer kendini bir tester olarak görüyorsan "ki değilsin" ilk öncelikle düzgün denemeler yapmalı ve o düzgün denemelere ilişkin düzgün yorumlar yapmalısın.

Alıntı:

Dosya secme ise sadece bir oneri iken bu neden tepki goruyor ki ?
Daha tepki verdim, bu açıklamaydı.

Alıntı:

Ek aciklamadan kasit nedir anlamadigim icin cevap vermiyorum.
Aslında çok iyi anladığını bu cümleni kurarken sende iyi biliyorsun. Cevap vermemek bencede yerinde bir karar.

Alıntı:

Yine de sanirim bir kac sorunlu oldugunuz kisiden biri sandiniz ise yaniliyorsunuz.
Benim kimseyle sorunum yok. Ama sen öyle düşünüyorsan "ki öyle" o kişilerden birisi sen olabilirsin. Bu forumda dandik client korumalarına bile takılacak bir random nick ile ortaya birşey koymadan, sadece eleştiri(ki yerinde değil hiçbiri neredeyse) yapamazsın. Burası mS forumları, boş veya gereksiz adam yok burada aslan. Kimlerle muhatap olduğunu unutma.

xyzzy 23 Aralık 2011 03:21

Uyeligimi ve mesajlarimi silebilirsiniz, sacma kuruntulariniz ile size iyi calismalar.

L4roXyL 23 Aralık 2011 03:26

Bence de yerinde bir karar. Lakin ben üyelik veya mesajları silmiyorum. Ama sana bir güzellik yapıp forumun ilk banlanan üyesi olmanı sağlamaktan büyük kuruntu duyuyorum.


++ mIRCScripting.net hakkında kısaca:

mS; "Gayri resmi mIRC" kullanıcı ve tasarımcı topluluğudur.
2009 yılında kurulan mS; tasarımcı ve geliştiricileri bir araya getiren etkileşim ve iletişim sağlayan bir platformdur.
mS; tasarım, programlama, geliştirme, düzenleme vb. pek çok konu etrafında bir araya gelmiş "mIRC" meraklısı bir çok insan tarafından yaratılan içeriğiyle; kullanıcı dostu, özgün elit, nitelikli kişi ve konularla hizmet sunan mIRC Scripting platformudur.

Özgün içerikten onay almaksızın içeriği yaratan kullanıcılarımız tamamen yada kısmen sorumludur, aynı zamanda söz konusu içerik mS yetkilileri izni olmaksızın, kaynak gösterilse dahi(!) kopyalanamaz ve/ya paylaşılamaz.   Site/içerik hakkında görüş, öneri ve şikayetleriniz için sikayet[at]mircscripting[dot]net e-posta ve ya İletişim adresinden bizlere ulaştırabilirsiniz.



mIRC mIRC Orjinal mIRC İndir mIRC Download mIRC Tutorials mIRC Socket mIRC Commands mIRC Komutlar mIRC Yükle mIRC Dersler mIRC Hazır Kodlar mIRC Classentifier mIRC DLL mIRC Dialog mIRC IRC mIRC FTP mIRC Telnet mIRC Help
mIRC Yardım mIRC Iconlar mIRC Com Object mIRC Binary Files mIRC Picture Windows mIRC Unicode mIRC Forum mIRC Hazır Kodlar mIRC Kod mIRC Script mIRC File Handling mIRC Scripting Language mIRC Scripting Dili mIRC Scripting Info
mIRC Scripting Tutorials



User Alert System provided by Advanced User Tagging v3.1.3 (Lite) - vBulletin Mods & Addons Copyright © 2026 DragonByte Technologies Ltd. Runs best on HiVelocity Hosting.

1 2 13 14 16 17 18 19 21 22 23 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 49 50 51 52 54 55 56 57 58 59 60 61 62 63 67 68 69 70 71 72 73 74 75 76

SEO by vBSEO 3.6.1