home *** CD-ROM | disk | FTP | other *** search
/ Monster Media 1994 #1 / monster.zip / monster / WIN_UTL2 / RFDMAIL.ZIP / GENIE.SCR < prev    next >
Text File  |  1994-01-07  |  8KB  |  314 lines

  1. ;------------------------------------------------------
  2. ;
  3. ;GENIE.SCR --- The script file for GENIE
  4. ;
  5. ;------------------------------------------------------
  6. ;
  7. ;   We begin with the format specifiers to which allow
  8. ;the script to identify where the MailId, RealName,
  9. ;and Subject texts are in a newly downloaded letter.
  10. ;
  11. Format
  12. Sub: $SUBJECT$\n
  13. From: $UID$  $NAME$\n
  14. Endformat
  15. ;
  16. ;------------------------------------------------------
  17. ; The following aliases define some of the standard
  18. ; GEnie prompts:
  19. ;
  20. Alias prompt 'Enter #, <H>elp, or <CR> to continue?'
  21. Alias mainprompt 'Enter #, <P>revious, or <H>elp?'
  22. Alias mailprompt '\nCommand?'
  23. ;
  24. ;------------------------------------------------------
  25. ; This is the main entry point into the script.  It
  26. ; merely waits 2 seconds before sending HHH to allow
  27. ; the connection to settle.
  28. ;
  29. Begin START
  30.    Caption 'connected'
  31.    Timeout 2 Goto CONNECT
  32. End
  33. ;------------------------------------------------------
  34. ; These states deal with logging in, by sending the
  35. ; 'hhh' announcement, followed by the username and
  36. ; password.
  37. ;
  38. Begin CONNECT
  39.    Transmit 'hhh'
  40.    When 'U#=' Goto USERNAME
  41.    Timeout 10 Goto CONNECT1
  42. End
  43. Begin CONNECT1
  44.    Transmit 'hhh'
  45.    When 'U#=' Goto USERNAME
  46.    Timeout 10 Goto USERNAME
  47. End
  48. Begin USERNAME
  49.    Transmit $USERNAME
  50.    Transmit ','
  51.    Transmit $PASSWORD
  52.    Transmit ',200:9'
  53.    Cr
  54.    When 'GEnie Logon' Goto LOGGED_IN
  55.    When 'REENTER U# ' Goto INVALID_LOGIN
  56.    Timeout 20 Goto NO_LOGIN
  57. End
  58. Begin INVALID_LOGIN
  59.    Transmit $USERNAME
  60.    Transmit ','
  61.    Transmit $PASSWORD
  62.    Transmit ',200:9'
  63.    Cr
  64.    When 'GEnie Logon' Goto LOGGED_IN
  65.    When 'REENTER U# ' Goto NO_LOGIN
  66.    Timeout 20 Goto NO_LOGIN
  67. End
  68. ;------------------------------------------------------
  69. ; These states run once we are logged in.  They watch
  70. ; the banners for signs of mail.  If there is mail,
  71. ; we run the fetch states, if not, we go into mail
  72. ; and run the send states if we have mail to send.
  73. ;
  74. Begin LOGGED_IN
  75.    Caption 'logged in'
  76.    When 'No letters waiting' Goto NO_MAIL
  77.    When %prompt% Goto GOTO_MAIL
  78.    Timeout 90 Goto NO_LOGIN
  79. End
  80. Begin GOTO_MAIL
  81.    Caption 'You Have Mail'
  82.    Transmit 'm 200:9'
  83.    Cr
  84.    When %mailprompt% Goto CHECK_INCOMING
  85.    When %prompt% Goto GOTO_MAIL
  86.    Timeout 45 Goto NO_LOGIN
  87. End
  88. Begin NO_MAIL
  89.    Caption 'No Mail'
  90.    When %prompt% Goto NO_MAIL_PROMPT
  91.    Timeout 90 Goto NO_LOGIN
  92. End
  93. Begin NO_MAIL_PROMPT
  94.    If MORE_LETTERS Then JUMP_TO_SEND
  95.    Timeout 1 Goto LOG_OFF
  96. End
  97. Begin JUMP_TO_SEND
  98.    Transmit 'm 200:9'
  99.    Cr
  100.    When %mailprompt% Goto 1ST_REQUEST_CREATE
  101.    When %prompt% Goto JUMP_TO_SEND
  102.    Timeout 45 Goto GIVE_UP
  103. End
  104. Begin CHECK_INCOMING
  105.    If FETCHING Then CHECK_MAIL
  106.    If MORE_LETTERS Then 1ST_REQUEST_CREATE
  107.    Timeout 1 Goto EXIT_MAIL
  108. End
  109. ;------------------------------------------------------
  110. ; These states run for each letter that is to be
  111. ; downloaded.  They merely send a "list" command
  112. ; for each queue index until GEnie complains that
  113. ; we've exceeded the highest index.
  114. ;
  115. Begin CHECK_MAIL
  116.    Transmit 'display'
  117.    Cr
  118.    When 'No letters found' Goto NO_MAIL_DISPLAY
  119.    When 'Queue#    Item  From' Goto HAVE_MAIL
  120.    Timeout 30 Goto GIVE_UP
  121. End
  122. Begin NO_MAIL_DISPLAY
  123.    Caption 'No Mail'
  124.    If MORE_LETTERS Then SEND_MAIL
  125.    When %mailprompt% Goto EXIT_MAIL
  126.    Timeout 30 Goto GIVE_UP
  127. End
  128. Begin HAVE_MAIL
  129.    Caption 'You Have Mail'
  130.    ClearIndex
  131.    NextIndex
  132.    When %mailprompt% Goto FETCH_MAIL
  133.    Timeout 30 Goto GIVE_UP
  134. End
  135. Begin FETCH_MAIL
  136.    Caption 'Fetching Mail'
  137.    Transmit 'list '
  138.    Transmit $INDEX
  139.    Cr
  140.    When 'Item' Goto DOWNLD_LETTER
  141.    When 'exceeds last' Goto NO_MORE_MAIL
  142.    When %mailprompt% Goto FETCH_MAIL
  143.    Timeout 30 Goto GIVE_UP
  144. End
  145. Begin DOWNLD_LETTER
  146.    Download ASCII '=END=' Then DOWNLD_SUCCESS Else GIVE_UP
  147. End
  148. Begin DOWNLD_SUCCESS
  149.    Caption 'Letter Received'
  150.    Confirm LETTER.RECEIVED Successful
  151.    NextIndex
  152.    Transmit 'list '
  153.    Transmit $INDEX
  154.    Cr
  155.    When 'Item' Goto DOWNLD_LETTER
  156.    When 'exceeds last' Goto NO_MORE_MAIL
  157.    Timeout 30 Goto GIVE_UP
  158. End
  159. Begin NO_MORE_MAIL
  160.    Caption 'Fetched Mail'
  161.    If MORE_LETTERS Then SEND_MAIL
  162.    When %mailprompt% Goto EXIT_MAIL
  163.    Timeout 30 Goto GIVE_UP
  164. End
  165. ;------------------------------------------------------
  166. ; These states run for each letter that is to be sent.
  167. ; First a letter is created, addressed, and subject line
  168. ; specified.  Then an ASCII upload is done, and the
  169. ; BREAK character (Control-C) is sent.  GEnie should
  170. ; respond with "##>", whereupon we send "*S" to terminate
  171. ; the letter.
  172. ;
  173. Begin SEND_MAIL
  174.    Caption 'Sending Mail'
  175.    NewLetter
  176.    When %mailprompt% Goto REQUEST_CREATE
  177.    Timeout 30 Goto GIVE_UP
  178. End
  179. Begin 1ST_REQUEST_CREATE
  180.    Caption 'Sending Mail'
  181.    NewLetter
  182.    Transmit 'accept'
  183.    Cr
  184.    When 'To:' Goto TRANSMIT_DEST
  185.    Timeout 15 Goto GIVE_UP
  186. End
  187. Begin REQUEST_CREATE
  188.    Transmit 'accept'
  189.    Cr
  190.    When 'To:' Goto TRANSMIT_DEST
  191.    Timeout 15 Goto GIVE_UP
  192. End
  193. Begin TRANSMIT_DEST
  194.    Transmit $LETTER.DEST.USERNAME
  195.    Cr
  196.    When 'ignored - not found' Goto ABORT_SEND
  197.    When 'CC:' Goto DO_CC
  198.    When 'cc:' Goto DO_CC
  199.    When 'Carbon Copy:' Goto DO_CC
  200.    Timeout 15 Goto GIVE_UP
  201. End
  202. Begin DO_CC
  203.    If LETTER.CC Then TRANSMIT_CC
  204.    Cr
  205.    When 'Sub:' Goto SEND_SUBJECT
  206. End
  207. Begin TRANSMIT_CC
  208.    CreateCC 0 0 Delimiter ','
  209.    Transmit $LETTER.CC
  210.    Cr
  211.    When 'CC:' Goto DO_CC
  212.    When 'cc:' Goto DO_CC
  213.    When 'Carbon Copy:' Goto DO_CC
  214.    When 'Sub:' Goto SEND_SUBJECT
  215.    When 'ignored - not found' Goto ABORT_SEND
  216.    Timeout 15 Goto GIVE_UP
  217. End
  218. Begin SEND_SUBJECT
  219.    Transmit $LETTER.SUBJECT
  220.    Cr
  221.    When 'READY FOR INPUT' Goto UPLOAD_LETTER
  222.    When 'Subject:' Goto SEND_SUBJECT
  223.    Timeout 30 Goto GIVE_UP
  224. End
  225. Begin UPLOAD_LETTER
  226.    Caption 'Uploading Letter'
  227.    Upload ASCII ExpandLines Then UPLD_SUCCESS Else UPLD_FAILURE
  228. End
  229. Begin UPLD_FAILURE
  230.    Confirm LETTER.SENT Unsuccessful
  231.    Timeout 1 Goto GIVE_UP
  232. End
  233. Begin UPLD_SUCCESS
  234.    Timeout 2 Goto UPLD_SUCCESS1
  235. End
  236. Begin UPLD_SUCCESS1
  237.    Control C
  238.    When '>' Goto FINISH_SEND
  239.    Timeout 10 Goto UPLD_SUCCESS2
  240. End
  241. Begin UPLD_SUCCESS2
  242.    Control C
  243.    When '>' Goto FINISH_SEND
  244.    Timeout 20 Goto UPLD_FAILURE
  245. End
  246. Begin FINISH_SEND
  247.    Transmit '*S'
  248.    Cr
  249.    When 'Created' Goto LETTER_SENT
  250.    When '>' Goto FINISH_SEND
  251.    Timeout 30 Goto GIVE_UP
  252. End
  253. Begin LETTER_SENT
  254.    Caption 'Letter Sent'
  255.    Confirm LETTER.SENT Successful
  256.    If MORE_LETTERS Then SEND_MAIL
  257.    When %mailprompt% Goto EXIT_MAIL
  258.    Timeout 30 Goto GIVE_UP
  259. End
  260. Begin ABORT_SEND
  261.    Caption 'Bad Address'
  262.    Control C
  263.    Confirm LETTER.SENT Unsuccessful
  264.    If MORE_LETTERS Then SEND_MAIL
  265.    When %mailprompt% Goto EXIT_MAIL
  266.    Timeout 30 Goto GIVE_UP
  267. End
  268. ;------------------------------------------------------
  269. ; These states deal with leaving the Mail Area and
  270. ; logging off from GEnie.
  271. ;
  272. Begin EXIT_MAIL
  273.    Transmit 'exit'
  274.    Cr
  275.    Caption 'Leaving Mail Area'
  276.    When %mainprompt% Goto LOG_OFF
  277.    When %mailprompt% Goto EXIT_MAIL
  278.    When 'P 200?' Goto LOG_OFF
  279.    CarrierLoss Goto EXIT_PROGRAM
  280.    Timeout 20 Goto GIVE_UP
  281. End
  282. Begin LOG_OFF
  283.    Transmit 'bye'
  284.    Cr
  285.    Caption 'Logging off'
  286.    When 'NO CAR' Goto EXIT_PROGRAM
  287.    When %mainprompt% Goto LOG_OFF
  288.    When 'P 200?' Goto LOG_OFF
  289.    CarrierLoss Goto EXIT_PROGRAM
  290.    Timeout 20 Goto HANGUP_PHONE
  291. End
  292. Begin EXIT_PROGRAM
  293.    Caption 'Logged off'
  294.    CarrierLoss Goto EXIT_PROGRAM
  295.    Timeout 3 Goto BYE_BYE
  296. End
  297. Begin GIVE_UP
  298.    Caption 'Aborting'
  299.    Hangup
  300.    CarrierLoss Goto EXIT_PROGRAM
  301. End
  302. Begin HANGUP_PHONE
  303.    Hangup
  304.    CarrierLoss Goto EXIT_PROGRAM
  305. End
  306. Begin NO_LOGIN
  307.    Caption 'Unable to login'
  308.    Timeout 5 Goto GIVE_UP
  309. End
  310. Begin BYE_BYE
  311.    Exit
  312. End
  313.  
  314.