/*$VER: AmiHunter.amirx 1.6 (21.5.98) Aminet/Amirc File Finder/Downloader*/ /* */ /* Read the KSMaster.guide or look on my home page for more info */ /* */ /* IRC Bossman^ Email: bosman@erols.com www.erols.com/bosman */ /* */ /*----------------------------Config area--------------------------------*/ Savedir = 'Dh2:AmiHunter/' /* Where you want downloads to go */ Readme = 1 /* 1 Download Readme with file */ /* 0 Do not Download Readme */ DeleteReadme = 0 /* 1 Deletes Readme after VREAD */ /* 0 Leave Readme in T: */ maxechosend=20 /* max number of echo output lines */ width=100 /* width per output line */ site_default = 2 /* Change this to your favorite site */ /* Don't edit the site list or change its order... */ site.0 = 5 site.1 = 'ftp.wustl.edu' site.2 = 'ftp.uni-paderborn.de' site.3 = 'ftp.doc.ic.ac.uk' site.4 = 'ftp.livewire.com.au' site.5 = 'ftp.unina.it' /*----------------------End of Config-----------------------------------*/ libs = "rexxsupport.library rexxdossupport.library rexxkuang11.library" DO UNTIL libs='' PARSE VAR libs lib libs IF EXISTS('libs:'lib)|EXISTS('Libs/'lib)|EXISTS(lib) THEN DO if ~show('L',lib) THEN call addlib(lib,0,-30,0) END ELSE DO LECHO('Cannot load 'lib) EXIT END END OPTIONS RESULTS "INFO screen" pubs='"'||result||'"' if pubs= '""' then pubs='"Workbench"' bold=d2c(2) datafile = 'T:AmiHunter.txt' PARSE ARG type cmds IF Upper(type)="FIND" & cmds="" THEN DO CECHO('Usage: /find [EXACT] <"substring"|"sub strings"> [-w] [-m] [-s]') EXIT END IF Upper(type)="CSEND" & cmds="" THEN DO CECHO('Usage: /CSEND 1 or 2,3') EXIT END IF Upper(type)="GET" & cmds="" THEN DO CECHO('Usage: /GET 1 or 2,3') EXIT END IF Upper(type)="USEND" & cmds="" THEN DO CECHO('Usage: /USEND 1 or 2,3') EXIT END IF Upper(type)="VREAD" & cmds="" THEN DO CECHO('Usage: /VREAD 1 or 2,3') EXIT END SELECT WHEN UPPER(type) = 'FIND' THEN find() WHEN UPPER(type) = 'GET' THEN get() WHEN UPPER(type) = 'USEND' THEN usend() WHEN UPPER(type) = 'CSEND' THEN csend() WHEN UPPER(type) = 'VREAD' THEN get() OTHERWISE CECHO('Not a vaild AmiHunter command') END EXIT GET: checkdatafile() DO WHILE LEFT(WORD(cmds,WORDS(cmds)),1)='-' lw=UPPER(WORD(cmds,WORDS(cmds))) lc=LEFT(lw,2) num=RIGHT(lw,length(lw)-2) IF lc='-S' THEN DO site_num = num END cmds=REVERSE(cmds) PARSE VAR cmds .' 'cmds cmds=REVERSE(cmds) END IF Site_num ~= 'SITE_NUM' THEN IF DATATYPE(Site_num) = 'NUM' THEN IF site_num <= Site.0 THEN site_default = site_num IF site_num = 'SITE_NUM' THEN site_num = site_default IF site.site_num = 'ftp.wustl.edu' THEN DO site = 'ftp.wustl.edu' fileloc = '~aminet/dirs/aminet/' END IF site.site_num = 'ftp.uni-paderborn.de' THEN DO site = 'ftp.uni-paderborn.de' fileloc = 'aminet/dirs/aminet/' END IF site.site_num = 'ftp.doc.ic.ac.uk' THEN DO site = 'src.doc.ic.ac.uk' fileloc = 'public/aminet/info/www/dirs/aminet/' END IF site.site_num = 'ftp.livewire.com.au' THEN DO site = 'www.livewire.com.au' fileloc = 'pub/aminet/' END IF site.site_num = 'ftp.unina.it' THEN DO site = 'ftp.unina.it' fileloc = '~aminet/dirs/aminet/' END DO UNTIL cmds = ' ' GETFILELINE() file = WORD(fileline,2) filedir= WORD(fileline,3) IF UPPER(type) = 'VREAD' THEN CALL DREADME() IF UPPER(type) = 'GET' THEN DO CECHO('Downloading:'BOLD(file)' From: 'BOLD(site)' Saving To: 'BOLD(savedir||file)) CECHO('C:zed_httpget 'site '80 'fileloc||filedir||'/'||file savedir||file) ADDRESS COMMAND 'C:zed_httpget 'site '80 'fileloc||filedir||'/'||file savedir||file CECHO('Finished Downloading:'Bold(file)) END IF UPPER(type) = 'GET' & readme = 1 THEN CALL DREADME() END EXIT DREADME: IF UPPER(type) = 'VREAD' THEN savedir='T:' file=reverse(file) PARSE VAR file ext'.'filer file=reverse(filer)||'.readme' CECHO('Downloading:'BOLD(file)' From: 'BOLD(site)' SavingTo: 'BOLD(savedir||file)) ADDRESS COMMAND 'C:zed_httpget 'site '80 'fileloc||filedir||'/'||file savedir||file CECHO('Finished Downloading:'Bold(file)) IF UPPER(type) = 'VREAD' THEN DO CECHO('Viewing:'Bold(file)) showscreen = 'pubscreen '||pubs view = 'Sys:Utilities/multiview' filename= savedir||file ADDRESS COMMAND view showscreen '"'filename'"' IF DeleteReadme THEN DELETE(filename) END RETURN CSEND: CHECKDATAFILE() DO UNTIL cmds = ' ' GETFILELINE() 'say 'BOLD('<> ')fileline END EXIT USEND: CHECKDATAFILE() IF DATATYPE(WORD(cmds,1))='NUM' then do CECHO('You need to enter a Nick, then file numbers') EXIT END IF UPPER(WORD(cmds,1)) = '%U' THEN DO "GETSELECTEDUSER";foruser=result END ELSE foruser = WORD(cmds,1) cmds = SUBWORD(cmds,2) CECHO('Sending file number(s) 'cmds ' to 'foruser) DO UNTIL cmds = ' ' GETFILELINE() NOTICE(foruser,BOLD('<> ')fileline) END EXIT find: DO while LEFT(WORD(cmds,WORDS(cmds)),1)='-' lw=UPPER(WORD(cmds,WORDS(cmds))) lc=LEFT(lw,2) num=RIGHT(lw,LENGTH(lw)-2) IF lc='-M' THEN DO maxchansend=num maxechosend=num END IF lc='-W' THEN DO width=num END IF lc='-S' THEN DO site_num=num END cmds=REVERSE(cmds) PARSE VAR cmds .' 'cmds cmds=REVERSE(cmds) END IF Site_num ~= 'SITE_NUM' THEN IF datatype(Site_num) = 'NUM' THEN IF site_num <= Site.0 THEN site_default = site_num IF UPPER(WORD(cmds,1))='EXACT' THEN DO exact=1 PARSE VAR cmds .' 'cmds END ELSE exact=0 cmds = STRIP(cmds) IF INDEX(cmds,'"')>0 THEN DO PARSE VAR cmds '"'name'"' cmd END ELSE DO IF WORDS(cmds) > 1 THEN DO PARSE VAR cmds name' 'cmd END ELSE name=cmds END IF exact THEN name='"'name'"' IF ~SHOWLIST(H,'TCP') THEN ADDRESS COMMAND 'mount TCP: from amitcp:devs/inet-mountlist' IF ~SHOWLIST(H,'TCP') THEN ADDRESS COMMAND 'mount TCP:' IF SHOWLIST(H,'TCP') THEN DO name=STRIP(name) otext='Finding: ' IF exact THEN otext=otext||'(exact) ' length=maxechosend otext=otext||BOLD(name)||', width 'BOLD(width)||', maxlength 'BOLD(maxechosend)||', Site: 'BOLD(site.site_default)||'.' CECHO(otext) CALL OPEN(2,datafile,w) IF OPEN(1,'tcp:'site.site_default'/1848',w) THEN DO CALL WRITELN(1,'max 'length) CALL WRITELN(1,'width 'width) CALL WRITELN(1,'find 'name) CALL WRITELN(1,'max') cnt=0 fln = 1 DO UNTIL EOF(1) text=READLN(1) IF SUBSTR(text,1,15)~='Unknown command' THEN CALL WRITELN(2,fln'. 'text) IF text='Missing argument.' THEN leave ELSE DO SELECT WHEN SUBSTR(text,1,6)='Unknow' THEN fln = fln-1 WHEN SUBSTR(text,1,6)='*** No' THEN CECHO('No Matches Found.') WHEN SUBSTR(text,1,6)='*** Ad' THEN CECHO('Additional Matches Found (use higher -m value for more).') OTHERWISE CECHO(' 'bold||fln||bold'. 'text) END END fln=fln+1 cnt=cnt+1 IF (cnt>=maxsend) THEN leave END CALL WRITELN(1,'quit') END ELSE CECHO('Error connecting to:'site.site_default) END ELSE CECHO('TCP: can not be mounted...') EXIT GETFILELINE: PARSE VAR cmds file','cmds filenum = COMPRESS(file'.') fileline = SEARCHFOR(datafile,filenum) IF fileline='' | WORD(fileline,2) ='Missing' | WORD(fileline,2)='***' THEN CECHO(filenum 'does not exists in the Data file') ELSE RETURN fileline EXIT CHECKDATAFILE:IF ~EXISTS(datafile) THEN DO;CECHO('No Data file found');EXIT;END LECHO:;"ECHO P="d2c(27)"b«"Error"» C=6" arg(1);RETURN 0 CECHO:;"ECHO P="d2c(27)"b«AmiHunter» C=0" arg(1);RETURN 0 NOTICE:;'QueueRAW NOTICE' arg(1) ':'arg(2);RETURN 0