home *** CD-ROM | disk | FTP | other *** search
/ PC/CD Gamer UK 28 / PCGAMER28.bin / wincim / scripts.lib / CSERVE.SCR < prev    next >
Text File  |  1995-09-13  |  6KB  |  302 lines

  1. !
  2. !  Copyright (c) 1995
  3. !  by CompuServe Incorporated, Columbus, Ohio
  4. !
  5. !  The information in this software is subject to change without
  6. !  notice and should not be construed as a commitment by CompuServe.
  7. !
  8. !  CSERVE:
  9. !    Connect to CIS.
  10. !    First argument is %TRUE if direct connect and %FALSE otherwise
  11. !    Success:  returns %Success
  12. !    Failure:  saves error msg in %FailureMsg and returns %Failure
  13. !        or %Fatal (depending on severity).
  14. !
  15. !+V
  16. ! "3.6"
  17. !-V
  18.  
  19. DirectConnect = Arg1;
  20. show "Connecting to CompuServe Network";
  21. Tries = 7;
  22. on cancel goto Return_Cancel;
  23. FirstTry = %TRUE;
  24. FailStr = "";
  25. ETX = "^C";
  26. CompuServeHost = "CPS^M";
  27. ifndef %X121Address = "";
  28. ifndef %OKCmd = "";
  29. ifndef %StopAtHost = "";
  30. ifndef %AccountID = "";
  31. ifndef %BreakChar = "#";
  32. ifndef %MicroChallenge = "";
  33. Wait_Time = 80;
  34. Internet = 25;
  35.  
  36. Start_Connect:
  37.     if Tries = 0 goto CIS_Error;
  38.     Tries = Tries - 1;
  39.  
  40. Connect_Wait:
  41.     wait
  42.         "UIC:"        goto Send_ETX,
  43.         "Host Name:"    goto Send_Host_Name,
  44.         "User ID:"    goto Send_ID,
  45.         "Password:"    goto Send_Password,
  46.         "XPAD:"        goto Send_XPAD,
  47.         "ITI:"        goto Send_XPAD,
  48.         "? LOG"        goto Process_Log_Msg,
  49.         "??LOG"        goto Process_Log_Msg,
  50.         "% IPN"        goto Process_IPX_Msg,
  51.         "? IPX"        goto Process_IPX_Msg,
  52.         "? ICD"        goto Process_Net_Msg,
  53.         "??ICD"        goto Process_Net_Msg,
  54.         "RA:"        goto Handle_Secure_Login,
  55.         %mdm_Failure    goto CIS_No_Carrier
  56.     until Wait_Time;
  57.  
  58.     if %Network <> Internet goto Send_Break;
  59.     Wait_Time = 200;
  60.     goto Start_Connect;
  61.  
  62. Send_Break:
  63.     if not DirectConnect goto Send_CR;
  64.     sendm %BreakChar;
  65.     sendm %BreakChar;
  66.     sendm %BreakChar;
  67.  
  68. Send_CR:
  69.     send %CR;
  70.     goto Start_Connect;
  71.  
  72. Send_ETX:
  73.     send ETX;
  74.     goto Connect_Wait;
  75.  
  76. Send_Host_Name:
  77.     if Arg2 goto No_Wait;
  78.     wait until 10;
  79. No_Wait:
  80.     if %StopAtHost = "" goto Send_No_Stop;
  81.     if %StopAtHost = "1" goto Return_Success;
  82.     send CompuServeHost;
  83.     goto Return_Success;
  84.  
  85. Send_No_Stop:
  86.     send CompuServeHost;
  87.     goto Connect_Wait;
  88.  
  89. Send_ID:
  90.     define %ErrorCode = 0;
  91.     show "Logging onto CompuServe";
  92.  
  93.     if %MicroChallenge = "" goto No_Secure_Login;
  94.  
  95.     send %UserID & %LogonParams & "/INT:60 /secure:1" & %CR;
  96.     goto Connect_Wait;
  97.  
  98. No_Secure_Login:
  99.     send %UserID & %LogonParams & "/INT:60" & %CR;
  100.     goto Connect_Wait;
  101.  
  102. Send_Password:
  103.     send %Password & %CR;
  104.     goto Logon_Wait;
  105.  
  106. Send_XPAD:
  107.     if %X121Address = "" goto Missing_XPAD;
  108.     send %X121Address & %CR;
  109.     goto Connect_Wait;
  110.  
  111. Missing_XPAD:
  112.     define %FailureMsg = "Missing X.121 address";
  113.     define %ErrorCode = 21;
  114.     exit %Fatal;
  115.     
  116. Logon_Wait:
  117.     wait
  118.         "Account ID:"    goto Send_AccountID,
  119.         "CompuServe"    goto Return_Success,
  120.         "^[[>"        goto Return_Success,
  121.         "^F"        goto Return_Success,
  122.         "? LOG"        goto Process_Log_Msg,
  123.         "??LOG"        goto Process_Log_Msg,
  124.         "% IPN"        goto Process_IPX_Msg,
  125.         "? IPX"        goto Process_IPX_Msg,
  126.         " NTW"        goto Logon_Failure,
  127.         "? ICD"        goto Process_Net_Msg,
  128.         "??ICD"        goto Process_Net_Msg,
  129.         "800 Direct Dial access " goto Process_800,
  130.         "OK^M"        goto Send_OK_Cmd,
  131.         "^[I"        goto Send_Response,
  132.         %mdm_Failure    goto CIS_No_Carrier
  133.     until 200;
  134.  
  135.     define %ErrorCode = 22;
  136.     goto CIS_Failure;
  137.  
  138. Process_Log_Msg:
  139.     wait
  140.         "INE"    goto Bad_ID,
  141.         "ISX"    goto Bad_ID_Syntax,
  142.         "CAI"    goto Cannot_Auto_Irun,
  143.         "SIL"    goto System_Unavailable,
  144.         "SIU"    goto System_Unavailable,
  145.         "SNA"    goto System_Unavailable,
  146.         "STU"    goto Check_User_ID,
  147.         "UTL"    goto Too_Many_Users
  148.     until 50;
  149.  
  150.     goto Try_Again;
  151.  
  152. Process_IPX_Msg:
  153.     define %ErrorCode = 23;
  154.     define %FailureMsg = "InfoPlex is unavailable, try again later";
  155.     exit %Fatal;
  156.  
  157. Process_Net_Msg:
  158.     define %ErrorCode = 31;
  159.     FailStr = "PPP connection failure, please try again";
  160.  
  161.     wait
  162.         "^M"    goto Found_Error
  163.     until 10;
  164.  
  165.     goto Return_Fail_Msg;
  166.  
  167. Found_Error:
  168.     if %Scanned = "" goto Return_Fail_Msg;
  169.     FailStr = %Scanned;
  170.     goto Return_Fail_Msg;
  171.  
  172. Send_AccountID:
  173.     send %AccountID & %CR;
  174.     goto Logon_Wait;
  175.  
  176. Too_Many_Users:
  177.     if Tries = 0 goto Users_Failure;
  178.     show "Simultaneous users exceeded, retrying...";
  179.     goto Start_Connect;
  180.  
  181. Users_Failure:
  182.     define %FailureMsg = "Simultaneous users exceeded";
  183.     define %ErrorCode = 29;
  184.     exit %Fatal;
  185.  
  186. Cannot_Auto_Irun:
  187.     define %FailureMsg = "Cannot Auto Irun HMI server";
  188.     exit %Fatal;
  189.  
  190. Bad_ID:
  191.     define %ErrorCode = 24;
  192.     FailStr = "Incorrect User ID or password";
  193.     goto Try_Again;
  194.  
  195. Bad_ID_Syntax:
  196.     define %ErrorCode = 25;
  197.     FailStr = "Incorrect User ID syntax";
  198.     goto Try_Again;
  199.  
  200. System_Unavailable:
  201.     define %ErrorCode = 23;
  202.     define %FailureMsg = "The system is unavailable, try again later";
  203.     exit %Fatal;
  204.  
  205. Check_User_ID:
  206.     define %ErrorCode = 26;
  207.     define %FailureMsg = "The system is unavailable, check User ID";
  208.     exit %Fatal;
  209.  
  210. Process_800:
  211.     wait
  212.         "is not" goto No_800,
  213.         "rates" goto Access_Rates
  214.     until 20;
  215.     goto Logon_Wait;
  216.  
  217.  
  218. No_800:
  219.     define %FailureMsg = "800 Direct Dial access is not available on your account";
  220.     define %ErrorCode = 4;
  221.     exit %Fatal;
  222.  
  223. Access_Rates:
  224.     show "800 Direct Dial access rates now in effect";
  225.     goto Logon_Wait;
  226.  
  227. Try_Again:
  228.     if not FirstTry goto CIS_Fatal;
  229.     send ETX;
  230.     FirstTry = %FALSE;
  231.  
  232.     wait
  233.         "User ID"    goto Send_ID,
  234.         %mdm_Failure    goto CIS_No_Carrier
  235.     until 140;
  236.  
  237.     goto CIS_Fatal;
  238.  
  239. Logon_Failure:
  240.     define %ErrorCode = 27;
  241.     define %FailureMsg = "Remote is busy or unavailable";
  242.     exit %Fatal;
  243.  
  244. Send_OK_Cmd:
  245.     if %OKCmd = "" goto Logon_Wait;
  246.     send %OKCmd & %CR;
  247.     goto Logon_Wait;
  248.  
  249. Send_Response:
  250.     sendi %ESCIResponse;
  251.     exit %Success;
  252.  
  253. CIS_Error:
  254.     define %ErrorCode = 20;
  255. CIS_Failure:
  256.     if FailStr <> "" goto Return_Fail_Msg;
  257.     define %FailureMsg = "Unable to connect to CompuServe host";
  258.     exit %Failure;
  259.  
  260. CIS_No_Carrier:
  261.     define %ErrorCode = 28;
  262.     if FailStr <> "" goto Return_Fail_Msg;
  263.     define %FailureMsg = "Modem connection lost";
  264.     exit %Failure;
  265.  
  266. CIS_Fatal:
  267.     if FailStr <> "" goto Return_Fatal_Msg;
  268.     define %FailureMsg = "Unable to connect to CompuServe host";
  269.     exit %Fatal;
  270.  
  271. Return_Fail_Msg:
  272.     define %FailureMsg = FailStr;
  273.     exit %Failure;
  274.  
  275. Return_Fatal_Msg:
  276.     define %FailureMsg = FailStr;
  277.     exit %Fatal;
  278.  
  279. Return_Success:
  280.     exit %Success;
  281.  
  282. Return_Cancel:
  283.     exit %Cancel;
  284.  
  285.  
  286. Handle_Secure_Login:
  287.     if %MicroChallenge = "" goto Connect_Wait;
  288.  
  289.     call %Dir & "seclog.scr" () : FailCode;
  290.  
  291.     if FailCode = %Success goto Logon_Wait;
  292.  
  293.     ! Failure condition.
  294.     FailStr = %SecFailTemp;
  295.     if Tries = 0 goto Secure_Connect_Failed;
  296.  
  297.     show %SecFailTemp & ", retrying...";
  298.     goto Start_Connect;
  299.  
  300. Secure_Connect_Failed:
  301.     goto CIS_Failure;
  302.