home *** CD-ROM | disk | FTP | other *** search
/ Collection of Hack-Phreak Scene Programs / cleanhpvac.zip / cleanhpvac / PWAULTP3.ZIP / PWAPRGMS.A02 / PWA95 / PWAPCP01.ZIP / BMAIL11 / BMAIL11S.ZIP / MAILUU.PPE (.txt) < prev    next >
PCBoard Programming Language Executable  |  1995-07-20  |  8KB  |  429 lines

  1. ;------------------------------------------------------------------------------
  2. ;                                                   .ss.
  3. ;                                                   `²²'
  4. ;             .,sS$Ss,,s$  .,sS$$$Ss.  .,sS$Ss,,s$ .ss.  .sSs.
  5. ;           .d$$²^°²$$$$'.d$P²°^^²$P'.d$$²^°²$$$$'.$$$' .$$$²Sb,.
  6. ;           $$$'   .$$$' $$$²Sçsµ²' .$$$'   .$$$'.$$$' .$$$'  `$$b.
  7. ;           $$$b,,d$$$' ,$$$b,....,s$$$$b,,d$$$'.$$$;.,$$$'    ;$$$
  8. ;           `²S$$S²²S$$S²°²S$$$$S²°°²S$$$$$$',$$S²°²S$S'.sS$$$P²'
  9. ;                                    .sS²°$$$²²°"'       d²°'
  10. ;                                  .$$²  .$$'
  11. ;                                  $$$.,d$$'
  12. ;                                  `²S$$S²'
  13. ;------------------------------------------------------------------------------
  14. ; P.P.L.X. 2.OO                          (C)1996 - Lone Runner / AEGiS CoRP'96 
  15. ;------------------------------------------------------------------------------
  16. ; PPE 2.OO (plain) - Analysis ON - Postprocessing ON
  17. ;------------------------------------------------------------------------------
  18.  
  19.     Integer  INTEGER001
  20.     Integer  INTEGER002
  21.     Integer  INTEGER003
  22.     Integer  INTEGER004
  23.     Integer  INTEGER005
  24.     Integer  INTEGER006
  25.     String   STRING001
  26.     String   STRING002
  27.     String   STRING003
  28.     String   STRING004
  29.     String   STRING005
  30.     String   STRING006
  31.     String   STRING007
  32.     String   STRING008
  33.     String   STRING009
  34.     String   STRING010
  35.     String   STRING011
  36.     String   STRING012
  37.     String   STRING013
  38.     String   STRING014
  39.     String   STRING015
  40.     String   TSTRING016(100)
  41.     String   STRING017
  42.     String   STRING018
  43.     String   STRING019
  44.     String   STRING020
  45.     String   STRING021
  46.     String   STRING022
  47.     String   STRING023
  48.     String   STRING024
  49.     String   STRING025
  50.     String   STRING026
  51.     String   STRING027
  52.     String   TSTRING028(8)
  53.     String   STRING029
  54.     String   TSTRING030(8)
  55.     String   STRING031
  56.  
  57. ;------------------------------------------------------------------------------
  58.  
  59.     FDefIn 7
  60.     GetUser
  61.     U_FSE = 1
  62.     U_FSEP = 0
  63.     PutUser
  64.     STRING001 = "1.00"
  65.     STRING022 = Chr(And(212, 127)) + Chr(And(232, 127)) + Chr(And(233, 127)) + Chr(And(243, 127)) + Chr(And(160, 127)) + Chr(And(243, 127))
  66.     STRING023 = Chr(And(239, 127)) + Chr(And(230, 127)) + Chr(And(244, 127)) + Chr(And(247, 127)) + Chr(And(225, 127)) + Chr(And(242, 127))
  67.     STRING024 = Chr(And(229, 127)) + Chr(And(160, 127)) + Chr(And(233, 127)) + Chr(And(243, 127)) + Chr(And(160, 127)) + Chr(And(213, 127))
  68.     STRING025 = Chr(And(206, 127)) + Chr(And(210, 127)) + Chr(And(197, 127)) + Chr(And(199, 127)) + Chr(And(201, 127)) + Chr(And(211, 127))
  69.     STRING026 = Chr(And(212, 127)) + Chr(And(197, 127)) + Chr(And(210, 127)) + Chr(And(197, 127)) + Chr(And(196, 127)) + Chr(And(161, 127))
  70.     STRING027 = STRING022 + STRING023 + STRING024 + STRING025 + STRING026
  71.     INTEGER003 = PcbNode()
  72.     INTEGER001 = 0
  73.     FOpen 1, PPEPath() + "MAILUU.CFG", 0, 0
  74.     FGet 1, STRING007
  75.     FGet 1, STRING010
  76.     FGet 1, STRING011
  77.     FGet 1, STRING005
  78.     FGet 1, STRING008
  79.     FGet 1, STRING012
  80.     FGet 1, STRING013
  81.     FGet 1, STRING014
  82.     If (Ferr(1)) Then
  83.         Goto LABEL007
  84.     Endif
  85.     FClose 1
  86.     If (CurSec() < STRING013) Then
  87.         Cls
  88.         PrintLn 
  89.         PrintLn 
  90.         PrintLn "     You do not have high enough security to use NETMAIL"
  91.         Delay 36
  92.         End
  93.     Endif
  94.     If (Len(Strip(STRING010, " ") + Strip(STRING011, " ")) < 8) Then
  95.         Goto LABEL010
  96.     Endif
  97.     STRING029 = ""
  98.     For INTEGER005 = 1 To 4
  99.         TSTRING028(INTEGER005) = Mid(Strip(STRING010, " "), Len(STRING010) - INTEGER005 + 1, 1) + Mid(Strip(STRING011, " "), Len(STRING011) - INTEGER005 + 1, 1)
  100.         STRING029 = STRING029 + TSTRING028(INTEGER005)
  101.     Next
  102.     TSTRING030(1) = Asc(Mid(STRING029, 1, 1)) % 6
  103.     TSTRING030(2) = Asc(Mid(STRING029, 2, 1)) % 7
  104.     TSTRING030(3) = Asc(Mid(STRING029, 3, 1)) % 8
  105.     TSTRING030(4) = Asc(Mid(STRING029, 4, 1)) % 9
  106.     TSTRING030(5) = Asc(Mid(STRING029, 5, 1)) % 7
  107.     TSTRING030(6) = Asc(Mid(STRING029, 6, 1)) % 5
  108.     TSTRING030(7) = Asc(Mid(STRING029, 7, 1)) % 9
  109.     TSTRING030(8) = Asc(Mid(STRING029, 8, 1)) % 4
  110.     STRING029 = ""
  111.     For INTEGER005 = 1 To 8
  112.         STRING029 = STRING029 + TSTRING030(INTEGER005)
  113.     Next
  114.     If (STRING029 <> STRING012) Then
  115.         STRING031 = "Y"
  116.     Else
  117.         STRING031 = "N"
  118.     Endif
  119.     Join STRING014
  120.     If (Upper(STRING008) <> "NONE") Then
  121.         If (Right(STRING008, 1) <> "\") Then
  122.             STRING008 = STRING008 + "\"
  123.         Endif
  124.         If (Mid(STRING008, 2, 2) <> ":\") Then
  125.         Else
  126.         Endif
  127.         :LABEL001
  128.         Cls
  129.         DispFile STRING007, 1
  130.         If (STRING031 == "Y") Then
  131.             PrintLn "@X1FBaseMail v" + STRING001 + "                                      Copyright 1995, Steve Keith"
  132.         Else
  133.             PrintLn "@X1FBaseMail v" + STRING001 + Space(55 - Len(STRING001) - Len(STRING011)) + "Registered to " + STRING011
  134.         Endif
  135.         If (STRING031 == "Y") Then
  136.             PrintLn "@XDF                         " + STRING027 + "                        "
  137.             PrintLn "@X02                        5 second delay until registered "
  138.             PrintLn 
  139.             PrintLn 
  140.             Delay 80
  141.         Endif
  142.         If (Upper(STRING008) <> "NONE") Then
  143.             InputStr "Choose option 1, 2 or 3: ", INTEGER002, 14, 1, "123", 128 + 64
  144.         Else
  145.             InputStr "Choose option 1 or 2: ", INTEGER002, 14, 1, "12", 128 + 64
  146.         Endif
  147.         Cls
  148.         :LABEL002
  149.         Select Case (INTEGER002)
  150.             Case 1
  151.                 PrintLn 
  152.                 Input "Type in person's name, or hit Enter to abort:", STRING002
  153.                 If (Len(STRING002) <= 1) Then
  154.                     Goto LABEL001
  155.                 Endif
  156.                 If (Len(Trim(STRING002, " ")) < 4) Then
  157.                     Goto LABEL008
  158.                 Endif
  159.                 PrintLn 
  160.                 Input "Subject: ", STRING003
  161.                 If (Len(Trim(STRING003, " ")) < 1) Then
  162.                     Goto LABEL008
  163.                 Endif
  164.                 PrintLn 
  165.                 If (INTEGER001 <> 1) Then
  166.                     Input "Fido Address (example 1:330/205)", STRING004
  167.                 Else
  168.                     INTEGER001 = 0
  169.                 Endif
  170.                 If (Len(Trim(STRING004, " ")) < 5) Then
  171.                     Goto LABEL008
  172.                 Endif
  173.                 PrintLn 
  174.                 KbdStuff "E" + Chr(13) + STRING002 + Chr(13)
  175.                 KbdStuff STRING003 + Chr(13)
  176.                 KbdStuff "(" + STRING004 + ")" + Chr(13)
  177.                 KbdStuff "(HOLD)"
  178.                 KbdStuff Chr(13) + Chr(13)
  179.                 KbdStuff "BaseMail v1.0" + Chr(13)
  180.                 KbdStuff Chr(13) + Chr(13)
  181.             Case 2
  182.                 PrintLn "Enter FULL Internet Address (example: steve.keith@swcbbs.com)"
  183.                 Input Chr(13), STRING006
  184.                 PrintLn Chr(13)
  185.                 If (Len(Trim(STRING006, " ")) < 7) Then
  186.                     Goto LABEL008
  187.                 Endif
  188.                 PrintLn "Enter the SUBJECT on the next line"
  189.                 Input Chr(13), STRING003
  190.                 PrintLn 
  191.                 KbdStuff "E" + Chr(13) + "UUCP" + Chr(13)
  192.                 KbdStuff STRING003 + Chr(13)
  193.                 KbdStuff "(" + STRING005 + ")"
  194.                 KbdStuff Chr(13)
  195.                 KbdStuff "To: " + STRING006
  196.                 KbdStuff Chr(13) + Chr(13)
  197.                 KbdStuff "BaseMail v1.0" + Chr(13)
  198.             Case 3
  199.                 INTEGER005 = 0
  200.                 StartDisp 1
  201.                 Input "Enter Sysop's LAST name, or address to search for", STRING009
  202.                 PrintLn 
  203.                 Input "How many matches do you want? (Max/Default = 100)", STRING015
  204.                 If ((STRING015 == 0) || (STRING015 > 100)) Then
  205.                     STRING015 = 100
  206.                 Endif
  207.                 FCreate 2, PPEPath() + "NLS" + String(INTEGER003) + ".BAT", 2, 3
  208.                 If (Ferr(2)) Then
  209.                     Goto LABEL009
  210.                 Endif
  211.                 FPutLn 2, "@ECHO OFF"
  212.                 FPutLn 2, Left(STRING008, 3)
  213.                 FPutLn 2, "CD " + Left(STRING008, Len(STRING008) - 1)
  214.                 FPutLn 2, "QFRONT /MAX:" + STRING015 + " /SEARCH:" + STRING009 + " /NODE:" + String(INTEGER003)
  215.                 FPutLn 2, "IF EXIST QSRCH" + String(INTEGER003) + ".DAT GOTO END"
  216.                 FPutLn 2, "REM>QSRCH" + String(INTEGER003) + ".DAT"
  217.                 FPutLn 2, "ECHO NO MATCHES! > QSRCH" + String(INTEGER003) + ".DAT"
  218.                 FPutLn 2, ":END"
  219.                 If (Ferr(2)) Then
  220.                     Goto LABEL009
  221.                 Endif
  222.                 FClose 2
  223.                 Shell 1, INTEGER004, PPEPath() + "NLS" + String(INTEGER003) + ".BAT", STRING009
  224.                 FOpen 7, STRING008 + "QSRCH" + String(INTEGER003) + ".DAT", 0, 3
  225.                 FDefIn 7
  226.                 :LABEL003
  227.                 If (Ferr(7)) Goto LABEL006
  228.                 Inc INTEGER005
  229.                 If (INTEGER005 < 10) Then
  230.                     STRING021 = "  "
  231.                 ElseIf (INTEGER005 < 100) Then
  232.                     STRING021 = " "
  233.                 Else
  234.                     STRING021 = ""
  235.                 Endif
  236.                 FDGet TSTRING016(INTEGER005)
  237.                 If (Strip(TSTRING016(INTEGER005), " ") == "NOMATCHES!") Then
  238.                     Cls
  239.                     PrintLn 
  240.                     PrintLn 
  241.                     PrintLn "The specified string could not be found"
  242.                     PrintLn 
  243.                     PrintLn 
  244.                     More
  245.                 ElseIf (Ferr(7)) Then
  246.                     INTEGER005 = INTEGER005 - 1
  247.                     If (INTEGER005 % 4 == 0) Then
  248.                         Goto LABEL006
  249.                     Else
  250.                         :LABEL004
  251.                         Input "Choose a number: ", INTEGER006
  252.                         If (INTEGER006 > INTEGER005) Then
  253.                             Goto LABEL004
  254.                         ElseIf (INTEGER006 < 1) Then
  255.                             Goto LABEL006
  256.                         Else
  257.                             STRING004 = Trim(TSTRING016(INTEGER006), " ")
  258.                             INTEGER001 = 1
  259.                         Else
  260.                         Endif
  261.                     Endif
  262.                     FDGet STRING017
  263.                     FDGet STRING018
  264.                     FDGet STRING019
  265.                     FDGet STRING020
  266.                     TSTRING016(INTEGER005) = Left(TSTRING016(INTEGER005), 12)
  267.                     STRING017 = Left(STRING017, 30)
  268.                     STRING018 = Left(STRING018, 30)
  269.                     STRING019 = Left(STRING019, 30)
  270.                     STRING020 = Left(STRING020, 30)
  271.                     PrintLn 
  272.                     PrintLn "@X09[" + STRING021 + String(INTEGER005) + "]  -  @X0A" + TSTRING016(INTEGER005) + " @X0E" + STRING020
  273.                     PrintLn "                     @X09Name: " + STRING017
  274.                     PrintLn "                     @X09City: " + STRING018
  275.                     PrintLn "                     @X09System: " + STRING019
  276.                     PrintLn "_________________________________________________________"
  277.                     If (INTEGER005 % 4 == 0) Then
  278.                         :LABEL005
  279.                         Input "Choose a number: ", INTEGER006
  280.                         If (INTEGER006 > INTEGER005) Then
  281.                             Goto LABEL005
  282.                         ElseIf (INTEGER006 < 1) Then
  283.                             Cls
  284.                             PrintLn 
  285.                             PrintLn "@X09[" + STRING021 + String(INTEGER005) + "]  -  @X0A" + TSTRING016(INTEGER005) + " @X0E" + STRING020
  286.                             PrintLn "                     @X09Name: " + STRING017
  287.                             PrintLn "                     @X09City: " + STRING018
  288.                             PrintLn "                     @X09System: " + STRING019
  289.                             PrintLn "_________________________________________________________"
  290.                         Else
  291.                             STRING004 = Trim(TSTRING016(INTEGER006), " ")
  292.                             INTEGER001 = 1
  293.                         Else
  294.                         Endif
  295.                         Goto LABEL003
  296.                     Endif
  297.                 Endif
  298.                 :LABEL006
  299.                 FClose 7
  300.                 Cls
  301.                 Delete PPEPath() + "NLS" + String(INTEGER003) + ".BAT"
  302.                 INTEGER002 = 1
  303.                 If (INTEGER001 == 1) Then
  304.                     Goto LABEL002
  305.                 Else
  306.                     Goto LABEL001
  307.                 Endif
  308.             Case 1
  309.                 End
  310.             Case Else
  311.                 Goto LABEL001
  312.         End Select
  313.         Goto LABEL011
  314.         :LABEL007
  315.         PrintLn 
  316.         PrintLn "Error reading CFG file"
  317.         PrintLn 
  318.         Goto LABEL011
  319.         :LABEL008
  320.         PrintLn Chr(13)
  321.         PrintLn "Input appears to be too short" + Chr(13)
  322.         Goto LABEL011
  323.     Endif
  324.     PrintLn Chr(13)
  325.     PrintLn "ERROR IN CFG FILE"
  326.     Goto LABEL011
  327.     :LABEL009
  328.     PrintLn Chr(13)
  329.     PrintLn "ERROR OPENING OR CREATING FILE"
  330.     Goto LABEL011
  331.     :LABEL010
  332.     PrintLn Chr(13)
  333.     PrintLn "ERROR: BBSNAME AND USERNAME IN CFG ARE TOO SHORT"
  334.     PrintLn "Must be greater than 8 characters total"
  335.     :LABEL011
  336.  
  337. ;------------------------------------------------------------------------------
  338. ;
  339. ; Usage report (before postprocessing)
  340. ;
  341. ; ■ Statements used :
  342. ;
  343. ;    2       End
  344. ;    6       Cls
  345. ;    1       More
  346. ;    81      Goto 
  347. ;    48      Let 
  348. ;    47      PrintLn 
  349. ;    37      If 
  350. ;    1       DispFile 
  351. ;    9       Input 
  352. ;    1       FCreate 
  353. ;    2       FOpen 
  354. ;    3       FClose 
  355. ;    8       FGet 
  356. ;    8       FPutLn 
  357. ;    1       StartDisp 
  358. ;    1       GetUser
  359. ;    1       PutUser
  360. ;    1       Delete 
  361. ;    2       InputStr 
  362. ;    2       Delay 
  363. ;    1       Inc 
  364. ;    1       Shell 
  365. ;    14      KbdStuff 
  366. ;    1       Join 
  367. ;    2       FDefIn 
  368. ;    5       FDGet 
  369. ;
  370. ;
  371. ; ■ Functions used :
  372. ;
  373. ;    10      %
  374. ;    111     +
  375. ;    6       -
  376. ;    10      ==
  377. ;    6       <>
  378. ;    13      <
  379. ;    3       <=
  380. ;    3       >
  381. ;    4       >=
  382. ;    37      !
  383. ;    4       &&
  384. ;    3       ||
  385. ;    11      Len(
  386. ;    2       Upper()
  387. ;    11      Mid()
  388. ;    7       Left()
  389. ;    1       Right()
  390. ;    1       Space()
  391. ;    5       Ferr()
  392. ;    54      Chr()
  393. ;    8       Asc()
  394. ;    6       Trim()
  395. ;    5       Strip()
  396. ;    10      String()
  397. ;    4       PPEPath()
  398. ;    1       PcbNode()
  399. ;    1       CurSec()
  400. ;    30      And()
  401. ;
  402. ;------------------------------------------------------------------------------
  403. ;
  404. ; Analysis flags : WS
  405. ;
  406. ; W - Write user ■ 5
  407. ;     Program writes a user record. Although this may be normal for a
  408. ;     User Editor, it may also be a way to modify an account level.
  409. ;     ■ Search for : PUTUSER
  410. ;
  411. ; S - Shell to DOS ■ 5
  412. ;     This may be normal if the PPE need to execute an external command,
  413. ;     but may be actually anything... nasty (formating HD, rebooting,...)
  414. ;     or usefull (sorting, maintenance,...). Check!
  415. ;     ■ Search for : SHELL
  416. ;
  417. ;------------------------------------------------------------------------------
  418. ;
  419. ; Postprocessing report
  420. ;
  421. ;    2       For/Next
  422. ;    0       While/EndWhile
  423. ;    30      If/Then or If/Then/Else
  424. ;    1       Select Case
  425. ;
  426. ;------------------------------------------------------------------------------
  427. ;                 AEGiS Corp - Break the routines, code against the machines!
  428. ;------------------------------------------------------------------------------
  429.