
Yazan: L4roXyL - Hasan AYDENİZ
Kod: FTP Upload v0.2a
Tarih: 20/11/2011
Not: http://mIRCScripting.net dokumanıdır.
Acıklama: Kodun calışma şekli, Turkiye'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ı yukleyebilirsiniz. Aynı zamanda meraklısına iki farklı kullanım şekli sundum. İsteyen dialog-tablo uzerinden, isteyen direkt komut girerek custom-window uzerinden kodu calıştırabilir. Kod icerisinde Binary files dosya işleme sistemini kullandım.(file handling ilede yapılabilir) Ek olarak upload edilecek dosya, boyutuna gore parca transfer etme işlemini 3 parcaya boldum. Kısacası duşuk boyutlu dosyalar ile yuksek boyutlu dosyaları upload ederken, hız konusunda herhangi bir sıkıntı yaşanmayacaktır.
Ek acıklama: Custom window-da dosya upload ederken, sonlandırmak icin pencereyi kapatın veya Pause/Break tuşuna basın.
Kullanım şekli: /sendfile
Dialog icin: /sendfile d
Pencere icin: /sendfile c
Pencere ornek: /sendfile c mircscripting.net kullanıcı_adım şifrem /www 21
Dialog menusu resmi:
Custom window resmi:
-
Kod:
;----------------------------------------------------------------------------------- ;FTP upload v0.2a ;l4roxyl code series - 2011,,. ;use: /sendfile
;date: 20/11/2011 ;----------------------------------------------------------------------------------- ;started code,,. alias -l _input $iif($input($1-,wo,Hata) = $true,dialog -v ftp_,dialog -v ftp_) | halt alias _did $iif($dialog(ftp_),did -ra ftp_ 15 $1-,$iif($window(@ftp_upload),aline -c2 $v1 +++ $1-)) alias _len if ($len($1-) >= 20) | else return $1- alias _did2 if ($dialog(ftp_)) did - $+ $1 ftp_ 5-9,13,14 alias _file_byte on *:keydown:@ftp_upload:*: } on *:load: on *:close:@ftp_upload: dialog -l ftp_ alias sendfile if ($sock(ftp)) sockclose ftp if ($sock(ftp2)) sockclose ftp2 if ($1 = d) $iif(!$dialog(ftp_),dialog -mdi ftp_ ftp_,_input Dialog zaten acık.) if ($1 = c) $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,Gonderilecek dosyayı sec,Sec) if (!%_sfile) else } } on *:dialog:ftp_:*:*: if ($devent = init) if ($devent = sclick) if ($did = 9) else did -ra $dname 10 Dosya: $_len($nopath(%_sfile)) } if ($did = 14) else if (!$did($dname,13)) _input Hedef klasor secin. $crlf $+ Ornek: /www - /public_ftp - Anadizin icin: / if (!%_sfile) _input Gonderilecek dosyayı secin. if (%_sfile && $did($dname,5) && $did($dname,6) && $did($dname,7) && $did($dname,8) && $did($dname,13)) } } } on *:sockopen:ftp: } on *:sockread:ftp: sockread %_data while ($sockbr) if (%_raw = 331) if (%_raw = 230) if (%_raw = 200) sockwrite -n $sockname PASV if (%_raw = 227) if (%_raw = 250) } if (%_raw = 150) if (%_raw = 530) if (%_raw = 226) if (%_raw = 221) .timer 1 2 _did Cıkış yapıldı. sockread %_data } if (%_raw = 550) } on *:sockwrite:ftp2: var %_pos = $hget(pos,pos), %_file = $hget(_ftp,_file) var %_p1 = $[%,$round($calc((%_pos * 100)/ $file(%_file).size),1)) var %_size = $bytes(%_pos,3).suf / $bytes($file(%_file).size,3).suf if ($dialog(ftp_)) did -ra ftp_ 15 Yuk.. ( $+ %_p1 $+ ) - %_size if ($window(@ftp_upload)) if (%_pos < $file(%_file).size) else } ;end code,,.
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 gorsellik oğ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)