home *** CD-ROM | disk | FTP | other *** search
/ Hall of Fame / HallofFameCDROM.cdr / open / unislt13.lzh / UNI.SLT < prev    next >
Text File  |  1989-04-11  |  16KB  |  613 lines

  1. //                         UNI.SLT version 1.3
  2. //                           by: John Abatte
  3. //                           April 11, 1989
  4. //
  5. //     Unified Telix script to logon to multiple bulletin board systems.
  6. //
  7. // Below are the user configurable variables for the script. You will need to
  8. // edit the indicated areas for your name and phone number. Also, in the first
  9. // function "create_cap_file()" you will need to put in your full path for
  10. // the directory containing your Telix Capture files. Be sure to include the
  11. // trailing backslash in the string definition "str cap_file[80] =", and
  12. // put your last name where indicated in the function "gt_bbs" following
  13. // "t3 = track(".
  14. // That's about all there is to it. Be sure to read the UNI.DOC file for
  15. // additional configuration information regarding dialing directory codes.
  16.  
  17. str keyhit[1];
  18. str bbs_id[2];
  19. str fname[] = "John";               // Put your name in these two
  20. str lname[] = "Abatte";             // positions in the same format
  21. str user_name_1[32];                // increase [32] for longer NAME
  22. str phone_no[] = "9236";            // Put last 4 phone digits here for WWIV
  23. str cap_status[1] = "Y";            // Change to "N" if you never want to
  24.                                     // create a capture file
  25. str cap_prompt[1] = "Y";            // Change to "N" to always create a capture
  26.                                     // file without prompting
  27. str cap_file[80] = "C:\TELIX\CAP\"; // Enter the path for your .CAP files
  28. str cap_name[12] = "";
  29. str S[12];
  30.  
  31. int stat;
  32. int tmark;
  33.  
  34.  
  35. // Open the capture file and build file name from name used in dialing entry
  36.  
  37. create_cap_file()
  38. {
  39.   int i = 3;
  40.  
  41.   capture("*CLOSE*");                    // first close any existing file
  42.  
  43.   while (Strlen(cap_name) < 8)
  44.     {                                    // eliminate illegal characters
  45.      if (subchr(_entry_name,i) != 32)    // not " "
  46.      if (subchr(_entry_name,i) != 34)    // not '"'
  47.      if (subchr(_entry_name,i) != 39)    // not "'"
  48.      if (subchr(_entry_name,i) != 40)    // not "("
  49.      if (subchr(_entry_name,i) != 41)    // not ")"
  50.      if (subchr(_entry_name,i) != 42)    // not "*"
  51.      if (subchr(_entry_name,i) != 43)    // not "+"
  52.      if (subchr(_entry_name,i) != 44)    // not ","
  53.      if (subchr(_entry_name,i) != 46)    // not "."
  54.      if (subchr(_entry_name,i) != 47)    // not "/"
  55.      if (subchr(_entry_name,i) != 58)    // not ":"
  56.      if (subchr(_entry_name,i) != 59)    // not ";"
  57.      if (subchr(_entry_name,i) != 60)    // not "<"
  58.      if (subchr(_entry_name,i) != 61)    // not "="
  59.      if (subchr(_entry_name,i) != 62)    // not ">"
  60.      if (subchr(_entry_name,i) != 63)    // not "?"
  61.      if (subchr(_entry_name,i) != 92)    // not "\"
  62.      if (subchr(_entry_name,i) != 123)   // not "{"
  63.      if (subchr(_entry_name,i) != 124)   // not "|"
  64.      if (subchr(_entry_name,i) != 125)   // not "}"
  65.        {
  66.         substr(_entry_name,i,1,S);
  67.         strcat(cap_name,S);
  68.        }
  69.  
  70.      i = i + 1;
  71.      if (strlen(_entry_name) < i)
  72.        break;
  73.  
  74.     }
  75.   strupper(cap_name);
  76.   strcat(cap_name,".CAP");
  77.   strcat(cap_file,cap_name);
  78.  
  79.   if(capture(cap_file) == -1)             //  Open file & Report result
  80.    {
  81.     tone(900,30);
  82.     tone(500,50);
  83.     printsc("^M^JERROR opening capture file ", cap_file);
  84.    }
  85.   else
  86.    {
  87.     printsc("^M^JCapture file ", cap_file, " opened.");
  88.    }
  89.  
  90.   return;
  91. }
  92.  
  93.  
  94. fi_bbs()
  95. {
  96.   int t1,t2,t3,t4;
  97.  
  98.   t1 = track("FIRST name", 1);
  99.   t2 = track("LAST name", 1);
  100.   t3 = track("[Y,n]", 1);
  101.   t4 = track("Password", 1);
  102.  
  103.   while (not time_up(tmark))
  104.     {
  105.      terminal();                    // let Telix process any keys and chars
  106.      stat = track_hit(0);           // see which (if any) track was hit
  107.  
  108.      if (stat == t1)                // send first name
  109.        {
  110.         delay_scr(1);
  111.         cputs(fname);
  112.         cputs("^M");
  113.        }
  114.      else if (stat == t2)           // send last name
  115.        {
  116.         delay_scr(1);
  117.         cputs(lname);
  118.         cputs("^M");
  119.        }
  120.      else if (stat == t3)
  121.        {
  122.         delay_scr(2);
  123.         cputs("y^M");
  124.        }
  125.      else if (stat == t4)           // send password
  126.        {
  127.         cputs(_entry_pass);
  128.         cputs("^M");
  129.         break;                      // done with logon
  130.        }
  131.     }
  132. }
  133.  
  134.  
  135. gt_bbs()
  136. {
  137.   int t1,t2,t3,t4,t5,t6,t7,t8,t9,t10;
  138.  
  139.   t1  = track("graphics? [y/n] ", 1);
  140.   t2  = track("FIRST name: ", 1);
  141.   t3  = track("Abatte", 1);          // substitute your last name
  142.   t4  = track("Password:", 1);
  143.   t5  = track("continue", 1);
  144.   t6  = track("number: ", 1);
  145.   t7  = track("More", 1);
  146.   t8  = track("eady . . . ", 1);
  147.   t9  = track("mail? [Y/n] ", 1);
  148.   t10 = track("MAIN MENU");
  149.  
  150.   while (not time_up(tmark))
  151.     {
  152.      terminal();
  153.      stat = track_hit(0);
  154.  
  155.      if (stat == t1)                // say whether we want graphics
  156.        {
  157.         delay_scr(1);
  158.         cputs("n^M");
  159.         track_free(t1);
  160.        }
  161.      else if (stat == t2)           // send full name
  162.        {
  163.         delay_scr(1);
  164.         cputs(user_name_1);
  165.         cputs("^M");
  166.         track_free(t2);
  167.        }
  168.      else if (stat == t3)           // verify name
  169.        {
  170.         delay_scr(1);
  171.         cputs("y^M");
  172.         track_free(t3);
  173.        }
  174.      else if (stat == t4)           // send password
  175.        {
  176.         delay_scr(1);
  177.         cputs(_entry_pass);
  178.         cputs("^M");
  179.         track_free(t4);
  180.        }
  181.      else if (stat == t5)           // "continue:"
  182.        {
  183.         delay_scr(1);
  184.         cputs("^M");
  185.        }
  186.      else if (stat == t6)           // bulletins
  187.        {
  188.         delay_scr(1);
  189.         cputs("q^M");
  190.         track_free(t6);
  191.        }
  192.      else if (stat == t7)           // "More" prompt
  193.        {
  194.         delay_scr(2);
  195.         cputs("n^M");
  196.        }
  197.      else if (stat == t8)           // "ready" prompt
  198.        {
  199.         delay_scr(2);
  200.         cputs("^M");
  201.        }
  202.      else if (stat == t9)           // wait for mail prompt
  203.        {
  204.         delay_scr(1);
  205.         cputs("y^M");               // read our mail
  206.         break;                      // done with logon
  207.        }
  208.      else if (stat == t10)          // wait for MAIN MENU (OPUS system only)
  209.        {
  210.         delay_scr(1);
  211.         break;                      // done with logon
  212.        }
  213.     }
  214. }
  215.  
  216.  
  217. pc_bbs()
  218. {
  219.   int t1,t2,t3,t4,t5,t6,t7,t8;
  220.  
  221.   t1 = track(" graphics", 1);
  222.   t2 = track("first name?", 1);
  223.   t3 = track("Password", 1);
  224.   t4 = track("(Enter)=yes?", 1);
  225.   t5 = track("to continue?", 1);
  226.   t6 = track("More?", 1);
  227.   t7 = track("Scan Message",1);
  228.   t8 = track("Board Command?", 1);
  229.  
  230.   while (not time_up(tmark))
  231.     {
  232.      terminal();
  233.      stat = track_hit(0);
  234.  
  235.      if (stat == t1)                // graphics
  236.        {
  237.         delay_scr(1);
  238.         cputs("n^M");
  239.         track_free(t1);
  240.        }
  241.      else if (stat == t2)
  242.        {
  243.         delay_scr(1);
  244.         cputs(user_name_1);
  245.         cputs("^M");
  246.         track_free(t2);
  247.        }
  248.      else if (stat == t3)
  249.        {
  250.         delay_scr(1);
  251.         cputs(_entry_pass);
  252.         cputs("^M");
  253.         track_free(t3);
  254.        }
  255.      else if (stat == t4)           // scan message base
  256.        {
  257.         delay_scr(1);
  258.         cputs("^M");
  259.        }
  260.      else if (stat == t5)           // "Enter" to continue
  261.        {
  262.         delay_scr(2);
  263.         cputs("^M");
  264.        }
  265.      else if (stat == t6)           // "More" to continue
  266.        {
  267.         delay_scr(2);
  268.         cputs("y^M");
  269.        }
  270.      else if (stat == t7)           // Scan Message Base Since 'Last Read'
  271.        {
  272.         delay_scr(2);
  273.         cputs("^M");
  274.        }
  275.      else if (stat == t8)           // reached Main Board
  276.        {
  277.         delay_scr(1);
  278.         break;                      // done with logon
  279.        }
  280.     }
  281. }
  282.  
  283.  
  284. qu_bbs()
  285. {
  286.   int t1,t2,t3,t4,t5,t6,t7,t8;
  287.  
  288.   t1 = track("last name? ", 1);
  289.   t2 = track("Password: ", 1);
  290.   t3 = track("continue: ", 1);
  291.   t4 = track("s or <N>o?", 1);
  292.   t5 = track("Messages Now [Y/n]?", 1);
  293.   t6 = track("each message [Y/n]?", 1);
  294.   t7 = track("this listing.",1);
  295.   t8 = track("Top Menu", 1);
  296.  
  297.   while (not time_up(tmark))
  298.     {
  299.      terminal();
  300.      stat = track_hit(0);
  301.  
  302.      if (stat == t1)
  303.        {
  304.         delay_scr(2);
  305.         cputs(user_name_1);
  306.         cputs("^M");
  307.         track_free(t1);
  308.        }
  309.      else if (stat == t2)
  310.        {
  311.         delay_scr(1);
  312.         cputs(_entry_pass);
  313.         cputs("^M");
  314.         track_free(t2);
  315.        }
  316.      else if (stat == t3)           // continue
  317.        {
  318.         delay_scr(2);
  319.         cputs("^M");
  320.        }
  321.      else if (stat == t4)
  322.        {
  323.         delay_scr(2);
  324.         cputs("n^M");
  325.        }
  326.      else if (stat == t5)           // read our mail now if any
  327.        {
  328.         delay_scr(2);
  329.         cputs("y");
  330.         track_free(t5);
  331.        }
  332.      else if (stat == t6)           // pause after each message
  333.        {
  334.         delay_scr(2);
  335.         cputs("y^M");
  336.         break;                      // and end the script
  337.        }
  338.      else if (stat == t7)
  339.        {
  340.         delay_scr(2);
  341.         cputs("s");                 // skip the bulletins
  342.        }
  343.      else if (stat == t8)           // done with logon
  344.        {
  345.         delay_scr(1);
  346.         break;
  347.        }
  348.     }
  349. }
  350.  
  351.  
  352. rb_bbs()
  353. {
  354.   int t1,t2,t3,t4,t5,t6,t7,t8,t9,t10,t11;
  355.  
  356.   t1  = track("continue", 1);
  357.   t2  = track("[Y],N,NS", 1);
  358.   t3  = track("H)elp", 1);
  359.   t4  = track("FIRST name", 1);
  360.   t5  = track("LAST name", 1);
  361.   t6  = track("ts echo)", 1);
  362.   t7  = track("files to download", 1);
  363.   t8  = track("bulletin", 1);
  364.   t9  = track("A)bort", 1);
  365.   t10 = track("More", 1);
  366.   t11 = track("MAIN command", 1);
  367.  
  368.   while (not time_up(tmark))
  369.     {
  370.      terminal();
  371.      stat = track_hit(0);
  372.  
  373.      if (stat == t1)                // continue
  374.        {
  375.         delay_scr(2);
  376.         cputs("^M");
  377.         track_free(t1);
  378.        }
  379.      else if (stat == t2)           // bypass logon bulletins
  380.        {
  381.         delay_scr(2);
  382.         cputs("n^M");
  383.         track_free(t2);
  384.        }
  385.      else if (stat == t3)           // graphics
  386.        {
  387.         delay_scr(2);
  388.         cputs("n^M");
  389.         track_free(t3);
  390.        }
  391.      else if (stat == t4)
  392.        {
  393.         delay_scr(1);
  394.         cputs(fname);
  395.         cputs("^M");
  396.         track_free(t4);
  397.        }
  398.      else if (stat == t5)
  399.        {
  400.         delay_scr(1);
  401.         cputs(lname);
  402.         cputs("^M");
  403.         track_free(t5);
  404.        }
  405.      else if (stat == t6)
  406.        {
  407.         delay_scr(1);
  408.         cputs(_entry_pass);
  409.         cputs("^M");
  410.         track_free(t6);
  411.        }
  412.      else if (stat == t7)           // review new files if any
  413.        {
  414.         delay_scr(1);
  415.         cputs("y^M");
  416.         track_free(t7);
  417.         break;                      // and end the script
  418.        }
  419.      else if (stat == t8)           // skip new Bulletins
  420.        {
  421.         delay_scr(2);
  422.         cputs("^M");
  423.        }
  424.      else if (stat == t9)           // "A)bort"
  425.        {
  426.         delay_scr(2);
  427.         cputs("n^M");
  428.        }
  429.      else if (stat == t10)          // bypass "More"
  430.       {
  431.        delay_scr(2);
  432.        cputs("n^M");
  433.       }
  434.      else if (stat == t11)          // wait for the Main Menu
  435.        {
  436.         delay_scr(1);
  437.         break;                      // done with logon
  438.        }
  439.     }
  440. }
  441.  
  442.  
  443. wc_bbs()
  444. {
  445.   int t1,t2,t3,t4,t5,t6;
  446.  
  447.   t1 = track("First Name", 1);
  448.   t2 = track("Password:", 1);
  449.   t3 = track("continue", 1);
  450.   t4 = track("Bulletin Menu? [y/n]", 1);
  451.   t5 = track("[N]onStop?", 1);
  452.   t6 = track("MAIN MENU:", 1);
  453.  
  454.   while (not time_up(tmark))
  455.     {
  456.      terminal();
  457.      stat = track_hit(0);
  458.  
  459.      if (stat == t1)
  460.        {
  461.         delay_scr(1);
  462.         cputs(user_name_1);
  463.         cputs("^M");
  464.         track_free(t1);
  465.        }
  466.      else if (stat == t2)
  467.        {
  468.         delay_scr(1);
  469.         cputs(_entry_pass);
  470.         cputs("^M");
  471.         track_free(t2);
  472.        }
  473.      else if (stat == t3)           // "Enter" to continue
  474.        {
  475.         delay_scr(1);
  476.         cputs("^M");
  477.        }
  478.      else if (stat == t4)           // skip the bulletins
  479.        {
  480.         delay_scr(1);
  481.         cputs("n^M");
  482.        }
  483.      else if (stat == t5)           // "[N]onStop?"
  484.        {
  485.         delay_scr(1);
  486.         cputs("^M");
  487.        }
  488.      else if (stat == t6)           // done with logon
  489.        {
  490.         delay_scr(1);
  491.         break;
  492.        }
  493.     }
  494. }
  495.  
  496.  
  497. ww_bbs()
  498. {
  499.   int t1,t2,t3,t4,t5,t6;
  500.  
  501.   t1 = track("graphics?", 1);
  502.   t2 = track("NN: ", 1);
  503.   t3 = track("PW: ", 1);
  504.   t4 = track("PH: ###-###-", 1);
  505.   t5 = track("[PAUSE]", 1);
  506.   t6 = track("System is", 1);
  507.  
  508.   while (not time_up(tmark))
  509.     {
  510.      terminal();
  511.      stat = track_hit(0);
  512.  
  513.      if (stat == t1)                // graphics
  514.        {
  515.         delay_scr(1);
  516.         cputs("n^M");
  517.        }
  518.      else if (stat == t2)
  519.        {
  520.         delay_scr(1);
  521.         cputs(user_name_1);
  522.         cputs("^M");
  523.        }
  524.      else if (stat == t3)
  525.        {
  526.         delay_scr(1);
  527.         cputs(_entry_pass);
  528.         cputs("^M");
  529.        }
  530.      else if (stat == t4)           // send phone number
  531.        {
  532.         delay_scr(1);
  533.         cputs(phone_no);
  534.         cputs("^M");
  535.        }
  536.      else if (stat == t5)           // skip the pauses
  537.        {
  538.         delay_scr(1);
  539.         cputc(27);
  540.        }
  541.      else if (stat == t6)           // wait for Main Menu
  542.        {
  543.         delay_scr(1);
  544.         break;                      // finished with logon
  545.        }
  546.     }
  547. }
  548.  
  549.  
  550.  
  551. main()
  552. {
  553.  
  554.   substr(_entry_name,0,2,bbs_id);   // Get BBS prefix from dialing directory
  555.   strupper(bbs_id);                 // Convert it to upper case
  556.   strcat(user_name_1, fname);       // Mirge first & last names
  557.   strcat(user_name_1, " ");
  558.   strcat(user_name_1, lname);
  559.  
  560.   tmark = timer_start(1800);        // wait up to 3 minutes for login
  561.  
  562.   alarm(1);
  563.  
  564.   if (not _entry_pass)              // no pass, so didn't recog. board
  565.     {
  566.      prints ("Sorry, I don't know the password for this BBS!");
  567.      return;
  568.     }
  569.  
  570.             // Prompt for capture file if desired
  571.   if ((cap_status == "Y" || cap_status == "y") && (cap_prompt == "Y" || cap_prompt == "y"))
  572.     {
  573.      prints("^M^JIf you want a capture file created enter 'Y'.");
  574.      printsc("Otherwise, press any other key to continue.=> ");
  575.      gets(keyhit,1);
  576.      if (keyhit == "Y" || keyhit == "y")  // any other key will abort capture
  577.        create_cap_file();
  578.     }
  579.  
  580.             // Always create capture file without prompting
  581.   else if ((cap_status == "Y" || cap_status == "y") && (cap_prompt == "N" || cap_prompt == "n"))
  582.     create_cap_file();
  583.  
  584.   if (bbs_id == "FI")    // FIDO BBS & EXEC-PC
  585.      fi_bbs();
  586.  
  587.   if ((bbs_id == "GT") || (bbs_id == "OP")) // GT POWER & OPUS BBS
  588.      gt_bbs();
  589.  
  590.   if (bbs_id == "PC")                       // PCBOARD
  591.      pc_bbs();
  592.  
  593.   if (bbs_id == "QU")                       // QUICKBBS
  594.      qu_bbs();
  595.  
  596.   if (bbs_id == "RB")                       // RBBS
  597.      rb_bbs();
  598.  
  599.   if (bbs_id == "WC")                       // WILDCAT BBS
  600.      wc_bbs();
  601.  
  602.   if (bbs_id == "WW")                       // WWIV BBS
  603.      ww_bbs();
  604.  
  605.   if (time_up(tmark))                // abort script after 3 minutes
  606.     prints("Logon failed!");
  607.  
  608.   timer_free(tmark);                 // free timer channel
  609.   track_free(0);                     // and all track channels
  610.  
  611. }
  612.  
  613.