aIRC — File Browser
aIRCv0.8.69 / aIRCv0.8.69 / addons / ftp1.mrc
ftp1.mrc — 29.72 KB — Download this file
;/**********************************************************************
; *
; * aIRC
; * FTP Client file 1
; *
; **********************************************************************/
;
;
alias _ftp.addonver { return 2.0 }
alias _ftp.loadsetup {
unset %c.ftpcb.l
if ($_getsetup(ftp,monitor)) { .timerFTPCB 0 1 _ftp.cb }
else { .timerFTPCB off }
}
alias ftp {
_ftp.revisa
if ($lock(dll)) {
error.a DLL is locked
return
}
if ($1- == $null) {
ftpconf
_ftp.preguntacuenta
return
}
_getlocalip ftp $1-
if ($result) { return }
if ($1- isnum) {
if ($_list.get(ftpaccounts,$1) != $null) { _ftp.cuenta.conecta $1- }
else { error.a Account $1 was not configured }
return
}
var %ss,%l,%p,%ano,%dir,%pu,%s,%n = 1,%ds
%ss = $remove($1-,ftp://)
if ($numtok(%ss,64) > 1) {
%l = $gettok($gettok(%ss,1- [ $+ [ $calc($numtok(%ss,64) - 1) ] ] ,64),1,58)
%p = $gettok($gettok(%ss,1- [ $+ [ $calc($numtok(%ss,64) - 1) ] ] ,64),2,58)
}
if (%l == $null) {
%l = anonymous
%ano = 1
}
else { %ano = 0 }
if (%p == $null) { %p = $null }
%ss = $gettok(%ss,$numtok(%ss,64),64)
if ($gettok(%ss,2-,47) != $null) {
%dir = $ifmatch
if (/* !iswm %dir) { %dir = / $+ %dir }
}
%ss = $gettok(%ss,1,47)
if ($gettok(%ss,2,58)) { %pu = $ifmatch }
elseif ($gettok(%dir,2,58)) { %pu = $ifmatch }
else { %pu = 21 }
%dir = $gettok(%dir,1,58)
%ss = $gettok(%ss,1,58)
%s = $gettok($gettok(%ss,1,47),1,32)
if (%pu !isnum) { %pu = 21 }
if (%dir == $null) { var %dir }
while ($sock(ftp [ $+ [ %n ] ] )) { inc %n }
%ds = FTP $+ %n
if ($dialog(%ds) == $null) {
set -u %~ftpw $calc(($window(-1).w - 5) / $dbuw)
set -u %~ftph $calc(($window(-1).h - 100) / $dbuh)
dialog -dm %ds _ftpclient
}
else {
_ftp.reflocal %ds $iif(%c.ftp.dl,%c.ftp.dl,$getdir)
dialog -v %ds
unset %c.ftp.dl
}
_ftp.addlog.info %ds Connecting: %s %pu
sockopen %ds %s %pu
did -o %ds 2994 1 %s
did -o %ds 2994 2 %l
did -o %ds 2994 3 %p
did -o %ds 2994 4 %dir
did -o %ds 2994 5 $null
did -o %ds 2994 6 $null
did -o %ds 2994 7 0
did -o %ds 2994 8 0
did -o %ds 2994 9 %ano
did -o %ds 2994 10 $null
did -o %ds 2994 11 0
did -o %ds 2994 12 0
did -o %ds 2994 13 1
did -o %ds 2994 14 $null
did -o %ds 2994 15 1
did -o %ds 2994 16 $null
did -o %ds 2994 17 1
did -o %ds 2994 18 0
if (%ano) { %p = aIRC@ $+ $ip }
if (%dir == $null) { %dir = / }
if (%pu == 21) { _recent.add ftp 10 %ss $+ %dir $+ ? $+ %l $+ ? $+ $_crypt(%p) }
else { _recent.add ftp 10 %ss $+ : $+ %pu $+ %dir $+ ? $+ %l $+ ? $+ $_crypt(%p) }
}
ON ^*:HOTLINK:ftp?//?*:*:{
if (ftp://* iswm $1) && ($remove($1,ftp://) != $null) { return }
halt
}
ON ^*:HOTLINK:ftp.*:*:{
if ($remove($1,ftp.) != $null) { return }
halt
}
ON *:HOTLINK:ftp?//?*:*:{ ftp $1 }
ON *:HOTLINK:ftp.*:*:{ ftp $1 }
alias ftpmon {
if ($1- == $null) { info.a FTP Clipboard Monitor is $+ $iif($_getsetup(ftp,monitor),ON,OFF) }
if ($1- == on) {
if ($show) { info.a FTP Clipboard Monitor is now ON }
_setsetup ftp monitor 1
}
if ($1- == off) {
if ($show) { info.a FTP Clipboard Monitor is now OFF }
_setsetup ftp monitor 0
}
_ftp.loadsetup
}
alias _ftp.cb {
if ($strip($remove($cb,$cr,$lf)) == %c.ftpcb.l) { return }
%c.ftpcb.l = $strip($remove($cb,$cr,$lf))
if (ftp://* iswm %c.ftpcb.l) || (ftp.* iswm %c.ftpcb.l) {
if ($_getsetup(ftp,lastmonitor) == %c.ftpcb.l) { return }
_setsetup ftp lastmonitor %c.ftpcb.l
.timer 1 2 _setsetup ftp lastmonitor
ftp %c.ftpcb.l
}
}
alias ftpconf { _dialog -m conftp _simplelist }
alias _ftp.revisa {
if ($_getsetup(ftp,ver) == $null) {
_setsetup ftp ver $_ftp.addonver
._list.flush ftpaccounts
_list.add ftpaccounts DALnet FTP°ftp.dal.net°0°0°0°0°21
_list.add ftpaccounts C++ Users Journal°ftp.mfi.com°0°0°0°/pub/cuj°21
_list.add ftpaccounts C and C++ tutorials°ftp.swcp.com°0°0°0°/pub/users/dodrill/°21
_list.add ftpaccounts Linux Journal°ftp.ssc.com°0°0°0°/pub/lj°21
_list.add ftpaccounts Linux Online°ftp.linux.org°0°0°0°/pub°21
_list.add ftpaccounts Red Hat Linux°ftp.redhat.com°0°0°0°0°21
_list.add ftpaccounts Computer Emergency Response Team [CERT]°ftp.cert.org°0°0°0°/pub°21
_list.add ftpaccounts World Wibe Web Consortium°ftp.w3.org°0°0°0°0°21
_list.add ftpaccounts National Center for Supercomputing Applications [NCSA]°ftp.ncsa.uiuc.edu°0°0°0°0°21
_list.add ftpaccounts Sun Microsystems°ftp.sun.com°0°0°0°0°21
_list.add ftpaccounts SCO°ftp.sco.com°0°0°0°0°21
_list.add ftpaccounts Apple°ftp.apple.com°0°0°0°0°21
_list.add ftpaccounts Netscape°ftp.netscape.com°0°0°0°0°21
_list.add ftpaccounts Microsoft°ftp.microsoft.com°0°0°0°0°21
}
}
alias _ftp.unload {
if ($dialog(conftp)) || ($dialog(cuentaftp)) {
error.a Please close the Account Dialog before you unload the FTP Client
return 1
}
var %i = 1,%d
while ($dialog(%i) != $null) {
%d = $ifmatch
if (ftp* iswm %d) || (tftp* iswm %d) {
error.a Please close all FTP Dialogs before you unload the FTP Client
return 1
}
inc %i
}
.timerFTP* off
sockclose ftp*
sockclose ?ftp*
}
alias _ftp.mni {
var %l = $_recent.get(ftp,$1)
if (%l) {
if ($gettok(%l,2,63) == anonymous) { return ftp:// $+ $gettok(%l,1,63) }
if ($_decrypt($gettok(%l,3,63)) == $null) { return ftp:// $+ $gettok(%l,2,63) $+ @ $+ $gettok(%l,1,63) }
return ftp:// $+ $gettok(%l,2,63) $+ : $+ $str(*,$numtok($gettok(%l,3,63),32)) $+ @ $+ $gettok(%l,1,63)
}
}
alias _ftp.mn {
var %l = $_recent.get(ftp,$1)
ftp $gettok(%l,2,63) $+ : $+ $_decrypt($gettok(%l,3,63)) $+ @ $+ $gettok(%l,1,63)
}
alias -l _ftp.preswcheck {
if ($sock($1).status != active) { _ftp.addlog.error $1 This FTP session is closed }
elseif ($sock(G [ $+ [ $1 ] ] )) { _ftp.addlog.error $1 Downloading dirinfo... please wait }
elseif ($sock(D [ $+ [ $1 ] ] )) { _ftp.addlog.error $1 Downloading file... please wait }
elseif ($sock(U [ $+ [ $1 ] ] )) { _ftp.addlog.error $1 Uploading file... please wait }
else { return 0 }
return 1
}
alias _ftp.sw {
if ($_ftp.preswcheck($1)) { return }
else {
sockwrite -n $1 $2-
if ($2 == pass) { _ftp.addlog.command $1 $2 $str(*,$len($3-)) }
else { _ftp.addlog.command $1 $2- }
}
}
alias _ftp.metepass {
var %p = $_parameterpass($null,1,FTP Client [/ftp],1,$null,Password for account [ $2 ] on server [ $3 ] <CRLF>[This password will not be saved])
if ($dialog($1) == $null) { return }
sockwrite -n $1 PASS %p
_ftp.addlog.info $1 Sending Password..
_ftp.addlog.command $1 PASS $str(*,$len(%p))
}
alias _ftp.num {
if ($sockname) { return $remove($sockname,FTP,t,l,g,u,d,a,b,m) }
if (FTP* iswm $1) { return $remove($1,FTP) }
if ($dname != $null) { return $remove($dname,FTP,t) }
}
alias _ftp.nums { return FTP $+ $_ftp.num($1) }
alias _ftp.sr {
_ftp.addlog.reply $sockname $1-
if ($1 == 150) {
var %lftpsock = $did($sockname,2994,5)
if (%lftpsock) {
if ($round($gettok($gettok($2-,-1,40),1,41),0) > 0) { sockmark %lftpsock $puttok($sock(%lftpsock).mark,$round($gettok($gettok($2-,-1,40),1,41),0),4,9) }
did -o $sockname 2994 5 $null
}
}
elseif ($1 == 200) {
if (($2-4 == type set to) && ($remove($5,.) != i)) || (($2-3 == type is) && ((image !isin $4-) && (binary !isin $4-))) {
_ftp.sw $sockname TYPE I
_ftp.addlog.info $sockname You must not change the transfer mode, changing back to binary...
}
elseif ($2 == port) {
if ($did($sockname,2994,6) != $null) { _ftp.sw $sockname $ifmatch }
did -o $sockname 2994 6 $null
}
}
elseif ($1 == 213) {
var %lftpsock = $did($sockname,2994,5),%win = $replace(%lftpsock,l,t),%send
if ($did($sockname,2994,8) != $null) {
%send = $ifmatch
did -o $sockname 2994 8 $null
if ($did($sockname,2994,11)) && ($_sockmark(%lftpsock,7) == DFTP) && ($isfile($_sockmark(%lftpsock,1))) {
if ($file($_sockmark(%lftpsock,1)).size < $2) {
_ftp.sw $sockname REST $ifmatch
sockmark %lftpsock $puttok($sock(%lftpsock).mark,$calc($2 - $file($_sockmark(%lftpsock,1)).size),4,9)
did -o %win 1003 1 0 of $bytes($calc($2 - $file($_sockmark(%lftpsock,1)).size),b) bytes
}
else {
did -o $sockname 2994 6 $null
did -o $sockname 2994 8 $null
_ftp.addlog.error $sockname You already have that file
did -o %win 1004 1 You already have this file!
var %send
_ftp.sockflush $sockname
_ftp.sigue $sockname 0
}
}
else {
sockmark %lftpsock $puttok($sock(%lftpsock).mark,$2,4,9)
did -o %win 1003 1 0 of $bytes($2,b) bytes
}
did -a %win 1002 0 0 100
; TFTP
}
if (%send != $null) { _ftp.sw $sockname $ifmatch }
}
elseif ($1 == 220) {
if ($did($sockname,2994,9)) {
_ftp.addlog.info $sockname Logging as anonymous...
_ftp.sw $sockname USER anonymous
}
else {
_ftp.addlog.info $sockname Logging...
_ftp.sw $sockname USER $did($sockname,2994,2)
}
}
elseif ($1 == 226) {
_ftp.sockflush $sockname
_ftp.sigue $sockname 0
}
elseif ($1 == 227) {
var %wc,%tok,%ip,%port
%wc = *,*,*,*,*,*
%tok = $replace($remove($wildtok($1-,%wc,$wildtok($1-,%wc,0,32),32),:,[,],$chr(40),$chr(41),.),$chr(44),.)
%ip = $gettok(%tok,1-4,46)
%port = 0.0. $+ $gettok(%tok,5-,46)
%port = $longip(%port)
;;;
_ftp.addlog.info $sockname DEBUG: %ip %port
}
elseif ($1 == 230) {
; if (log isin $2-) {
_ftp.sw $sockname TYPE I
if ($did($sockname,2994,4) != $null) {
var %path = $ifmatch
if ($numtok($gettok(%path,-1,47),46) > 1 ) {
did -a $sockname 2250 _ftp.com $sockname GET %path
%path = $remove(%path,$gettok(%path,-1,47))
}
did -o $sockname 2994 4 $null
did -a $sockname 2250 _ftp.com $sockname CWD %path
}
_ftp.sw $sockname REST 69
; }
}
elseif ($1 == 250) { _ftp.sigue $sockname 0 }
elseif ($1 == 257) {
if (created !isin $gettok($1-,3-,34)) {
var %dir = $gettok($1-,2,34)
if (*/ !iswm %dir) { %dir = %dir $+ / }
_dialog.add1 $sockname 1020 %dir
did -o $sockname 1024 1 %dir
if ($did($sockname,2994,17)) { _ftp.com $sockname DIR }
did -o $sockname 2994 17 0
}
}
elseif ($1 == 331) {
if ($did($sockname,2994,9)) {
_ftp.addlog.info $sockname Sending Password...
_ftp.sw $sockname PASS aIRC@ $+ $ip
}
elseif ($did($sockname,2994,3) != $null) {
_ftp.addlog.info $sockname Sending Password...
_ftp.sw $sockname PASS $did($sockname,2994,3)
}
else { _ftp.metepass $sockname $did($sockname,2994,2) $did($sockname,2994,1) }
}
elseif ($1 == 350) {
if (destination isin $2-) || (rename isin $2-) {
if ($did($sockname,2994,10) != $null) { _ftp.sw $sockname RNTO $ifmatch }
did -o $sockname 2994 10 $null
}
elseif ($did($sockname,2994,13)) {
_ftp.addlog.info $sockname This server can resume broken downloads
did -o $sockname 2994 11 1
did -o $sockname 2994 13 0
_ftp.sw $sockname REST 0
_ftp.sigue $sockname 0
}
}
elseif ($1 == 426) {
_ftp.sockflush $sockname
_ftp.sigue $sockname 0
}
elseif ($istok(425 450 501 550 553,$1,32)) || (($1 == 500) && ($3 == port)) { _ftp.sigue $sockname 0 }
elseif ($1 == 504) {
_ftp.addlog.info $sockname This server CANNOT resume broken downloads...
did -o $sockname 2994 13 0
_ftp.sigue $sockname 0
}
elseif ($1 == 500) && ($remove($2,',",:) == size) {
if ($did($sockname,2994,8) != $null) {
var %lftpsock = $did($sockname,2994,5)
_ftp.sw $sockname $ifmatch
sockmark %lftpsock $puttok($sock(%lftpsock).mark,0,4,9)
did -o $replace(%lftpsock,l,t) 1003 1 0 bytes
; TFTP
}
did -o $sockname 2994 8 $null
}
}
alias _ftp.com {
if ($_ftp.preswcheck($1)) { return }
elseif ($2 == cd) { _ftp.sw $1 CWD $3- }
elseif (cd..* iswm $2-) || (cd/* iswm $2-) || (cd\* iswm $2-) { _ftp.sw $1 CWD $right($2-,-2) }
elseif ($2 == rd) { _ftp.sw $1 RMD $3- }
elseif ($2 == md) { _ftp.sw $1 MKD $3- }
elseif ($2 == del) { _ftp.sw $1 DELE $3- }
;;; This is from the days when this addon worked in a custom window!!! elseif ($2 == cls) { clear }
elseif ($2 == ren) || ($2 == rename) {
var %esdir = %c.ftpren.esdir
unset %c.ftpren.esdir
did -o $1 2994 10 $_parameter($null,1,FTP Client [/ftp],normal,$3-,New name for remote [ $iif(%esdir,dir,file) ] :<CRLF> [ $3- ] <CRLF>To move it write a dir)
_ftp.sw $1 RNFR $3-
}
elseif ($2 == dir) || ($2 == ls) || ($2 == list) {
var %afterport
if ($3- != $null) { %afterport = LIST $3- }
elseif ($did($1,1024,2) != $null) { %afterport = LIST $ifmatch }
else { %afterport = LIST }
did -o $1 2994 6 %afterport
if (1) {
var %sock = L $+ $1,%p
_ftp.sockflush $1
socklisten %sock
sockmark %sock $ticks
%p = $ip $+ . $+ $gettok($longip($sock(%sock).port),3-4,46)
%p = $replace(%p,.,$chr(44))
_ftp.sw $1 PORT %p
}
else { _ftp.sw $1 PASV }
}
elseif ($2 == get) || ($2 == retr) { var %local = $did($1,1014,1) $+ $gettok($3-,-1,47),%tmp = $_ftp.downloadfile($1,$3-,%local,$null) }
elseif ($2 == upl) || ($2 == stor) { var %remote = $did($1,1024,1) $+ $gettok($3-,-1,$asc(\)),%tmp = $_ftp.uploadfile($1,$3-,%remote,$null) }
else { _ftp.sw $1 $upper($2) $3- }
if ($istok(cwd cdup cd rd md del ren rename,$2,32)) || (cd..* iswm $2-) || (cd/* iswm $2-) || (cd\* iswm $2-) { did -o $1 2994 15 1 }
}
alias _ftp.sigue {
var %t,%d = $1,%l = $2,%closetransfer = 0,%wc = ? $+ %d
if ($dialog(%d) == $null) || ($sock(%wc,0)) { return }
sockclose %wc
if ($did(%d,2250,1) != $null) {
%t = $ifmatch
if ($gettok(%t,3,32) != get) && ($gettok(%t,3,32) != upl) { %closetransfer = 1 }
did -d %d 2250 1
%t
}
elseif ($did(%d,2994,18)) && ($did(%d,1030,2) != $null) {
var %line = $ifmatch,%icon = $gettok(%line,2,32),%from = $gettok($gettok(%line,1,9),3-,32),%target = $gettok($gettok(%line,2,9),2-,32),%size = $gettok($gettok(%line,3,9),2,32),%tmp
; uploads
if (%icon == 1) { %tmp = $_ftp.uploadfile(%d,%from,%target,%size) }
; downloads
else { %tmp = $_ftp.downloadfile(%d,%from,%target,%size) }
did -o %d 2994 17 1
did -d %d 1030 2
}
else {
%closetransfer = 1
if ($did(%d,2994,15)) || ($did(%d,2994,16) != $did(%d,1024,1)) || ($did(%d,2994,16) == $null) {
did -o %d 2994 17 1
_ftp.com %d PWD
}
did -o %d 2994 15 0
did -o %d 2994 18 0
}
if (%closetransfer) && ($dialog(T [ $+ [ %d ] ] )) { .timer $+ $ifmatch -o 1 1 _dialog-x $ifmatch }
}
alias -l _ftp.uploadfile {
var %d = $1,%local = $2,%remote = $3,%size = $4,%win,%sock,%fport
if (%local == $null) { %local = $dir="Choose File:" }
if ($isfile(%local) == $false) { _ftp.status.error %d File not found: ' $+ %local $+ ' }
else {
did -o %d 2994 15 1
%size = $file(%local).size
%win = T $+ %d
%sock = L $+ %d
sockclose %sock
socklisten %sock
sockmark %sock %local $+ $chr(9) $+ %win $+ $chr(9) $+ $ticks $+ $chr(9) $+ %size $+ $chr(9) $+ %sock $+ $chr(9) $+ 0 $+ $chr(9) $+ UFTP
%fport = $ip $+ . $+ $gettok($longip($sock(%sock).port),3-4,46)
%fport = $replace(%fport,.,$chr(44))
_ftp.sw %d PORT %fport
did -o %d 2994 6 STOR $gettok(%local,-1,92)
.timer $+ %win off
if ($dialog(%win) == $null) {
dialog -v %d
dialog -am %win _ftp.transfer
}
_ftp.actransf %win 0 %local
}
}
alias -l _ftp.downloadfile {
var %d = $1,%remote = $2,%local = $3,%size = $4,%a,%w,%p,%200,%port
%a = $gettok(%local,-1,47)
%w = T $+ %d
%p = L $+ %d
sockclose %p
socklisten %p
sockmark %p %local $+ $chr(9) $+ %w $+ $chr(9) $+ $ticks $+ $chr(9) $+ 0 $+ $chr(9) $+ 1 $+ $chr(9) $+ 0 $+ $chr(9) $+ DFTP
did -o %d 2994 5 %p
%p = $ip $+ . $+ $gettok($longip($sock(%p).port),3-4,46)
%p = $replace(%p,.,$chr(44))
%200 = RETR %remote
%port = PORT %p
_ftp.sw %d SIZE %remote
did -o %d 2994 8 %port
did -o %d 2994 6 %200
.timer $+ %w off
if ($dialog(%w) == $null) {
dialog -v %d
dialog -am %w _ftp.transfer
}
_ftp.actransf %w 1 %a
}
alias _ftp.actransf {
did -r $1 1001,1003,1004
did -a $1 1002 0 0 100
did -o $1 1004 1 Waiting connection...
dialog -t $1 FTP $+ $remove($1,TFTP) - $iif($2,Download,Upload)
did -o $1 1001 1 $nopath($3-)
}
alias _ftp.upl {
var %sock = $1,%d
tokenize 9 $sock(%sock).mark
var %cps = $calc($6 / (($ticks - $3) / 1000)),%lcps = $_sckbpsw(%cps)
if ($6 >= $4) {
%d = $_ftp.nums
did -o $2 1003 1 $bytes($6,b) of $bytes($4,b) bytes - %lcps
did -a $2 1002 100 0 100
did -o $2 1004 1 Completed in $_duratio($calc(($ticks - $3) / 1000),2)
_ftp.addlog.info %d Transfered $6 bytes in $_duratio($calc(($ticks - $3) / 1000),2) ( $+ %lcps $+ )
_ftp.transferlocallyforcedthisisabadidea %d
}
else {
var %tmp = 4096
elseif (%tmp < 512) { %tmp = 512 }
bread " $+ $1 $+ " $6 %tmp &ftp.upl
sockwrite %sock &ftp.upl
sockmark %sock $puttok($sock(%sock).mark,$calc($6 + $bvar(&ftp.upl,0)),6,9)
did -o $2 1003 1 $bytes($6,b) of $bytes($4,b) bytes - %lcps
did -a $2 1002 $6 0 $4
did -o $2 1004 1 Remaining: $_duratio($calc(($4 - $6) / ($6 / (($ticks - $3) / 1000))),2)
}
}
alias _ftp.preguntacuenta {
_dialog -ma cuentaftp cuentaftp
_ftp.cuentainit $gettok($2-,2-,32)
}
alias _ftp.cuenta.revisaedit {
if ($_text($did(cuentaftp,10)) == $null) || ($chr(176) isin $did(cuentaftp,10)) || ($_ishost($did(cuentaftp,20)) == $null) { goto no }
if ($_text($did(cuentaftp,30)) != $null) && (: isin $did(cuentaftp,30)) { goto no }
if ($_text($did(cuentaftp,40)) != $null) && (: isin $did(cuentaftp,40)) { goto no }
if ($_text($did(cuentaftp,40)) != $null) && ($_text($did(cuentaftp,30)) == $null) { goto no }
if ($did(cuentaftp,70) != $null) && ($did(cuentaftp,70) !isnum) { goto no }
if ($_text($did(cuentaftp,50)) != $null) && ($isdir($did(cuentaftp,50)) == $false) { goto no }
did -e cuentaftp 150
did -e cuentaftp 151
return
:no
did -b cuentaftp 150
did -b cuentaftp 151
}
alias _ftp.cuentainit {
var %i = 1,%c
did -o cuentaftp 70 1 21
did -r cuentaftp 10,20,30,40,50,60
if ($1- != $null) {
while ($_list.get(ftpaccounts,%i)) {
%c = $ifmatch
if ($gettok(%c,1,176) == $1-) {
did -o cuentaftp 10 1 $1-
if ($gettok(%c,2,176)) { did -o cuentaftp 20 1 $ifmatch }
if ($gettok(%c,3,176)) { did -o cuentaftp 30 1 $ifmatch }
if ($gettok(%c,4,176)) { did -o cuentaftp 40 1 $_decrypt($ifmatch) }
if ($gettok(%c,5,176)) { did -o cuentaftp 50 1 $ifmatch }
if ($gettok(%c,6,176)) { did -o cuentaftp 60 1 $ifmatch }
if ($gettok(%c,7,176)) { did -o cuentaftp 70 1 $ifmatch }
did -m cuentaftp 10
break
}
inc %i
}
}
else { did -n cuentaftp 10 }
_ftp.cuenta.revisaedit cuentaftp
}
alias _ftp.cuenta.conecta {
var %lp
tokenize 176 $_list.get(ftpaccounts,$round($1,0))
if ($5) { %c.ftp.dl = $ifmatch }
if ($3) {
%lp = $ifmatch
if ($4) && ($_decrypt($4)) { %lp = %lp $+ : $+ $ifmatch }
%lp = %lp $+ @
}
if ($dialog(conftp)) && ($_getsetup(ftp,closelist)) { dialog -x conftp }
if ($6) { ftp %lp $+ $2 $+ : $+ $7 $+ $6 }
else { ftp %lp $+ $2 $+ : $+ $7 }
}
alias _ftp.cuenta.graba {
var %dr,%tempo = $_list.tokadd(ftpaccounts,1,176,$did(10))
if ($did(60) != $null) {
if (/* iswm $did(60)) { %dr = $did(60) }
else { %dr = / $+ $did(60) }
}
else { %dr = 0 }
write -l $+ %tempo " $+ $_list.file(ftpaccounts) $+ " $_text($did(10)) $+ ° $+ $iif($did(20),$did(20),0) $+ ° $+ $iif($did(30),$did(30),0) $+ ° $+ $iif($did(40),$_crypt($did(40)),0) $+ ° $+ $iif($did(50),$did(50),0) $+ ° $+ %dr $+ ° $+ $iif($did(70),$did(70),0)
_list.hash ftpaccounts
_dialog.loadlist conftp 2 1 176 ftpaccounts 1 1
}
dialog _ftp.transfer {
size -1 -1 125 42
option dbu
text "",1001,2 2 120 8,center
text "",1002,2 12 120 8,center
text "",1003,2 22 120 8,center
text "",1004,2 32 120 8,center
button "&Cancel",1008,48 45 30 15,cancel
}
ON *:DIALOG:TFTP*:init:0:{
_mdx.init $_icofile(ftp.ico,$scriptdir)
_mdx.SetControlMDX ctl_gen.mdx $dname 1002 ProgressBar smooth
_mdx.SetFont $dname 1001,1002,1003,1004 + 13 400 Tahoma
did -v $dname 1001
}
ON *:DIALOG:TFTP*:sclick:1008:{
var %d = $replace($dname,TFTP,FTP)
sockclose ? $+ %d
_ftp.com %d ABOR
did -o %d 2994 18 0
}
ON *:DIALOG:conftp:*:*:{
var %sclick
if ($devent == dclick) && ($did == 2) && ($did($dname,2,1).sel != $null) { _ftp.cuenta.conecta $did($dname,2,$did($dname,2,1).sel).text }
elseif ($devent == sclick) {
var %sclick = $did($dname,2,1).sel
if ($did == 101) { _ftp.preguntacuenta }
elseif ($did == 102) && (%sclick != $null) {
_list.tokdel ftpaccounts 1 176 $gettok($did($dname,2,%sclick).text,2-,32)
_dialog.loadlist conftp 2 1 176 ftpaccounts 1 1
if ($did(2,%sclick) != $null) { did -c $dname 2 %sclick }
}
elseif ($did == 103) {
if (%sclick != $null) { _ftp.preguntacuenta %sclick $did($dname,2,%sclick).text }
}
elseif ($did == 104) && (%sclick != $null) && (%sclick > 1) {
_list.moveup ftpaccounts %sclick
_dialog.loadlist conftp 2 1 176 ftpaccounts 1 1
did -c $dname 2 $calc(%sclick - 1)
}
elseif ($did == 105) && (%sclick != $null) && (%sclick < $did($dname,2,1).lines) {
_list.movedown ftpaccounts %sclick
_dialog.loadlist conftp 2 1 176 ftpaccounts 1 1
did -c $dname 2 $calc(%sclick + 1)
}
elseif ($did == 106) {
if (%sclick != $null) { _ftp.cuenta.conecta $did($dname,2,%sclick).text }
}
elseif ($did == 201) || ($did == 202) { showmirc -s }
elseif ($did == 220) { _setsetup ftp closelist $did(220).state }
}
elseif ($devent == init) {
_mdx.init $_icofile(ftp.ico,$scriptdir)
_dialog.loadlist conftp 2 1 176 ftpaccounts 1 1
did -h $dname 201
did -o $dname 202 1 Close
dialog -t $dname FTP Accounts
did -h $dname 1
did -v $dname 2
did -o $dname 101 1 &New...
did -ov $dname 103 1 &Edit...
did -ov $dname 104 1 &Up
did -ov $dname 105 1 &Down
did -ov $dname 106 1 &Connect
did -f $dname 201
did -ov $dname 220 1 Close this list when Connecting
if ($_getsetup(ftp,closelist)) { did -c $dname 220 }
}
}
dialog cuentaftp {
size 1 1 250 77
option dbu
text "&Account Name:",11,2 5 100 8
edit "",10,2 12 100 11,autohs
text "&Server:",21,2 25 100 8
edit "",20,2 32 100 11,autohs
text "&Login:",31,2 50 48 8
edit "",30,2 58 48 11,autohs
text "&Password:",41,52 50 48 8
edit "",40,52 58 48 11,pass autohs
text "&Initial Local Directory:",51,105 5 100 8
edit "",50,105 12 100 11,autohs
button "...",52,208 12 13 11
text "Initial &Remote Directory:",61,105 25 100 8
edit "",60,105 32 100 11,autohs
text "Por&t:",71,225 5 20 8
edit "",70,225 12 20 11,autohs
button "&Connect",150,142 60 30 15
button "&OK",151,178 60 30 15,ok
button "&Cancel",152,212 60 30 15,cancel
}
alias _ftp.cuenta.dirlocal {
var %d = $sdir="Initial Local Directory:" $iif($2- != $null,$2-,$getdir)
if ($dialog($1) == $null) { return }
elseif (%d != $null) && (%d != $2-) { did -o $1 50 1 %d }
dialog -v $1
}
ON *:DIALOG:cuentaftp:init:0:{
_mdx.init $_icofile(ftp.ico,$scriptdir)
dialog -t cuentaftp FTP Account
}
ON *:DIALOG:cuentaftp:sclick:52:{ _ftp.cuenta.dirlocal $dname $did(50,1) }
ON *:DIALOG:cuentaftp:sclick:150:{
_ftp.cuenta.graba
var %i = 1,%c
while ($_list.get(ftpaccounts,%i)) {
%c = $ifmatch
if ($gettok(%c,1,176) == $did(10)) {
dialog -x $dname
_ftp.cuenta.conecta %i
return
}
inc %i
}
}
ON *:DIALOG:cuentaftp:sclick:151:{
if ($did(150).enabled) { _ftp.cuenta.graba }
else { halt }
}
ON *:DIALOG:cuentaftp:edit:*:{ _ftp.cuenta.revisaedit $dname }
ON *:SOCKOPEN:FTP*:{
if ($sockerr) {
_ftp.addlog.error $sockname FTP session $did($sockname,2994,1) $+ : $_sockerr
return
}
if ($dialog($sockname) == $null) { dialog -m FTP $+ $_ftp.num ftp }
did -o $sockname 1000 2 +a 2 Disconnect $+ $chr(9) $+ Disconnects from the FTP Server
_ftp.setitle $sockname $iif($did($sockname,2994,9),anonymous,$did($sockname,2994,2)) in $did($sockname,2994,1)
_ftp.addlog.info $sockname Connection established $did($sockname,2994,1) port $sock($sockname).port
_ftp.antiidle $sockname 0
}
alias _ftp.antiidle {
if ($sock($1).status == active) {
if ($2) {
sockwrite -n $1 NOOP
_ftp.addlog.command $1 NOOP
}
.timer $+ $1 $+ _ANTIIDLE -o 1 180 _ftp.antiidle $1 1
}
}
ON *:SOCKWRITE:FTP*:{
if ($sockerr) { _ftp.addlog.error $sockname FTP session $did($sockname,2994,1) $+ : $_sockerr }
}
ON *:SOCKREAD:FTP*:{
if ($sockerr) {
_ftp.addlog.error $sockname FTP session $did($sockname,2994,1) $+ : $_sockerr
return
}
var %sr
sockread %sr
while ($sockbr) {
if (%sr != $null) { _ftp.sr %sr }
if ($sockname == $null) { break }
sockread %sr
}
}
ON *:SOCKCLOSE:FTP*:{ _ftp.disconnect $sockname }
ON *:SOCKLISTEN:LFTP*:{
if ($_sockmark(2)) {
did -o $_sockmark(2) 1004 1 Connected! Beginning transmission...
if ($_sockmark(7) == DFTP) {
if ($_sockmark(5)) && ($isfile($_sockmark(1))) {
.remove " $+ $_sockmark(1) $+ "
sockmark $sockname $puttok($sock($sockname).mark,0,5,9)
}
sockaccept $replace($sockname,LFTP,DFTP)
sockmark $replace($sockname,LFTP,DFTP) $puttok($sock($sockname).mark,$ticks,3,9)
}
elseif ($_sockmark(7) == UFTP) {
sockaccept $replace($sockname,LFTP,UFTP)
sockmark $replace($sockname,LFTP,UFTP) $puttok($sock($sockname).mark,$ticks,3,9)
_ftp.upl $replace($sockname,LFTP,UFTP)
}
}
else {
var %d = $_ftp.nums
did -r %d 1021,1025,1026,2251
did -o %d 1024 3 0
did -o %d 1024 5 0
did -i %d 1022 2 +p 0 Gathering dir info... 0 bytes
did -o %d 2994 16 $did(%d,1024,1)
sockaccept $replace($sockname,LFTP,GFTP)
sockmark $replace($sockname,LFTP,GFTP) $ticks
}
sockclose $sockname
}
ON *:SOCKWRITE:GFTP*:{
if ($sockerr) {
error.a FTP Dir connection: $_sockerr
_ftp._refremote.ref $_ftp.nums
}
}
ON *:SOCKREAD:GFTP*:{
if ($sockerr) {
error.a FTP Dir connection: $_sockerr
_ftp._refremote.ref $_ftp.nums
return
}
var %sr,%d = $remove($sockname,G)
sockread %sr
while ($sockbr) {
if (%sr != $null) { _ftp.gftp.sr %sr }
if ($sockname == $null) { break }
sockread %sr
}
if ($sock($sockname).rcvd) { did -i %d 1022 2 +p 0 Gathering dir info... $bytes($ifmatch,b) bytes }
}
ON *:SOCKCLOSE:GFTP*:{
var %sr = $calc(($ticks - $sock($sockname).mark) / 1000)
_ftp.addlog.info $_ftp.nums $sock($sockname).rcvd bytes transfered in $_duratio(%sr,2) ( $+ $_sckbpsw($calc($sock($sockname).rcvd / %sr)) $+ )
_ftp._refremote.ref $_ftp.nums
}
ON *:SOCKWRITE:DFTP*:{
if ($sockerr) { did -o $_sockmark(2) 1004 1 ERROR - Connection Closed }
}
ON *:SOCKREAD:DFTP*:{
tokenize 9 $sock($sockname).mark
if ($sockerr) {
did -o $2 1004 1 ERROR - Connection Closed
return
}
sockread &t.dftp.sr
bwrite " $+ $1 $+ " -1 &t.dftp.sr
var %curr = $sock($sockname).rcvd,%total,%cps = $calc(%curr / (($ticks - $3) / 1000)),%lcps = $_sckbpsw(%cps)
if ($4) {
%total = $ifmatch
if (%curr > %total) { %curr = %total }
did -o $2 1003 1 $bytes(%curr,b) of $bytes(%total,b) bytes - %lcps
did -a $2 1002 %curr 0 %total
did -o $2 1004 1 Remaining: $_duratio($calc((%total - %curr) / (%curr / (($ticks - $3) / 1000))),2)
}
else { did -o $2 1003 1 %curr bytes - %lcps }
}
ON *:SOCKCLOSE:DFTP*:{
tokenize 9 $sock($sockname).mark
var %d = $_ftp.nums,%tmp
if ($sock($sockname).rcvd >= $4) {
var %total,%cps = $calc($sock($sockname).rcvd / (($ticks - $3) / 1000)),%lcps = $_sckbpsw(%cps)
_ftp.reflocal %d $did(%d,1014,1)
if ($4) { %total = $ifmatch }
else { %total = $sock($sockname).rcvd }
did -a $2 1002 100 0 100
did -o $2 1003 1 $bytes($sock($sockname).rcvd,b) of $bytes(%total,b) bytes - %lcps
did -o $2 1004 1 Completed in: $_duratio($calc(($ticks - $3) / 1000),2)
_recent.add files 10 $_fixfilename($1)
_ftp.addlog.info %d $sock($sockname).rcvd bytes transfered in $_duratio($calc(($ticks - $3) / 1000),2) ( $+ %lcps $+ )
}
else {
did -o $2 1004 1 ERROR - Connection closed
_ftp.addlog.error %d Transfer incomplete: ' $+ $nopath($1) $+ '
}
_ftp.transferlocallyforcedthisisabadidea %d
}
ON *:SOCKWRITE:UFTP*:{
if ($sockerr) {
did -o $_sockmark(2) 1004 1 ERROR - Connection closed
_ftp.transferlocallyforcedthisisabadidea $_ftp.nums
return
}
_ftp.upl $sockname
}
ON *:SOCKCLOSE:UFTP*:{
did -o $_sockmark(2) 1004 1 ERROR - Connection closed
_ftp.transferlocallyforcedthisisabadidea $_ftp.nums
}
alias _ftp.addlog.text {
if ($did($1,1040).lines >= 600) { did -d $1 1040 1 }
did -a $1 1040 $2- $+ $crlf
}
alias _ftp.addlog.command { _ftp.addlog.text $1 Cmd> $+ $2- }
alias _ftp.addlog.reply { _ftp.addlog.text $1 $+ $2- }
alias _ftp.addlog.info { _ftp.addlog.text $1 Status> $+ $2- }
alias _ftp.addlog.error { _ftp.addlog.text $1 ERROR> $+ $2- }
alias _ftp.status.info { did -i $1 2992 2 +p 0 $2- }
alias _ftp.status.error { did -i $1 2992 2 +p 0 $2- }
alias _ftp.sockflush { sockclose ? $+ $_ftp.nums($1) }
alias _ftp.transferlocallyforcedthisisabadidea {
_ftp.sockflush $1
return
_ftp.sigue $1 1
}