aIRC — File Browser
aIRCv0.8.69 / aIRCv0.8.69 / addons / ftp2.mrc
ftp2.mrc — 36.07 KB — Download this file
;/**********************************************************************
; *
; * aIRC
; * FTP Client file 2
; *
; **********************************************************************/
;
dialog _ftpclient {
size -1 -1 %~ftpw %~ftph
title "aIRC FTP Client"
option dbu
list 1000,1 1 319 12,size
; box "",1001,159 12 1 178
combo 1010,1 15 158 200,drop edit
; visible list
list 1011,1 25 158 100,size extsel
; statusbar1
list 1012,1 125 156 8,size
; statusbar2
list 1013,1 133 156 8,size hide
; 1=currentdir 2=filter 3=totalbytes 4=sortflags 5=totalfiles
list 1014,1 133 156 8,size hide
; dirs
list 1015,1 133 156 8,size hide sort
; files
list 1016,1 133 156 8,size hide
combo 1020,161 15 158 200,drop edit
list 1021,161 25 158 100,size extsel
list 1022,162 125 156 8,size
list 1023,162 133 156 8,size hide
list 1024,162 133 156 8,size hide
list 1025,162 133 156 8,size hide sort
list 1026,162 133 156 8,size hide
list 1030,1 136 158 57,size
edit "",1040,161 136 158 57,autohs multi read vsbar hsbar
; menu "FTP",2700
; item "blah",2701
button "ok",2990,-20 -20 1 1,ok hide
button "cancel",2991,-20 -20 1 1,cancel hide
list 2992,1 194 319 12,size
button "MDX Positioner",2993,10 10 10 10,hide
; 1= server
; 2= login
; 3= password
; 4= /dir/file (initial)
; 5= LFTP sockname
; 6= action after PORT|PASV [LIST...|RETR...|STOR...]
; 7= useless
; 8= PORT after SIZE
; 9= anonymous
; 10= new filename
; 11= server supports RETR (resuming)
; 12= server supports SIZE (get filesize)
; 13= logged=0
; 14= currlist
; 15= refresh dirs after actions...
; 16= last listed directory
; 17= Waiting PWD reply for LIST
; 18= transfering queue
list 2994,999 999 999 999,hide
; oldqueue:
list 2250,1 136 156 57,size hide
; remote directory:
list 2251,999 999 999 999,hide
}
ON *:DIALOG:ftp*:sclick:2993:{
if ($istok(size minimize maximize restore,$gettok($did($dname,$did),1,32),32)) {
.timer $+ $dname $+ _resizedialog -mo 1 50 _ftp.resizedialog $dname
;;; _ftp.resizedialog $dname
}
}
alias _ftp.resizedialog {
var %dname = $1
if ($dialog(%dname) == $null) { return }
var %dw = $dialog(%dname).cw,%dh = $dialog(%dname).ch,%width = $calc((%dw - 2 * $dbuw ^ 2) / 2),%wwidth = %dw - 1 * $dbuw ^ 2,%row5 = $calc(%dh - 6 * $dbuh ^ 2),%col2 = $calc(2 + %dw / 2),%height2 = %dh / 2,%row3 = $calc(%height2 + 25 * $dbuh),%row4 = $calc(%row3 + 9 * $dbuh),%height4 = %row5 - %row4
_mdx.MoveControl %dname 1010 * * %width *
_mdx.MoveControl %dname 1020 %col2 * %width *
_mdx.MoveControl %dname 1011 * * %width %height2
_mdx.MoveControl %dname 1021 %col2 * %width %height2
_mdx.MoveControl %dname 1012 * %row3 %width *
_mdx.MoveControl %dname 1022 %col2 %row3 %width *
_mdx.MoveControl %dname 1030 * %row4 %width %height4
_mdx.MoveControl %dname 2250 * %row4 %width %height4
_mdx.MoveControl %dname 1040 %col2 %row4 %width %height4
_mdx.MoveControl %dname 1000 * * %wwidth *
_mdx.MoveControl %dname 2992 * %row5 %wwidth *
}
ON *:DIALOG:ftp*:init:0:{
_mdx.init $_icofile(ftp.ico,$scriptdir) title border sysmenu minbox
_mdx.SetControlMDX dialog.mdx $dname 2993 positioner maxbox minbox size
_mdx.SetControlMDX bars.mdx $dname 2992 StatusBar
_mdx.SetControlMDX bars.mdx $dname 1012 StatusBar
_mdx.SetControlMDX bars.mdx $dname 1022 StatusBar
_mdx.SetBorderStyle $dname 1012
_mdx.SetBorderStyle $dname 1022
_mdx.SetControlMDX bars.mdx $dname 1000 ToolBar arrows flat wrap noresize list
_mdx.SetBorderStyle $dname 1000
_mdx.SetBorderStyle $dname 1010
_mdx.SetBorderStyle $dname 1020
_mdx.SetBorderStyle $dname 1011 border
_mdx.SetBorderStyle $dname 1021 border
_mdx.SetBorderStyle $dname 1030 border
_mdx.SetBorderStyle $dname 1040 border
did -o $dname 1014,1024 1 $null
did -o $dname 1014,1024 2 $null
did -o $dname 1014,1024 3 0
did -o $dname 1014,1024 4 te
did -o $dname 1014,1024 5 0
var %9+0 = $chr(9) $+ +l 0,%9r0 = $chr(9) $+ +r 0
_mdx.SetControlMDX views.mdx $dname 1011 ListView report rowselect showsel nosortheader autoarrange
did -i $dname 1011 1 header $_mdx.fixtablengths(80,40) + 0 Name $+ %9r0 Size
_mdx.SetControlMDX views.mdx $dname 1021 ListView report rowselect showsel nosortheader autoarrange
did -i $dname 1021 1 header $_mdx.fixtablengths(80,40,54,36,36,36,36) + 0 Name $+ %9r0 Size $+ %9+0 Date $+ %9+0 Attrib $+ %9+0 Owner $+ %9+0 Group $+ %9+0 Comment
_mdx.SetControlMDX views.mdx $dname 1030 ListView report rowselect showsel nosortheader autoarrange
did -i $dname 1030 1 header $_mdx.fixtablengths(80,80,36,150) + 0 From $+ %9+0 Target $+ %9r0 Size $+ %9+0 Server
did -i $dname 1011,1021 1 seticon 0 $_icofile(cdup.ico)
did -i $dname 1011,1021 1 seticon 0 $_icofile(folder.ico)
did -i $dname 1011,1021 1 seticon 0 $_icofile(file.ico)
did -i $dname 1011,1021 1 seticon 0 $_icofile(drivefloppy.ico)
did -i $dname 1011,1021 1 seticon 0 $_icofile(drivehard.ico)
did -i $dname 1011,1021 1 seticon 0 $_icofile(drivecd.ico)
did -i $dname 1000 1 bmpsize 16 16
did -i $dname 1000 1 setimage 0 icon small 3, $+ $mircexe
did -i $dname 1000 1 setimage 0 icon small 4, $+ $mircexe
did -i $dname 1000 1 setimage 0 icon small $_icofile(stop.ico)
did -i $dname 1000 1 setimage 0 icon small 9, $+ $mircexe
did -i $dname 1000 1 setimage 0 icon small 7, $+ $mircexe
did -i $dname 1000 1 setimage 0 icon small 8, $+ $mircexe
did -i $dname 1000 1 setimage 0 icon small $_icofile(dtwindow_Trffc10a.ico)
did -i $dname 1000 1 setimage 0 icon small $_icofile(folder.ico)
did -i $dname 1000 1 setimage 0 icon small $_icofile(rename.ico)
did -i $dname 1000 1 setimage 0 icon small $_icofile(remove.ico)
var %atb = did -a $dname 1000
%atb +a 1 Connect $+ $chr(9) $+ Connect to a FTP Server
%atb -
%atb +a 3 Stop $+ $chr(9) $+ Stop Current Operation
%atb -
%atb +a 4 Refresh $+ $chr(9) $+ Refresh Folder
%atb -
%atb +a 5 Send $+ $chr(9) $+ Add File or Folder to the Send Queue
%atb +a 6 Receive $+ $chr(9) $+ Add File or Folder to the Get Queue
%atb +a 7 Start $+ $chr(9) $+ Transfer Files in Queue
%atb -
%atb +a 8 New Folder $+ $chr(9) $+ Create New Folder
%atb +a 9 Rename $+ $chr(9) $+ Rename File or Folder
%atb +a 10 Delete $+ $chr(9) $+ Delete File or Folder
did -i $dname 1030 1 seticon 0 7, $+ $mircexe
did -i $dname 1030 1 seticon 0 8, $+ $mircexe
_mdx.SetFont $dname 1000,1010,1011,1012,1020,1021,1022,1030,1040 + 13 400 Tahoma
did -i $dname 1012,1022 1 separts -1
did -i $dname 1012,1022 2 +p 0 Waiting...
_ftp.reflocal $dname $getdir
_ftp.resizedialog $dname
did -f $dname 1011
}
ON *:DIALOG:ftp*:sclick:2990:{
var %text1 = $did($dname,1010).text,%text2 = $did($dname,1020).text
if (%text1 != $null) && (%text1 != $did($dname,1014,1)) { _ftp.reflocal $dname %text1 }
if (%text2 != $null) && (%text2 != $did($dname,1024,1)) { _ftp.com $dname CWD %text2 }
halt
}
ON *:DIALOG:ftp*:sclick:1000:{
var %button = $did($dname,1000).sel,%remote = 0,%lor = local,%com
if ($istok(4 8 9 10,%button,32)) || ($did($dname,2994,14) == 1021) { var %remote = 1,%lor = remote }
if (%button != 2) && (%remote) && ($_ftp.remote.disconnected) { return }
if (%button == 2) {
if ($gettok($gettok($did($dname,1000,2),1,9),3,32) == connect) {
var %string
if ($did($dname,2994,9)) { %string = ftp:// }
else { %string = ftp:// $+ $did($dname,2994,2) $+ @ $+ $did($dname,2994,3) $+ : }
%string = %string $+ $did($dname,2994,1) $+ $did($dname,1024,1)
ftp %string
_ftp.addlog.info $dname Connecting to $did($dname,2994,1)
}
else { _ftp.disconnect $dname }
}
elseif (%button == 4) {
%com = _ftp.com $dname ABOR
sockclose ? $+ $dname
_dialog-x T $+ $dname
did -o $dname 2994 18 0
}
elseif (%button == 6) { %com = _ftp. $+ %lor $+ .refresh }
elseif (%button == 8) { _ftp.local.transfer }
elseif (%button == 9) { _ftp.remote.transfer }
elseif (%button == 10) { _ftp.queue.start }
elseif (%button == 12) { %com = _ftp. $+ %lor $+ .mkdir }
elseif (%button == 13) { %com = _ftp. $+ %lor $+ .ren }
elseif (%button == 14) { %com = _ftp. $+ %lor $+ .del }
if (%com != $null) { %com }
}
ON *:DIALOG:ftp*:sclick:1010:{
if ($did($dname,1010,$did($dname,1010,1).sel) != $did($dname,1014,1)) { _ftp.reflocal $dname $ifmatch }
}
ON *:DIALOG:ftp*:sclick:1020:{
if ($did($dname,1020,$did($dname,1020,1).sel) != $did($dname,1024,1)) { _ftp.com $dname CWD $ifmatch }
}
ON *:DIALOG:ftp*:sclick:1011:{
var %d = $dname,%header = $did(%d,1011,1),%lastevent = $gettok(%header,1,32)
if ($did(%d,2994,14) != 1011) {
did -i %d 1012 1 setbkcolor 65535
did -i %d 1022 1 setbkcolor $rgb(face)
did -o %d 2994 14 1011
}
if (%lastevent == rclick) {
var %menu1 = FTPLOCALDIR,%menu2 = %menu1 $+ arrangeicons,%menu3 = %menu1 $+ viewmodes,%result,%sflags = $did(%d,1014,4)
_popupdll.New %menu2 16 16
_popupdll.AddItem %menu2 end $iif(n isin %sflags,+xr,+) 0 0 by &name $cr _ftp.localsortfiltertoggle %d n
_popupdll.AddItem %menu2 end $iif(s isin %sflags,+xr,+) 0 0 by &size $cr _ftp.localsortfiltertoggle %d s
_popupdll.AddItem %menu2 end $iif(t isin %sflags,+xr,+) 0 0 by &type $cr _ftp.localsortfiltertoggle %d t
_popupdll.AddItem %menu2 end
_popupdll.AddItem %menu2 end $iif(d !isin %sflags,+xr,+) 0 0 &ascending $cr _ftp.localsortfiltertoggle %d -d
_popupdll.AddItem %menu2 end $iif(d isin %sflags,+xr,+) 0 0 &descending $cr _ftp.localsortfiltertoggle %d +d
_popupdll.New %menu3 16 16
_popupdll.AddItem %menu3 end $iif(b isin %sflags,+xr,+) 0 0 &large icons $cr _ftp.localsortfiltertoggle %d b
_popupdll.AddItem %menu3 end $iif(i isin %sflags,+xr,+) 0 0 &small icons $cr _ftp.localsortfiltertoggle %d i
_popupdll.AddItem %menu3 end $iif(l isin %sflags,+xr,+) 0 0 &list $cr _ftp.localsortfiltertoggle %d l
_popupdll.AddItem %menu3 end $iif(e isin %sflags,+xr,+) 0 0 &details $cr _ftp.localsortfiltertoggle %d e
_popupdll.New %menu1 8 8
_popupdll.AddItem %menu1 end +D 0 0 &transfer $cr _ftp.local.transfer
_popupdll.AddItem %menu1 end + 0 0 &queue $cr _ftp.local.queue
_popupdll.AddItem %menu1 end
_popupdll.AddItem %menu1 end + 0 0 de&lete $cr _ftp.local.del
_popupdll.AddItem %menu1 end + 0 0 re&name $cr _ftp.local.ren
_popupdll.AddItem %menu1 end +> 0 0 arran&ge $cr %menu2
_popupdll.AddItem %menu1 end +> 0 0 &view $cr %menu3
_popupdll.AddItem %menu1 end
_popupdll.AddItem %menu1 end + 0 0 make &dir $cr _ftp.local.mkdir
_popupdll.AddItem %menu1 end + 0 0 &change dir $cr _ftp.local.chdir
_popupdll.AddItem %menu1 end + 0 0 cd&up $cr _ftp.local.cdup
_popupdll.AddItem %menu1 end
_popupdll.AddItem %menu1 end + 0 0 &refresh $cr _ftp.local.refresh
_popupdll.Popup %menu1 + $mouse.dx $mouse.dy
%result = $result
_popupdll.Destroy %menu1
_popupdll.Destroy %menu2
_popupdll.Destroy %menu3
if ($gettok(%result,1,32) == OK) && ($gettok(%result,4-,32) != $null) { $ifmatch }
}
if ($istok(item sclick,%lastevent,32)) { .timer $+ $dname $+ _ $+ $devent $+ $sclick -mo 1 50 _ftp.dirstatus %d 1012 1011 1015 1016 1014 }
}
ON *:DIALOG:ftp*:sclick:1021:{
var %d = $dname,%header = $did(%d,1021,1),%lastevent = $gettok(%header,1,32)
if ($did(%d,2994,14) != 1021) {
did -i %d 1012 1 setbkcolor $rgb(face)
did -i %d 1022 1 setbkcolor 65535
did -o %d 2994 14 1021
}
if (%lastevent == rclick) {
var %menu1 = FTPLOCALDIR,%menu2 = %menu1 $+ arrangeicons,%menu3 = %menu1 $+ viewmodes,%result,%sflags = $did(%d,1024,4)
_popupdll.New %menu2 16 16
_popupdll.AddItem %menu2 end $iif(n isin %sflags,+xr,+) 0 0 by &name $cr _ftp.remotesortfiltertoggle %d n
_popupdll.AddItem %menu2 end $iif(s isin %sflags,+xr,+) 0 0 by &size $cr _ftp.remotesortfiltertoggle %d s
_popupdll.AddItem %menu2 end $iif(t isin %sflags,+xr,+) 0 0 by &type $cr _ftp.remotesortfiltertoggle %d t
_popupdll.AddItem %menu2 end $iif(m isin %sflags,+xr,+) 0 0 by &date $cr _ftp.remotesortfiltertoggle %d m
_popupdll.AddItem %menu2 end $iif(a isin %sflags,+xr,+) 0 0 by &attrib $cr _ftp.remotesortfiltertoggle %d a
_popupdll.AddItem %menu2 end $iif(o isin %sflags,+xr,+) 0 0 by &owner $cr _ftp.remotesortfiltertoggle %d o
_popupdll.AddItem %menu2 end $iif(g isin %sflags,+xr,+) 0 0 by &group $cr _ftp.remotesortfiltertoggle %d g
_popupdll.AddItem %menu2 end $iif(c isin %sflags,+xr,+) 0 0 by &comment $cr _ftp.remotesortfiltertoggle %d c
_popupdll.AddItem %menu2 end
_popupdll.AddItem %menu2 end $iif(d !isin %sflags,+xr,+) 0 0 &ascending $cr _ftp.remotesortfiltertoggle %d -d
_popupdll.AddItem %menu2 end $iif(d isin %sflags,+xr,+) 0 0 &descending $cr _ftp.remotesortfiltertoggle %d +d
_popupdll.New %menu3 16 16
_popupdll.AddItem %menu3 end $iif(b isin %sflags,+xr,+) 0 0 &large icons $cr _ftp.remotesortfiltertoggle %d b
_popupdll.AddItem %menu3 end $iif(i isin %sflags,+xr,+) 0 0 &small icons $cr _ftp.remotesortfiltertoggle %d i
_popupdll.AddItem %menu3 end $iif(l isin %sflags,+xr,+) 0 0 &list $cr _ftp.remotesortfiltertoggle %d l
_popupdll.AddItem %menu3 end $iif(e isin %sflags,+xr,+) 0 0 &details $cr _ftp.remotesortfiltertoggle %d e
_popupdll.New %menu1 8 8
_popupdll.AddItem %menu1 end +D 0 0 &transfer $cr _ftp.remote.transfer
_popupdll.AddItem %menu1 end + 0 0 &queue $cr _ftp.remote.queue
_popupdll.AddItem %menu1 end
_popupdll.AddItem %menu1 end + 0 0 de&lete $cr _ftp.remote.del
_popupdll.AddItem %menu1 end + 0 0 re&n/move $cr _ftp.remote.ren
_popupdll.AddItem %menu1 end + 0 0 copy &url $cr _ftp.remote.copyurl
_popupdll.AddItem %menu1 end +d 0 0 chm&od $cr _ftp.remote.chmod
_popupdll.AddItem %menu1 end + 0 0 "e $cr _ftp.remote.quote
_popupdll.AddItem %menu1 end +> 0 0 arran&ge $cr %menu2
_popupdll.AddItem %menu1 end +> 0 0 &view $cr %menu3
_popupdll.AddItem %menu1 end
_popupdll.AddItem %menu1 end + 0 0 make &dir $cr _ftp.remote.mkdir
_popupdll.AddItem %menu1 end + 0 0 &change dir $cr _ftp.remote.chdir
_popupdll.AddItem %menu1 end + 0 0 cd&up $cr _ftp.remote.cdup
_popupdll.AddItem %menu1 end
_popupdll.AddItem %menu1 end + 0 0 &refresh $cr _ftp.remote.refresh
_popupdll.Popup %menu1 + $mouse.dx $mouse.dy
%result = $result
_popupdll.Destroy %menu1
_popupdll.Destroy %menu2
_popupdll.Destroy %menu3
if ($gettok(%result,1,32) == OK) && ($gettok(%result,4-,32) != $null) { $ifmatch }
}
if ($istok(item sclick,%lastevent,32)) { .timer $+ $dname $+ _ $+ $devent $+ $sclick -mo 1 50 _ftp.dirstatus %d 1022 1021 1025 1026 1024 }
}
ON *:DIALOG:ftp*:sclick:1030:{
var %d = $dname,%lastevent = $gettok($did(%d,1030,1),1,32)
if (%lastevent == rclick) {
var %menu1 = FTPQUEUE,%menu2 = %menu1 $+ remove,%menu3 = %menu1 $+ move,%result,%sflags = $did(%d,1014,4)
_popupdll.New %menu2 16 16
_popupdll.AddItem %menu2 end + 0 0 &selected $cr _ftp.queuelist.del.sel %d
_popupdll.AddItem %menu2 end
_popupdll.AddItem %menu2 end + 0 0 &uploads $cr _ftp.queuelist.del.downupl %d 0
_popupdll.AddItem %menu2 end + 0 0 &downloads $cr _ftp.queuelist.del.downupl %d 1
_popupdll.AddItem %menu2 end
_popupdll.AddItem %menu2 end + 0 0 &all $cr _ftp.queuelist.del.all %d
_popupdll.New %menu3 16 16
_popupdll.AddItem %menu3 end + 0 0 &up $cr _ftp.queuelist.move.up %d
_popupdll.AddItem %menu3 end + 0 0 &down $cr _ftp.queuelist.move.down %d
_popupdll.AddItem %menu3 end + 0 0 to &top $cr _ftp.queuelist.move.top %d
_popupdll.AddItem %menu3 end + 0 0 to &bottom $cr _ftp.queuelist.move.bottom %d
_popupdll.AddItem %menu3 end
_popupdll.AddItem %menu3 end + 0 0 &uploads to top $cr _ftp.queuelist.move.downupl %d 0
_popupdll.AddItem %menu3 end + 0 0 &downloads to top $cr _ftp.queuelist.move.downupl %d 1
_popupdll.New %menu1 8 8
_popupdll.AddItem %menu1 end +D 0 0 &transfer $cr _ftp.queue.start %d
_popupdll.AddItem %menu1 end +> 0 0 &delete $cr %menu2
_popupdll.AddItem %menu1 end +> 0 0 &move $cr %menu3
_popupdll.AddItem %menu1 end
_popupdll.AddItem %menu1 end + 0 0 queue &info $cr _ftp.queuelist.info %d
_popupdll.AddItem %menu1 end + 0 0 &load queue $cr _ftp.queuelist.load %d
_popupdll.AddItem %menu1 end + 0 0 &save queue $cr _ftp.queuelist.save %d
_popupdll.Popup %menu1 + $mouse.dx $mouse.dy
%result = $result
_popupdll.Destroy %menu1
_popupdll.Destroy %menu2
_popupdll.Destroy %menu3
if ($gettok(%result,1,32) == OK) && ($gettok(%result,4-,32) != $null) { $ifmatch }
}
}
ON *:DIALOG:ftp*:sclick:2991:{
if ($sock($dname)) { info.a Closing FTP session $remove($dname,FTP) }
showmirc -s
_ftp.disconnect $dname
}
alias -l _ftp.localsortfiltertoggle {
var %d = $1,%old = $did(%d,1014,4)
if ($istok(n s t,$2,32)) {
if ($remove(%old,n,s,t) != $null) { did -o %d 1014 4 $ifmatch $+ $2 }
else { did -o %d 1014 4 $2 }
}
elseif ($istok(b i l e,$2,32)) {
if ($remove(%old,b,i,l,e) != $null) { did -o %d 1014 4 $ifmatch $+ $2 }
else { did -o %d 1014 4 $2 }
}
else {
%old = $remove(%old,d)
if (+d isin $2) { %old = %old $+ d }
did -o %d 1014 4 %old
}
_ftp._reflocal.ref %d
}
alias -l _ftp.remotesortfiltertoggle {
var %d = $1,%old = $did(%d,1024,4)
if ($istok(n s t m a o g c,$2,32)) {
if ($remove(%old,n,s,t,m,a,o,g,c) != $null) { did -o %d 1024 4 $ifmatch $+ $2 }
else { did -o %d 1024 4 $2 }
}
elseif ($istok(b i l e,$2,32)) {
if ($remove(%old,b,i,l,e) != $null) { did -o %d 1024 4 $ifmatch $+ $2 }
else { did -o %d 1024 4 $2 }
}
else {
%old = $remove(%old,d)
if (+d isin $2) { %old = %old $+ d }
did -o %d 1024 4 %old
}
_ftp._refremote.ref %d
}
ON *:DIALOG:ftp*:dclick:1011:{
var %d = $dname,%line = $did(%d,$did,$did(%d,$did,1).sel),%oldpath = $did(%d,1014,1),%path = %oldpath,%icon = $gettok(%line,2,32),%name = $gettok($gettok(%line,1,9),3-,32)
if (%icon == 1) { %path = $deltok(%path,-1,92) }
elseif (%icon == 2) { %path = %oldpath $+ %name $+ \ }
elseif (%icon == 3) {
_ftp.localdir.filedclick %d %oldpath $+ %name
return
}
else { %path = $mid($gettok(%name,-1,32),2,2) $+ \ }
_ftp.reflocal %d %path
}
ON *:DIALOG:ftp*:dclick:1021:{
var %d = $dname,%line = $did(%d,$did,$did(%d,$did,1).sel),%oldpath = $did(%d,1024,1),%path = %oldpath,%icon = $gettok(%line,2,32),%name = $gettok($gettok(%line,1,9),3-,32)
if (%icon == 1) { _ftp.com $dname cdup }
elseif (%icon == 2) { _ftp.com $dname CWD %name }
else { _ftp.remotedir.filedclick %d %oldpath $+ %name }
}
; /_ftp.dirstatus dname statusdid listdid dirdid filedid free
alias -l _ftp.dirstatus {
var %d = $1
if ($dialog(%d) == $null) { return }
var %folders = $did(%d,$4).lines,%files = $did(%d,$5).lines,%sels = $did(%d,$3,0).sel,%totalbytes = $bytes($did(%d,$6,3),3).suf,%showfree = 0,%showtotal = 0,%com
%com = did -i %d $2 2 +p 0 $_nsingoplur(%folders,Folder,Folders) $+ , $_nsingoplur(%files,File,Files) $+ , $calc(%folders + %files) Total
if (%totalbytes == $null) { %totalbytes = 0b }
if (%sels) { %com ( $+ %totalbytes $+ , $_nsingoplur(%sels,item,items) selected) }
else {
if ($6 == 1014) { %com ( $+ %totalbytes $+ , free: $bytes($disk($did(%d,$6,1)).free,3).suf $+ ) }
else { %com ( $+ %totalbytes $+ ) }
}
}
alias -l _ftp.localdir.filedclick { }
alias -l _ftp.remotedir.filedclick { }
alias _ftp.reflocal {
var %m,%i,%d = $1,%path = $2-
if ($disk($left(%path,1)).type == $null) || ($isdir(%path) == $false) {
_ftp.addlog.error %d Local directory " $+ %path $+ " not found
return
}
if (*\ !iswm %path) { %path = %path $+ \ }
did -r %d 1015,1016
did -o %d 1014 1 %path
_dialog.add1 %d 1010 %path
if (ftp* iswm $dname) && ($did(%d,1014,2) != $null) { %m = $ifmatch }
else { %m = * }
did -i %d 1012 2 +p 0 Gathering dir info...
;;; "/set -u %var" will behave oddly here
;;; Only Khaled knows why
%~ftptotalbytes = 0
%~ftptotalfiles = 0
_dummy $finddir(%path,*,0,1,_ftp._reflocal.adddir %d $1-)
_dummy $findfile(%path,%m,0,1,_ftp._reflocal.addfile %d $1-)
did -o %d 1014 3 $round(%~ftptotalbytes,0)
did -o %d 1014 5 $round(%~ftptotalfiles,0)
unset %~ftptotalbytes %~ftptotalfiles
_ftp._reflocal.ref %d
}
alias _ftp._reflocal.adddir { did -a $1 1015 - 2 $nopath($2-) }
alias _ftp._reflocal.addfile {
var %size = $file($2-).size,%nopath = $nopath($2-),%ext = $gettok(%nopath,-1,46)
if ($numtok(%nopath,46) == 1) { var %ext }
did -a $1 1016 - 3 %nopath $+ $chr(9) $+ 0 $bytes(%size,b) $+ $chr(9) $+ %size $+ $chr(9) $+ %ext
if (%size) { inc %~ftptotalbytes $ifmatch }
inc %~ftptotalfiles
}
alias _ftp.liststyle {
var %l = showsel autoarrange rowselect
if (b isin $1) { %l = %l icon }
elseif (i isin $1) { %l = %l icon smallicon }
elseif (l isin $1) { %l = %l list }
else { %l = %l nosortheader report nosortheader }
return %l
}
alias _ftp._reflocal.ref {
var %d = $1,%i
did -r %d 1011
_mdx.SetMDXStyle %d 1011 $_ftp.liststyle($did(%d,1014,4))
%i = 67
while (%i <= 90) {
if ($disk($chr(%i)).type != $null) {
var %drive = $chr(%i),%label = $disk(%drive).label,%pd = ( $+ %drive $+ :)
if (%drive isin ab) { did -a %d 1011 + 4 Floppy Drive %pd }
elseif ($disk(%drive).type == cdrom) { did -a %d 1011 + 6 %label %pd }
else { did -a %d 1011 + 5 %label %pd }
}
inc %i
}
if ($numtok($did(%d,1014,1),92) > 1) { did -a %d 1011 + 1 Up }
var %sflags = $did(%d,1014,4),%col,%fflags = -iot
if (d isin %sflags) { %fflags = -iote }
if (n isin %sflags) { %col = 1 }
elseif (s isin %sflags) { var %col = 3,%fflags = %fflags $+ u }
else { %col = 4 }
filter %fflags %col 9 %d 1015 %d 1011
filter %fflags %col 9 %d 1016 %d 1011
_ftp.dirstatus %d 1012 1011 1015 1016 1014
}
alias _ftp.gftp.sr {
var %d = $_ftp.nums,%name = $9-,%isdir = 0,%isv = 0
did -a %d 2251 $1-
if (%name != $null) {
if (d* iswm $1) {
if ($istok(. ..,$9-,32) == $false) { %isdir = 1 }
else { return }
}
elseif ($istok($9-,->,32)) {
var %a = $findtok($9-,->,1,32) $+ - $+ $numtok($9-,32),%b = 1- $+ $findtok($9-,->,1,32),%a = $deltok($9-,%a,32),%b = $deltok($9-,%b,32),%name = %a
if (*.* !iswm %b) { %isdir = 1 }
%isv = 1
}
var %c9 = $chr(9),%90 = %c9 $+ 0,%date = $6-7,%time,%year
if (*:* iswm $8) { var %time = $8,%year = $asctime($ctime,yyyy) }
else { var %time = 00:00,%year = $8 }
var %ctime = %date %year %time,%ctime = $ctime(%ctime),%asctime = $asctime(%ctime,dd/mmm/yyyy HH:nn)
if (%isdir) { did -a %d 1025 - 2 %name $+ %90 $bytes($5,b) $+ %90 %asctime $+ %90 $1 $+ %90 $3 $+ %90 $4 $+ %90 $+ %c9 $+ $5 $+ %c9 $+ %ctime $+ %c9 }
else {
var %ext = $gettok(%name,-1,46)
if ($numtok(%name,46) == 1) { var %ext }
did -a %d 1026 - 3 %name $+ %90 $bytes($5,b) $+ %90 %asctime $+ %90 $1 $+ %90 $3 $+ %90 $4 $+ %90 $+ %c9 $+ $5 $+ %c9 $+ %ctime $+ %c9 $+ %ext
did -o %d 1024 3 $calc($did(%d,1024,3) + $5)
did -o %d 1024 5 $calc($did(%d,1024,5) + 1)
}
}
}
alias _ftp._refremote.ref {
var %d = $1
did -r %d 1021
did -a %d 1021 + 1 Up
_mdx.SetMDXStyle %d 1021 $_ftp.liststyle($did(%d,1024,4))
var %sflags = $did(%d,1024,4),%col,%fflags = -iot
if (d isin %sflags) { %fflags = -iote }
if (n isin %sflags) { %col = 1 }
elseif (s isin %sflags) { var %col = 8,%fflags = %fflags $+ u }
elseif (m isin %sflags) { var %col = 9,%fflags = %fflags $+ u }
elseif (a isin %sflags) { %col = 4 }
elseif (o isin %sflags) { %col = 5 }
elseif (g isin %sflags) { %col = 6 }
elseif (c isin %sflags) { %col = 7 }
else { %col = 10 }
filter %fflags %col 9 %d 1025 %d 1021
filter %fflags %col 9 %d 1026 %d 1021
_ftp.dirstatus %d 1022 1021 1025 1026 1024
}
alias -l _ftp.local.transfer {
if ($_ftp.remote.disconnected) { return }
_ftp.local.queue +t
_ftp.queue.start
}
alias -l _ftp.local.queue {
if ($_ftp.remote.disconnected) { return }
var %d = $dname,%icon,%name,%l,%t,%parent = $did($dname,1014,1),%z,%c = 0,%text,%z = $did(%d,1011,0).sel,%xxx,%remotedir = $did(%d,1024,1),%remotefile,%server = ftp:// $+ $did(%d,2994,1) $+ : $+ $sock(%d).port
if (%z) {
did -i %d 1012 2 +p 0 Adding $_nsingoplur(%z,item,items) to the queue... please wait
while (%z) {
var %l = $did(%d,1011,%z).sel,%t = $did(%d,1011,%l),%icon = $gettok(%t,2,32),%name = $gettok($gettok(%t,1,9),3-,32)
if (%icon == 3) {
%remotefile = %remotedir $+ %name
%name = %parent $+ %name
%xxx = $_ftp.queue.add($dname,0,%name,%remotefile,$gettok($gettok(%t,2,9),2,32),%server)
inc %c
}
dec %z
}
_ftp.dirstatus $dname 1012 1011 1015 1016 1014
}
if (%c == 0) { _ftp.status.error $dname No local files selected to $iif(t isin $1,transfer,queue) }
}
alias -l _ftp.local.del {
var %d = $dname,%icon,%name,%l,%t,%parent = $did($dname,1014,1),%z,%c = 0,%text
if ($did(%d,1011,0).sel) {
var %z = $ifmatch,%text = Remove $_nsingoplur(%z,selected item?,selected items?)
if ($_not($_yesno(1,FTP Client [/ftp],1,%text))) { return }
did -i %d 1012 2 +p 0 Removing %z items... please wait
while (%z) {
var %l = $did(%d,1011,%z).sel,%t = $did(%d,1011,%l),%icon = $gettok(%t,2,32),%name = $gettok($gettok(%t,1,9),3-,32)
if (%icon == 2) {
_rmdir " $+ %parent $+ %name $+ "
inc %c
}
elseif (%icon == 3) {
.remove " $+ %parent $+ %name $+ "
inc %c
}
dec %z
}
}
if (%c) {
_ftp.status.info $dname $_nsingoplur(%c,item,items) removed
_ftp.local.refresh
}
else {
_ftp.status.error $dname No directories/files selected to remove
_ftp.dirstatus $dname 1012 1011 1015 1016 1014
}
}
alias -l _ftp.local.ren {
var %t,%oldir = $did($dname,1014,1),%line = $did($dname,1011,$did($dname,1011,1).sel),%new,%icon = $gettok(%line,2,32),%file = $gettok($gettok(%line,1,9),3-,32)
if (%icon == 3) {
%new = $_parameter($null,1,FTP Client [/ftp],isvalidfilename,%file,New name for local file:<CRLF> [ %file ] )
if ($dialog($dname) == $null) { return }
%t = %oldir $+ %new
if (%new != $null) {
if ($isfile(%t) == $false) {
.rename " $+ %oldir $+ %file $+ " " $+ %oldir $+ %new $+ "
_ftp.reflocal $dname %oldir
}
elseif (%new == %file) { _ftp.status.error $dname Cannot rename local file ' $+ %file $+ ' - Same filename! }
else { _ftp.status.error $dname Cannot rename local file ' $+ %file $+ ' - Already exists file ' $+ %new $+ ' }
}
}
else { _ftp.status.error $dname Only files can be renamed }
}
alias -l _ftp.local.mkdir {
var %newdir,%localdir = $did($dname,1014,1),%createdir
if (*\ !iswm %localdir) { %localdir = %localdir $+ \ }
%newdir = $_parameter($null,1,FTP Client [/ftp],len < 250,$null,Local directory to create inside<CRLF> [ %localdir ] )
if ($dialog($dname) == $null) { return }
%createdir = %localdir $+ %newdir
if (/ !isin %newdir) && (\ !isin %newdir) && ($_fixdir(%createdir)) {
.mkdir " $+ %createdir $+ "
_ftp.local.refresh
}
else { _ftp.status.error $dname Invalid directory: %createdir }
}
alias -l _ftp.local.chdir {
var %dir = $$sdir="Change Local Directory in FTP Session [ $_ftp.num ] " $did($dname,1014,1)
if ($dialog($dname) == $null) { return }
if ($istok(a b,$left(%dir,1),32) == $false) { _ftp.reflocal $dname %dir }
else { _ftp.status.error $dname Please don't use diskettes! }
}
alias -l _ftp.local.cdup {
if ($deltok($did($dname,1014,1),-1,92) != $null) { _ftp.reflocal $dname $ifmatch }
}
alias -l _ftp.local.refresh { _ftp.reflocal $dname $did($dname,1014,1) }
alias -l _ftp.remote.transfer {
if ($_ftp.remote.disconnected) { return }
_ftp.remote.queue +t
_ftp.queue.start
}
alias -l _ftp.remote.queue {
if ($_ftp.remote.disconnected) { return }
var %d = $dname,%icon,%name,%l,%t,%parent = $did($dname,1024,1),%z,%c = 0,%text,%z = $did(%d,1021,0).sel,%xxx,%localdir = $did(%d,1014,1),%localfile,%server = ftp:// $+ $did(%d,2994,1) $+ : $+ $sock(%d).port
if (%z) {
did -i %d 1022 2 +p 0 Adding $_nsingoplur(%z,item,items) to the queue... please wait
while (%z) {
var %l = $did(%d,1021,%z).sel,%t = $did(%d,1021,%l),%icon = $gettok(%t,2,32),%name = $gettok($gettok(%t,1,9),3-,32)
if (%icon == 3) {
%localfile = %localdir $+ %name
%name = %parent $+ %name
%xxx = $_ftp.queue.add($dname,1,%localfile,%name,$gettok($gettok(%t,2,9),2,32),%server)
inc %c
}
dec %z
}
_ftp.dirstatus $dname 1022 1021 1025 1026 1024
}
if (%c == 0) { _ftp.status.error $dname No remote files selected to $iif(t isin $1,transfer,queue) }
}
alias -l _ftp.remote.del {
if ($_ftp.remote.disconnected) { return }
var %d = $dname,%icon,%name,%l,%t,%parent = $did($dname,1024,1),%z,%c = 0,%text
if ($did(%d,1021,0).sel) {
var %z = $ifmatch,%text = Remove $_nsingoplur(%z,selected item?,selected items?)
if ($_not($_yesno(1,FTP Client [/ftp],1,%text))) { return }
while (%z) {
var %l = $did(%d,1021,%z).sel,%t = $did(%d,1021,%l),%icon = $gettok(%t,2,32),%name = $gettok($gettok(%t,1,9),3-,32)
if (%icon == 2) {
did -a $dname 2250 _ftp.com $dname rd %name
inc %c
}
elseif (%icon == 3) {
did -a $dname 2250 _ftp.com $dname del %name
inc %c
}
dec %z
}
}
if (%c) {
_ftp.sigue $dname 0
did -o $dname 2994 15 1
}
else { _ftp.status.error $dname No directories/files selected to remove }
}
alias -l _ftp.remote.ren {
if ($_ftp.remote.disconnected) { return }
var %t,%oldir = $did($dname,1024,1),%line = $did($dname,1021,$did($dname,1021,1).sel),%new,%icon = $gettok(%line,2,32),%file = $gettok($gettok(%line,1,9),3-,32)
if (%icon isin 23) {
if (%icdon == 2) { %c.ftpren.esdir = 1 }
_ftp.com $dname ren %file
}
else { _ftp.status.error $dname Only files or directories can be renamed }
}
alias -l _ftp.remote.copyurl {
if ($_ftp.remote.disconnected) { return }
if ($did($dname,2994,1) != $null) {
var %server = $ifmatch,%dir = $did($dname,1024,1),%line = $did($dname,1021,$did($dname,1021,1).sel),%icon = $gettok(%line,2,32),%file = $gettok($gettok(%line,1,9),3-,32),%cb = ftp:// $+ %server $+ %dir
if (*/ !iswm %cb) { %cb = %cb $+ / }
if (%icon == 3) { %cb = %cb $+ %file }
clipboard %cb
}
else { _ftp.status.error $dname Unknown server }
}
alias -l _ftp.remote.chmod {
if ($_ftp.remote.disconnected) { return }
;;;
}
alias -l _ftp.remote.quote {
if ($_ftp.remote.disconnected) { return }
var %q = $_parameter($null,1,FTP Client [/ftp],normal,$_randtok(help syst,32),Command to execute in server:)
if ($dialog($dname)) { _ftp.com $dname %q }
}
alias -l _ftp.remote.mkdir {
if ($_ftp.remote.disconnected) { return }
var %dir = $_parameter($null,1,FTP Client [/ftp],len < 250,$null,Remote directory to create inside:<CRLF> [ $did($dname,1024,1) ] )
if ($dialog($dname)) { _ftp.com $dname MKD %dir }
}
alias -l _ftp.remote.chdir {
if ($_ftp.remote.disconnected) { return }
var %win = @__ftpremotechdir,%dir
_openwins %win
filter -iw $dname 1020 %win
%dir = $_rparameter($null,1,FTP Client [/ftp],normal,$line(%win,1),%win,$null,Change to remote directory:)
if ($dialog($dname) != $null) && (%dir != $did($dname,1024,1)) { _ftp.com $dname CWD %dir }
close -@ %win
}
alias -l _ftp.remote.cdup {
if ($_ftp.remote.disconnected) { return }
_ftp.com $dname CDUP
}
alias -l _ftp.remote.refresh {
if ($_ftp.remote.disconnected == 0) { _ftp.com $dname dir }
}
alias -l _ftp.remote.disconnected {
var %d = $iif($1,$1,$dname)
if ($dialog(%d)) && ($sock(%d)) { return 0 }
return 1
}
alias -l _ftp.queuelist.del.sel {
if ($did($1,1030,1).sel) && ($_not($_yesno(1,FTP Client [/ftp],1,Remove selected entries from the queue?))) { return }
while ($did($1,1030,1).sel) { did -d $1 1030 $ifmatch }
}
alias -l _ftp.queuelist.del.downupl {
var %d = $1,%downupl = $calc($2 + 1),%i = $did(%d,1030,1).lines,%icon
if (%i > 1) && ($_yesno(1,FTP Client [/ftp],1,Remove [ $iif(%downupl == 2,downloads,uploads) ] from the queue?)) {
while (%i > 1) {
%icon = $gettok($did(%d,1030,%i),2,32)
if (%icon == %downupl) { did -d %d 1030 %i }
dec %i
}
}
}
alias -l _ftp.queuelist.del.all {
if ($did($1,1030,1).lines > 1) && ($_yesno(1,FTP Client [/ftp],1,Clear queue?)) { did -r $1 1030 }
}
alias -l _ftp.queuelist.move.up { _dialog.MDXVIEWLISTup $1 1030 1030 }
alias -l _ftp.queuelist.move.down { _dialog.MDXVIEWLISTdown $1 1030 1030 }
alias -l _ftp.queuelist.move.top {
var %d = $1,%l,%t,%c = 0,%i = 2
while ($did(%d,1030,1).sel) {
var %l = $ifmatch,%t = $did(%d,1030,%l)
did -d %d 1030 %l
did -i %d 1030 %i %t
inc %i
}
dec %i
while (%i > 1) {
did -ck %d 1030 %i
dec %i
}
}
alias -l _ftp.queuelist.move.bottom {
var %d = $1,%l,%t,%c = 0,%i = 0
while ($did(%d,1030,1).sel) {
var %l = $ifmatch,%t = $did(%d,1030,%l)
did -d %d 1030 %l
did -a %d 1030 %t
inc %i
}
dec %i
%t = $did(%d,1030).lines
%i = %t - %i
while (%i <= %t) {
did -ck %d 1030 %i
inc %i
}
}
alias -l _ftp.queuelist.move.downupl {
var %d = $1,%downupl1 = $calc($2 + 1),%downupl2 = $iif(%downupl1 == 1,2,1),%win = @__ftpqueuelistmovedownupl
_openwins %win
filter -iwr 2-999999999 %d 1030 %win & %downupl1 *
filter -iwr 2-999999999 %d 1030 %win & %downupl2 *
filter -woc %win %d 1030
}
alias -l _ftp.queuelist.info {
var %d = $1,%i = $did(%d,1030).lines,%dc = 0,%uc = 0,%db = 0,%ub = 0,%tc = 0,%tb = 0,%line,%icon,%size
while (%i > 1) {
var %line = $did(%d,1030,%i),%icon = $gettok(%line,2,32),%size = $remove($gettok($gettok(%line,3,9),2,32),$chr(44))
if (%icon == 1) {
inc %uc
if (%size) { inc %ub %size }
}
else {
inc %dc
if (%size) { inc %db %size }
}
dec %i
}
%tc = %uc + %dc
%tb = %ub + %db
if (%tc) {
_ftp.addlog.info %d Queue Info:
_ftp.addlog.info %d Uploads: %uc ( $+ $bytes(%ub,3).suf $+ )
_ftp.addlog.info %d Downloads: %dc ( $+ $bytes(%db,3).suf $+ )
_ftp.addlog.info %d Total: %tc ( $+ $bytes(%tb,3).suf $+ )
}
else { _ftp.addlog.info %d The transfer queue is empty }
}
alias -l _ftp.queuelist.load {
var %d = $1,%win = @__tmp,%file = $hfile="Load FTP queue from:" $_usrdir(*.afq),%line
if ($isfile(%file)) {
tokenize 32 $read -nl1 %file
if ($0 == 3) && (//aIRCFTPqueuelist == $1) && ($2 == 2) && ($3 isnum) { filter -focr 2-9999999999999 " $+ %file $+ " %d 1030 }
else { _ftp.status.error %d Invalid queue list file: ' $+ %file $+ ' }
}
else { _ftp.status.error %d File not found: ' $+ %file $+ ' }
}
alias -l _ftp.queuelist.save {
var %d = $1,%win = @__tmp,%file = $hfile="Save FTP queue in:" $_usrdir(*.afq)
if (%file != $null) {
_openwins %win
filter -iwr 2-99999999999 %d 1030 %win
iline %win 1 //aIRCFTPqueuelist 2 $ctime
savebuf %win " $+ %file $+ "
close -@ %win
}
}
alias _ftp.queue.start {
var %d = $iif($1,$1,$dname)
did -o %d 2994 18 1
if ($did(%d,1030).lines > 1) { _ftp.sigue %d 0 }
else { _ftp.status.error %d The transfer queue is empty }
}
; $_ftp.queue.add(session,0|1,local,remote,bytes,server)
; 0=upload 1=download
alias _ftp.queue.add {
var %icon = $calc($2 + 1),%local = $3,%remote = $4,%size = $5,%server = $6,%from,%target,%90 = $chr(9) $+ 0
if (%icon == 1) { var %from = %local,%target = %remote }
else { var %from = %remote,%target = %local }
did -a $1 1030 - %icon %from $+ %90 %target $+ %90 %size $+ %90 %server
}
alias _ftp.setitle {
if ($2- != $null) { dialog -t $1 $2- - aIRC FTP Client }
else { dialog -t $1 aIRC FTP Client }
}
alias _ftp.disconnect {
if (ftp* iswm $1) {
sockclose $1
sockclose ? $+ $1
.timer $+ $1 off
.timer $+ $1 $+ _* off
if ($dialog($1)) {
did -o $1 1000 2 +a 1 Connect $+ $chr(9) $+ Connect to a FTP Server
_ftp.setitle $1
_ftp.addlog.info $1 Disconnected!
did -r $1 1020,1021,1022,1025,1026
}
}
}