home *** CD-ROM | disk | FTP | other *** search
/ PC-Online 1998 February / PCOnline_02_1998.iso / 1&1 / decoder.z / FUNSOCK.MKR < prev    next >
Text File  |  1997-02-17  |  12KB  |  477 lines

  1. # -----------------------------------------------------------------------------
  2. # T-Online-Decoder 1.2c
  3. # -----------------------------------------------------------------------------
  4. # Aufruf T-Online-FUNSock-Gateway und Rⁿckkehr nach CEPT
  5. # -----------------------------------------------------------------------------
  6. # (C) 1997  FUN Kommunikationssysteme GmbH
  7. # Stand: 17.2.1997 Klaus Nahr, FUN
  8. # -----------------------------------------------------------------------------
  9.  
  10.  
  11. # Defaultwert -----------------------------------------------------------------
  12. set DEBUG = "off"
  13. # Fⁿr Tests die folgenden beiden Zeilen aktivieren
  14. # Debugausgaben an, CEPT zeigen
  15. # set DEBUG = "on"
  16. # set PROTWIN = "on"
  17. # onwin
  18.  
  19.  
  20. # CEPT-Fenster schliessen -----------------------------------------------------
  21. if DEBUG == "on" goto NoOffwin
  22. offwin
  23. NoOffwin:
  24.  
  25.  
  26. # Nummer der Gateway-Seite, Defaultparameter ----------------------------------
  27. set RegPage      = ""
  28. set GatePage     = ""
  29. set ReturnPage   = ""
  30. set Application  = ""
  31. set Argument1    = ""
  32. set Argument2    = ""
  33. set Argument3    = ""
  34. set Argument4    = ""
  35. set Argument5    = ""
  36. set Argument6    = ""
  37. set RegFilename  = "FUNSOCK.INI"
  38. set RegSection   = "Gateway"
  39. set RegOk        = "Ok"
  40. set RegFailed    = "Failed"
  41. set RegDefault   = "*NOTFOUND*"
  42. set GeldFilename = "PREMIUM.INI"
  43. set GeldSection  = "Konfiguration"
  44. set GeldEntry    = "Betrag"
  45. set GeldDefault  = "*NOTFOUND*"
  46. set AutoBestaetigung = "Nein"
  47. set Action       = ""
  48.  
  49. # Texte in der Messageboxen ---------------------------------------------------
  50. set MessageTitel = "T-Online Internet-Gateway"
  51. set MessageTextRegistrierung = "Zur Nutzung des Internet-Gateways mⁿssen\nSie sich zunΣchst registrieren.\n\n"
  52. set MessageTextZugang = "Verbindungsaufbau zum Gateway-Rechner.\n\n"
  53. set MessageTextNetzentgelte = "Fⁿr die Verbindung zum Gateway werden Ihnen die\nanfallenden Netzentgelte (Datex-P-Gebⁿhren) berechnet.\n\n"
  54.  
  55. ifless argc than "2" goto Start
  56. set RegPage     = argv_1
  57. ifless argc than "3" goto Start
  58. set GatePage      = argv_2
  59. ifless argc than "4" goto Start
  60. set ReturnPage  = argv_3
  61. ifless argc than "5" goto Start
  62. set Application = argv_4
  63. ifless argc than "6" goto Start
  64. set Argument1 = argv_5
  65. ifless argc than "7" goto Start
  66. set Argument2 = argv_6
  67. ifless argc than "8" goto Start
  68. set Argument3 = argv_7
  69. ifless argc than "9" goto Start
  70. set Argument4 = argv_8
  71. ifless argc than "10" goto Start
  72. set Argument5 = argv_9
  73. ifless argc than "11" goto Start
  74. set Argument6 = argv_10
  75.  
  76. Start:
  77.  
  78. # Automatische Bestaetigung als Parameter (Application == -azb) ---------------
  79. delblanks Application
  80. ifnot Application == "-azb" goto ReadGeldValue
  81. set AutoBestaetigung = "Ja"
  82. set Application = ""
  83.  
  84. # Betrag fuer autom. Bestaetigung lesen ---------------------------------------
  85. ReadGeldValue:
  86. iniread GeldValue = GeldFilename, GeldSection, GeldEntry, GeldDefault
  87.  
  88. # Betrag-Eintrag nicht gefunden => alter Decoder
  89. if GeldValue == GeldDefault goto GeldDone
  90. delblanks GeldValue
  91.  
  92. # von vorne auf mind. 3 Stellen mit Nullern auffuellen
  93. strlen GeldLen of GeldValue
  94. GeldLoop:
  95. ifeqgreater GeldLen than "3" goto GeldOk
  96. strinsert GeldValue, "0", "0"
  97. inc GeldLen
  98. goto GeldLoop
  99. GeldOk:
  100. subtract GeldLen, "2"
  101. strinsert GeldValue, ",", GeldLen
  102.  
  103. GeldDone:
  104. strcat Application, " ",  Argument1, " ", Argument2, " ", Argument3, " ", Argument4, " ", Argument5, " ", Argument6
  105. delblanks Application
  106.  
  107.  
  108. # Internet-Gateway anwΣhlen ---------------------------------------------------
  109. StartConnect:
  110. # Sind wir T-Online?
  111. getstate StatusBeiStart
  112. if StatusBeiStart == "CONNECTED" goto IsOnline
  113. connect
  114.  
  115. # Anwahl ok?
  116. getstate Status
  117. if Status == "DISCONNECTED" goto Ende
  118.  
  119.  
  120. IsOnline:
  121. # evtl. ER verlassen
  122. whatdct DCT
  123. # kein DCT
  124. if DCT == "0" goto Wait
  125. # In einem ER?
  126. if DCT == "2" goto LeaveER
  127. # im VT100-Modus
  128. if DCT == "4" goto Anwendung
  129. goto GoVT100
  130.  
  131. # Warte auf DCT
  132. Wait:
  133. waitdct
  134. goto GoVT100
  135.  
  136. # Verlasse Externen Rechner
  137. LeaveER:
  138. send "\c\*0\#"
  139. waitdct
  140. get line24 = "1", "24", "40", "24"
  141.  
  142. # Im VT100-Mode?
  143. whatdct DCT
  144. if DCT == "4" goto Anwendung
  145.  
  146. # In VT100-Mode wechseln
  147. GoVT100:
  148. # Start im CEPT-Mode
  149. gosub SwitchToVT100
  150.  
  151.  
  152. # Jetzt kanns losgehen --------------------------------------------------------
  153. Anwendung:
  154. # RegPage-Eintrag aus INI-Datei lesen
  155. iniread IniRegPage = RegFilename, RegSection, RegPage, RegDefault
  156.  
  157. # Registrierung bereits erfolgt ?
  158. if IniRegPage == RegOk goto EnterGateway
  159.  
  160. # Registrieren
  161. gosub Register
  162. if Action=="OK" goto EnterGateway
  163. if Action=="Connected" goto EnterGateway
  164. goto Done
  165.  
  166. EnterGateway:
  167. gosub Gateway
  168. # Fehler? Nicht in VT100-Modus bei Aufruf der Gatewayseite?
  169. # dann Moduswechsel nachholen
  170. ifnot Action == "DCTErr" goto Done
  171. gosub GoVT100
  172. gosub Gateway
  173. ifnot Action == "DCTErr" goto Done
  174. messagebox ret: MessageTitel, "Wechsel in den VT100-Mode nicht ausfⁿhrbar", "OK"
  175.  
  176.  
  177. Done:
  178. # Wieder in CEPT wechseln
  179. gosub SwitchToCEPT
  180.  
  181.  
  182. # Rⁿcksprungseite aufrufen ----------------------------------------------------
  183. CallReturnPage:
  184. # Falls ReturnPage == -, dann ignorieren
  185. if ReturnPage == "-" goto NoReturnPage
  186. send "\c*", ReturnPage, "#"
  187. NoReturnPage:
  188.  
  189. # Ende ------------------------------------------------------------------------
  190. Ende:
  191.  
  192. # folgende Message sorgt fuer Schliessen der Box
  193. statusmsg "\\"
  194.  
  195. # Internet-Dialog beenden
  196. statusmsg "~Internet"
  197.  
  198. end
  199.  
  200.  
  201. ###############################################################################
  202. # Verbindung zum Internet-Gateway aufbauen, Ergebnis in Action zurⁿckliefern
  203. ###############################################################################
  204.  
  205. Gateway:
  206. # Bereits im ER?
  207. if Action=="Connected" goto ContinueSession
  208. set Action = "Ok"
  209. # GatePage aufrufen
  210. statusmsg "Internet-▄bergabeseite anwΣhlen ..."
  211. send "\c*", GatePage, "#"
  212. waitdct
  213. # Sind wir im VT100-Mode
  214. whatdct GateDCT
  215. # debug "DCT = ", GateDCT, "\n"
  216. ifnot GateDCT == "1" goto GateDCTOk
  217. set Action = "DCTErr"
  218. return
  219.  
  220. GateDCTOk:
  221.  
  222. set FNSYS = ""
  223.  
  224. # Sind wir auf der richtigen Seite?
  225. getsh SHMeldung
  226. if SHMeldung == "SH506" goto VerbAufbauNetzentgelt
  227. if SHMeldung == "SH047" goto VerbAufbau
  228. if SHMeldung == "SH305" goto VerbAufbau
  229. if SHMeldung == "SH550" goto VerbAufbau
  230. if SHMeldung == "SH581" goto VerbAufbau
  231. goto ERZugangErr
  232.  
  233. # ER-Verbindung mit Netzentgeltⁿbernahme
  234. VerbAufbauNetzentgelt:
  235. gosub GetZeile24
  236. set Message = MessageTextNetzentgelte, Zeile24
  237. messagebox ret: MessageTitel, Message, "YESNO"
  238. if ret == "YES" goto VerbAufbauNetzentgeltOK
  239. set Action = "EXIT"
  240. return
  241. VerbAufbauNetzentgeltOK:
  242. send "19"
  243. waitdct
  244.  
  245. # ER-Verbindung
  246. VerbAufbau:
  247. # Automatische Bestaetigung?
  248. if AutoBestaetigung == "Ja" goto Connect
  249. # Premium-Betrag ? dann autom. bestaetigen
  250. get line24 = "1", "24", "40", "24"
  251. strpos p = GeldValue in line24
  252. ifnot p == "" goto Connect
  253. gosub GetZeile24
  254. set Message = MessageTextZugang, Zeile24
  255. messagebox ret: MessageTitel, Message, "YESNO"
  256. if ret=="YES" goto Connect
  257. set Action = "EXIT"
  258. return
  259.  
  260. Connect:
  261. statusmsg "Verbindung zum Internet-Gateway-Rechner aufbauen ..."
  262. send "19"
  263. waitdct
  264.  
  265. getsh SH
  266. if SH == "AX601" goto ERZugangErr
  267. get FNSYS = "36", "23", "40", "23"
  268. if FNSYS=="FN900" goto ContinueSession
  269.  
  270. ERZugangErr:
  271. set info="Zugang zum Gateway fehlgeschlagen\n"
  272. get line24 = "1", "24", "40", "24"
  273. strcat info, line24
  274. strcat info, " "
  275. strcat info, FNSYS
  276. messagebox ret: MessageTitel, info, "OK"
  277. set Action="EXIT"
  278. return
  279.  
  280. ContinueSession:
  281. # jetzt sind wir im FUNSock ER
  282. # die folgende Message sorgt fuer Schliessen der Status-Box
  283. statusmsg "\\"
  284. if Application=="" goto NoApplication
  285. system Application
  286. NoApplication:
  287.  
  288. # Jetzt warten, bis ER die Sitzung beendet
  289. waitdct
  290.  
  291. get RetCode = "23", "24", "40", "24"
  292. set Sys = "Internetsitzung beendet "
  293. strcat Sys, RetCode
  294. statusmsg Sys
  295.  
  296. return
  297.  
  298.  
  299.  
  300. ###############################################################################
  301. # Registrierungsseite aufrufen
  302. ###############################################################################
  303. Register:
  304.  
  305. # wenn Reg-Seite "*" gar nicht erst aufrufen (FJ) => nicht in INI-Datei
  306. if RegPage == "*" goto RegisterDone
  307. statusmsg "Registrierungsseite anwΣhlen ..."
  308. send "\c*", RegPage, "#"
  309. waitdct
  310.  
  311. # wenn FN990 gleich weiter (FJ) => nicht in INI-Datei
  312. get SHMsg = "36", "23", "40", "23"
  313. if SHMsg == "FN990" goto RegisterDone
  314.  
  315. # Sind wir auf der richtigen Seite?
  316. getsh SHMeldung
  317. if SHMeldung == "SH506" goto DoRegNetzentgelt
  318. if SHMeldung == "SH047" goto DoReg
  319. if SHMeldung == "SH305" goto DoReg
  320. if SHMeldung == "SH550" goto DoReg
  321. if SHMeldung == "SH581" goto DoReg
  322. goto RegFailedNoAccess
  323.  
  324. DoRegNetzentgelt:
  325. gosub GetZeile24
  326. set Message = MessageTextNetzentgelte, Zeile24
  327. messagebox ret: MessageTitel, Message, "YESNO"
  328. if ret == "YES" goto DoRegNetzentgeltOK
  329. set Action = "EXIT"
  330. return
  331. DoRegNetzentgeltOK:
  332. send "19"
  333. waitdct
  334.  
  335. DoReg:
  336. # Premium-Betrag ? dann autom. bestaetigen
  337. get line24 = "1", "24", "40", "24"
  338. strpos p = GeldValue in line24
  339. ifnot p == "" goto DoReallyReg
  340. gosub GetZeile24
  341. set Message = MessageTextRegistrierung, Zeile24
  342. messagebox ret: MessageTitel, Message, "YESNO"
  343. if ret=="YES" goto DoReallyReg
  344. goto RegFailed
  345.  
  346. DoReallyReg:
  347. send "19"
  348. waitdct
  349. get FNSYS = "36", "23", "40", "23"
  350. if FNSYS=="FN990" goto RegOK
  351. # falls der Rechner mit FN900 antwortet, sind wir schon jetzt im Gateway!
  352. if FNSYS=="FN900" goto RegConnect
  353. set info="Anmeldung am Gateway fehlgeschlagen\n"
  354. get line24 = "1", "24", "40", "24"
  355. strcat info, line24
  356. strcat info, " "
  357. strcat info, FNSYS
  358. messagebox ret: MessageTitel, info, "OK"
  359. goto RegFailed
  360.  
  361. RegFailedNoAccess:
  362. set info="Zugang zum Gateway fehlgeschlagen\n"
  363. get line24 = "1", "24", "40", "24"
  364. strcat info, line24
  365. messagebox ret: MessageTitel, info, "OK"
  366. goto RegFailed
  367. return
  368.  
  369.  
  370. RegOK:
  371. iniwrite RegFilename, RegSection, RegPage, RegOk
  372. RegisterDone:
  373. set Action = "OK"
  374. return
  375.  
  376. RegConnect:
  377. iniwrite RegFilename, RegSection, RegPage, RegOk
  378. set Action = "Connected"
  379. return
  380.  
  381. RegFailed:
  382. set Action = "EXIT"
  383. iniwrite RegFilename, RegSection, RegPage, RegFailed
  384. return
  385.  
  386.  
  387. ###############################################################################
  388. # VT100-Wechsel
  389. ###############################################################################
  390. SwitchToVT100:
  391.  
  392. statusmsg "Wechsel in den VT100-Mode ..."
  393. send "\c\*707\#"
  394. waitdct
  395.  
  396. # Jetzt auf Seite 707?
  397. get Seitennummer = "37", "24", "40", "24"
  398. if Seitennummer=="707a" goto STVProfilwechsel
  399. send "\c\*707\#"
  400. waitdct
  401.  
  402. STVProfilwechsel:
  403. # Profilwechsel anfordern
  404. send "j"
  405. waitdct
  406.  
  407. sleep "2"
  408. send ".\r"
  409. waitdct
  410.  
  411. # ab jetzt VT100 MODE
  412. statusmsg "VT100-Mode aktiv"
  413.  
  414. # Kein Wechsel
  415. send "n"
  416. waitdct
  417.  
  418. return
  419.  
  420.  
  421.  
  422. ###############################################################################
  423. # CEPT-Wechsel
  424. ###############################################################################
  425. SwitchToCEPT:
  426.  
  427. statusmsg "Wechsel in den CEPT-Mode ..."
  428.  
  429. # Seite 707 aufrufen fⁿr Rⁿcksprung nach CEPT
  430. send "\c*707#"
  431. waitdct
  432.  
  433. # Jetzt auf Seite 707?
  434. get Seitennummer = "37", "24", "40", "24"
  435. if Seitennummer=="707a" goto STCProfilwechsel
  436. send "\c*707#"
  437. waitdct
  438.  
  439. STCProfilwechsel:
  440. # Profilwechsel anfordern
  441. send "j"
  442. waitdct
  443.  
  444. send "EG "
  445. waitdct
  446. statusmsg "CEPT-Mode aktiv"
  447.  
  448. # Kein Profilwechsel
  449. send "n"
  450. waitdct
  451.  
  452. return
  453.  
  454.  
  455.  
  456. ###############################################################################
  457. # GetZeile24
  458. ###############################################################################
  459. GetZeile24:
  460.  
  461. get Zeile24 = "1", "24", "40", "24"
  462. # J.. abschneiden
  463. strpos pz = "J" in Zeile24
  464. if pz == "" goto GetZeile24Weiter1
  465. strdelete Zeile24, pz, "40"
  466. GetZeile24Weiter1:
  467. # P! abschneiden
  468. strpos pz = "P!" in Zeile24
  469. if pz == "" goto GetZeile24Weiter2
  470. strdelete Zeile24, pz, "40"
  471. GetZeile24Weiter2:
  472.  
  473. return
  474.  
  475. ###############################################################################
  476.  
  477.