home *** CD-ROM | disk | FTP | other *** search
/ Monster Media 1994 #1 / monster.zip / monster / WIN_UTL2 / RFDMAIL.ZIP / UNIX.SCR < prev    next >
Text File  |  1994-02-03  |  20KB  |  725 lines

  1. ;------------------------------------------------------
  2. ;
  3. ;UNIX.SCR --- The script file for UNIX (world.std.com)
  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. Subject: $SUBJECT$\n
  13. Subj: $SUBJECT$\n
  14. From: "$NAME$" <$UID$>\n
  15. From: ""$NAME$"" <$UID$>\n
  16. From: $NAME$<$UID$>\n
  17. From: $UID$ ($NAME$)\n
  18. From: $UID$ \n
  19. From: $UID$\n
  20. Endformat
  21. ;------------------------------------------------------
  22. ;
  23. ;   Next is a set of aliases which determine various
  24. ; items such as where some of the standard commands
  25. ; like '/usr/ucb/mail' live.
  26. ;
  27. Alias sendmail '/usr/ucb/mail '
  28. Alias readmail '/usr/ucb/mail'
  29. Alias saveletter 's '
  30. Alias deleteletter 'd '
  31. Alias quitmail 'q'
  32. Alias mailnull '#'
  33. Alias mailshellesc '!'
  34. Alias rm '/bin/rm -f '
  35. Alias echo '/bin/echo '
  36. Alias cat '/bin/cat '
  37. Alias logoff 'exit'
  38. ;------------------------------------------------------
  39. ;
  40. ; The following aliases determine the various prompts the
  41. ; script will look for.  The most important one is the
  42. ; 'prompt' alias, which will need to be adjusted to match
  43. ; the prompt that your UNIX host gives.
  44. ;
  45. Alias prompt '\nworld%'
  46. Alias mailprompt '\n& '
  47. Alias subjectprompt '\nSubject: '
  48. Alias ccprompt1 'Cc:'
  49. Alias ccprompt2 'CC:'
  50. Alias ccprompt3 'cc:'
  51. Alias loginprompt '\nlogin: '
  52. Alias passwdprompt '\nPassword:'
  53. Alias havemailprompt 'message'
  54. Alias nomailprompt 'No mail'
  55. Alias nodiskprompt1 'Disc quota exceeded'
  56. Alias nodiskprompt2 'file system is full'
  57. Alias nodiskprompt3 'no such file'
  58. ;
  59. ; If you want to append your ~/.signature file to every outgoing
  60. ; message, set the following alias to SEND_SIG, otherwise set it
  61. ; to NO_SIGNATURE:
  62. ;
  63. Alias signature NO_SIGNATURE
  64. ;
  65. ;------------------------------------------------------
  66. ;
  67. ; The following aliases determine what the script will look
  68. ; for to determine that we've successfully logged in
  69. ; (banner1-3), and what it will look for to determine that
  70. ; we've successfully logged out (logoffbanner1-2)
  71. ;
  72. Alias banner1 'Public Access Unix'
  73. Alias banner2 'New World'
  74. Alias banner3 '\nLast login:'
  75. Alias logoffbanner1 %loginprompt%
  76. Alias logoffbanner2 'closed'
  77. ;------------------------------------------------------
  78. ;
  79. ; The following alias determines what intermediate network
  80. ; will be assumed.  It can be one of the following:
  81. ;
  82. ;    DIRECT    Direct connection to the host (default)
  83. ;    DIRLAT    Direct connection to a LAT
  84. ;    CIS    Connect through CIS Packet Net
  85. ;
  86. Alias connectype DIRECT
  87. ;
  88. ; The following alias should be set TRUE if your modem
  89. ; drops carrier every time you make a connection.  This
  90. ; alias simply forces the script to wait 2 seconds for
  91. ; the connection to settle before starting the script.
  92. ;
  93. Alias waitasec FALSE
  94. ;
  95. ;------------------------------------------------------
  96. ;
  97. ; The following aliases define the connection and password
  98. ; keywords to specify for CIS Packet Net.  They are currently
  99. ; set to connect to world.std.com, and need to be changed
  100. ; for any other UNIX site.
  101. ;
  102. Alias cisconnect 'world,domestic'
  103. Alias cispasswd 'notobvious'
  104. Alias cisconnprompt 'Connected to world.std.com'
  105. ;
  106. ;------------------------------------------------------
  107. ;
  108. ; Set the following aliases to reflect your LAT's prompt if you
  109. ; are connecting through a LAT:
  110. ;
  111. Alias latprompt1 'local>'
  112. Alias latprompt2 'Local>'
  113. ;
  114. ; Set the following alias to be the command which connects your LAT
  115. ; to the host
  116. ;
  117. Alias hostconnect 'open hostname'
  118. ;
  119. ;------------------------------------------------------
  120. ;
  121. ; The following aliases determine the command to use for
  122. ; downloading, and the prompt the upload program will send
  123. ; when it's ready to send data.  Comment these out if
  124. ; you don't want to use ZMODEM:
  125. ;
  126. Alias sz 'sz '
  127. Alias szprompt1 '\nsz: 1 file'
  128. Alias dnloadproto ZMODEM
  129. ;
  130. ; Uncomment the following aliases if you want to use YMODEM
  131. ; as your download protocol:
  132. ;
  133. ;Alias sz 'sb '
  134. ;Alias szprompt1 '\nsb: 1 file'
  135. ;Alias dnloadproto YMODEM
  136. ;
  137. ; Uncomment the following aliases if you want to use XMODEM
  138. ; as your download protocol:
  139. ;
  140. ;Alias sz 'sx '
  141. ;Alias szprompt1 'command now.'
  142. ;Alias dnloadproto XMODEM
  143. ;
  144. ;------------------------------------------------------
  145. ;
  146. ; The following aliases determine the command to use for
  147. ; uploading, and the prompt the upload program will send
  148. ; when it's ready to receive data.  Comment these out if
  149. ; you don't want to use ZMODEM:
  150. ;
  151. Alias rz 'rz -a '
  152. Alias rzprompt1 'to your modem'
  153. Alias rzprompt2 'ready'
  154. Alias uploadproto ZMODEM
  155. ;
  156. ; Uncomment the following aliases if you want to use YMODEM
  157. ; as your upload protocol:
  158. ;
  159. ;Alias rz 'rb -a '
  160. ;Alias rzprompt1 'to your modem'
  161. ;Alias rzprompt2 'ready'
  162. ;Alias uploadproto YMODEM
  163. ;
  164. ; Uncomment the following aliases if you want to use XMODEM
  165. ; as your upload protocol:
  166. ;
  167. ;Alias rz 'rx -ac '
  168. ;Alias rzprompt1 'to your modem'
  169. ;Alias rzprompt2 'ready to receive'
  170. ;Alias uploadproto XMODEM
  171. ;
  172. ; Uncomment the following aliases if you want to use KERMIT
  173. ; as your upload protocol:
  174. ; (note that you *must* use kermit on CIS Packet Net)
  175. ;
  176. ;Alias rz 'kermit -e 256 -r '
  177. ;Alias rzprompt1 'READY TO RECEIVE'
  178. ;Alias rzprompt2 'ready to receive'
  179. ;Alias uploadproto KERMIT
  180. ;
  181. ;------------------------------------------------------
  182. ; This is the main entry-point for the script, which
  183. ; decides which intermediate network will be used to
  184. ; connect to the host.
  185. ;
  186. Begin START
  187.    If %waitasec% Then WAIT_START
  188.    If TRUE Then %connectype%
  189. End
  190. Begin WAIT_START
  191.    Timeout 2 Goto %connectype%
  192. End
  193. ;------------------------------------------------------
  194. ; This is the entry-point for direct-connection to the
  195. ; host.  This state merely sends CR's every three
  196. ; seconds until it sees a login prompt.
  197. ;
  198. Begin DIRECT
  199.    Caption 'connected'
  200.    Cr
  201.    When %loginprompt% Goto USERNAME
  202.    Timeout 3 Goto START
  203. End
  204. ;------------------------------------------------------
  205. ; This is the entry-point for the CIS Packet Net connection
  206. ; to the host.  It merely answers the Host Name and Password
  207. ; prompts for the desired host.  Don't worry about the
  208. ; seemingly 'garbaged' When statements.  They are that way
  209. ; to account for an 8n1 connection to a CIS node which
  210. ; insists on talking 7e1.
  211. ;
  212. Begin CIS
  213.    Caption 'connected'
  214.    Cr
  215.    When '\nHost Name:' Goto CISHOSTNAME
  216.    When 'Ho≤táNßφe:' Goto CISHOSTNAME
  217.    Timeout 3 Goto CIS
  218. End
  219. Begin CISHOSTNAME
  220.    Transmit %cisconnect%
  221.    Cr
  222.    When '\nHost Name:' Goto CISHOSTNAME
  223.    When 'Ho≤táNßφe:' Goto CISHOSTNAME
  224.    When '\nPassword:' Goto CISHOSTPASSWORD
  225.    When 'Pß≤≤worΣ:' Goto CISHOSTPASSWORD
  226.    Timeout 30 Goto GIVE_UP
  227. End
  228. Begin CISHOSTPASSWORD
  229.    Transmit %cispasswd%
  230.    Cr
  231.    When '\nHost Name:' Goto CISHOSTNAME
  232.    When 'Ho≤táNßφe:' Goto CISHOSTNAME
  233.    When '\nPassword:' Goto CISHOSTPASSWORD
  234.    When 'Pß≤≤worΣ:' Goto CISHOSTPASSWORD
  235.    When %cisconnprompt% Goto CONNECTHOST
  236.    When %loginprompt% Goto USERNAME
  237.    Timeout 30 Goto GIVE_UP
  238. End
  239. Begin CONNECTHOST
  240.    Caption 'logging in'
  241.    When %loginprompt% Goto USERNAME
  242.    Timeout 30 Goto GIVE_UP
  243. End
  244. ;------------------------------------------------------
  245. ; These two states handle connecting to the host
  246. ; once we're directly connected to the LAT
  247. ;
  248. Begin DIRLAT
  249.    Caption 'connected'
  250.    Cr
  251.    When %latprompt1% Goto LOCAL_PROMPT
  252.    When %latprompt2%  Goto LOCAL_PROMPT
  253.    Timeout 3 Goto START
  254. End
  255. Begin LOCAL_PROMPT
  256.    Transmit %hostconnect%
  257.    Cr
  258.    When %latprompt1% Goto LOCAL_PROMPT
  259.    When %latprompt2%  Goto LOCAL_PROMPT
  260.    When %loginprompt% Goto USERNAME
  261.    Timeout 30 Goto GIVE_UP
  262. End
  263. ;------------------------------------------------------
  264. ; At this point we've seen the host's login prompt, and
  265. ; are attempting to log in.
  266. ;
  267. Begin USERNAME
  268.    Transmit $USERNAME
  269.    Cr
  270.    When %passwdprompt% Goto PASSWORD
  271.    When %loginprompt% Goto USERNAME
  272.    Timeout 120 Goto NO_LOGIN
  273. End
  274. Begin PASSWORD
  275.    Transmit $PASSWORD
  276.    Cr
  277.    When %passwdprompt% Goto PASSWORD
  278.    When %loginprompt% Goto USERNAME
  279.    When %banner1% Goto LOGGED_IN
  280.    When %banner2% Goto LOGGED_IN
  281.    When %banner3% Goto LOGGED_IN
  282.    When %prompt% Goto JUMP_TO_MAIL
  283.    Timeout 120 Goto NO_LOGIN
  284. End
  285. Begin LOGGED_IN
  286.    Caption 'logged in'
  287.    When 'TERM = ' Goto SEND_TERMTYPE
  288.    When %prompt% Goto JUMP_TO_MAIL
  289.    When 'More? [ynq]' Goto ANNOUNCEMENTS
  290.    Timeout 120 Goto NO_LOGIN
  291. End
  292. ;------------------------------------------------------
  293. ; If your login procedure asks for a termtype, this
  294. ; state merely sets it to a vanilla 'ansi' terminal.
  295. ;
  296. Begin SEND_TERMTYPE
  297.    Transmit 'ansi'
  298.    Cr
  299.    When %prompt% Goto JUMP_TO_MAIL
  300.    When 'More? [ynq]' Goto ANNOUNCEMENTS
  301.    Timeout 45 Goto NO_LOGIN
  302. End
  303. ;------------------------------------------------------
  304. ; These states are specific to world.std.com, which
  305. ; has "announcements" at login.  If there are any
  306. ; pending, they are downloaded to the PC, fooling
  307. ; RFD Mail into thinking they are a mail message from
  308. ; 'World Announcements'.
  309. ;
  310. Begin ANNOUNCEMENTS
  311.    Caption 'Announcements'
  312.    Transmit 's msgs.tmp'
  313.    Cr
  314.    When '\nMore? [ynq]' Goto NEXT_ANNOUNCEMENT
  315.    When '--More--' Goto SCROLL
  316.    When %prompt% Goto BUILD_ANNOUNCEMSG
  317.    Timeout 45 Goto NO_LOGIN
  318. End
  319. Begin NEXT_ANNOUNCEMENT
  320.    Transmit 'n'
  321.    Cr
  322.    When '\nMore? [ynq]' Goto ANNOUNCEMENTS
  323.    When '--More--' Goto SCROLL
  324.    When %prompt% Goto BUILD_ANNOUNCEMSG
  325.    Timeout 45 Goto NO_LOGIN
  326. End
  327. Begin BUILD_ANNOUNCEMSG
  328.    Transmit %echo%
  329.    Transmit '"From: announce (World Announcements)" > '
  330.    Transmit $LETTER.FILENAME
  331.    Cr
  332.    When %prompt% Goto CAT_ANNOUNCEMENT
  333.    Timeout 45 Goto CAT_ANNOUNCEMENT
  334. End
  335. Begin CAT_ANNOUNCEMENT
  336.    Transmit %cat%
  337.    Transmit '< msgs.tmp >> '
  338.    Transmit $LETTER.FILENAME
  339.    Cr
  340.    When ' such file ' Goto NO_ANNOUNCEMENT
  341.    When %prompt% Goto DNLOAD_ANNOUNCEMENT
  342.    Timeout 45 Goto NO_LOGIN
  343. End
  344. Begin DNLOAD_ANNOUNCEMENT
  345.    Transmit %sz%
  346.    Transmit $LETTER.FILENAME
  347.    Cr
  348.    When %szprompt1% Goto DO_ANNDNLOAD
  349.    When %prompt% Goto NO_ANNOUNCEMENT
  350.    Timeout 45 Goto NO_LOGIN
  351. End
  352. Begin DO_ANNDNLOAD
  353.    Download %dnloadproto% Then ANNDNLD_SUCCESS Else NO_LOGIN
  354. End
  355. Begin ANNDNLD_SUCCESS
  356.    Confirm LETTER.RECEIVED Successful
  357.    Caption 'Announcements Received'
  358.    When %prompt% Goto NO_ANNOUNCEMENT
  359.    Timeout 5 Goto END_ANNDNLOAD
  360. End
  361. Begin END_ANNDNLOAD
  362.    Cr
  363.    When %prompt% Goto NO_ANNOUNCEMENT
  364.    Timeout 5 Goto END_ANNDNLOAD2
  365. End
  366. Begin END_ANNDNLOAD2
  367.    Control C
  368.    When %prompt% Goto NO_ANNOUNCEMENT
  369.    Timeout 5 Goto GIVE_UP
  370. End
  371. Begin NO_ANNOUNCEMENT
  372.    Transmit %rm%
  373.    Transmit 'msgs.tmp '
  374.    Transmit $LETTER.FILENAME
  375.    Cr
  376.    When %prompt% Goto JUMP_TO_MAIL
  377.    Timeout 45 Goto JUMP_TO_MAIL
  378. End
  379. Begin SCROLL
  380.    Transmit ' '
  381.    When '\nMore? [ynq]' Goto ANNOUNCEMENTS
  382.    When '--More--' Goto SCROLL
  383.    When %prompt% Goto BUILD_ANNOUNCEMSG
  384.    Timeout 30 Goto NO_LOGIN
  385. End
  386. ;------------------------------------------------------
  387. ; These states check to see if there is any mail waiting
  388. ; by running the host's mail program and looking for
  389. ; keywords indicating the presence/absence of mail.
  390. ; If there's mail (and the script is in fetch mode),
  391. ; then the FETCH_FROM_MAIN_MENU sequence is started.
  392. ; If there's no mail, but there are letters to send,
  393. ; the SEND_MAIL sequence is started.  Otherwise the
  394. ; script just logs off.
  395. ;
  396. Begin JUMP_TO_MAIL
  397.    Transmit %readmail%
  398.    Cr
  399.    When %nomailprompt% Goto NO_MAIL_WAITING
  400.    When %havemailprompt% Goto MAIL_WAITING
  401.    Timeout 10 Goto RETRY_JUMP
  402. End
  403. Begin RETRY_JUMP
  404.    Transmit %readmail%
  405.    Cr
  406.    When %nomailprompt% Goto NO_MAIL_WAITING
  407.    When %havemailprompt% Goto MAIL_WAITING
  408.    Timeout 15 Goto GIVE_UP
  409. End
  410. Begin NO_MAIL_WAITING
  411.    Caption 'No Mail'
  412.    If MORE_LETTERS Then SEND_MAIL
  413.    When %prompt% Goto LOG_OFF
  414.    Timeout 15 Goto GIVE_UP
  415. End
  416. Begin MAIL_WAITING
  417.    Caption 'You Have Mail'
  418.    If FETCHING Then FETCH_FROM_MAIN_MENU
  419.    If MORE_LETTERS Then SEND_BUT_QUIT
  420.    When %mailprompt% Goto QUIT_MAIL
  421.    Timeout 120 Goto LOG_OFF
  422. End
  423. Begin QUIT_MAIL
  424.    Transmit %quitmail%
  425.    Cr
  426.    When %mailprompt% Goto QUIT_MAIL
  427.    When %prompt% Goto LOG_OFF
  428.    Timeout 15 Goto GIVE_UP
  429. End
  430. Begin SEND_BUT_QUIT
  431.    Transmit %quitmail%
  432.    Cr
  433.    When %mailprompt% Goto SEND_BUT_QUIT
  434.    When %prompt% Goto REQUEST_UPLOAD_LETTER
  435.    Timeout 15 Goto GIVE_UP
  436. End
  437. ;------------------------------------------------------
  438. ; These states execute for each letter to be downloaded.
  439. ; They save the letter to the mail.tmp file, download
  440. ; the file, instruct RFD to put the letter in the In Box,
  441. ; delete the letter on the host, then check for more mail.
  442. ;
  443. Begin FETCH_FROM_MAIN_MENU
  444.    When %mailprompt% Goto PRESERVE_MAIL
  445.    When %nodiskprompt1% Goto DISK_FULL
  446.    When %nodiskprompt2% Goto DISK_FULL
  447.    When %nodiskprompt3% Goto DISK_FULL
  448.    Timeout 10 Goto PRESERVE_MAIL
  449. End
  450. Begin PRESERVE_MAIL
  451.    Transmit 'preserve *'
  452.    Cr
  453.    ClearIndex
  454.    When %mailprompt% Goto DEL_TMPFILE
  455.    When %nodiskprompt1% Goto DISK_FULL
  456.    When %nodiskprompt2% Goto DISK_FULL
  457.    When %nodiskprompt3% Goto DISK_FULL
  458.    Timeout 20 Goto DEL_TMPFILE
  459. End
  460. Begin DEL_TMPFILE
  461.    Transmit %mailshellesc%
  462.    Transmit %rm%
  463.    Transmit $LETTER.FILENAME
  464.    Cr
  465.    NextIndex
  466.    When %mailprompt% Goto SAVE_CURLETTER
  467.    Timeout 20 Goto SAVE_CURLETTER
  468. End
  469. Begin SAVE_CURLETTER
  470.    Transmit %saveletter%
  471.    Transmit $INDEX
  472.    Transmit ' '
  473.    Transmit $LETTER.FILENAME
  474.    Cr
  475.    When 'New file' Goto REQUEST_DOWNLOAD
  476.    When 'No messages' Goto NO_MORE_MAIL
  477.    When 'Invalid message' Goto NO_MORE_MAIL
  478.    When %nodiskprompt1% Goto DISK_FULL
  479.    When %nodiskprompt2% Goto DISK_FULL
  480.    When %nodiskprompt3% Goto DISK_FULL
  481.    Timeout 10 Goto REQUEST_DOWNLOAD
  482. End
  483. Begin REQUEST_DOWNLOAD
  484.    Caption 'Fetching Mail'
  485.    Transmit %mailshellesc%
  486.    Transmit %sz%
  487.    Transmit $LETTER.FILENAME
  488.    Cr
  489.    When %szprompt1% Goto DOWNLD_LETTER
  490.    Timeout 20 Goto ABORT_DOWNLD
  491. End
  492. Begin ABORT_DOWNLD
  493.    Control X
  494.    Control X
  495.    Control X
  496.    Control X
  497.    Control X
  498.    Control X
  499.    Control X
  500.    Control C
  501.    When %prompt% Goto JUMP_TO_MAIL
  502.    When %mailprompt% Goto REQUEST_DOWNLOAD
  503.    Timeout 20 Goto JUMP_TO_MAIL
  504. End
  505. Begin PAUSE_FOR_DOWNLD
  506.    Timeout 1 Goto DOWNLD_LETTER
  507. End
  508. Begin DOWNLD_LETTER
  509.    Download %dnloadproto% Then DOWNLD_SUCCESS Else RETRY_DNLOAD
  510. End
  511. Begin RETRY_DNLOAD
  512.    Caption 'Retrying Download'
  513.    Transmit %mailnull%
  514.    Cr
  515.    When %mailprompt% Goto RETRY_REQDNLOAD
  516.    Timeout 5 Goto RETRY_REQDNLOAD
  517. End
  518. Begin RETRY_REQDNLOAD
  519.    Transmit %mailshellesc%
  520.    Transmit %sz%
  521.    Transmit $LETTER.FILENAME
  522.    Cr
  523.    When %szprompt1% Goto RETRY_DOWNLD_LETTER
  524.    Timeout 20 Goto ABORT_DOWNLD
  525. End
  526. Begin RETRY_DOWNLD_LETTER
  527.    Download %dnloadproto% Then DOWNLD_SUCCESS Else GIVE_UP
  528. End
  529. Begin DOWNLD_SUCCESS
  530.    Confirm LETTER.RECEIVED Successful
  531.    Caption 'Letter Received'
  532.    Transmit %mailnull%
  533.    Cr
  534.    When %mailprompt% Goto DELETE_LETTER
  535.    Timeout 5 Goto SEND_DOWNLD_CR
  536. End
  537. Begin SEND_DOWNLD_CR
  538.    Transmit %mailnull%
  539.    Cr
  540.    When %mailprompt% Goto DELETE_LETTER
  541.    Timeout 5 Goto SEND_DOWNLD_CR
  542. End
  543. Begin DELETE_LETTER
  544.    Caption 'Deleting Letter'
  545.    Transmit %deleteletter%
  546.    Transmit ' '
  547.    Transmit $INDEX
  548.    Cr
  549.    When %mailprompt% Goto DEL_TMPFILE
  550.    Timeout 10 Goto DEL_TMPFILE
  551. End
  552. Begin NO_MORE_MAIL
  553.    Caption 'Fetched Mail'
  554.    When %mailprompt% Goto END_FETCH
  555.    Timeout 10 Goto END_FETCH
  556. End
  557. Begin END_FETCH
  558.    Transmit %quitmail%
  559.    Cr
  560.    If MORE_LETTERS Then SEND_MAIL
  561.    When %mailprompt% Goto END_FETCH
  562.    When %prompt% Goto LOG_OFF
  563.    Timeout 10 Goto LOG_OFF
  564. End
  565. Begin DISK_FULL
  566.    Caption 'Disk Full (aborting)'
  567.    When %mailprompt% Goto QUIT_MAIL
  568.    Timeout 10 Goto QUIT_MAIL
  569. End
  570. ;------------------------------------------------------
  571. ; These states execute for each letter to send.  First
  572. ; the letter is uploaded into the mail.tmp file, then
  573. ; the host's mail program is run, giving it the address,
  574. ; then the subject, body, and CC information.
  575. ;
  576. Begin SEND_MAIL
  577.    When %prompt% Goto DEL_UPFILE
  578.    Timeout 15 Goto DEL_UPFILE
  579. End
  580. Begin DEL_UPFILE
  581.    Transmit %rm%
  582.    Transmit $LETTER.FILENAME
  583.    Cr
  584.    When %prompt% Goto REQUEST_UPLOAD_LETTER
  585.    Timeout 30 Goto GIVE_UP
  586. End
  587. Begin REQUEST_UPLOAD_LETTER
  588.    Transmit %rz%
  589.    Cr
  590.    When %rzprompt1% Goto BEGIN_LETTER_UPLOAD
  591.    When %rzprompt2% Goto BEGIN_LETTER_UPLOAD
  592.    Timeout 20 Goto GIVE_UP
  593. End
  594. Begin WAIT_FOR_UPLOAD
  595.    Timeout 1 Goto BEGIN_LETTER_UPLOAD
  596. End
  597. Begin BEGIN_LETTER_UPLOAD
  598.    NewLetter
  599.    Upload %uploadproto% Then UPLOAD_SUCCESS Else GIVE_UP
  600. End
  601. Begin UPLOAD_SUCCESS
  602.    Caption 'Letter Uploaded'
  603.    Cr
  604.    When %prompt% Goto SEND_LETTER
  605.    Timeout 5 Goto END_LETTER_UPLOAD
  606. End
  607. Begin END_LETTER_UPLOAD
  608.    Cr
  609.    When %prompt% Goto SEND_LETTER
  610.    Timeout 15 Goto END_LETTER_UPLOAD2
  611. End
  612. Begin END_LETTER_UPLOAD2
  613.    Control C
  614.    When %prompt% Goto SEND_LETTER
  615.    Timeout 5 Goto GIVE_UP
  616. End
  617. Begin SEND_LETTER
  618.    Transmit %sendmail%
  619.    Transmit $LETTER.DEST.USERNAME
  620.    Cr
  621.    When %subjectprompt% Goto SEND_SUBJECT
  622.    When 'not found' Goto RETRY_SEND_LETTER
  623.    Timeout 25 Goto GIVE_UP
  624. End
  625. Begin RETRY_SEND_LETTER
  626.    Transmit %sendmail%
  627.    Transmit $LETTER.DEST.USERNAME
  628.    Cr
  629.    When %subjectprompt% Goto SEND_SUBJECT
  630.    When 'not found' Goto GIVE_UP
  631.    Timeout 25 Goto GIVE_UP
  632. End
  633. Begin SEND_SUBJECT
  634.    Transmit $LETTER.SUBJECT
  635.    Cr
  636.    Timeout 2 Goto SEND_BODY
  637. End
  638. Begin SEND_BODY
  639.    Transmit '~r '
  640.    Transmit $LETTER.FILENAME
  641.    Cr
  642.    Timeout 1 Goto %signature%
  643. End
  644. Begin SEND_SIG
  645.    Transmit '~r .signature'
  646.    Cr
  647.    Timeout 1 Goto NO_SIGNATURE
  648. End
  649. Begin SEND_CC
  650.    Transmit '~c '
  651.    CreateCC 0 80 Delimiter ','
  652.    Transmit $LETTER.CC
  653.    Cr
  654.    Timeout 1 Goto NO_SIGNATURE
  655. End
  656. Begin NO_SIGNATURE
  657.    If LETTER.CC Then SEND_CC
  658.    Control D
  659.    When %prompt% Goto LETTER_SENT
  660.    When %ccprompt1% Goto SEND_CC_CR
  661.    When %ccprompt2% Goto SEND_CC_CR
  662.    When %ccprompt3% Goto SEND_CC_CR
  663.    Timeout 5 Goto NO_SIGNATURE
  664. End
  665. Begin SEND_CC_CR
  666.    Cr
  667.    When %prompt% Goto LETTER_SENT
  668.    When %ccprompt1% Goto SEND_CC_CR
  669.    When %ccprompt2% Goto SEND_CC_CR
  670.    When %ccprompt3% Goto SEND_CC_CR
  671.    Timeout 10 Goto SEND_CC_CR
  672. End
  673. Begin LETTER_SENT
  674.    Caption 'Letter Sent'
  675.    Confirm LETTER.SENT Successful
  676.    Transmit %rm%
  677.    Transmit $LETTER.FILENAME
  678.    Cr
  679.    When %prompt% Goto SEND_MORE_MAIL
  680.    Timeout 15 Goto GIVE_UP
  681. End
  682. Begin SEND_MORE_MAIL
  683.    If MORE_LETTERS Then REQUEST_UPLOAD_LETTER
  684.    If TRUE Then LOG_OFF
  685. End
  686. ;------------------------------------------------------
  687. ; These states deal with logging off the system
  688. ;
  689. Begin WAIT_TO_LOG_OFF
  690.    When %prompt% Goto LOG_OFF
  691.    Timeout 20 Goto GIVE_UP
  692. End
  693. Begin LOG_OFF
  694.    Transmit %logoff%
  695.    Cr
  696.    Caption 'Logging off'
  697.    When 'NO CAR' Goto EXIT_PROGRAM
  698.    When %logoffbanner1% Goto HANGUP_PHONE
  699.    When %logoffbanner2% Goto HANGUP_PHONE
  700.    When %prompt% Goto LOG_OFF
  701.    CarrierLoss Goto EXIT_PROGRAM
  702.    Timeout 20 Goto GIVE_UP
  703. End
  704. Begin EXIT_PROGRAM
  705.    Caption 'Logged off'
  706.    CarrierLoss Goto EXIT_PROGRAM
  707.    Timeout 3 Goto BYE_BYE
  708. End
  709. Begin GIVE_UP
  710.    Caption 'Aborting'
  711.    Hangup
  712.    CarrierLoss Goto EXIT_PROGRAM
  713. End
  714. Begin HANGUP_PHONE
  715.    Hangup
  716.    CarrierLoss Goto EXIT_PROGRAM
  717. End
  718. Begin NO_LOGIN
  719.    Timeout 5 Goto GIVE_UP
  720. End
  721. Begin BYE_BYE
  722.    Exit
  723. End
  724.  
  725.