- alias -l _input $iif($input($1-,wo,Error) = $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 v1.0Beta by Lenoox & Kin loaded.
- %e Usage: /sendfile <d(ialog)|c(ommand)> <address> <username> <password> <port> <prefix>
- %e Dialog for: /sendfile d
- %e window for: /sendfile c <address> <port> <username> <password> <prefix>
- %e window Sample: /sendfile c insaneboard.comeze.com username password /public_ftp 21
- linesep
- %e (Lenoox) - http://www.insaneboard.comeze.com - 27/01/2012
- }
- 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 v1.0Beta
- .Run: if ($dialog(ftp_)) return | sendfile d
- .About:echo -aec info +++ (Lenoox) - http://www.insaneboard.comeze.com/forum/viewthread.php?thread_id=15 - 27/01/2012
- }
- dialog -l ftp_ {
- title "FTP Upload"
- size -1 -1 94 117
- option dbu
- text "FTP Address:", 1, 5 7 34 8
- text "userName:", 2, 5 17 34 8
- text "Password/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 "Select the file to be sent", 9, 4 47 86 10, flat
- text "", 10, 4 60 86 8, center
- text "Destination Folder:", 12, 5 71 34 8
- edit "", 13, 41 70 50 10
- button "Download", 14, 4 82 86 10, flat
- text "", 15, 4 106 86 8, center
- button "Cancel", 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 already open.)
- if ($1 = c) {
- if (!$6) {
- $iif($dialog(_ftp),dialog -c _ftp)
- echo -aec info +++ Err: /sendfile <d(ialog)|c(ommand)> <address> <username> <password> <port> <prefix>
- 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,Choose save the file to be sent, the Select)
- if (!%_sfile) {
- if ($window(@ftp_upload)) aline -c2 @ftp_upload File was selected to be sent.
- 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 File was selected to be sent.
- did -a $dname 15 Status: No Transfer.
- 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,Choose save the file to be sent, the Select)
- if (!%_sfile) {
- did -a $dname 10 File was selected to be sent.
- return
- }
- else did -ra $dname 10 Dosya: $_len($nopath(%_sfile))
- }
- if ($did = 14) {
- if (!$did($dname,5)) _input enter the address. $crlf $+ Example: insaneboard.comeze.com
- if (!$did($dname,6)) _input Your user name
- if (!$did($dname,7)) _input enter a password.
- if (!$did($dname,8)) {
- hadd -m _ftp port 21
- did -a $dname 8 21
- }
- else {
- if ($did($dname,8) !isnum) _input Port consists of only digits. $crlf $+ For example, in: FTP for 21
- }
- if (!$did($dname,13)) _input Choose the destination folder. $crlf $+ Example: /www - /public_ftp - : /
- if (!%_sfile) _input Choose save the file to be sent.
- 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 Status: connection is established..
- _did2 b
- }
- }
- }
- }
- on *:sockopen:ftp: {
- if ($sockerr) {
- _did Status: Connecting to
- _did2 e
- return
- }
- }
- on *:sockread:ftp: {
- if ($sockerr) {
- _did2 e
- _did Connection to the network success.
- return
- }
- sockread %_data
- while ($sockbr) {
- var %_raw = $token(%_data,1,32)
- if (%_raw = 220) {
- sockwrite -n $sockname user $hget(_ftp,_user)
- _did User's name was entered.
- }
- if (%_raw = 331) {
- sockwrite -n $sockname pass $hget(_ftp,_pass)
- _did Password has been entered, is expected to..
- }
- if (%_raw = 230) {
- sockwrite -n $sockname TYPE I
- _did Connection to the network has been verified.
- }
- if (%_raw = 200) sockwrite -n $sockname PASV
- if (%_raw = 227) {
- _did Was passed to the passive mode.
- 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 The directory was selected: $token(%_data,-1,32)
- if ($window(@ftp_upload)) {
- aline -c2 $v1 +++ file: $_len($nopath(%_sfile)) / $bytes($file(%_sfile).size).suf
- }
- }
- if (%_raw = 150) {
- _did Data transmission was accepted.
- %=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 Identity verification success
- _did2 e
- .timer 1 2 _did Broken connections for Geographical.
- }
- if (%_raw = 226) {
- _did The file is loaded.
- _did load time: $duration($calc($ctime - %=t),3)
- _did2 e
- $iif($hget(_ftp),hfree $v1)
- }
- if (%_raw = 221) .timer 1 2 _did Log output was.
- sockread %_data
- }
- if (%_raw = 550) {
- _did Directory not found.
- _did2 e
- $iif($sock(ftp),sockclose ftp)
- $iif($sock(ftp2),sockclose ftp2)
- _did Was not connected to
- }
- }
- on *:sockwrite:ftp2:{
- if ($sockerr) {
- _did Export problem occurred.
- _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 load.. ( $+ %_p1 $+ ) - %_s
- if ($window(@ftp_upload)) {
- var %l = $line($v1,0) - 1
- rline -c2 $v1 $calc(%l +1) ++++ load.. ( $+ %_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
- }
- }