/* ** ** $VER: AminetGetFTP 2.0 (26-08-1998) © Yves Grabowsky ** */ /*----------*/ /* Add libs */ /*----------*/ IF ~show('L','tritonrexx.library') then do IF ~addlib("tritonrexx.library",5,-30) then do SAY "Couldn't open tritonrexx.library!" exit(20) end end IF ~show('L','rexxtricks.library') then do IF ~addlib('rexxtricks.library',1,-30) then do say "Couldn't open rexxtricks.library!" exit(20) end end IF ~show('L','rexxreqtools.library') then do IF ~addlib("rexxreqtools.library",0,-30) then do say "Couldn't open rexxreqtools.library!" exit(20) end end IF ~show('L','rexxsupport.library') then do IF ~addlib("rexxsupport.library",0,-30) then do say "Couldn't open rexxsupport.library!" exit(20) end end /*---------*/ /* Options */ /*---------*/ OPTIONS RESULTS OPTIONS FAILAT 20 /*----------------*/ /* Debug routines */ /*----------------*/ /* TRACE(ALL) */ /* TRACE(SCAN) */ /*------------*/ /* Interrupts */ /*------------*/ SIGNAL ON BREAK_C SIGNAL ON HALT SIGNAL ON IOERR SIGNAL ON SYNTAX /*-----------*/ /* Some vars */ /*-----------*/ pos = "rt_reqpos=reqpos_centerscr" /*-----------------*/ /* Load configfile */ /*-----------------*/ IF ~EXISTS("S:AminetGetFTP.config") then do call rtezrequest("Configfile not found!",,"AminetGetFTP",pos) exit(20) end CALL READFILE("S:AminetGetFTP.config",config) /*----------------*/ /* Format configs */ /*----------------*/ server = config.1 amftppath = config.2 fontname = config.3 fontsize = config.4 readme = config.5 iconfy = config.6 IF readme = '1' then do getread = 'Yes' end ELSE do getread = 'No' end IF iconfy = '1' then do iconf = 'Yes' end ELSE do iconf = 'No' end /*------------------------*/ /* Check for stored files */ /*------------------------*/ IF EXISTS('YAM:AGetFTP-Stored') then do stored = 'Yes' end ELSE do stored = 'No' end /*------------------------*/ /* Format the recent mail */ /*------------------------*/ ADDRESS YAM MAILINFO STEM 'mailinfo.' check = POS('Aminet',mailinfo.subject) IF check = 0 then do call rtezrequest('Not an Aminet Recent mail!',,'AminetGetFTP',pos) exit(20) end file = mailinfo.filename CALL READFILE(file,'recent') DO i=1 to recent.0 begin = POS('|--',recent.i) IF begin >0 then do startline = i LEAVE end end CALL STEMREMOVE(recent,1,startline) order.0 = 0 order2.0 = 0 /*-----------------*/ /* Define PropFont */ /*-----------------*/ textatt.ta_name = fontname textatt.ta_ysize = fontsize /*--------------------*/ /* Create application */ /*--------------------*/ app = TR_CreateApp('TRCA_Name AminetGetFTP') /*---------------*/ /* Define window */ /*---------------*/ win = WindowTitle('AminetGetFTP'), ScreenTitle('AminetGetFTP 2.0 (26-08-1998) © Yves Grabowsky'), WindowID('1'), WindowPosition('TRWP_CENTERSCREEN'), 'TRWI_PropFontAttr textatt', VertGroupA, Space, NamedSeparator('AminetGetFTP 2.0'), Space, CenteredText3('Uploads:'), Space, HorizGroupC, Space, 'TROB_Listview "recent" TRAT_Flags TRLV_SELECT TRAT_ID "5" TRAT_MinWidth "90" TRAT_MinHeight "15" TRAT_Value "0" TRLV_Top "0"', Space, Endgroup, Space, CenteredText3('I would like to get:'), Space, HorizGroupC, Space, 'TROB_Listview "order" TRAT_Flags TRLV_SELECT TRAT_ID "6" TRAT_MinWidth "90" TRAT_MinHeight "10" TRAT_Value "0" TRLV_Top "0"', Space, Endgroup, SpaceS, HorizSeparator, SpaceS, HorizGroupA, Space, TextN('Files stored:'), Space, GroupBox, HorizGroupA, Space, TextID(stored,'14'), Space, Endgroup, SpaceB, TextN('Serveraddress:'), Space, GroupBox, HorizGroupA, Space, TextN(server), Space, Endgroup, SpaceB, TextN('Get .readme:'), Space, GroupBox, HorizGroupA, Space, TextN(getread), Space, Endgroup, SpaceB, TextN('Iconifiy AmFTP:'), Space, GroupBox, HorizGroupA, Space, TextN(iconf), Space, Endgroup, SpaceB, Endgroup, SpaceS, HorizSeparator, SpaceS, HorizGroupA, Space, Button('_Store files','10'), Space, Button('_Get stored','11'), Space, Button('Stored _list','12'), Space, Button('Cle_ar stored','13'), Space, Endgroup, SpaceS, HorizSeparator, Space, HorizGroupA, Space, Button('_Get the files!','8'), SpaceB, Button('_Cancel','9'), Endgroup, Endgroup, Endproject /*--------------*/ /* Open project */ /*--------------*/ project = TR_OpenProject(app,win) DO WHILE exit ~= 1 CALL TR_Wait(app,'') DO WHILE TR_HandleMsg(app,event) IF event.trm_class = "TRMS_CLOSEWINDOW" then do signal quit end IF event.trm_id = "5" then do uploadnum = event.trm_data+1 newvalue = order.0+1 order.newvalue = recent.uploadnum order2.newvalue = recent.uplaodnum order.0 = order.0+1 order2.0 = order2.0+1 stemvar = TR_GetAttribute(project,'6','TROB_Listview') If stemvar = "order" then do CALL TR_SetAttribute(project,'6','TROB_Listview','order2') end ELSE do CALL TR_SetAttribute(project,'6','TROB_Listview','order') end end IF event.trm_id = "6" then do removenum = event.trm_data+1 CALL STEMREMOVE(order,removenum,1) CALL STEMREMOVE(order2,removenum,1) stemvar = TR_GetAttribute(project,'6','TROB_Listview') If stemvar = "order" then do CALL TR_SetAttribute(project,'6','TROB_Listview','order2') end ELSE do CALL TR_SetAttribute(project,'6','TROB_Listview','order') end end IF event.trm_id = "10" then do IF EXISTS('YAM:AGetFTP-Stored') then do CALL WRITEFILE('YAM:AGetFTP-Stored',order,A) end ELSE do CALL WRITEFILE('YAM:AGetFTP-Stored',order) end end IF event.trm_id = '11' then do IF EXISTS('YAM:AGetFTP-Stored') then do CALL READFILE('YAM:AGetFTP-Stored',order) ADDRESS COMMAND "Delete >NIL: YAM:AGetFTP-Stored" exit = 1 end end IF event.trm_id = '12' then do CALL storedlist end IF event.trm_id = '13' then do IF EXISTS('YAM:AGetFTP-Stored') then do ADDRESS COMMAND "Delete >NIL: YAM:AGetFTP-Stored" end end IF event.trm_id = "9" then do signal quit end IF event.trm_id = "8" then do exit = 1 end end end /*--------------*/ /* Close window */ /*--------------*/ CALL TR_CloseProject(project) /*-------------------*/ /* Is Miami running? */ /*-------------------*/ IF ~show('P','MIAMI.1') then do ADDRESS COMMAND "run >NIL: Miami:Miami" "SYS:REXXC/WAITFORPORT MIAMI.1" end /*------------------*/ /* Is Miami online? */ /*------------------*/ ADDRESS MIAMI.1 ONLINE on = 0 DO UNTIL on = 1 ISONLINE IF RC = 1 then do on = 1 end IF RC = 0 then do CALL DELAY(100) end end /*-------------*/ /* Start AmFTP */ /*-------------*/ IF ~show('P','AMFTP.1') then do ADDRESS COMMAND "run >NIL:" amftppath ADDRESS COMMAND "SYS:REXXC/WAITFORPORT AMFTP.1" end /*------------------*/ /* Open progressbar */ /*------------------*/ prozent = 100 IF readme = "0" then do steps = prozent/order.0 end ELSE do steps = prozent/(order.0*2) end progress = 0 progresswin = WindowID('2'), WindowTitle('AminetGetFTP'), ScreenTitle('AminetGetFTP 2.0 (26-08-1998) © Yves Grabowsky'), WindowFlags('TRWF_NODRAGBAR|TRWF_NOZIPGADGET|TRWF_NOSIZEGADGET|TRWF_NODELZIP'), WindowPosition('TRWP_Centerscreen'), 'TRWI_PropFontAttr textatt', VertGroupA, Space, CenteredText3('Working, please wait'), Space, HorizGroupA, Space, TextN('Status:'), Space, TextID('Waiting and waiting and waiting and...','10'), Space, Endgroup, Space, HorizGroupA, Space, Progress(100,0,5), Space, Endgroup, HorizGroupA, Space, HorizGroupSA, TextN("0%"), SpaceB, TextN("25%"), SpaceB, TextN("50%"), SpaceB, TextN("75%"), SpaceB, TextN("100%"), Endgroup, Space, Endgroup, Space, Endgroup, Endproject progressproject = TR_OpenProject(app,progresswin) /*--------------------------*/ /* Connect to AmiNet server */ /*--------------------------*/ ADDRESS AMFTP.1 IF iconfy = 1 then do ICONIFY end CALL TR_SetAttribute(progressproject,'10','TRAT_Text','Connecting...') CONNECTHOST server DO WHILE weiter ~= 1 INACTION IF result = "0" then do weiter = 1 end IF result = "1" then do weiter = 0 Delay(50) end end prevdir = '' /*---------------*/ /* Receive files */ /*---------------*/ DO i=1 to order.0 weiter = 0 filename = WORD(order.i,1) dir = WORD(order.i,2) dir = "/pub/aminet/"dir"/" IF dir ~= prevdir then do CALL TR_SetAttribute(progressproject,'10','TRAT_Text','Changing dir...') CHANGEDIR dir DO WHILE weiter ~= 1 INACTION IF result = "0" then do weiter = 1 end IF result = "1" then do weiter = 0 Delay(50) end end end CALL TR_SetAttribute(progressproject,'10','TRAT_Text','Receiving' filename) RECEIVE filename weiter = 0 DO WHILE weiter ~= 1 INACTION IF result = "0" then do weiter = 1 end IF result = "1" then do weiter = 0 Delay(50) end end IF progress < 100 then do progress = progress+steps CALL TR_SetAttribute(progressproject,'5','TRAT_Value',progress) end IF readme = '1' then do dotpos = LASTPOS('.',filename) readfile = DELSTR(filename,dotpos,4) readfile = readfile".readme" CALL TR_SetAttribute(progressproject,'10','TRAT_Text','Receiving' readfile) RECEIVE readfile weiter = 0 DO WHILE weiter ~= 1 INACTION IF result = "0" then do weiter = 1 end IF result = "1" then do weiter = 0 Delay(50) end end IF progress < 100 then do progress = progress+steps CALL TR_SetAttribute(progressproject,'5','TRAT_Value',progress) end end weiter = 0 prevdir = dir end /*------------*/ /* Quit AmFTP */ /*------------*/ ADDRESS AMFTP.1 CALL TR_SetAttribute(progressproject,'10','TRAT_Text','Exiting') close quit CALL TR_Closeproject(progressproject) CALL TR_DeleteApp(app) /*-------------*/ /* Go offline? */ /*-------------*/ off = rtezrequest('Go offline now?','_Yes|_No','AminetGetFTP',pos) IF off = "1" then do ADDRESS MIAMI.1 OFFLINE CALL DELAY(50) QUIT end EXIT /*------*/ /* Quit */ /*------*/ quit: CALL TR_CloseProject(project) CALL TR_DeleteApp(app) exit(0) /*------------*/ /* Interrupts */ /*------------*/ HALT: SAY "Program terminated trough global HALT interrupt!" exit(20) BREAK_C: exit(10) IOERR: SAY "I/O-Error in line:" SIGL SAY "Errorcode:" RC SAY "Error:" ERRORTEXT(RC) SAY "Line says:" SOURCELINE(SIGL) exit(20) SYNTAX: SAY "SYNTAX Error in line:" SIGL SAY "Errorcode:" RC SAY "Error:" ERRORTEXT(RC) SAY "Line says:" SOURCELINE(SIGL) exit(20) /*-------------*/ /* Stored list */ /*-------------*/ storedlist: /*------------------*/ /* Lock main window */ /*------------------*/ CALL TR_LockProject(project) /*------------------*/ /* Read stored file */ /*------------------*/ IF EXISTS('YAM:AGetFTP-Stored') then do CALL READFILE('YAM:AGetFTP-Stored',list) CALL READFILE('YAM:AGetFTP-Stored',list2) end ELSE do list.0 = 0 list2.0 = 0 end /*---------------------------*/ /* Define stored list window */ /*---------------------------*/ storedwin = WindowID('3'), WindowTitle('Stored files'), ScreenTitle('AminetGetFTP V1.1 (26-08-1998) © Yves Grabowsky'), WindowPosition('TRWP_CENTERSCREEN'), 'TRWI_PropFontAttr textatt', VertGroupA, Space, CenteredText3('Following files were stored:'), Space, HorizGroupA, Space, 'TROB_Listview "list" TRAT_Flags TRLV_READONLY TRAT_ID "5" TRAT_MinWidth "90" TRAT_MinHeight "15" TRAT_Value "0" TRLV_Top "0"', Space, Endgroup, Space, CenteredButton('_Ok','6'), Space, Endgroup, EndProject /*--------------*/ /* Open project */ /*--------------*/ storedproject = TR_OpenProject(app,storedwin) DO WHILE exit ~= 1 CALL TR_WAIT(app,'') DO WHILE TR_HandleMsg(app,event) IF event.trm_class = "TRMS_CLOSEWINDOW" then do exit = 1 nixmochn = 1 end IF event.trm_id = "6" then do exit = 1 end end end exit = 0 CALL TR_CloseProject(storedproject) IF nixmochn ~= 1 then do IF list.0 >0 then do CALL WRITEFILE('YAM:AGetFTP-Stored',list) end end /*--------------------*/ /* Unlock main window */ /*--------------------*/ CALL TR_UnlockProject(project)