home *** CD-ROM | disk | FTP | other *** search
/ Beijing Paradise BBS Backup / PARADISE.ISO / software / BBSDOORW / WUI_31A.ZIP / WUI.PPE (.txt) < prev    next >
Encoding:
PCBoard Programming Language Executable  |  1993-05-28  |  21.9 KB  |  655 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 1.OO (plain) - Analysis ON - Postprocessing ON
  17. ;------------------------------------------------------------------------------
  18.  
  19.     Boolean  BOOLEAN007
  20.     Boolean  BOOLEAN008
  21.     Boolean  BOOLEAN009
  22.     Boolean  BOOLEAN010
  23.     Integer  INTEGER001
  24.     Integer  INTEGER002
  25.     String   STRING009
  26.     String   STRING010
  27.     String   STRING011
  28.     String   STRING012
  29.     String   STRING013
  30.     String   STRING014
  31.     String   STRING015
  32.     String   STRING016
  33.     String   STRING017
  34.     String   STRING018
  35.     String   STRING019
  36.     String   STRING020
  37.     String   STRING021
  38.     String   STRING022
  39.     String   STRING023
  40.     String   STRING024
  41.     String   STRING025
  42.     String   STRING026
  43.     String   STRING027
  44.     String   STRING028
  45.     String   STRING029
  46.     String   STRING030
  47.     String   STRING031
  48.     String   STRING032
  49.     String   STRING033
  50.     String   STRING034
  51.     String   STRING035
  52.     String   STRING036
  53.     String   STRING037
  54.     String   STRING038
  55.     String   STRING039
  56.     String   STRING040
  57.  
  58. ;------------------------------------------------------------------------------
  59.  
  60.     GetUser
  61.     Gosub LABEL022
  62.     GetToken STRING011
  63.     If (Strip(STRING011, " ") == "A") Goto LABEL002
  64.     If (Strip(STRING011, " ") == "B") Goto LABEL003
  65.     If (Strip(STRING011, " ") == "C") Goto LABEL004
  66.     If (Strip(STRING011, " ") == "D") Goto LABEL005
  67.     If (Strip(STRING011, " ") == "E") Goto LABEL006
  68.     If (Strip(STRING011, " ") == "F") Goto LABEL007
  69.     If (Strip(STRING011, " ") == "G") Goto LABEL008
  70.     If (Strip(STRING011, " ") == "H") Goto LABEL009
  71.     If (Strip(STRING011, " ") == "I") Goto LABEL010
  72.     If (Strip(STRING011, " ") == "J") Goto LABEL011
  73.     If ((Strip(STRING011, " ") == "K") && Psa(3)) Goto LABEL012
  74.     If ((Strip(STRING011, " ") == "L") && Psa(3)) Goto LABEL013
  75.     If ((Strip(STRING011, " ") == "M") && Psa(3)) Goto LABEL014
  76.     If ((Strip(STRING011, " ") == "N") && Psa(3)) Goto LABEL015
  77.     If ((Strip(STRING011, " ") == "O") && Psa(3)) Goto LABEL016
  78.     If ((Strip(STRING011, " ") == "P") && Psa(3)) Goto LABEL017
  79.     If ((Strip(STRING011, " ") == "S") && Psa(5)) Goto LABEL026
  80.     If ((Strip(STRING011, " ") == "X") && Psa(1)) Goto LABEL018
  81.     If ((Strip(STRING011, " ") == "Y") && Psa(2)) Goto LABEL021
  82.     If (Strip(STRING011, " ") == "V") Goto LABEL024
  83.     If (Strip(STRING011, " ") <> "") STRING011 = ""
  84.     :LABEL001
  85.     Cls
  86.     STRING009 = ""
  87.     PrintLn "@X7F┌─────────────────────────────────────────────────────────────────────────────@X70┐@X07"
  88.     PrintLn "@X7F│ @X70@SYSDATE:8@        @X7BW R I T E   U S E R   I N F O R M A T I O N        @X70" + String(Time()) + "@POS:79@│@X07"
  89.     PrintLn "@X7F└@X70─────────────────────────────────────────────────────────────────────────────┘@X07"
  90.     PrintLn "@X70┌─────────────────────────────────────────────────────────────────────────────@X7F┐@X07"
  91.     PrintLn "@X70│ @X71(@X7EA@X71) Change your Password          (@X7EF@X71) Clear the screen between each message @X7F│@X07"
  92.     PrintLn "@X70│ @X71(@X7EB@X71) Change City and State         (@X7EG@X71) Scroll multi-screen messages          @X7F│@X07"
  93.     PrintLn "@X70│ @X71(@X7EC@X71) Business or data phone        (@X7EH@X71) Use long header when reading messages @X7F│@X07"
  94.     PrintLn "@X70│ @X71(@X7ED@X71) Home or voice phone           (@X7EI@X71) Full Screen Editor Default            @X7F│@X07"
  95.     PrintLn "@X70│ @X71(@X7EE@X71) Brand of CPU you are using    (@X7EJ@X71) Set editor workspace to 79 columns    @X7F│@X07"
  96.     If ((Psa(1) || Psa(2)) || Psa(3)) Then
  97.         PrintLn "@X70│                                                                             @X7F│@X07"
  98.         PrintLn "@X70│ @X71(@X7EK@X71) Street Address and Number     (@X7EX@X71) Create or change your ALIAS name      @X7F│@X07"
  99.         PrintLn "@X70│ @X71(@X7EL@X71) Suite or Apartment Number     (@X7EY@X71) User Verification Information         @X7F│@X07"
  100.         PrintLn "@X70│ @X71(@X7EM@X71) City, Town or Village @POS:79@@X7F│@X07"
  101.         PrintLn "@X70│ @X71(@X7EN@X71) Province or State             @X7F┌───────────────────────────────────────@X70┐@X70 @X7F│@X07"
  102.         PrintLn "@X70│ @X71(@X7EO@X71) Postal Zip Code               @X7F│ @X71Name: @X7E" + Left(U_Name(), 20) + "@POS:66@@X71Level: @X7E" + String(U_Sec) + "@POS:77@@X70│@X70 @X7F│@X07"
  103.         PrintLn "@X70│ @X71(@X7EP@X71) Country or Region             @X7F└@X70───────────────────────────────────────┘@X70 @X7F│@X07"
  104.         PrintLn "@X70└@X7F─────────────────────────────────────────────────────────────────────────────┘@X07"
  105.         InputStr "(@X0EV@X0F)iew, (@X0ES@X0F)tats, (@X0EQ@X0F)uit, Write User Information Command", STRING009, 15, 1, "abcdefghijklmnopqsvxyABCDEFGHIJKLMNOPQSVXY", 2 + 4 + 8 + 128 + 32
  106.     Else
  107.         PrintLn "@X70└@X7F─────────────────────────────────────────────────────────────────────────────┘@X07"
  108.         InputStr "(@X0EV@X0F)iew, (@X0ES@X0F)tats, (@X0EQ@X0F)uit, Write User Information Command", STRING009, 15, 1, "abcdefghijqsvABCDEFGHIJQSV", 2 + 4 + 8 + 128 + 32
  109.     Endif
  110.     If (STRING009 == "A") Goto LABEL002
  111.     If (STRING009 == "B") Goto LABEL003
  112.     If (STRING009 == "C") Goto LABEL004
  113.     If (STRING009 == "D") Goto LABEL005
  114.     If (STRING009 == "E") Goto LABEL006
  115.     If (STRING009 == "F") Goto LABEL007
  116.     If (STRING009 == "G") Goto LABEL008
  117.     If (STRING009 == "H") Goto LABEL009
  118.     If (STRING009 == "I") Goto LABEL010
  119.     If (STRING009 == "J") Goto LABEL011
  120.     If ((STRING009 == "K") && Psa(3)) Goto LABEL012
  121.     If ((STRING009 == "L") && Psa(3)) Goto LABEL013
  122.     If ((STRING009 == "M") && Psa(3)) Goto LABEL014
  123.     If ((STRING009 == "N") && Psa(3)) Goto LABEL015
  124.     If ((STRING009 == "O") && Psa(3)) Goto LABEL016
  125.     If ((STRING009 == "P") && Psa(3)) Goto LABEL017
  126.     If ((STRING009 == "S") && Psa(5)) Goto LABEL026
  127.     If ((STRING009 == "X") && Psa(1)) Goto LABEL018
  128.     If ((STRING009 == "Y") && Psa(2)) Goto LABEL021
  129.     If (STRING009 == "V") Goto LABEL024
  130.     If (STRING009 == "Q") Goto LABEL027
  131.     If (STRING009 == "") Goto LABEL027
  132.     Goto LABEL001
  133.     :LABEL002
  134.     If (Exist(PPEPath() + "WUI_A")) DispFile PPEPath() + "WUI_A", 4 + 2 + 1
  135.     PromptStr 152, STRING013, 13, Mask_Pwd(), 2 + 4 + 8 + 128 + 1 + 256
  136.     If ((Strip(STRING011, " ") == "A") && (STRING013 == "")) Goto LABEL027
  137.     If ((STRING009 == "A") && (STRING013 == "")) Goto LABEL001
  138.     If (Psa(4) && (Len(STRING013) < ReadLine(PCBDat(), 265))) Then
  139.         STRING013 = ""
  140.         Newline
  141.         PrintLn "@X0CPassword too short!  Must be @X0F" + Trim(ReadLine(PCBDat(), 265), Chr(32)) + " @X0Ccharacters or longer, try again.@X07"
  142.         FreshLine
  143.         Goto LABEL002
  144.     ElseIf (Psa(4) && (InStr(U_Name(), STRING013) > 0)) Then
  145.         STRING013 = ""
  146.         Newline
  147.         PrintLn "@X0CYour password cannot be a subset of your name.  While this may make it easy for"
  148.         PrintLn "@X0Cyou to remember, it also makes it easier for someone to guess your password.@X07"
  149.         FreshLine
  150.         Goto LABEL002
  151.     Endif
  152.     PromptStr 111, STRING014, 13, Mask_Pwd(), 2 + 4 + 8 + 128 + 1
  153.     If (STRING013 <> STRING014) Then
  154.         STRING013 = ""
  155.         STRING014 = ""
  156.         Newlines 2
  157.         PrintLn "@X0CSorry, @FIRST@, the two passwords do not match, try again.@X07"
  158.         FreshLine
  159.         Goto LABEL002
  160.     ElseIf (STRING013 == STRING014) Then
  161.         BOOLEAN007 = 1
  162.         U_Pwd = STRING013
  163.         STRING013 = ""
  164.         STRING014 = ""
  165.     Endif
  166.     If (STRING011 == "") Goto LABEL001
  167.     Goto LABEL027
  168.     :LABEL003
  169.     If (Exist(PPEPath() + "WUI_B")) DispFile PPEPath() + "WUI_B", 4 + 2 + 1
  170.     BOOLEAN007 = 1
  171.     PromptStr 265, U_City, 24, Mask_Ascii(), 2 + 4 + 8 + 128
  172.     STRING016 = Left(RTrim(U_City, Chr(32)) + "·························", 25)
  173.     If (STRING011 == "") Goto LABEL001
  174.     Goto LABEL027
  175.     :LABEL004
  176.     If (Exist(PPEPath() + "WUI_C")) DispFile PPEPath() + "WUI_C", 4 + 2 + 1
  177.     BOOLEAN007 = 1
  178.     PromptStr 113, U_BDPhone, 13, Mask_Num() + "- ", 2 + 4 + 8 + 128
  179.     STRING017 = Left(RTrim(U_BDPhone, Chr(32)) + "·············", 13)
  180.     If (STRING011 == "") Goto LABEL001
  181.     Goto LABEL027
  182.     :LABEL005
  183.     If (Exist(PPEPath() + "WUI_D")) DispFile PPEPath() + "WUI_D", 4 + 2 + 1
  184.     BOOLEAN007 = 1
  185.     PromptStr 114, U_HVPhone, 13, Mask_Num() + "- ", 2 + 4 + 8 + 128
  186.     STRING018 = Left(RTrim(U_HVPhone, Chr(32)) + "·············", 13)
  187.     If (STRING011 == "") Goto LABEL001
  188.     Goto LABEL027
  189.     :LABEL006
  190.     If (Exist(PPEPath() + "WUI_E")) DispFile PPEPath() + "WUI_E", 4 + 2 + 1
  191.     BOOLEAN007 = 1
  192.     PromptStr 2, U_Cmnt1, 30, Mask_Ascii(), 2 + 4 + 8 + 128
  193.     If (STRING011 == "") Goto LABEL001
  194.     Goto LABEL027
  195.     :LABEL007
  196.     If (Exist(PPEPath() + "WUI_F")) DispFile PPEPath() + "WUI_F", 4 + 2 + 1
  197.     BOOLEAN007 = 1
  198.     PromptStr 556, STRING038, 1, "YN", 2 + 4 + 8 + 128 + 16384
  199.     If (STRING038 == NoChar()) U_Cls = 0
  200.     If (STRING038 == YesChar()) U_Cls = 1
  201.     If (STRING011 == "") Goto LABEL001
  202.     Goto LABEL027
  203.     :LABEL008
  204.     If (Exist(PPEPath() + "WUI_G")) DispFile PPEPath() + "WUI_G", 4 + 2 + 1
  205.     BOOLEAN007 = 1
  206.     PromptStr 627, STRING037, 1, "YN", 2 + 4 + 8 + 128 + 16384
  207.     If (STRING037 == NoChar()) U_Scroll = 0
  208.     If (STRING037 == YesChar()) U_Scroll = 1
  209.     If (STRING011 == "") Goto LABEL001
  210.     Goto LABEL027
  211.     :LABEL009
  212.     If (Exist(PPEPath() + "WUI_H")) DispFile PPEPath() + "WUI_H", 4 + 2 + 1
  213.     BOOLEAN007 = 1
  214.     PromptStr 628, STRING035, 1, "YN", 2 + 4 + 8 + 128 + 16384
  215.     If (STRING035 == NoChar()) U_LongHDR = 0
  216.     If (STRING035 == YesChar()) U_LongHDR = 1
  217.     If (STRING011 == "") Goto LABEL001
  218.     Goto LABEL027
  219.     :LABEL010
  220.     If (Exist(PPEPath() + "WUI_I")) DispFile PPEPath() + "WUI_I", 4 + 2 + 1
  221.     BOOLEAN007 = 1
  222.     PromptStr 583, STRING039, 1, "YNA", 2 + 4 + 8 + 128
  223.     Select Case (STRING039)
  224.         Case NoChar()
  225.             U_FSEP = 0
  226.             U_FSE = 0
  227.         Case YesChar()
  228.             U_FSEP = 0
  229.             U_FSE = 1
  230.         Case "A"
  231.             U_FSEP = 1
  232.             U_FSE = 0
  233.     End Select
  234.     If (STRING011 == "") Goto LABEL001
  235.     Goto LABEL027
  236.     :LABEL011
  237.     If (Exist(PPEPath() + "WUI_J")) DispFile PPEPath() + "WUI_J", 4 + 2 + 1
  238.     BOOLEAN007 = 1
  239.     PromptStr 637, STRING040, 1, "YN", 2 + 4 + 8 + 128 + 16384
  240.     If (STRING040 == NoChar()) U_Def79 = 0
  241.     If (STRING040 == YesChar()) U_Def79 = 1
  242.     If (STRING011 == "") Goto LABEL001
  243.     Goto LABEL027
  244.     :LABEL012
  245.     If (Exist(PPEPath() + "WUI_K")) DispFile PPEPath() + "WUI_K", 4 + 2 + 1
  246.     BOOLEAN007 = 1
  247.     InputStr "Street Address and Number", U_Addr(0), 14, 50, Mask_Ascii(), 2 + 4 + 8 + 128
  248.     STRING023 = Left(RTrim(U_Addr(0), Chr(32)) + "······················································", 54)
  249.     If (STRING011 == "") Goto LABEL001
  250.     Goto LABEL027
  251.     :LABEL013
  252.     If (Exist(PPEPath() + "WUI_L")) DispFile PPEPath() + "WUI_L", 4 + 2 + 1
  253.     BOOLEAN007 = 1
  254.     InputStr "Suite or Apartment Number", U_Addr(1), 14, 50, Mask_Ascii(), 2 + 4 + 8 + 128
  255.     STRING024 = Left(RTrim(U_Addr(1), Chr(32)) + "······················································", 54)
  256.     If (STRING011 == "") Goto LABEL001
  257.     Goto LABEL027
  258.     :LABEL014
  259.     If (Exist(PPEPath() + "WUI_M")) DispFile PPEPath() + "WUI_M", 4 + 2 + 1
  260.     BOOLEAN007 = 1
  261.     InputStr "City, Town or Village", U_Addr(2), 14, 25, Mask_Ascii(), 2 + 4 + 8 + 128
  262.     STRING025 = Left(RTrim(U_Addr(2), Chr(32)) + "·························", 25)
  263.     If (STRING011 == "") Goto LABEL001
  264.     Goto LABEL027
  265.     :LABEL015
  266.     If (Exist(PPEPath() + "WUI_N")) DispFile PPEPath() + "WUI_N", 4 + 2 + 1
  267.     BOOLEAN007 = 1
  268.     InputStr "Province or State", U_Addr(3), 14, 10, Mask_Ascii(), 2 + 4 + 8 + 128
  269.     STRING026 = Left(RTrim(U_Addr(3), Chr(32)) + "·························", 25)
  270.     If (STRING011 == "") Goto LABEL001
  271.     Goto LABEL027
  272.     :LABEL016
  273.     If (Exist(PPEPath() + "WUI_O")) DispFile PPEPath() + "WUI_O", 4 + 2 + 1
  274.     BOOLEAN007 = 1
  275.     InputStr "Postal/Zip Code", U_Addr(4), 14, 10, Mask_Num() + "-", 2 + 4 + 8 + 128
  276.     STRING027 = Left(RTrim(U_Addr(4), Chr(32)) + "················", 16)
  277.     If (STRING011 == "") Goto LABEL001
  278.     Goto LABEL027
  279.     :LABEL017
  280.     If (Exist(PPEPath() + "WUI_P")) DispFile PPEPath() + "WUI_P", 4 + 2 + 1
  281.     BOOLEAN007 = 1
  282.     InputStr "Country or Region", U_Addr(5), 14, 15, Mask_Ascii(), 2 + 4 + 8 + 128
  283.     STRING028 = Left(RTrim(U_Addr(5), Chr(32)) + "················", 16)
  284.     If (STRING011 == "") Goto LABEL001
  285.     Goto LABEL027
  286.     :LABEL018
  287.     If ((ReadLine(PCBDat(), 259) == "0") && (U_Alias <> "")) Then
  288.         PrintLn 
  289.         PrintLn "@X0CSorry, @FIRST@, You have already chosen an ALIAS name."
  290.         PrintLn 
  291.         PrintLn "@X0EThe SysOp has disabled the ability to change your alias name.  You may leave a"
  292.         PrintLn "@X0Ecomment to the System Operator to request a change of your alias name."
  293.         PrintLn 
  294.         Wait
  295.     Else
  296.         If (Exist(PPEPath() + "ALIAS")) DispFile PPEPath() + "ALIAS", 4 + 2 + 1
  297.         PromptStr 690, U_Alias, 25, Mask_Ascii(), 2 + 4 + 8 + 128
  298.         If (Trim(U_Alias, Chr(32)) <> Trim(Strip(STRING019, Chr(250)), Chr(32))) Then
  299.             If (U_RecNum(U_Alias) <> -1) Then
  300.                 Log "Attempted to use " + Trim(U_Alias, Chr(32)) + " as an alias.", 0
  301.                 Newlines 2
  302.                 DispText 256, 256 + 2048 + 64
  303.                 U_Alias = Strip(STRING019, Chr(250))
  304.                 Wait
  305.                 Goto LABEL020
  306.             Endif
  307.             BOOLEAN008 = 1
  308.             If (Trim(U_Alias, Chr(32)) <> "") Then
  309.                 Log "Changed alias to " + Trim(U_Alias, Chr(32)) + ".", 0
  310.                 Goto LABEL019
  311.             Endif
  312.             Log "Deleted current alias name " + Trim(Strip(STRING019, Chr(250)), Chr(32)) + ".", 0
  313.             :LABEL019
  314.             BOOLEAN007 = 1
  315.             STRING019 = Left(RTrim(U_Alias, Chr(32)) + "·························", 25)
  316.         Endif
  317.     Endif
  318.     :LABEL020
  319.     If (STRING011 == "") Goto LABEL001
  320.     Goto LABEL027
  321.     :LABEL021
  322.     If (U_Ver <> "") Then
  323.         STRING010 = ""
  324.         If (Strip(STRING011, " ") == "Y") Newline
  325.         PrintLn "If you need to change or alter this field, you must first enter the information"
  326.         PrintLn "exactly like it was first entered.  If you can't remember what was entered in"
  327.         PrintLn "this field, leave a comment to the SysOp, so he can help you out."
  328.         PromptStr 707, STRING010, 25, Mask_Ascii(), 2 + 4 + 8 + 128 + 256
  329.         If (STRING010 == U_Ver) Then
  330.             If (Exist(PPEPath() + "VERIFY")) DispFile PPEPath() + "VERIFY", 4 + 2 + 1
  331.             BOOLEAN007 = 1
  332.             PromptStr 706, U_Ver, 25, Mask_Ascii(), 2 + 4 + 8 + 128
  333.         ElseIf (STRING010 <> "") Then
  334.             Log "Incorrect Verification Information (" + STRING010 + ")", 0
  335.             Newline
  336.             PrintLn "Sorry, the User Verification Information you just entered, does NOT match the"
  337.             PrintLn "information you previuosly entered.  At this point you may leave a comment to"
  338.             PrintLn "the SysOp, or try again, make sure the information is entered correctly."
  339.             Newline
  340.             Wait
  341.         Endif
  342.     Else
  343.         If (Exist(PPEPath() + "VERIFY")) DispFile PPEPath() + "VERIFY", 4 + 2 + 1
  344.         BOOLEAN007 = 1
  345.         PromptStr 706, U_Ver, 25, Mask_Ascii(), 2 + 4 + 8 + 128
  346.     Endif
  347.     STRING020 = Left(RTrim(U_Ver, Chr(32)) + "·························", 25)
  348.     For INTEGER002 = 1 To Len(U_Ver)
  349.         STRING020 = Replace(STRING020, Mid(STRING020, INTEGER002, 1), "*")
  350.     Next
  351.     If (STRING011 == "") Goto LABEL001
  352.     Goto LABEL027
  353.     :LABEL022
  354.     Log "Write User Information (" + PPEName() + ".PPE) " + "at (" + Left(Time(), 5) + ")", 0
  355.     RdUNet PcbNode()
  356.     STRING015 = Left(RTrim(U_Name(), Chr(32)) + "·························", 25)
  357.     STRING016 = Left(RTrim(U_City, Chr(32)) + "·························", 25)
  358.     STRING017 = Left(RTrim(U_BDPhone, Chr(32)) + "·············", 13)
  359.     STRING018 = Left(RTrim(U_HVPhone, Chr(32)) + "·············", 13)
  360.     STRING021 = Left(RTrim(U_Pwd, Chr(32)) + "·············", 13)
  361.     STRING022 = Left(RTrim(String(U_Sec), Chr(32)) + "·············", 13)
  362.     STRING019 = Left(RTrim(U_Alias, Chr(32)) + "·························", 25)
  363.     STRING020 = Left(RTrim(U_Ver, Chr(32)) + "·························", 25)
  364.     For INTEGER002 = 1 To Len(U_Ver)
  365.         STRING020 = Replace(STRING020, Mid(STRING020, INTEGER002, 1), "*")
  366.     Next
  367.     STRING023 = Left(RTrim(U_Addr(0), Chr(32)) + "······················································", 54)
  368.     STRING024 = Left(RTrim(U_Addr(1), Chr(32)) + "······················································", 54)
  369.     STRING025 = Left(RTrim(U_Addr(2), Chr(32)) + "·························", 25)
  370.     STRING026 = Left(RTrim(U_Addr(3), Chr(32)) + "·························", 25)
  371.     STRING027 = Left(RTrim(U_Addr(4), Chr(32)) + "················", 16)
  372.     STRING028 = Left(RTrim(U_Addr(5), Chr(32)) + "················", 16)
  373.     STRING030 = Right(Space(8) + "········" + String(U_ExpSec), 8)
  374.     INTEGER001 = U_ExpDate - Date()
  375.     If (INTEGER001 < 0) INTEGER001 = 0
  376.     STRING029 = Right(Space(8) + "········" + String(INTEGER001), 8)
  377.     STRING031 = Right(Space(8) + "········" + String(U_TimeOn()), 8)
  378.     STRING032 = Right(Space(8) + "········" + String(MinOn()), 8)
  379.     STRING033 = Right(Space(8) + "········" + String(CallNum() + 1), 8)
  380.     STRING034 = Right(Space(8) + "········" + String(U_Logons()), 8)
  381.     If (U_Expert == 0) STRING036 = NoChar()
  382.     If (U_Expert == 1) STRING036 = YesChar()
  383.     If (U_Cls == 0) STRING038 = NoChar()
  384.     If (U_Cls == 1) STRING038 = YesChar()
  385.     If ((U_FSEP == 0) && (U_FSE == 0)) STRING039 = NoChar()
  386.     If ((U_FSEP == 0) && (U_FSE == 1)) STRING039 = YesChar()
  387.     If ((U_FSEP == 1) && (U_FSE == 0)) STRING039 = "A"
  388.     If (U_Def79 == 0) STRING040 = NoChar()
  389.     If (U_Def79 == 1) STRING040 = YesChar()
  390.     If (U_Scroll == 0) STRING037 = NoChar()
  391.     If (U_Scroll == 1) STRING037 = YesChar()
  392.     If (U_LongHDR == 0) STRING035 = NoChar()
  393.     If (U_LongHDR == 1) STRING035 = YesChar()
  394.     Return
  395.     :LABEL023
  396.     STRING012 = ""
  397.     If (BOOLEAN010 == 0) Then
  398.         InputStr "(@X0EN@X0F)ext Page, (@X0ES@X0F)tatistics, (@X0EQ@X0F)uit, (@X0EEnter@X0F)=none", STRING012, 15, 1, "nqsNQS", 2 + 4 + 8 + 128 + 32
  399.     Else
  400.         InputStr "(@X0EL@X0F)ast Page, (@X0ES@X0F)tatistics, (@X0EQ@X0F)uit, (@X0EEnter@X0F)=none", STRING012, 15, 1, "lqsLQS", 2 + 4 + 8 + 128 + 32
  401.     Endif
  402.     If (STRING012 == "L") Goto LABEL024
  403.     If (STRING012 == "N") Goto LABEL025
  404.     If (STRING012 == "S") Goto LABEL026
  405.     If ((STRING012 == "Q") && (STRING011 == "")) Goto LABEL001
  406.     If ((STRING012 == "") && (STRING011 == "")) Goto LABEL001
  407.     Goto LABEL027
  408.     :LABEL024
  409.     BOOLEAN010 = 0
  410.     If (BOOLEAN009 == 0) Then
  411.         Log "User Statistics Viewed at (" + Left(Time(), 5) + ")", 0
  412.         BOOLEAN009 = 1
  413.     Endif
  414.     Cls
  415.     PrintLn "@X30┌@X3B───────────────────────────────────────────────────────────────────────────┐@X07"
  416.     PrintLn "@X30│                     @X34U S E R S   I N F O R M A T I O N@POS:77@@X3B│@X07"
  417.     PrintLn "@X30└───────────────────────────────────────────────────────────────────────────@X3B┘@X07"
  418.     PrintLn 
  419.     PrintLn "@X30┌───────────────────────────────────────────────────────────────────────────@X3B┐@X07"
  420.     PrintLn "@X30│ @X3FUsers Full Name@X30: @X31[@X3E" + STRING015 + "@X31]  @X3FData Phone@X30: @X31[@X3E" + STRING017 + "@X31] @POS:77@@X3B│@X07"
  421.     PrintLn "@X30│ @X3FCity and State @X30: @X31[@X3E" + STRING016 + "@X31]  @X3FHome Phone@X30: @X31[@X3E" + STRING018 + "@X31] @POS:77@@X3B│@X07"
  422.     If (Psa(1)) Then
  423.         PrintLn "@X30│ @X3FUser Alias Name@X30: @X31[@X3E" + STRING019 + "@X31]  @X3FPassword  @X30: @X31[@X3E" + STRING021 + "@X31] @POS:77@@X3B│@X07"
  424.     Else
  425.         PrintLn "@X30│ @X3FUser Alias Name@X30: @X31[@X38" + STRING019 + "@X31]  @X3FPassword  @X30: @X31[@X3E" + STRING021 + "@X31] @POS:77@@X3B│@X07"
  426.     Endif
  427.     If (Psa(2)) Then
  428.         PrintLn "@X30│ @X3FVerification   @X30: @X31[@X3E" + STRING020 + "@X31]  @X3FSecurity  @X30: @X31[@X3E" + STRING022 + "@X31] @POS:77@@X3B│@X07"
  429.     Else
  430.         PrintLn "@X30│ @X3FVerification   @X30: @X31[@X38" + STRING020 + "@X31]  @X3FSecurity  @X30: @X31[@X3E" + STRING022 + "@X31] @POS:77@@X3B│@X07"
  431.     Endif
  432.     PrintLn "@X30└@X3B───────────────────────────────────────────────────────────────────────────┘@X07"
  433.     If (Psa(3)) Then
  434.         PrintLn 
  435.         PrintLn "@X30┌───────────────────────────────────────────────────────────────────────────@X3B┐@X07"
  436.         PrintLn "@X30│ @X3FStreet Address @X30: @X31[@X3E" + STRING023 + "@X31] @POS:77@@X3B│@X07"
  437.         PrintLn "@X30│ @X3FSuite/Apartment@X30: @X31[@X3E" + STRING024 + "@X31] @POS:77@@X3B│@X07"
  438.         PrintLn "@X30│ @X3FCity or Town   @X30: @X31[@X3E" + STRING025 + "@X31]  @X3FZipCode@X30: @X31[@X3E" + STRING027 + "@X31] @POS:77@@X3B│@X07"
  439.         PrintLn "@X30│ @X3FProvince/State @X30: @X31[@X3E" + STRING026 + "@X31]  @X3FCountry@X30: @X31[@X3E" + STRING028 + "@X31] @POS:77@@X3B│@X07"
  440.         PrintLn "@X30└@X3B───────────────────────────────────────────────────────────────────────────┘@X07"
  441.     Else
  442.         PrintLn 
  443.         PrintLn "@X30┌───────────────────────────────────────────────────────────────────────────@X3B┐@X07"
  444.         PrintLn "@X30│ @X3FStreet Address @X30: @X31[@X38" + STRING023 + "@X31] @POS:77@@X3B│@X07"
  445.         PrintLn "@X30│ @X3FSuite/Apartment@X30: @X31[@X38" + STRING024 + "@X31] @POS:77@@X3B│@X07"
  446.         PrintLn "@X30│ @X3FCity or Town   @X30: @X31[@X38" + STRING025 + "@X31]  @X3FZipCode@X30: @X31[@X38" + STRING027 + "@X31] @POS:77@@X3B│@X07"
  447.         PrintLn "@X30│ @X3FProvince/State @X30: @X31[@X38" + STRING026 + "@X31]  @X3FCountry@X30: @X31[@X38" + STRING028 + "@X31] @POS:77@@X3B│@X07"
  448.         PrintLn "@X30└@X3B───────────────────────────────────────────────────────────────────────────┘@X07"
  449.     Endif
  450.     PrintLn 
  451.     PrintLn "@X30┌───────────────────────────────────────────────────────────────────────────@X3B┐@X07"
  452.     PrintLn "@X30│ @X3FNumber of Times on System@X30: @X31[@X3E" + STRING034 + "@X31]  @X3FNumber of System Calls@X30: @X31[@X3E" + STRING033 + "@X31]@POS:77@@X3B│@X07"
  453.     PrintLn "@X30└@X3B───────────────────────────────────────────────────────────────────────────┘@X07"
  454.     Goto LABEL023
  455.     :LABEL025
  456.     BOOLEAN010 = 1
  457.     Cls
  458.     PrintLn "@X30┌───────────────────────────────────────────────────────────────────────────@X3B┐@X07"
  459.     PrintLn "@X30│ @X3FRegistration Expiration Date@X30: @X31[@X3E" + Left(U_ExpDate, 8) + "@X31]  @X3FLast Date on System@X30: @X31[@X3E" + Left(U_LDate(), 8) + "@X31] @POS:77@@X3B│@X07"
  460.     PrintLn "@X30│ @X3FDays Left before Expiration @X30: @X31[@X3E" + STRING029 + "@X31]  @X3FLast Time on System@X30: @X31[@X3E" + Left(U_LTime(), 8) + "@X31] @POS:77@@X3B│@X07"
  461.     PrintLn "@X30│ @X3FExpired User Security Level @X30: @X31[@X3E" + STRING030 + "@X31]  @X3FLast Directory Scan@X30: @X31[@X3E" + Left(U_LDir(), 8) + "@X31] @POS:77@@X3B│@X07"
  462.     PrintLn "@X30│ @X3FMinutes Used this Session   @X30: @X31[@X3E" + STRING032 + "@X31]  @X3FMinutes Used Today @X30: @X31[@X3E" + STRING031 + "@X31] @POS:77@@X3B│@X07"
  463.     PrintLn "@X30└@X3B───────────────────────────────────────────────────────────────────────────┘@X07"
  464.     PrintLn 
  465.     PrintLn "@X30┌───────────────────────────────────────────────────────────────────────────@X3B┐@X07"
  466.     PrintLn "@X30│ @X3FGraphics Mode   @X30: @X31[@X3E" + GrafMode() + "@X31]     @X3FExpert Mode     @X30: @X31[@X3E" + STRING036 + "@X31]     @X3FDefault Protocol@X30: @X31[@X3E" + U_Trans + "@X31]@POS:77@@X3B│@X07"
  467.     PrintLn "@X30│ @X3F79-Column Editor@X30: @X31[@X3E" + STRING040 + "@X31]     @X3FFull Scrn Editor@X30: @X31[@X3E" + STRING039 + "@X31]     @X3FLong Headers    @X30: @X31[@X3E" + STRING035 + "@X31]@POS:77@@X3B│@X07"
  468.     PrintLn "@X30│ @X3FScroll Long Msgs@X30: @X31[@X3E" + STRING037 + "@X31]     @X3FChat Status     @X30: @X31[@X3E" + UN_Stat() + "@X31]     @X3FMessage Clear   @X30: @X31[@X3E" + STRING038 + "@X31]@POS:77@@X3B│@X07"
  469.     PrintLn "@X30└@X3B───────────────────────────────────────────────────────────────────────────┘@X07"
  470.     PrintLn 
  471.     PrintLn "@X30┌───────────────────────────────────────────────────────────────────────────@X3B┐@X07"
  472.     PrintLn "@X30│ @X3FFiles Downloaded@X30: @X31[@X3E@DLFILES:14R@@X31]       @X3FFiles Uploaded@X30: @X31[@X3E@UPFILES:14R@@X31]@POS:77@@X3B│@X07"
  473.     PrintLn "@X30│ @X3FBytes Downloaded@X30: @X31[@X3E@DLBYTES:14R@@X31]       @X3FBytes Uploaded@X30: @X31[@X3E@UPBYTES:14R@@X31]@POS:77@@X3B│@X07"
  474.     PrintLn "@X30│ @X3FFile Ratios     @X30: @X31[@X3E@FILERATIO:14R@@X31]       @X3FByte Ratios   @X30: @X31[@X3E@BYTERATIO:14R@@X31]@POS:77@@X3B│@X07"
  475.     PrintLn "@X30│@X38───────────────────────────────────────────────────────────────────────────@X3B│@X07"
  476.     PrintLn "@X30│ @X3FMessages Left   @X30: @X31[@X3E@MSGLEFT:14R@@X31]       @X3FMessages Read @X30: @X31[@X3E@MSGREAD:14R@@X31]@POS:77@@X3B│@X07"
  477.     PrintLn "@X30│ @X3FHighest Message @X30: @X31[@X3E@HIGHMSGNUM:14R@@X31]       @X3FLast Msg Read @X30: @X31[@X3E@LMR:14R@@X31]@POS:77@@X3B│@X07"
  478.     PrintLn "@X30└@X3B───────────────────────────────────────────────────────────────────────────┘@X07"
  479.     Goto LABEL023
  480.     :LABEL026
  481.     If (Psa(5)) Then
  482.         Log "Security Information Viewed at (" + Left(Time(), 5) + ")", 0
  483.         Cls
  484.         PrintLn "@X40┌───────────────────────────────────────────────────────────────────────────@X4C┐@X07"
  485.         PrintLn "@X40│              @X4BU S E R   S E C U R I T Y   S T A T I S T I C S              @X4C│@X07"
  486.         PrintLn "@X40└@X4C───────────────────────────────────────────────────────────────────────────┘@X07"
  487.         Newline
  488.         PrintLn "@X40┌───────────────────────────────────────────────────────────────────────────@X4C┐@X07"
  489.         PrintLn "@X40│ @X4FFirst Date On system   @X40: @X47[@X4E" + Right(Space(8) + "········" + String(U_Stat(1)), 8) + "@X47]     @POS:43@@X4FLast PWD Change Date @X40: @X47[@X4E" + Right(Space(8) + "········" + String(U_PwdLc()), 8) + "@X47] @POS:77@@X4C│@X07"
  490.         PrintLn "@X40│ @X4FLast Date On system    @X40: @X47[@X4E" + Left(U_LDate(), 8) + "@X47]     @POS:43@@X4FPWD Expiration Date  @X40: @X47[@X4E" + Right(Space(8) + "········" + String(U_PwdExp), 8) + "@X47] @POS:77@@X4C│@X07"
  491.         PrintLn "@X40│ @X4FNumber Times On system @X40: @X47[@X4E" + Right(Space(8) + "········" + String(U_Logons()), 8) + "@X47]     @POS:43@@X4F# Times PWD Changed  @X40: @X47[@X4E" + Right(Space(8) + "········" + String(U_PwdTc()), 8) + "@X47] @POS:77@@X4C│@X07"
  492.         PrintLn "@X40│ @POS:77@@X4C│@X07"
  493.         PrintLn "@X40│ @X4F# Security Violations  @X40: @X47[@X4E" + Right(Space(8) + "········" + String(U_Stat(10)), 8) + "@X47]     @POS:43@@X4F# Times Paged Sysop  @X40: @X47[@X4E" + Right(Space(8) + "········" + String(U_Stat(2)), 8) + "@X47] @POS:77@@X4C│@X07"
  494.         PrintLn "@X40│ @X4F# Un-Reg Conf Attempts @X40: @X47[@X4E" + Right(Space(8) + "········" + String(U_Stat(11)), 8) + "@X47]     @POS:43@@X4F# Times Group Chat   @X40: @X47[@X4E" + Right(Space(8) + "········" + String(U_Stat(3)), 8) + "@X47] @POS:77@@X4C│@X07"
  495.         PrintLn "@X40│ @X4F# Password Failures    @X40: @X47[@X4E" + Right(Space(8) + "········" + String(U_Stat(14)), 8) + "@X47]     @POS:43@@X4F# Comments to Sysop  @X40: @X47[@X4E" + Right(Space(8) + "········" + String(U_Stat(4)), 8) + "@X47] @POS:77@@X4C│@X07"
  496.         PrintLn "@X40│ @X4F# Dnld Limit Reached   @X40: @X47[@X4E" + Right(Space(8) + "········" + String(U_Stat(12)), 8) + "@X47]     @POS:77@@X4C│@X07"
  497.         PrintLn "@X40│ @X4F# Dnld File Not Found  @X40: @X47[@X4E" + Right(Space(8) + "········" + String(U_Stat(13)), 8) + "@X47]     @POS:43@@X4F# Upld Verify Failed @X40: @X47[@X4E" + Right(Space(8) + "········" + String(U_Stat(15)), 8) + "@X47] @POS:77@@X4C│@X07"
  498.         PrintLn "@X40│ @POS:77@@X4C│@X07"
  499.         PrintLn "@X40│ @X4F# Times On at 1200     @X40: @X47[@X4E" + Right(Space(8) + "········" + String(U_Stat(6)), 8) + "@X47]     @POS:43@@X4F# Times On at  2400  @X40: @X47[@X4E" + Right(Space(8) + "········" + String(U_Stat(7)), 8) + "@X47] @POS:77@@X4C│@X07"
  500.         PrintLn "@X40│ @X4F# Times On at 9600     @X40: @X47[@X4E" + Right(Space(8) + "········" + String(U_Stat(8)), 8) + "@X47]     @POS:43@@X4F# Times On at 14400+ @X40: @X47[@X4E" + Right(Space(8) + "········" + String(U_Stat(9)), 8) + "@X47] @POS:77@@X4C│@X07"
  501.         PrintLn "@X40└@X4C───────────────────────────────────────────────────────────────────────────┘@X07"
  502.         Newlines 2
  503.         Wait
  504.     Endif
  505.     If (Strip(STRING011, " ") == "S") Goto LABEL027
  506.     If (STRING009 == "S") Goto LABEL001
  507.     If (BOOLEAN010 == 0) Goto LABEL024
  508.     If (BOOLEAN010 == 1) Goto LABEL025
  509.     Goto LABEL023
  510.     :LABEL027
  511.     If (BOOLEAN007 == 1) Then
  512.         PutUser
  513.         If (STRING011 <> "") PrintLn 
  514.         If (BOOLEAN008 == 1) Then
  515.             WrUSys
  516.             If (Exist(PPEPath() + "INDEX.BAT")) Then
  517.                 Newline
  518.                 Print "@X0FOnline update of user's record being processed.  Please wait, @FIRST@ ... "
  519.                 RdUSys
  520.                 Shell 1, INTEGER002, PPEPath() + "INDEX.BAT", ""
  521.                 FreshLine
  522.             Endif
  523.         Endif
  524.         DispText 273, 256 + 128 + 2048 + 32768
  525.     Endif
  526.     End
  527.  
  528. ;------------------------------------------------------------------------------
  529. ;
  530. ; Usage report (before postprocessing)
  531. ;
  532. ; ■ Statements used :
  533. ;
  534. ;    1       End
  535. ;    4       Cls
  536. ;    4       Wait
  537. ;    139     Goto 
  538. ;    101     Let 
  539. ;    1       Print 
  540. ;    103     PrintLn 
  541. ;    141     If 
  542. ;    19      DispFile 
  543. ;    1       GetUser
  544. ;    1       PutUser
  545. ;    7       Log 
  546. ;    10      InputStr 
  547. ;    1       Gosub 
  548. ;    1       Return
  549. ;    15      PromptStr 
  550. ;    7       Newline
  551. ;    3       Newlines 
  552. ;    1       GetToken 
  553. ;    1       Shell 
  554. ;    2       DispText 
  555. ;    1       RdUNet 
  556. ;    4       FreshLine
  557. ;    1       WrUSys
  558. ;    1       RdUSys
  559. ;
  560. ;
  561. ; ■ Functions used :
  562. ;
  563. ;    1       -
  564. ;    398     +
  565. ;    1       -
  566. ;    110     ==
  567. ;    9       <>
  568. ;    4       <
  569. ;    2       <=
  570. ;    1       >
  571. ;    4       >=
  572. ;    26      !
  573. ;    32      &&
  574. ;    4       ||
  575. ;    5       Len(
  576. ;    2       Mid()
  577. ;    34      Left()
  578. ;    24      Right()
  579. ;    24      Space()
  580. ;    35      Chr()
  581. ;    1       InStr()
  582. ;    25      RTrim()
  583. ;    7       Trim()
  584. ;    1       Date()
  585. ;    4       Time()
  586. ;    3       U_Name()
  587. ;    2       U_LDate()
  588. ;    1       U_LTime()
  589. ;    1       U_LDir()
  590. ;    2       U_Logons()
  591. ;    1       U_TimeOn()
  592. ;    11      NoChar()
  593. ;    11      YesChar()
  594. ;    2       Replace()
  595. ;    27      Strip()
  596. ;    27      String()
  597. ;    2       Mask_Pwd()
  598. ;    3       Mask_Num()
  599. ;    11      Mask_Ascii()
  600. ;    3       PCBDat()
  601. ;    40      PPEPath()
  602. ;    1       PcbNode()
  603. ;    3       ReadLine()
  604. ;    1       UN_Stat()
  605. ;    1       MinOn()
  606. ;    20      Exist()
  607. ;    1       U_PwdLc()
  608. ;    1       U_PwdTc()
  609. ;    14      U_Stat()
  610. ;    1       GrafMode()
  611. ;    27      Psa()
  612. ;    1       PPEName()
  613. ;    1       CallNum()
  614. ;    1       U_RecNum()
  615. ;
  616. ;------------------------------------------------------------------------------
  617. ;
  618. ; Analysis flags : WSdH
  619. ;
  620. ; W - Write user ■ 5
  621. ;     Program writes a user record. Although this may be normal for a
  622. ;     User Editor, it may also be a way to modify an account level.
  623. ;     ■ Search for : PUTUSER
  624. ;
  625. ; S - Shell to DOS ■ 5
  626. ;     This may be normal if the PPE need to execute an external command,
  627. ;     but may be actually anything... nasty (formating HD, rebooting,...)
  628. ;     or usefull (sorting, maintenance,...). Check!
  629. ;     ■ Search for : SHELL
  630. ;
  631. ; d - Access PCBOARD.DAT ■ 2
  632. ;     Program gets the full pathname to PCBOARD.DAT, this may be usefull
  633. ;     for many PPE so they can find various informations on the system
  634. ;     (system paths, max number of lines in messages, ...) but it may also
  635. ;     be a way to gather vital informations.
  636. ;     ■ Search for : PCBDAT()
  637. ;
  638. ; H - Read Password or Password History ■ 5
  639. ;     Program is reading the user's password or last password history
  640. ;     This may be ok for a password manager, but it is very suspect. Check!
  641. ;     ■ Search for : U_PWDHIST, U_PWD
  642. ;
  643. ;------------------------------------------------------------------------------
  644. ;
  645. ; Postprocessing report
  646. ;
  647. ;    2       For/Next
  648. ;    0       While/EndWhile
  649. ;    21      If/Then or If/Then/Else
  650. ;    1       Select Case
  651. ;
  652. ;------------------------------------------------------------------------------
  653. ;                 AEGiS Corp - Break the routines, code against the machines!
  654. ;------------------------------------------------------------------------------
  655.