home *** CD-ROM | disk | FTP | other *** search
/ The Datafile PD-CD 3 / PDCD_3.iso / internet / demonspt / DEMONSPT
Text File  |  1995-07-01  |  11KB  |  376 lines

  1. #slipdial
  2. #--------------------------------------------------------------------
  3. # $Id: demon 1.6 95/06/20 23:42:00 root Exp Locker: root $
  4. #
  5. # Script: !SlipDial.Scripts.demon
  6. #
  7. # Script for calling Demon Internet Services.
  8. #
  9. # Credits: original               R.W. Orwin 1994 (rob@wong.demon.co.uk)
  10. #          sprites                James Woodman   (woody@bacchus.demon.co.uk)
  11. #          new version            Alan Fitch      (alan@cycle.demon.co.uk)
  12. #          mercury improvements   Mike James      (mike@hamble.demon.co.uk)
  13. #          improved setting up    Doug Macready   (dougmac@newquay.zynet.co.uk)
  14. #
  15. # Maintained by Alan Fitch
  16. #
  17.  
  18. call initMain
  19. call configure
  20. call setserial
  21. call makemenus
  22. call %provider
  23.  
  24. #
  25. # main loop
  26. #
  27.  
  28. :loop
  29. message /close
  30. wait /event
  31. goto loop
  32. exit
  33.  
  34. # end of program
  35. #--------------------------------------------------------------------
  36.                 
  37. #====================================================================
  38. # SUBROUTINES
  39. #====================================================================
  40.  
  41. # dial number 1 from the configuration file
  42. :dial1
  43. set nRetries 50
  44. set phonenum %phonenum1
  45. if (?ne %phonenum1 %nopredialnum) set phonenum %predial%phonenum1
  46. goto dodial             
  47.  
  48. # dial number 2 from the configuration file
  49. :dial2
  50. set nRetries 50
  51. set phonenum %phonenum2
  52. if (?ne %phonenum2 %nopredialnum) set phonenum %predial%phonenum2
  53. goto dodial             
  54.  
  55. # dial number 3 from the configuration file
  56. :dial3
  57. set nRetries 50
  58. set phonenum %phonenum3
  59. if (?ne %phonenum3 %nopredialnum) set phonenum %predial%phonenum3
  60. goto dodial             
  61.  
  62. # dial the number defined as local
  63. :diallocal
  64. set nRetries 50
  65. set phonenum %localnumber
  66. if (?ne %localnumber %nopredialnum) set phonenum %predial%localnumber
  67. goto dodial             
  68.  
  69. #-----------------------------------------------------------
  70. # Subroutine: List
  71. # Calls a list of phone numbers, specified below in the 
  72. # variable 'phonenum'.  Returns via subroutine dodial.
  73. # nRetries is the number of times SlipDial retries the number 
  74. # if it is busy.
  75. # The number of retries is reduced compared to the other 
  76. # menu items (which dial only one PoP) as the intention is to 
  77. # to work through the list of numbers reasonably quickly.
  78. #-----------------------------------------------------------
  79.  
  80. :List
  81. set nRetries 5
  82. set phonenum %phonenum1
  83. if (?ne %phonenum1 %nopredialnum) set phonenum %predial%phonenum1
  84. if (?ne %phonenum2 %nopredialnum) set phonenum "%phonenum %predial"
  85. set phonenum "%phonenum%phonenum2"
  86. if (?ne %phonenum3 %nopredialnum) set phonenum "%phonenum %predial"
  87. set phonenum "%phonenum%phonenum3"
  88. goto dodial
  89.  
  90. #-----------------------------------------------------------
  91. # Subroutine: dodial
  92. # Note: has multiple entry points from "goto" statements
  93. # above.  However it finally returns to the main waiting
  94. # loop.
  95. #-----------------------------------------------------------
  96.  
  97. :dodial               
  98.  
  99. #
  100. # kill newsbase and ttfn if they are running, and were started from SlipDial
  101. #
  102. # Note that if they weren't started by SlipDial, SlipDial knows nothing
  103. # about them and will start another copy even if they are already running.
  104. #
  105.  
  106. task /kill="Newsbase"
  107. task /kill="TTFN"
  108.  
  109. # Claim the device driver
  110.  
  111. if (!claim 3) return 0
  112.  
  113. # initialise modem
  114.  
  115. init 
  116.  
  117. # check if DSR and CTS are set
  118.  
  119. #if (?eq {?line/dsr} 0) goto no_dsr
  120. #if (?eq {?line/cts} 0) goto no_cts
  121.  
  122. # dial the number, return to main menu if failed.
  123.  
  124. retry %nRetries 15
  125. if (!dial /nodial=5 /nocar=3 /busy=3 %phonenum) return 0
  126.  
  127. #
  128. # arrive here if dial succeeded
  129. # get username/password prompts to authenticate self to server.
  130. # after each prompt, return to main menu if failed.
  131. #
  132.  
  133. if (!wait /del=50 ogin:) goto no_login
  134. send %nodename
  135.  
  136. if (!wait /del=20 word:) goto no_password
  137. send %password
  138.  
  139. if (!wait /del=50 ocol:) goto no_protocol
  140. send %protocol
  141.  
  142. message /capture="IP" /end="HELLO" /maxlines=7 /centre
  143. ipget 158.
  144. if (!wait /del=30 HELLO) return 0
  145.  
  146. pause 5
  147. task /name="TCP/IP" <TCPIP2$dir>.!Run
  148.  
  149. # watch out for carrier detect to go low
  150.  
  151. alarm /dcd "goto good_finish"
  152. :loop2
  153. wait /event
  154. goto loop2
  155.  
  156. #
  157. # Call has been finished successfully, so release the port
  158. #
  159.  
  160. :good_finish
  161. task /kill="TCP/IP"
  162. message /close
  163. message "Call finished successfully" /centre
  164. release
  165.  
  166. # now pause for 2 seconds to allow RISC OS to sort out the display.
  167.  
  168. pause 2
  169.  
  170. #
  171. # Start up TTFN and Newsbase.
  172. #
  173.  
  174. if (!?task TTFN) task /name="TTFN" <TTFN$Dir>.!Run
  175. if (!?task NewsBase) task /name="Newsbase" <NewsBase$Dir>.!Run
  176. return 1
  177.  
  178. #
  179. # Call failed in some way
  180. #
  181.  
  182. :no_dsr
  183. message/wait "Modem not ready - DSR line is not set" "(Please close this window to continue)" /centre
  184. goto bad_finish
  185.  
  186. :no_cts
  187. message/wait "Modem not ready - CTS line is not set" "(Please close this window to continue)" /centre
  188. goto bad_finish
  189.  
  190. :no_login
  191. message "Call failed - timeout waiting for login prompt" /centre
  192. goto bad_finish
  193.  
  194. :no_password
  195. message "Call failed - timeout waiting for password prompt" /centre
  196. goto bad_finish
  197.  
  198. :no_protocol
  199. message "Call failed - timeout waiting for protocol prompt" /centre
  200. goto bad_finish
  201.  
  202. :bad_finish
  203. pause 1
  204. release
  205. reinit
  206. return 0
  207.  
  208. #-----------------------------------------------------------
  209. # Subroutine: Bt
  210. # Set the provider to BT
  211. #-----------------------------------------------------------
  212.  
  213. :bt
  214. set provider bt
  215. icon /id="Mercury" /action="call bt" hgoff
  216. set predial ""
  217. message "service provider set to BT" /centre
  218. pause 1
  219. return 1
  220.  
  221. #-----------------------------------------------------------
  222. # Subroutine: Mercury
  223. # Set the provider to Mercury
  224. #-----------------------------------------------------------
  225.  
  226. :mercury
  227. set provider Mercury
  228. icon /id="Mercury" /action="call mercury" hgon
  229. set predial %mercury_pin
  230. message "service provider set to Mercury" /centre
  231. pause 1
  232. return 1
  233.  
  234. #-----------------------------------------------------------
  235. # Subroutine: makemenus
  236. # Defines the menus for dialling etc.  Note the length of 
  237. # all the names must be less than 255 characters total, as 
  238. # must the length of all the commands.
  239. #-----------------------------------------------------------
  240.  
  241. :makemenus
  242. menu "%name1:call dial1" "%name2:call dial2" "%name3: call dial3" "List:call List"
  243. menu /icon="Mercury" "Mercury:call mercury" "BT:call bt" "Save Default:call saveconfig"
  244. menu /icon="Local"   "Local call:call diallocal" 
  245. return 1
  246.  
  247. #-----------------------------------------------------------
  248. # Subroutine: setserial
  249. # Set Serial Port/Driver Parameters
  250. #-----------------------------------------------------------
  251.  
  252. :setserial
  253. driver %driver
  254. port %wport %prtnum
  255. speed %speed
  256. set protocol slip
  257. return 1
  258.  
  259. #-----------------------------------------------------------
  260. # Subroutine: setup1
  261. # Called to setup defaults if no configuration file present.
  262. #-----------------------------------------------------------
  263.  
  264. :setup1
  265. input/prompt="Enter Serial Block Driver Name         : " wport
  266. input/prompt="Enter Serial Port Number (if relevant) : " prtnum
  267. input/prompt="Enter Your Modem->Computer Speed (bps) : " speed
  268. input/prompt="Enter Your Demon Nodename              : " nodename
  269. input/prompt="Enter Your Password                    : " password
  270. input/prompt="Enter Your Modem Driver Name (e.g. USR): " driver
  271. input/prompt="Enter Telephone Provider (BT/Mercury)  : " provider
  272. input/prompt="Enter Your Mercury PIN                 : " mercury_pin
  273. input/prompt="Enter NAME of main number e.g. London  : " name1
  274. input/prompt="Enter NUMBER of main number e.g. 01813384848 : " phonenum1  
  275. input/prompt="Enter NAME of 2nd number               : " name2
  276. input/prompt="Enter NUMBER  2nd number               : " phonenum2
  277. input/prompt="Enter NAME of 3rd number               : " name3
  278. input/prompt="Enter NUMBER of 3rd number             : " phonenum3
  279. input/prompt="Enter nearest NUMBER, e.g. 01813384848 : " localnumber
  280. input/prompt="Enter your non-mercury number, e.g. 01813384848 : " nopredialnum
  281. :saveconfig
  282. set filename {?file/expand slipdial:demconfg}
  283. open/id=conf/write %filename
  284. write/id=conf %wport
  285. write/id=conf %prtnum
  286. write/id=conf %speed
  287. write/id=conf %nodename
  288. write/id=conf %password
  289. write/id=conf %driver
  290. write/id=conf %provider
  291. write/id=conf %mercury_pin
  292. write/id=conf %name1
  293. write/id=conf %phonenum1
  294. write/id=conf %name2
  295. write/id=conf %phonen