home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Magazyn WWW 1999 July
/
www_07_1999.iso
/
prez
/
amiga
/
stricq_1371.lha
/
stricq
/
rexx
/
ConnectionWizard.rexx
next >
Wrap
OS/2 REXX Batch file
|
1999-05-07
|
10KB
|
321 lines
/*****************************************************************************************
ConnectionWizard.rexx - An easy way to integrate your favourite Internet Programs
by Giuseppe "Uranya" Di Terlizzi - ICQ Number 24696986 - (also on IRC)
$VER: ConnectionWizard.rexx v1.3 (05.05.1999) Copyright(c) 1999 Giuseppe Di Terlizzi
Brief Instructions: You could personalize your wizard simply changing the record Prg
Prg.0.xxxx = The informations about your TCP/IP Stack
Prg.x.name = The full path and name of the x program
Prg.x.port = The ARexx port of your x program
Prg.x.butt = The name on buttons to identify your x program
Prg.x.quit = The ARexx Command of x program to quit
Important notes: x is the number of your program (could be greater as you want)
Prg.last indicates the last program on the requestchoise window
ARexx commands Prg.0.cmd.xxxx are set for Miami3 (earlier not tested)
Prg.x.gadg MUST ALWAYS BE FIXED ON -1
Needs: An Amiga ;-), RexxMast started, C:RequestChoice and C:Wait, no more needs!
******************************************************************************************/
/* Constants declarations ---------------------------------------------------------------*/
OPTIONS RESULTS
TRUE=1 ; FALSE=0 ; WARN=5
WizRet="ConnWiz.Ret" ; RunFlag="ConnWiz.Run" ; IngFlag="ConnWiz.Ing"
/* Control function ---------------------------------------------------------------------*/
IF CheckFlag(RunFlag)=FALSE THEN CALL Main
ELSE EXIT
Main:
/*****************************************************************************************/
/* */
/* YOU COULD MODIFY ONLY THIS SECTION FOR PERSONALIZATION OF WIZARD */
/* */
/*****************************************************************************************/
/* TCP/IP Stack Informations ------------------------------------------------------------*/
Prg.0.name="Miami:Miami SETTINGS=Miami:Miami.hided"
Prg.0.port="MIAMI.1"
Prg.0.butt="Miami"
Prg.0.quit="QUITFORCE"
Prg.0.cmd.online="online"
Prg.0.cmd.offline="offline"
Prg.0.cmd.checkline="isonline"
Prg.0.cmd.speed="getconnect"
Prg.0.cmd.time="getconnecttime"
/* Programs Informations ----------------------------------------------------------------*/
Prg.1.name="Internet:StrICQ/StrICQ"
Prg.1.port="STRICQ.1"
Prg.1.butt="StrICQ"
Prg.1.quit="QUIT"
Prg.1.gadg=-1
Prg.2.name="Internet:AmIRC_22/AmIRC020"
Prg.2.port="AMIRC.1"
Prg.2.butt="AmIRC"
Prg.2.quit="QUIT"
Prg.2.gadg=-1
Prg.3.name="Internet:Voyager/V030"
Prg.3.port="VOYAGER"
Prg.3.butt="Voyager"
Prg.3.quit="QUIT"
Prg.3.gadg=-1
Prg.4.name="Internet:AWeb32/AWeb-II"
Prg.4.port="AWEB.1"
Prg.4.butt="AWeb-II"
Prg.4.quit="QUIT"
Prg.4.gadg=-1
Prg.5.name="Internet:YAM/YAM"
Prg.5.port="YAM"
Prg.5.butt="YAM 2"
Prg.5.quit="QUIT"
Prg.5.gadg=-1
Prg.Last=5
/*****************************************************************************************/
/* */
/* YOU COULD NOT MODIFY THE SECTION BELOW: IT IS THE MAIN CODE */
/* */
/*****************************************************************************************/
Ask.goline.1=Prg.0.butt "is OFFLINE*nLoad"
Ask.goline.2="in which mode?"
CALL SetFlag(RunFlag)
Tit.main="ConnectionWizard v1.3 ⌐1999 Uranya"
Ask.select="Select an Internet Option or Program"
Ask.quit="Are you SURE you want to Quit?"
Tit.infos=""
Def.Ok="OK"
Def.No="NO, never!"
Def.Yes="Yes, I want!"
Def.ON="ONLINE"
Def.OFF="OFFLINE"
Def.Quit="QUIT"
Def.Cancel="CANCEL"
Def.Fault="Error: Cannot load the program"
Def.Check="Ok, I will check it..."
Def.TCPFalut="Port" Prg.0.port "not found"
/*--------------------------------------------------------------------------------------*/
ADDRESS COMMAND
IF CheckPort(Prg.0.port)=FALSE THEN DO
IF LoadTCP()=FALSE THEN DO
CALL UnSetFlag(RunFlag)
CALL LoadErr(Prg.0.butt,Def.TCPFault)
EXIT
END
END
StrReq='"'Def.Quit'"'
IniTCPStatus=GetTCPStatus()
IF IniTCPStatus=TRUE THEN DO
StrReq=StrReq '"'Def.OFF'"'
Tit.infos=GetTCPInfos()
CALL UnSetFlag(IngFlag)
END
ELSE StrReq=StrReq '"'Def.ON'"'
Actgad=3
DO Num=1 TO Prg.Last
Prg.Num.active=CheckPort(Prg.Num.port)
IF Prg.Num.active=FALSE THEN DO
Prg.Num.gadg=Actgad
StrReq=StrReq '"'Prg.Num.butt'"'
Actgad=Actgad+1
END
END
StrReq='SetEnv' WizRet '`C:RequestChoice "'Tit.main Tit.infos'" "'Ask.select'"' StrReq '"'Def.Cancel'"`'
ADDRESS COMMAND StrReq
Ret=GetResult(WizRet)
CALL UnSetFlag(RunFlag)
SELECT
WHEN Ret=1 THEN CALL QuitWizard
WHEN Ret=2 THEN CALL SwitchTCPStatus
WHEN Ret>2 THEN DO
Found=FALSE
DO Num=1 TO Prg.Last WHILE Found=FALSE
IF Prg.Num.gadg=Ret THEN DO
Offs=Num
Found=TRUE
END
END
LRes=LoadPrg(Prg.Offs.name,Prg.Offs.butt)
IF LRes~=0 THEN DO ; CALL LoadErr(Prg.Offs.butt,'Returned: '||LRes) ; END
END
OTHERWISE
END
EXIT
/*****************************************************************************************/
/* */
/* BELOW THERE ARE THE SUBROUTINES */
/* */
/*****************************************************************************************/
GetResult:
EnvFile='ENV:'||ARG(1)
CALL OPEN('Logic',EnvFile,'R')
Char=READCH('Logic',1)
CALL CLOSE('Logic')
CALL UnSetFlag ARG(1)
RETURN Char
/*****************************************************************************************/
CheckPort:
IF ~Show('P',ARG(1)) THEN RETURN FALSE
RETURN TRUE
/*****************************************************************************************/
LoadPrg:
NamePrg=ARG(1)
ButtPrg=ARG(2)
IF ((GetTCPStatus()=FALSE) & (CheckFlag(IngFlag)=FALSE)) THEN DO
StrReq='SetEnv' WizRet '`C:RequestChoice "'Tit.main'" "'Ask.goline.1 ButtPrg Ask.goline.2'" "'Def.ON'" "'Def.OFF'" "'Def.Cancel'"`'
ADDRESS COMMAND StrReq
Ret=GetResult(WizRet)
IF Ret=1 THEN CALL GoOnAsync
END
IF Ret>0 THEN ADDRESS COMMAND NamePrg
RETURN RC
/*****************************************************************************************/
LoadErr:
StrReq= 'C:RequestChoice "'Tit.main Tit.infos'" "'Def.Fault ARG(1)'*n'ARG(2)'" "'Def.Check'"'
ADDRESS COMMAND StrReq
RETURN
/*****************************************************************************************/
ObtainPort:
MaxTries=10
Tries=0
Chk=FALSE
DO UNTIL ((Chk~=FALSE) | (Tries<MaxTries))
Tries=Tries+1
CALL Wait(3)
Chk=CheckPort(ARG(1))
END
RETURN Chk
/*****************************************************************************************/
GoOnAsync:
CALL SetFlag(IngFlag)
ADDRESS COMMAND "RUN <>NIL: SYS:Rexxc/rx " '"ADDRESS' Prg.0.port Prg.0.cmd.online'"'
RETURN
/*****************************************************************************************/
GoOffAsync:
ADDRESS COMMAND "RUN <>NIL: SYS:Rexxc/rx " '"ADDRESS' Prg.0.port Prg.0.cmd.offline'"'
RETURN
/*****************************************************************************************/
LoadTCP:
ADDRESS COMMAND "RUN <>NIL: " Prg.0.name
RETURN ObtainPort(Prg.0.port)
/*****************************************************************************************/
GetTCPStatus:
ADDRESS VALUE Prg.0.port ; Prg.0.cmd.checkline
RETURN RC
/*****************************************************************************************/
SwitchTCPStatus:
IF IniTCPStatus=1 THEN CALL GoOffAsync
ELSE CALL GoOnAsync
RETURN
/*****************************************************************************************/
GetTCPInfos:
ADDRESS VALUE Prg.0.port ; Prg.0.cmd.speed
Infos=result
ADDRESS VALUE Prg.0.port ; Prg.0.cmd.time
Total=result
Minutes=Total%60
Seconds=Total-(Minutes*60)
IF Minutes>1000 THEN Minutes='+'||(Minutes-15429722)
IF Seconds<10 THEN ColZero=":0"
ELSE ColZero=":"
Infos=" SPEED" Infos " Online time" Minutes||ColZero||Seconds
RETURN Infos
/*****************************************************************************************/
QuitWizard:
StrReq='SetEnv' WizRet '`C:RequestChoice "'Tit.main'" "'Ask.quit'" "'Def.Yes'" "'Def.No'"`'
ADDRESS COMMAND StrReq
Ris=GetResult(WizRet)
IF Ris=1 THEN DO
CALL GoOffAsync
DO Num=1 TO Prg.Last
IF Prg.Num.active=TRUE THEN DO
ADDRESS VALUE Prg.Num.port ; Prg.Num.quit
END
END
ADDRESS VALUE Prg.0.port ; Prg.0.quit
END
RETURN
/*****************************************************************************************/
SetFlag:
ADDRESS COMMAND "SetEnv" ARG(1) TRUE
RETURN
/*****************************************************************************************/
UnSetFlag:
ADDRESS COMMAND "UnSetEnv" ARG(1)
RETURN
/*****************************************************************************************/
CheckFlag:
Flag=ARG(1)
IF EXISTS("ENV:"Flag)=TRUE THEN RETURN TRUE
RETURN FALSE
/*****************************************************************************************/
Wait:
ADDRESS COMMAND
C:WAIT ARG(1)
RETURN
/*****************************************************************************************/
/* */
/* END OF CONNECTION WIZARD */
/* */
/*****************************************************************************************/