home *** CD-ROM | disk | FTP | other *** search
/ Collection of Hack-Phreak Scene Programs / cleanhpvac.zip / cleanhpvac / PWAULTP3.ZIP / PWAPRGMS.A02 / PWA95 / PWAPCP01.ZIP / BMAIL11 / MAILUU.PPE (.txt) < prev    next >
PCBoard Programming Language Executable  |  1995-09-03  |  8KB  |  422 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 3.O1 (Encryption type I) - 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 LABEL008
  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 LABEL011
  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.             Goto LABEL002
  132.         Endif
  133.         :LABEL002
  134.         PrintLn "@X1FBaseMail v" + STRING001 + Space(55 - Len(STRING001) - Len(STRING011)) + "Registered to " + STRING011
  135.         If (Upper(STRING008) <> "NONE") Then
  136.             InputStr "Choose option 1, 2 or 3: ", INTEGER002, 14, 1, "123", 128 + 64
  137.         Else
  138.             InputStr "Choose option 1 or 2: ", INTEGER002, 14, 1, "12", 128 + 64
  139.         Endif
  140.         Cls
  141.         :LABEL003
  142.         Select Case (INTEGER002)
  143.             Case 1
  144.                 PrintLn 
  145.                 Input "Type in person's name, or hit Enter to abort:", STRING002
  146.                 If (Len(STRING002) <= 1) Then
  147.                     Goto LABEL001
  148.                 Endif
  149.                 If (Len(Trim(STRING002, " ")) < 4) Then
  150.                     Goto LABEL009
  151.                 Endif
  152.                 PrintLn 
  153.                 Input "Subject: ", STRING003
  154.                 If (Len(Trim(STRING003, " ")) < 1) Then
  155.                     Goto LABEL009
  156.                 Endif
  157.                 PrintLn 
  158.                 If (INTEGER001 <> 1) Then
  159.                     Input "Fido Address (example 1:330/205)", STRING004
  160.                 Else
  161.                     INTEGER001 = 0
  162.                 Endif
  163.                 If (Len(Trim(STRING004, " ")) < 5) Then
  164.                     Goto LABEL009
  165.                 Endif
  166.                 PrintLn 
  167.                 KbdStuff "E" + Chr(13) + STRING002 + Chr(13)
  168.                 KbdStuff STRING003 + Chr(13)
  169.                 KbdStuff "(" + STRING004 + ")" + Chr(13)
  170.                 KbdStuff "(HOLD)"
  171.                 KbdStuff Chr(13) + Chr(13)
  172.                 KbdStuff "BaseMail v1.0" + Chr(13)
  173.                 KbdStuff Chr(13) + Chr(13)
  174.             Case 2
  175.                 PrintLn "Enter FULL Internet Address (example: steve.keith@swcbbs.com)"
  176.                 Input Chr(13), STRING006
  177.                 PrintLn Chr(13)
  178.                 If (Len(Trim(STRING006, " ")) < 7) Then
  179.                     Goto LABEL009
  180.                 Endif
  181.                 PrintLn "Enter the SUBJECT on the next line"
  182.                 Input Chr(13), STRING003
  183.                 PrintLn 
  184.                 KbdStuff "E" + Chr(13) + "UUCP" + Chr(13)
  185.                 KbdStuff STRING003 + Chr(13)
  186.                 KbdStuff "(" + STRING005 + ")"
  187.                 KbdStuff Chr(13)
  188.                 KbdStuff "To: " + STRING006
  189.                 KbdStuff Chr(13) + Chr(13)
  190.                 KbdStuff "BaseMail v1.0" + Chr(13)
  191.             Case 3
  192.                 INTEGER005 = 0
  193.                 StartDisp 1
  194.                 Input "Enter Sysop's LAST name, or address to search for", STRING009
  195.                 PrintLn 
  196.                 Input "How many matches do you want? (Max/Default = 100)", STRING015
  197.                 If ((STRING015 == 0) || (STRING015 > 100)) Then
  198.                     STRING015 = 100
  199.                 Endif
  200.                 FCreate 2, PPEPath() + "NLS" + String(INTEGER003) + ".BAT", 2, 3
  201.                 If (Ferr(2)) Then
  202.                     Goto LABEL010
  203.                 Endif
  204.                 FPutLn 2, "@ECHO OFF"
  205.                 FPutLn 2, Left(STRING008, 3)
  206.                 FPutLn 2, "CD " + Left(STRING008, Len(STRING008) - 1)
  207.                 FPutLn 2, "QFRONT /MAX:" + STRING015 + " /SEARCH:" + STRING009 + " /NODE:" + String(INTEGER003)
  208.                 FPutLn 2, "IF EXIST QSRCH" + String(INTEGER003) + ".DAT GOTO END"
  209.                 FPutLn 2, "REM>QSRCH" + String(INTEGER003) + ".DAT"
  210.                 FPutLn 2, "ECHO NO MATCHES! > QSRCH" + String(INTEGER003) + ".DAT"
  211.                 FPutLn 2, ":END"
  212.                 If (Ferr(2)) Then
  213.                     Goto LABEL010
  214.                 Endif
  215.                 FClose 2
  216.                 Shell 1, INTEGER004, PPEPath() + "NLS" + String(INTEGER003) + ".BAT", STRING009
  217.                 FOpen 7, STRING008 + "QSRCH" + String(INTEGER003) + ".DAT", 0, 3
  218.                 FDefIn 7
  219.                 :LABEL004
  220.                 If (Ferr(7)) Goto LABEL007
  221.                 Inc INTEGER005
  222.                 If (INTEGER005 < 10) Then
  223.                     STRING021 = "  "
  224.                 ElseIf (INTEGER005 < 100) Then
  225.                     STRING021 = " "
  226.                 Else
  227.                     STRING021 = ""
  228.                 Endif
  229.                 FDGet TSTRING016(INTEGER005)
  230.                 If (Strip(TSTRING016(INTEGER005), " ") == "NOMATCHES!") Then
  231.                     Cls
  232.                     PrintLn 
  233.                     PrintLn 
  234.                     PrintLn "The specified string could not be found"
  235.                     PrintLn 
  236.                     PrintLn 
  237.                     More
  238.                 ElseIf (Ferr(7)) Then
  239.                     INTEGER005 = INTEGER005 - 1
  240.                     If (INTEGER005 % 4 == 0) Then
  241.                         Goto LABEL007
  242.                     Else
  243.                         :LABEL005
  244.                         Input "Choose a number: ", INTEGER006
  245.                         If (INTEGER006 > INTEGER005) Then
  246.                             Goto LABEL005
  247.                         ElseIf (INTEGER006 < 1) Then
  248.                             Goto LABEL007
  249.                         Else
  250.                             STRING004 = Trim(TSTRING016(INTEGER006), " ")
  251.                             INTEGER001 = 1
  252.                         Else
  253.                         Endif
  254.                     Endif
  255.                     FDGet STRING017
  256.                     FDGet STRING018
  257.                     FDGet STRING019
  258.                     FDGet STRING020
  259.                     TSTRING016(INTEGER005) = Left(TSTRING016(INTEGER005), 12)
  260.                     STRING017 = Left(STRING017, 30)
  261.                     STRING018 = Left(STRING018, 30)
  262.                     STRING019 = Left(STRING019, 30)
  263.                     STRING020 = Left(STRING020, 30)
  264.                     PrintLn 
  265.                     PrintLn "@X09[" + STRING021 + String(INTEGER005) + "]  -  @X0A" + TSTRING016(INTEGER005) + " @X0E" + STRING020
  266.                     PrintLn "                     @X09Name: " + STRING017
  267.                     PrintLn "                     @X09City: " + STRING018
  268.                     PrintLn "                     @X09System: " + STRING019
  269.                     PrintLn "_________________________________________________________"
  270.                     If (INTEGER005 % 4 == 0) Then
  271.                         :LABEL006
  272.                         Input "Choose a number: ", INTEGER006
  273.                         If (INTEGER006 > INTEGER005) Then
  274.                             Goto LABEL006
  275.                         ElseIf (INTEGER006 < 1) Then
  276.                             Cls
  277.                             PrintLn 
  278.                             PrintLn "@X09[" + STRING021 + String(INTEGER005) + "]  -  @X0A" + TSTRING016(INTEGER005) + " @X0E" + STRING020
  279.                             PrintLn "                     @X09Name: " + STRING017
  280.                             PrintLn "                     @X09City: " + STRING018
  281.                             PrintLn "                     @X09System: " + STRING019
  282.                             PrintLn "_________________________________________________________"
  283.                         Else
  284.                             STRING004 = Trim(TSTRING016(INTEGER006), " ")
  285.                             INTEGER001 = 1
  286.                         Else
  287.                         Endif
  288.                         Goto LABEL004
  289.                     Endif
  290.                 Endif
  291.                 :LABEL007
  292.                 FClose 7
  293.                 Cls
  294.                 Delete PPEPath() + "NLS" + String(INTEGER003) + ".BAT"
  295.                 INTEGER002 = 1
  296.                 If (INTEGER001 == 1) Then
  297.                     Goto LABEL003
  298.                 Else
  299.                     Goto LABEL001
  300.                 Endif
  301.             Case 1
  302.                 End
  303.             Case Else
  304.                 Goto LABEL001
  305.         End Select
  306.         Goto LABEL012
  307.         :LABEL008
  308.         PrintLn 
  309.         PrintLn "Error reading CFG file"
  310.         PrintLn 
  311.         Goto LABEL012
  312.         :LABEL009
  313.         PrintLn Chr(13)
  314.         PrintLn "Input appears to be too short" + Chr(13)
  315.         Goto LABEL012
  316.     Endif
  317.     PrintLn Chr(13)
  318.     PrintLn "ERROR IN CFG FILE"
  319.     Goto LABEL012
  320.     :LABEL010
  321.     PrintLn Chr(13)
  322.     PrintLn "ERROR OPENING OR CREATING FILE"
  323.     Goto LABEL012
  324.     :LABEL011
  325.     PrintLn Chr(13)
  326.     PrintLn "ERROR: BBSNAME AND USERNAME IN CFG ARE TOO SHORT"
  327.     PrintLn "Must be greater than 8 characters total"
  328.     :LABEL012
  329.  
  330. ;------------------------------------------------------------------------------
  331. ;
  332. ; Usage report (before postprocessing)
  333. ;
  334. ; ■ Statements used :
  335. ;
  336. ;    2       End
  337. ;    6       Cls
  338. ;    1       More
  339. ;    80      Goto 
  340. ;    48      Let 
  341. ;    42      PrintLn 
  342. ;    36      If 
  343. ;    1       DispFile 
  344. ;    9       Input 
  345. ;    1       FCreate 
  346. ;    2       FOpen 
  347. ;    3       FClose 
  348. ;    8       FGet 
  349. ;    8       FPutLn 
  350. ;    1       StartDisp 
  351. ;    1       GetUser
  352. ;    1       PutUser
  353. ;    1       Delete 
  354. ;    2       InputStr 
  355. ;    1       Delay 
  356. ;    1       Inc 
  357. ;    1       Shell 
  358. ;    14      KbdStuff 
  359. ;    1       Join 
  360. ;    2       FDefIn 
  361. ;    5       FDGet 
  362. ;
  363. ;
  364. ; ■ Functions used :
  365. ;
  366. ;    10      %
  367. ;    107     +
  368. ;    6       -
  369. ;    9       ==
  370. ;    6       <>
  371. ;    13      <
  372. ;    3       <=
  373. ;    3       >
  374. ;    4       >=
  375. ;    35      !
  376. ;    4       &&
  377. ;    3       ||
  378. ;    11      Len(
  379. ;    2       Upper()
  380. ;    11      Mid()
  381. ;    7       Left()
  382. ;    1       Right()
  383. ;    1       Space()
  384. ;    5       Ferr()
  385. ;    54      Chr()
  386. ;    8       Asc()
  387. ;    6       Trim()
  388. ;    5       Strip()
  389. ;    10      String()
  390. ;    4       PPEPath()
  391. ;    1       PcbNode()
  392. ;    1       CurSec()
  393. ;    30      And()
  394. ;
  395. ;------------------------------------------------------------------------------
  396. ;
  397. ; Analysis flags : WS
  398. ;
  399. ; W - Write user ■ 5
  400. ;     Program writes a user record. Although this may be normal for a
  401. ;     User Editor, it may also be a way to modify an account level.
  402. ;     ■ Search for : PUTUSER
  403. ;
  404. ; S - Shell to DOS ■ 5
  405. ;     This may be normal if the PPE need to execute an external command,
  406. ;     but may be actually anything... nasty (formating HD, rebooting,...)
  407. ;     or usefull (sorting, maintenance,...). Check!
  408. ;     ■ Search for : SHELL
  409. ;
  410. ;------------------------------------------------------------------------------
  411. ;
  412. ; Postprocessing report
  413. ;
  414. ;    2       For/Next
  415. ;    0       While/EndWhile
  416. ;    29      If/Then or If/Then/Else
  417. ;    1       Select Case
  418. ;
  419. ;------------------------------------------------------------------------------
  420. ;                 AEGiS Corp - Break the routines, code against the machines!
  421. ;------------------------------------------------------------------------------
  422.