home *** CD-ROM | disk | FTP | other *** search
/ ftp.wwiv.com / ftp.wwiv.com.zip / ftp.wwiv.com / pub / BBS / MONI12.ZIP / MONI.PPE (.txt) < prev    next >
PCBoard Programming Language Executable  |  1994-10-02  |  24KB  |  1,065 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.     Boolean  BOOLEAN001
  20.     Boolean  BOOLEAN002
  21.     Boolean  BOOLEAN003
  22.     Boolean  BOOLEAN004
  23.     Integer  INTEGER001
  24.     Integer  INTEGER002
  25.     Integer  INTEGER003
  26.     Integer  INTEGER004
  27.     Integer  INTEGER005
  28.     Integer  INTEGER006
  29.     Integer  INTEGER007
  30.     Integer  INTEGER008
  31.     Integer  INTEGER009
  32.     Integer  INTEGER010
  33.     Integer  INTEGER011
  34.     Integer  INTEGER012
  35.     Integer  INTEGER013
  36.     Integer  INTEGER014
  37.     Integer  INTEGER015
  38.     Integer  INTEGER016
  39.     Integer  INTEGER017
  40.     Integer  INTEGER018
  41.     String   STRING001
  42.     String   STRING002
  43.     String   STRING003
  44.     String   STRING004
  45.     String   STRING005
  46.     String   STRING006
  47.     String   STRING007
  48.     String   STRING008
  49.     String   STRING009
  50.     String   STRING010
  51.     String   TSTRING011(15)
  52.     String   TSTRING012(15)
  53.     String   TSTRING013(1)
  54.     String   STRING014
  55.     String   STRING015
  56.     String   STRING016
  57.     String   STRING017
  58.     Word     WORD001
  59.     Word     WORD002
  60.     BigStr   BIGSTR001
  61.     BigStr   BIGSTR002
  62.     BigStr   BIGSTR003
  63.     BigStr   BIGSTR004
  64.     BigStr   BIGSTR005
  65.     BigStr   BIGSTR006
  66.     BigStr   BIGSTR007
  67.     BigStr   BIGSTR008
  68.  
  69. ;------------------------------------------------------------------------------
  70.  
  71.     GetUser
  72.     If (U_Sec < SysopSec()) Then
  73.         Log "UltraMoni: Insufficient Security To Use!", 0
  74.         End
  75.     Else
  76.         Log "UltraMoni Entered at " + Left(Time(), 5), 0
  77.     Endif
  78.     If (AnsiOn()) Goto LABEL001
  79.     PrintLn 
  80.     PrintLn "Sorry, this program requires ANSI capability."
  81.     PrintLn 
  82.     Log "UltraMoni: Caller Does Not Have ANSI capability.", 0
  83.     End
  84.     :LABEL001
  85.     BOOLEAN001 = 0
  86.     GetToken INTEGER015
  87.     If (INTEGER015 == 0) INTEGER015 = 60
  88.     GetToken INTEGER013
  89.     If (INTEGER013 == 0) INTEGER013 = 3
  90.     GetToken STRING014
  91.     GetToken STRING003
  92.     BOOLEAN003 = 1
  93.     If (STRING003 <> "CMS") BOOLEAN003 = 0
  94.     If (BOOLEAN003) Then
  95.         STRING008 = ""
  96.         STRING008 = ReadLine(PPEPath() + "MONI.CMS", 1)
  97.         FClose -1
  98.         If (STRING008 == "") Then
  99.             PrintLn 
  100.             PrintLn "MONI.CMS File Not Found!"
  101.             PrintLn 
  102.             End
  103.         Endif
  104.         If (Exist(STRING008 + ".DAT")) Goto LABEL002
  105.         PrintLn 
  106.         PrintLn "CMS Database (", STRING008, ") Not Found!"
  107.         PrintLn 
  108.         End
  109.         :LABEL002
  110.         STRING009 = STRING008
  111.         :LABEL003
  112.         If (Right(STRING009, 1) <> "\") Then
  113.             STRING009 = Left(STRING009, Len(STRING009) - 1)
  114.             Goto LABEL003
  115.             Goto LABEL004
  116.         Endif
  117.         STRING009 = STRING009 + "NOTES\"
  118.         :LABEL004
  119.         STRING017 = STRING008
  120.         STRING008 = STRING008 + ".DAT"
  121.     Endif
  122.     BOOLEAN002 = 0
  123.     BOOLEAN001 = 0
  124.     INTEGER004 = MaxNode()
  125.     INTEGER003 = 1
  126.     STRING004 = "@X1F"
  127.     STRING005 = "@X1F"
  128.     INTEGER005 = 3
  129.     INTEGER006 = 3
  130.     STRING006 = "@X1E "
  131.     TSTRING013(0) = "No "
  132.     TSTRING013(1) = "Yes"
  133.     STRING007 = ReadLine(PCBDat(), 45)
  134.     STRING015 = ReadLine(PCBDat(), 41)
  135.     StartDisp 1
  136.     KbdChkOff
  137.     BOOLEAN001 = 0
  138.     INTEGER001 = 0
  139.     :LABEL005
  140.     Inc INTEGER001
  141.     STRING003 = ""
  142.     STRING003 = ReadLine(STRING007, INTEGER001)
  143.     If (STRING003 == "") Then
  144.         FClose -1
  145.     Else
  146.         STRING003 = Left(STRING003, Len(STRING003) - 6)
  147.         TSTRING011(INTEGER001) = Left(STRING003, 1)
  148.         STRING003 = Right(STRING003, Len(STRING003) - 4)
  149.         TSTRING012(INTEGER001) = Right(STRING003, Len(STRING003) - InStr(STRING003, ","))
  150.         Goto LABEL005
  151.     Endif
  152.     :LABEL006
  153.     BOOLEAN001 = 0
  154.     Color 7
  155.     Cls
  156.     PrintLn "@X1E╔═══════════════[@X1F UltraMoni PCB Node Monitoring Utility v1.2 @X1E]════════════════╗@X07"
  157.     PrintLn "@X1E║@X1B #     Status                User                             Reads:         @X1E║@X07"
  158.     PrintLn "@X1E║                                                                             ║@X07"
  159.     PrintLn "@X1E║                                                                             ║@X07"
  160.     PrintLn "@X1E║                                                                             ║@X07"
  161.     PrintLn "@X1E║                                                                             ║@X07"
  162.     PrintLn "@X1E║                                                                             ║@X07"
  163.     PrintLn "@X1E║                                                                             ║@X07"
  164.     PrintLn "@X1E║                                                                             ║@X07"
  165.     PrintLn "@X1E║                                                                             ║@X07"
  166.     PrintLn "@X1E║                                                                             ║@X07"
  167.     PrintLn "@X1E║                                                                             ║@X07"
  168.     PrintLn "@X1E║                                                                             ║@X07"
  169.     PrintLn "@X1E║                                                                             ║@X07"
  170.     PrintLn "@X1E║                                                                             ║@X07"
  171.     PrintLn "@X1E║                                                                             ║@X07"
  172.     PrintLn "@X1E║                                                                             ║@X07"
  173.     PrintLn "@X1E║                                                                             ║@X07"
  174.     PrintLn "@X1E║                                                                             ║@X07"
  175.     PrintLn "@X1E║                                                                             ║@X07"
  176.     PrintLn "@X1E║                                                                             ║@X07"
  177.     PrintLn "@X1E║                                                                             ║@X07"
  178.     Print "@X1E╚══════════════════════════════[@X1F ESC To Quit @X1E]════════════════════════════════╝@X07"
  179.     Gosub LABEL009
  180.     Gosub LABEL012
  181.     INTEGER014 = Time()
  182.     :LABEL007
  183.     STRING001 = Inkey()
  184.     If (STRING001 == Chr(27)) Then
  185.         DefColor
  186.         KbdChkOn
  187.         Cls
  188.         If (!BOOLEAN001 && (Random(3) == 0)) Log "Please consider registering this PPE!", 0
  189.         Log "UltraMoni Exited at " + Left(Time(), 5), 0
  190.         End
  191.     Endif
  192.     If (STRING001 == "") Then
  193.         Inc WORD002
  194.         If (!BOOLEAN001 && (WORD002 > 45000)) Then
  195.             Gosub LABEL019
  196.             WORD002 = 0
  197.             Goto LABEL006
  198.         Endif
  199.         If ((INTEGER012 + INTEGER013 < Time()) || (Time() < INTEGER012)) Then
  200.             Gosub LABEL009
  201.             Goto LABEL007
  202.         Endif
  203.         If (INTEGER015 <> 999) Then
  204.             If ((INTEGER014 + INTEGER015 < Time()) || (Time() < INTEGER014)) Then
  205.                 :LABEL008
  206.                 INTEGER003 = INTEGER003 + 20
  207.                 STRING003 = ScrText(3, 22, 3, 0)
  208.                 STRING003 = RTrim(STRING003, " ")
  209.                 If (STRING003 == INTEGER004) INTEGER003 = 1
  210.                 INTEGER014 = Time()
  211.                 Gosub LABEL009
  212.                 If ((INTEGER007 == 0) && (STRING014 <> "NOSKIP")) Goto LABEL008
  213.                 Goto LABEL007
  214.             Endif
  215.         Endif
  216.         Goto LABEL007
  217.     Endif
  218.     If (STRING001 == 2) Then
  219.         Inc INTEGER003
  220.         INTEGER014 = Time()
  221.         Gosub LABEL009
  222.         Goto LABEL007
  223.     Endif
  224.     If (STRING001 == 8) Then
  225.         Dec INTEGER003
  226.         INTEGER014 = Time()
  227.         Gosub LABEL009
  228.         Goto LABEL007
  229.     Endif
  230.     If (STRING001 == 3) Then
  231.         INTEGER003 = INTEGER003 + 20
  232.         INTEGER014 = Time()
  233.         Gosub LABEL009
  234.         Goto LABEL007
  235.     Endif
  236.     If (STRING001 == 9) Then
  237.         INTEGER003 = INTEGER003 - 20
  238.         INTEGER014 = Time()
  239.         Gosub LABEL009
  240.         Goto LABEL007
  241.     Endif
  242.     If (STRING001 == 1) Then
  243.         INTEGER006 = INTEGER005
  244.         Inc INTEGER005
  245.         Gosub LABEL012
  246.         Goto LABEL007
  247.     Endif
  248.     If (STRING001 == 7) Then
  249.         INTEGER006 = INTEGER005
  250.         Dec INTEGER005
  251.         Gosub LABEL012
  252.         Goto LABEL007
  253.     Endif
  254.     If (STRING001 == Chr(13)) Then
  255.         STRING003 = ScrText(3, INTEGER005, 3, 0)
  256.         STRING003 = RTrim(STRING003, " ")
  257.         Gosub LABEL013
  258.         WORD002 = WORD002 + Random(50)
  259.         If (!BOOLEAN001 && (WORD002 > 40000)) Then
  260.             Gosub LABEL019
  261.             WORD002 = 0
  262.             Goto LABEL006
  263.         Endif
  264.         Goto LABEL006
  265.     Endif
  266.     If (STRING001 == 4) Then
  267.         BOOLEAN002 = 0
  268.         INTEGER014 = Time()
  269.         Gosub LABEL009
  270.         Goto LABEL007
  271.     Endif
  272.     If (STRING001 == 6) Then
  273.         BOOLEAN002 = 1
  274.         INTEGER014 = Time()
  275.         Gosub LABEL009
  276.         Goto LABEL007
  277.     Endif
  278.     If (STRING001 == " ") Then
  279.         STRING003 = ScrText(3, INTEGER005, 3, 0)
  280.         STRING003 = RTrim(STRING003, " ")
  281.         Gosub LABEL018
  282.         INTEGER014 = Time()
  283.         WORD002 = WORD002 + Random(49)
  284.         If (!BOOLEAN001 && (WORD002 > 40000)) Then
  285.             Gosub LABEL019
  286.             WORD002 = 0
  287.             Goto LABEL006
  288.         Endif
  289.         Goto LABEL006
  290.     Endif
  291.     INTEGER014 = Time()
  292.     Gosub LABEL009
  293.     Goto LABEL007
  294.     :LABEL009
  295.     BOOLEAN001 = 0
  296.     If (INTEGER003 < 1) INTEGER003 = 1
  297.     If (INTEGER003 + 19 > INTEGER004) INTEGER003 = INTEGER004 - 19
  298.     If (INTEGER004 < 25) INTEGER003 = 1
  299.     INTEGER002 = 3
  300.     INTEGER007 = 0
  301.     Color 27
  302.     If (BOOLEAN002) Then
  303.         AnsiPos 9, 2
  304.         Print " User "
  305.         AnsiPos 31, 2
  306.         Print "Status"
  307.     Else
  308.         AnsiPos 9, 2
  309.         Print "Status"
  310.         AnsiPos 31, 2
  311.         Print "User  "
  312.     Endif
  313.     INTEGER012 = Time()
  314.     For INTEGER001 = INTEGER003 To INTEGER003 + 19
  315.         RdUNet INTEGER001
  316.         AnsiPos 3, INTEGER002
  317.         Color 30
  318.         STRING002 = UN_Stat()
  319.         INTEGER007 = INTEGER007 + Asc(STRING002)
  320.         If (STRING002 == 0) STRING003 = "(Inactive Node)"
  321.         If (((STRING002 == " ") || (STRING002 == "V")) || (STRING002 == "Y")) STRING003 = "No Caller This Node"
  322.         If (STRING002 == "A") STRING003 = "Available For Chat"
  323.         If (STRING002 == "B") STRING003 = "Out To DOS"
  324.         If (STRING002 == "C") STRING003 = "Chatting With Sysop"
  325.         If (STRING002 == "D") STRING003 = "Out Of Code In Door"
  326.         If (STRING002 == "E") STRING003 = "Entering A Message"
  327.         If (STRING002 == "F") STRING003 = "Viewing A File"
  328.         If (STRING002 == "G") STRING003 = "Chatting With Group"
  329.         If (STRING002 == "H") STRING003 = "Handling Mail"
  330.         If (STRING002 == "L") STRING003 = "Logoff Pending"
  331.         If (STRING002 == "M") STRING003 = "Recvd Brdcst Msg"
  332.         If (STRING002 == "N") STRING003 = "Running Event"
  333.         If (STRING002 == "O") STRING003 = "Logging Into System"
  334.         If (STRING002 == "P") STRING003 = "Paging The Sysop"
  335.         If (STRING002 == "R") STRING003 = "Recycle BBS"
  336.         If (STRING002 == "S") STRING003 = "Answering Script"
  337.         If (STRING002 == "T") STRING003 = "Transferring A File"
  338.         If (STRING002 == "U") STRING003 = "Unavailable For Chat"
  339.         If (STRING002 == "W") STRING003 = "Drop To Dos - Wait"
  340.         If (STRING002 == "X") STRING003 = "Drop To Dos - Now"
  341.         If (INTEGER001 > INTEGER004) STRING003 = "      ---"
  342.         If (BOOLEAN002) Then
  343.             If ((STRING002 < "A") || (STRING002 == "Z")) Then
  344.                 PrintLn Left(String(INTEGER001), 5), Left(STRING003, 23), Left(UN_Oper(), 47)
  345.             Else
  346.                 Select Case (STRING002)
  347.                     Case "A", "U"
  348.                         PrintLn Left(String(INTEGER001), 5), STRING002, " ", Left(UN_Name(), 20), " ", Left(UN_City(), 44)
  349.                     Case "H"
  350.                         PrintLn Left(String(INTEGER001), 5), STRING002, " ", Left(STRING003, 20), " ", Left(UN_Name(), 44)
  351.                         If (STRING002 == "D") Then
  352.                             PrintLn Left(String(INTEGER001), 5), STRING002, " ", Left(UN_Name(), 20), " ", Mid(UN_Oper(), InStr(UN_Oper(), "-") + 2, 44)
  353.                         Else
  354.                             PrintLn Left(String(INTEGER001), 5), STRING002, " ", Left(UN_Name(), 20), " ", Left(UN_Oper(), 44)
  355.                         Endif
  356.                     Else
  357.                     Case "H"
  358.                         PrintLn Left(String(INTEGER001), 5), Left(STRING003, 23), Left(UN_Name(), 47)
  359.                     Case ((STRING002 == " ") || (STRING002 == "N")) || (STRING002 == "D"), " ", "N", "D", " ", "Z", "V", "Y"
  360.                         PrintLn Left(String(INTEGER001), 5), Left(STRING003, 23), Left(UN_Oper(), 47)
  361.                         Goto LABEL010
  362.                     Case Else
  363.                         PrintLn Left(String(INTEGER001), 5), Left(STRING003, 23), Left(UN_Name() + " (" + UN_City() + ")", 47)
  364.                     Endif
  365.                 Endif
  366.         End Select
  367.         :LABEL010
  368.         Inc INTEGER002
  369.     Next
  370.     Inc WORD001
  371.     :LABEL011
  372.     BOOLEAN001 = 0
  373.     AnsiPos 71, 2
  374.     Print "@X1E", WORD001
  375.     Return
  376.     :LABEL012
  377.     If (INTEGER005 < 3) Then
  378.         INTEGER005 = 3
  379.         Return
  380.     Endif
  381.     If (INTEGER005 > 22) Then
  382.         INTEGER005 = 22
  383.         Return
  384.     Endif
  385.     AnsiPos 2, INTEGER006
  386.     Print STRING006
  387.     AnsiPos 2, INTEGER005
  388.     Print STRING004
  389.     AnsiPos 78, INTEGER006
  390.     Print STRING006
  391.     AnsiPos 78, INTEGER005
  392.     Print STRING005
  393.     INTEGER012 = Time()
  394.     INTEGER014 = Time()
  395.     Goto LABEL011
  396.     Return
  397.     :LABEL013
  398.     BOOLEAN001 = 0
  399.     RdUNet STRING003
  400.     INTEGER011 = U_RecNum(UN_Name())
  401.     If (((INTEGER011 == -1) || (UN_Stat() < "A")) || (Left(UN_Name(), 1) < "@")) Then
  402.         If (!OnLocal()) Print Chr(7)
  403.         If (OnLocal()) Then
  404.             Sound 1000
  405.             Delay 1
  406.             Sound 0
  407.         Endif
  408.         Return
  409.     Endif
  410.     GetAltUser INTEGER011
  411.     STRING010 = STRING003
  412.     If (BOOLEAN003) Goto LABEL016
  413.     :LABEL014
  414.     Color 7
  415.     Cls
  416.     WORD002 = WORD002 + Random(25) + 25
  417.     PrintLn "@X10┌─────────────────────────────────────────────────────────────────────────────@X19┐@X0F"
  418.     PrintLn "@X10│ @X1B█▓▒░ @X1FUser Viewer - PCB @X1B░▒▓█                             @X1FUser Number:        @X19│@X0F"
  419.     PrintLn "@X10└@X19─────────────────────────────────────────────────────────────────────────────┘@X0F"
  420.     PrintLn "@X10┌──────────────────────────────────────┬──────────────────────────────────────@X19┐@X0F"
  421.     PrintLn "@X10│@X1B  Name         [                    ] @X10│@X1B   Reg. Exp. Date[                  ] @X19│@X0F"
  422.     PrintLn "@X10│@X1B  From         [                    ] @X10│@X1B   Tot # of U/Ls [                  ] @X19│@X0F"
  423.     PrintLn "@X10│@X1B  B/D Phone    [                    ] @X10│@X1B   Tot # of D/Ls [                  ] @X19│@X0F"
  424.     PrintLn "@X10│@X1B  H/V Phone    [                    ] @X10│@X1B   Tot bytes U/L [                  ] @X19│@X0F"
  425.     PrintLn "@X10│@X1B  Expert Mode  [                    ] @X10│@X1B   Tot bytes D/L [                  ] @X19│@X0F"
  426.     PrintLn "@X10│@X1B  Def. Protocol[                    ] @X10│@X1B   Last Date On  [                  ] @X19│@X0F"
  427.     PrintLn "@X10│@X1B  Page Length  [                    ] @X10│@X1B   Last Time On  [                  ] @X19│@X0F"
  428.     PrintLn "@X10│@X1B  Security Lvl [                    ] @X10│@X1B   Total Logons  [                  ] @X19│@X0F"
  429.     PrintLn "@X10│@X1B  Expired Sec  [                    ] @X10│@X1B   Password      [                  ] @X19│@X0F"
  430.     PrintLn "@X10│@X1B  Verify Info  [                    ] @X10│@X1B   Alias         [                  ] @X19│@X0F"
  431.     PrintLn "@X10│@X1B  Pwrd Changes [                    ] @X10│@X1B   Last DIR Scan [                  ] @X19│@X0F"
  432.     PrintLn "@X10├──────────────────────────────────────┴──────────────────────────────────────@X19┤@X0F"
  433.     PrintLn "@X10│ @X1B         Comment 1  [                              ]                        @X19│@X0F"
  434.     PrintLn "@X10│ @X1B         Comment 2  [                              ]                        @X19│@X0F"
  435.     PrintLn "@X10├─────────────────────────────────────────────────────────────────────────────@X19┤@X0F"
  436.     PrintLn "@X10│                                                                             @X19│@X0F"
  437.     PrintLn "@X10└@X19─────────────────────────────────────────────────────────────────────────────┘@X0F"
  438.     Color 31
  439.     AnsiPos 35, 2
  440.     Print "Node Number: @X1E", STRING003
  441.     AnsiPos 72, 2
  442.     Print INTEGER011
  443.     AnsiPos 18, 5
  444.     Print Left(U_Name(), 20)
  445.     AnsiPos 18, 6
  446.     Print Left(U_City, 20)
  447.     AnsiPos 18, 7
  448.     Print U_BDPhone
  449.     AnsiPos 18, 8
  450.     Print U_HVPhone
  451.     AnsiPos 18, 9
  452.     Print TSTRING013(U_Expert)
  453.     AnsiPos 18, 10
  454.     For INTEGER001 = 1 To 15
  455.         If (U_Trans == TSTRING011(INTEGER001)) Then
  456.             Print Left(TSTRING012(INTEGER001), 20)
  457.             Break
  458.         Endif
  459.     Next
  460.     AnsiPos 18, 11
  461.     Print U_PageLen
  462.     AnsiPos 18, 12
  463.     If (U_Sec == 0) Then
  464.         Print " !! Locket Out !! "
  465.     Else
  466.         Print U_Sec
  467.     Endif
  468.     AnsiPos 18, 13
  469.     Print U_ExpSec
  470.     AnsiPos 18, 14
  471.     If (Psa(2)) Then
  472.         Print Left(U_Ver, 20)
  473.     Else
  474.         Print "N/A"
  475.     Endif
  476.     AnsiPos 18, 15
  477.     If (Psa(4)) Then
  478.         Print U_PwdTc()
  479.     Else
  480.         Print "N/A"
  481.     Endif
  482.     AnsiPos 59, 5
  483.     Print U_ExpDate
  484.     AnsiPos 59, 6
  485.     Print U_Ful()
  486.     AnsiPos 59, 7
  487.     Print U_Fdl()
  488.     AnsiPos 59, 8
  489.     Print U_Bul()
  490.     AnsiPos 59, 9
  491.     Print U_Bdl()
  492.     AnsiPos 59, 10
  493.     Print U_LDate()
  494.     AnsiPos 59, 11
  495.     Print U_LTime()
  496.     AnsiPos 59, 12
  497.     Print U_Logons()
  498.     AnsiPos 59, 13
  499.     Print U_Pwd
  500.     AnsiPos 59, 14
  501.     If (Psa(1)) Then
  502.         Print U_Alias
  503.     Else
  504.         Print "N/A"
  505.     Endif
  506.     AnsiPos 59, 15
  507.     Print U_LDir()
  508.     AnsiPos 24, 17
  509.     Print U_Cmnt1
  510.     AnsiPos 24, 18
  511.     Print U_Cmnt2
  512.     FReAltUser
  513.     AnsiPos 27, 20
  514.     KeyFlush
  515.     Print "@X1FHit <any> Key To Continue"
  516.     :LABEL015
  517.     STRING003 = Inkey()
  518.     If (STRING003 == "") Goto LABEL015
  519.     Return
  520.     :LABEL016
  521.     Color 23
  522.     Cls
  523.     WORD002 = WORD002 + Random(50) + 50
  524.     PrintLn "                           @X1F User Viewer - CMS @X17"
  525.     PrintLn "  User Number│                                       Password│"
  526.     PrintLn "  Name on BBS│                                       Times On│"
  527.     PrintLn "   First Name│                                       Security│"
  528.     PrintLn "  Middle Init│                                     Expiration│"
  529.     PrintLn "    Last Name│                                   Exp Security│"
  530.     PrintLn "      Company│                                               │"
  531.     PrintLn "    Address 1│                                Curr Membership│"
  532.     PrintLn "    Address 2│                                Curr Memb Start│"
  533.     PrintLn "         City│                              Membership Status│"
  534.     PrintLn "        State│                                Current Options│"
  535.     PrintLn "  Postal Code│                                               │"
  536.     PrintLn "  Voice Phone│                                Renewal Pending│"
  537.     PrintLn "    Fax Phone│                                  Renewal Start│"
  538.     PrintLn "   Birth Date│                                 Renewal Status│"
  539.     PrintLn "             │                                Renewal Options│"
  540.     PrintLn "  Acct Status│                                               │"
  541.     PrintLn " Acct Balance│                                   Auto Renewal│"
  542.     PrintLn " Member Since│                                   Auto Options│"
  543.     PrintLn "             │                                               │"
  544.     PrintLn "     Switches│                                  Attached Text│"
  545.     PrintLn 
  546.     FOpen 1, STRING017 + "." + Left(U_Name(), 1), 0, 0
  547.     INTEGER001 = FileInf(STRING017 + "." + Left(U_Name(), 1), 4)
  548.     INTEGER001 = INTEGER001 / 29
  549.     BOOLEAN004 = 0
  550.     For INTEGER008 = 1 To INTEGER001
  551.         FSeek 1, INTEGER008 * 29 - 29, 0
  552.         FRead 1, BIGSTR006, 29
  553.         If (Right(BIGSTR006, 25) == Left(U_Name(), 25)) Then
  554.             FSeek 1, INTEGER008 * 29 - 29, 0
  555.             FRead 1, INTEGER010, 4
  556.             BOOLEAN004 = 1
  557.             Break
  558.         Endif
  559.     Next
  560.     FClose 1
  561.     If (!BOOLEAN004) Goto LABEL014
  562.     INTEGER009 = INTEGER010 * 469 - 469
  563.     INTEGER018 = FileInf(STRING008, 4) / 469
  564.     FOpen 1, STRING008, 0, 0
  565.     FSeek 1, INTEGER009, 0
  566.     FRead 1, BIGSTR006, 469
  567.     Color 30
  568.     AnsiPos 16, 2
  569.     FSeek 1, INTEGER009, 0
  570.     FRead 1, INTEGER008, 4
  571.     Print INTEGER008
  572.     BIGSTR008 = String(INTEGER008)
  573.     AnsiPos 16, 3
  574.     Print Mid(BIGSTR006, 5, 25)
  575.     AnsiPos 16, 4
  576.     Print Mid(BIGSTR006, 32, 20)
  577.     AnsiPos 16, 5
  578.     Print Mid(BIGSTR006, 72, 1)
  579.     AnsiPos 16, 6
  580.     Print Mid(BIGSTR006, 52, 20)
  581.     AnsiPos 16, 7
  582.     Print Mid(BIGSTR006, 73, 30)
  583.     AnsiPos 16, 8
  584.     Print Mid(BIGSTR006, 103, 30)
  585.     AnsiPos 16, 9
  586.     Print Mid(BIGSTR006, 133, 30)
  587.     AnsiPos 16, 10
  588.     Print Mid(BIGSTR006, 163, 20)
  589.     AnsiPos 16, 11
  590.     Print Mid(BIGSTR006, 183, 20)
  591.     AnsiPos 16, 12
  592.     Print Mid(BIGSTR006, 203, 10)
  593.     AnsiPos 16, 13
  594.     If (Mid(BIGSTR006, 213, 5) == "     ") Then
  595.         Print "(000) ", Mid(BIGSTR006, 221, 3), "-", Mid(BIGSTR006, 224, 4)
  596.     Else
  597.         Print "(", Mid(BIGSTR006, 213, 3), ") ", Mid(BIGSTR006, 216, 3), "-", Mid(BIGSTR006, 219, 4)
  598.     Endif
  599.     AnsiPos 16, 14
  600.     If ((Mid(BIGSTR006, 228, 5) <> "     ") && (Mid(BIGSTR006, 228, 5) <> "00000")) Then
  601.         Print "(", Mid(BIGSTR006, 228, 3), ") ", Mid(BIGSTR006, 231, 3), "-", Mid(BIGSTR006, 234, 4)
  602.     Endif
  603.     AnsiPos 16, 15
  604.     FSeek 1, INTEGER009 + 451, 0
  605.     FRead 1, INTEGER008, 2
  606.     If ((INTEGER008 == 0) || (INTEGER008 == 7305)) Then
  607.         Print "Unknown"
  608.     Else
  609.         Print ToDate(INTEGER008 + 29219)
  610.     Endif
  611.     AnsiPos 16, 17
  612.     If (Mid(BIGSTR006, 30, 1) <> "X") Then
  613.         Print "Active"
  614.     Else
  615.         Print "Deleted"
  616.     Endif
  617.     AnsiPos 16, 18
  618.     FSeek 1, INTEGER009 + 383, 0
  619.     FRead 1, INTEGER008, 4
  620.     Print ToMoney(INTEGER008)
  621.     AnsiPos 16, 19
  622.     FSeek 1, INTEGER009 + 418, 0
  623.     FRead 1, INTEGER008, 2
  624.     If ((((INTEGER008 == 0) || (INTEGER008 == 7305)) || (INTEGER008 == 16777216)) || (INTEGER008 == 805306368)) Then
  625.         Print "00-00-00"
  626.     Else
  627.         Print ToDate(INTEGER008 + 29219)
  628.     Endif
  629.     AnsiPos 16, 21
  630.     BIGSTR007 = Mid(BIGSTR006, 448, 1)
  631.     For INTEGER008 = 7 To 0 Step -1
  632.         If (IsBitSet(BIGSTR007, INTEGER008)) Then
  633.             Print "@X1EO"
  634.             Continue
  635.         Endif
  636.         Print "@X16o"
  637.     Next
  638.     BIGSTR007 = Mid(BIGSTR006, 449, 1)
  639.     For INTEGER008 = 7 To 0 Step -1
  640.         If (IsBitSet(BIGSTR007, INTEGER008)) Then
  641.             Print "@X1EO"
  642.             Continue
  643.         Endif
  644.         Print "@X16o"
  645.     Next
  646.     Color 28
  647.     AnsiPos 64, 2
  648.     Print U_Pwd
  649.     AnsiPos 64, 3
  650.     Print U_Logons()
  651.     AnsiPos 64, 4
  652.     Print U_Sec
  653.     AnsiPos 64, 5
  654.     Print U_ExpDate
  655.     AnsiPos 64, 6
  656.     Print U_ExpSec
  657.     Color 30
  658.     AnsiPos 64, 8
  659.     If (Mid(BIGSTR006, 418, 1) == " ") Then
  660.         Print "None"
  661.     Else
  662.         Print "Type ", Mid(BIGSTR006, 418, 1)
  663.     Endif
  664.     AnsiPos 64, 9
  665.     FSeek 1, INTEGER009 + 438, 0
  666.     FRead 1, INTEGER008, 2
  667.     If ((((INTEGER008 == 0) || (INTEGER008 == 7305)) || (INTEGER008 == 16777216)) || (INTEGER008 == 805306368)) Then
  668.         Print "00-00-00"
  669.     Else
  670.         Print ToDate(INTEGER008 + 29219)
  671.     Endif
  672.     AnsiPos 64, 10
  673.     If (Mid(BIGSTR006, 421, 1) == 0) Print "n/a"
  674.     If (Mid(BIGSTR006, 421, 1) == 1) Print "Active"
  675.     If (Mid(BIGSTR006, 421, 1) == 2) Print "Ready for use"
  676.     If (Mid(BIGSTR006, 421, 1) == 3) Print "Waiting op Ok"
  677.     AnsiPos 64, 11
  678.     BIGSTR007 = Mid(BIGSTR006, 422, 1)
  679.     For INTEGER008 = 7 To 0 Step -1
  680.         If (IsBitSet(BIGSTR007, INTEGER008)) Then
  681.             Print "@X1EO"
  682.             Continue
  683.         Endif
  684.         Print "@X16o"
  685.     Next
  686.     BIGSTR007 = Mid(BIGSTR006, 423, 1)
  687.     For INTEGER008 = 7 To 0 Step -1
  688.         If (IsBitSet(BIGSTR007, INTEGER008)) Then
  689.             Print "@X1EO"
  690.             Continue
  691.         Endif
  692.         Print "@X16o"
  693.     Next
  694.     Color 30
  695.     AnsiPos 64, 13
  696.     If (Mid(BIGSTR006, 430, 1) == " ") Then
  697.         Print "None"
  698.     Else
  699.         Print "Type ", Mid(BIGSTR006, 430, 1)
  700.     Endif
  701.     AnsiPos 64, 14
  702.     FSeek 1, INTEGER009 + 453, 0
  703.     FRead 1, INTEGER008, 2
  704.     If ((((INTEGER008 == 0) || (INTEGER008 == 7305)) || (INTEGER008 == 16777216)) || (INTEGER008 == 805306368)) Then
  705.         Print "00-00-00"
  706.     Else
  707.         Print ToDate(INTEGER008 + 29219)
  708.     Endif
  709.     AnsiPos 64, 15
  710.     If (Mid(BIGSTR006, 456, 1) == 0) Print "n/a"
  711.     If (Mid(BIGSTR006, 456, 1) == 1) Print "Ready for use"
  712.     If (Mid(BIGSTR006, 456, 1) == 2) Print "Waiting op OK"
  713.     AnsiPos 64, 16
  714.     BIGSTR007 = Mid(BIGSTR006, 431, 1)
  715.     For INTEGER008 = 7 To 0 Step -1
  716.         If (IsBitSet(BIGSTR007, INTEGER008)) Then
  717.             Print "@X1EO"
  718.             Continue
  719.         Endif
  720.         Print "@X16o"
  721.     Next
  722.     BIGSTR007 = Mid(BIGSTR006, 432, 1)
  723.     For INTEGER008 = 7 To 0 Step -1
  724.         If (IsBitSet(BIGSTR007, INTEGER008)) Then
  725.             Print "@X1EO"
  726.             Continue
  727.         Endif
  728.         Print "@X16o"
  729.     Next
  730.     Color 30
  731.     AnsiPos 64, 18
  732.     If (Mid(BIGSTR006, 443, 1) == " ") Then
  733.         Print "Not selected"
  734.     Else
  735.         Print "Type ", Mid(BIGSTR006, 443, 1)
  736.     Endif
  737.     AnsiPos 64, 19
  738.     BIGSTR007 = Mid(BIGSTR006, 444, 1)
  739.     For INTEGER008 = 7 To 0 Step -1
  740.         If (IsBitSet(BIGSTR007, INTEGER008)) Then
  741.             Print "@X1EO"
  742.             Continue
  743.         Endif
  744.         Print "@X16o"
  745.     Next
  746.     BIGSTR007 = Mid(BIGSTR006, 445, 1)
  747.     For INTEGER008 = 7 To 0 Step -1
  748.         If (IsBitSet(BIGSTR007, INTEGER008)) Then
  749.             Print "@X1EO"
  750.             Continue
  751.         Endif
  752.         Print "@X16o"
  753.     Next
  754.     Color 30
  755.     AnsiPos 64, 21
  756.     If (!Exist(STRING009 + BIGSTR008 + ".NOT") && !Exist(STRING009 + BIGSTR008 + ".MSG")) Print "None"
  757.     If (!Exist(STRING009 + BIGSTR008 + ".NOT") && Exist(STRING009 + BIGSTR008 + ".MSG")) Print "Message"
  758.     If (Exist(STRING009 + BIGSTR008 + ".NOT") && !Exist(STRING009 + BIGSTR008 + ".MSG")) Print "Note"
  759.     If (Exist(STRING009 + BIGSTR008 + ".NOT") && Exist(STRING009 + BIGSTR008 + ".MSG")) Print "Note & Msg"
  760.     AnsiPos 1, 22
  761.     STRING003 = "Record " + String(INTEGER010) + " of " + String(INTEGER018)
  762.     Print Space((74 - Len(STRING003)) / 2), "@X17", STRING003
  763.     AnsiPos 13, 23
  764.     Print "@X1FHit Enter For PCB View or Any Other Key To Continue"
  765.     FClose 1
  766.     KeyFlush
  767.     :LABEL017
  768.     STRING003 = Inkey()
  769.     If (STRING003 == "") Goto LABEL017
  770.     If (STRING003 == Chr(13)) Then
  771.         STRING003 = STRING010
  772.         Goto LABEL014
  773.     Endif
  774.     FReAltUser
  775.     Return
  776.     :LABEL018
  777.     If (STRING003 > MaxNode()) Then
  778.         If (OnLocal()) Then
  779.             Sound 1000
  780.             Delay 1
  781.             Sound 0
  782.         Endif
  783.         If (!OnLocal()) Print Chr(7)
  784.         Return
  785.     Endif
  786.     RdUNet STRING003
  787.     Color 7
  788.     Cls
  789.     WORD002 = WORD002 + Random(25) + 25
  790.     PrintLn "@X10┌───────────────────────────────────────────────────────────────────────────┐"
  791.     PrintLn "│@X1F Change Node Info - Node #                                                 @X19│"
  792.     PrintLn "@X10└@X19───────────────────────────────────────────────────────────────────────────┘"
  793.     PrintLn Space(77)
  794.     PrintLn " @X1EName@X1F      @X1E:@X1F @X0F                         @X1F                                       "
  795.     PrintLn Space(77)
  796.     PrintLn " @X1ECity@X1F      @X1E:@X1F @X0F                        @X1F                                        "
  797.     PrintLn Space(77)
  798.     PrintLn " @X1EOperation@X1F @X1E:@X1F @X0F                                                @X1F                "
  799.     PrintLn Space(77)
  800.     PrintLn " @X1EStatus@X1F    @X1E:@X1F @X0F @X1F  (See Below)                                                  "
  801.     PrintLn Space(77)
  802.     PrintLn "@X10┌───────────────────────────────────────────────────────────────────────────┐"
  803.     PrintLn "│@X1F            Make Desired Changes And Hit Enter                             @X19│"
  804.     PrintLn "@X10└@X19───────────────────────────────────────────────────────────────────────────┘"
  805.     PrintLn "@X07"
  806.     PrintLn "  A = Available For Chat   L = Logoff Pending       T = Transferring A file"
  807.     PrintLn "  B = Drop To DOS          M = Recvd Brdcst Msg     U = Unavailble For Chat"
  808.     PrintLn "  C = Chatting With Sysop  N = Running An Event     V = No Caller Online"
  809.     PrintLn "  D = Out Of Code In Door  O = Logging Into System  W = Drop To Dos - Wait"
  810.     PrintLn "  E = Entering A Message   P = Paging The Sysop     X = Drop To Dos - Now"
  811.     PrintLn "  F = Viewing A File       R = Recycle BBS          Y = No Caller (Clear)"
  812.     Print "  G = Chatting With Group  S = Answering A Script   Z = Inactive Node"
  813.     AnsiPos 29, 2
  814.     Print "@X1F", STRING003
  815.     AnsiPos 14, 5
  816.     Print "@X0F", UN_Name()
  817.     AnsiPos 14, 7
  818.     Print UN_City()
  819.     AnsiPos 14, 9
  820.     Print UN_Oper()
  821.     AnsiPos 14, 11
  822.     Print UN_Stat()
  823.     AnsiPos 14, 5
  824.     BIGSTR002 = 1
  825.     BIGSTR003 = 1
  826.     BIGSTR004 = 1
  827.     BIGSTR001 = ""
  828.     InputStr "_", BIGSTR002, 15, 25, Mask_Ascii(), 0
  829.     AnsiPos 14, 5
  830.     If (Left(BIGSTR002, 1) == 1) Then
  831.         BIGSTR002 = UN_Name()
  832.         Print UN_Name()
  833.     Else
  834.         Print Left(BIGSTR002, 25)
  835.     Endif
  836.     AnsiPos 14, 7
  837.     InputStr "_", BIGSTR003, 15, 24, Mask_Ascii(), 0
  838.     AnsiPos 14, 7
  839.     If (Left(BIGSTR003, 1) == 1) Then
  840.         BIGSTR003 = UN_City()
  841.         Print UN_City()
  842.     Else
  843.         Print Left(BIGSTR003, 24)
  844.     Endif
  845.     AnsiPos 14, 9
  846.     InputStr "_", BIGSTR004, 15, 48, Mask_Ascii(), 0
  847.     AnsiPos 14, 9
  848.     If (Left(BIGSTR004, 1) == 1) Then
  849.         BIGSTR004 = UN_Oper()
  850.         Print UN_Oper()
  851.     Else
  852.         Print Left(BIGSTR004, 48)
  853.     Endif
  854.     AnsiPos 14, 11
  855.     InputStr "_", BIGSTR001, 15, 1, "ABCDEFGHLMNOPRSTUVWXYZabcdefghlmnoprstuvwxyz", 8
  856.     AnsiPos 14, 11
  857.     If (BIGSTR001 == "") Then
  858.         BIGSTR001 = UN_Stat()
  859.         Print UN_Stat()
  860.     Else
  861.         Print BIGSTR001
  862.     Endif
  863.     AnsiPos 19, 14
  864.     Print "@X1F", Space(29)
  865.     AnsiPos 19, 14
  866.     InputStr "Changes (y/N) ", STRING016, 31, 1, "YNyn", 0
  867.     If ((STRING016 <> "Y") && (STRING016 <> "y")) Return
  868.     If (((BIGSTR001 == "V") || (BIGSTR001 == "Y")) || (BIGSTR001 == "Z")) Then
  869.         BIGSTR002 = ""
  870.         BIGSTR003 = ""
  871.         If (BIGSTR001 <> "V") BIGSTR004 = ""
  872.         If (BIGSTR001 == "Z") BIGSTR001 = Chr(0)
  873.         If ((BIGSTR001 == "V") || (BIGSTR001 == "Y")) BIGSTR001 = " "
  874.     Endif
  875.     WrUNet STRING003, BIGSTR001, BIGSTR002, BIGSTR003, BIGSTR004, ""
  876.     INTEGER016 = MaxNode() / 8
  877.     If (INTEGER016 * 8 < MaxNode()) Inc INTEGER016
  878.     BIGSTR005 = Space(INTEGER016)
  879.     INTEGER017 = INTEGER016 + 6
  880.     FOpen 1, STRING015, 2, 0
  881.     FSeek 1, INTEGER017, 0
  882.     FRead 1, BIGSTR005, Len(BIGSTR005)
  883.     If (BIGSTR004 <> "Z") Then
  884.         BitSet BIGSTR005, STRING003 - 1
  885.     Else
  886.         BitClear BIGSTR005, STRING003 - 1
  887.     Endif
  888.     FSeek 1, INTEGER017, 0
  889.     FWrite 1, BIGSTR005, Len(BIGSTR005)
  890.     FClose 1
  891.     Return
  892.     End
  893.     :LABEL019
  894.     Color 7
  895.     Cls
  896.     PrintLn 
  897.     PrintLn 
  898.     PrintLn 
  899.     PrintLn "@POS:24@@X0C┌───────────────────────────────┐"
  900.     PrintLn "@POS:24@@X0C│                               │"
  901.     PrintLn "@POS:24@@X0C│        @X0EAbout UltraMoni        @X0C│"
  902.     PrintLn "@POS:24@@X0C│          @X0FVersion 1.2          @X0C│"
  903.     PrintLn "@POS:24@@X0C│      @X0A───────────────────      @X0C│"
  904.     PrintLn "@POS:24@@X0C│                               │"
  905.     PrintLn "@POS:24@@X0C│  @X0FIf you find this program of  @X0C│"
  906.     PrintLn "@POS:24@@X0C│    @X0Fvalue, please consider     @X0C│"
  907.     PrintLn "@POS:24@@X0C│  @X0Fregistering it. Thank you!   @X0C│"
  908.     PrintLn "@POS:24@@X0C│                               │"
  909.     PrintLn "@POS:24@@X0C│ @X0BProgrammed by: Gerry Schechter@X0C│"
  910.     PrintLn "@POS:24@@X0C│                               │"
  911.     PrintLn "@POS:24@@X0C└───────────────────────────────┘"
  912.     PrintLn 
  913.     Print Space(26)
  914.     KeyFlush
  915.     Wait
  916.     Return
  917.     STRING001 = "Registered To: UNREGISTERED VERSION"
  918.     STRING001 = " UltraMoni v1.2 - (C) 1994 Gerry Schechter "
  919.  
  920. ;------------------------------------------------------------------------------
  921. ;
  922. ; Usage report (before postprocessing)
  923. ;
  924. ; ■ Statements used :
  925. ;
  926. ;    6       End
  927. ;    6       Cls
  928. ;    1       Wait
  929. ;    14      Color 
  930. ;    158     Goto 
  931. ;    165     Let 
  932. ;    124     Print 
  933. ;    121     PrintLn 
  934. ;    134     If 
  935. ;    3       FOpen 
  936. ;    5       FClose 
  937. ;    1       StartDisp 
  938. ;    1       GetUser
  939. ;    1       DefColor
  940. ;    5       Log 
  941. ;    5       InputStr 
  942. ;    18      Gosub 
  943. ;    11      Return
  944. ;    2       Delay 
  945. ;    7       Inc 
  946. ;    2       Dec 
  947. ;    4       GetToken 
  948. ;    1       KbdChkOn
  949. ;    1       KbdChkOff
  950. ;    3       RdUNet 
  951. ;    1       WrUNet 
  952. ;    88      AnsiPos 
  953. ;    4       Sound 
  954. ;    11      FSeek 
  955. ;    10      FRead 
  956. ;    1       FWrite 
  957. ;    3       KeyFlush
  958. ;    1       GetAltUser 
  959. ;    1       BitSet 
  960. ;    1       BitClear 
  961. ;    2       FReAltUser
  962. ;
  963. ;
  964. ; ■ Functions used :
  965. ;
  966. ;    27      -
  967. ;    4       *
  968. ;    4       /
  969. ;    70      +
  970. ;    12      -
  971. ;    96      ==
  972. ;    11      <>
  973. ;    24      <
  974. ;    11      <=
  975. ;    7       >
  976. ;    22      >=
  977. ;    92      !
  978. ;    33      &&
  979. ;    38      ||
  980. ;    7       Len(
  981. ;    44      Mid()
  982. ;    42      Left()
  983. ;    4       Right()
  984. ;    9       Space()
  985. ;    6       Chr()
  986. ;    1       Asc()
  987. ;    2       InStr()
  988. ;    3       RTrim()
  989. ;    6       Random()
  990. ;    19      Time()
  991. ;    4       U_Name()
  992. ;    1       U_LDate()
  993. ;    1       U_LTime()
  994. ;    1       U_LDir()
  995. ;    2       U_Logons()
  996. ;    1       U_Ful()
  997. ;    1       U_Fdl()
  998. ;    1       U_Bdl()
  999. ;    1       U_Bul()
  1000. ;    3       Inkey()
  1001. ;    11      String()
  1002. ;    3       Mask_Ascii()
  1003. ;    2       PCBDat()
  1004. ;    1       PPEPath()
  1005. ;    4       ReadLine()
  1006. ;    1       SysopSec()
  1007. ;    4       OnLocal()
  1008. ;    5       UN_Stat()
  1009. ;    11      UN_Name()
  1010. ;    5       UN_City()
  1011. ;    8       UN_Oper()
  1012. ;    9       Exist()
  1013. ;    1       AnsiOn()
  1014. ;    1       U_PwdTc()
  1015. ;    3       Psa()
  1016. ;    2       FileInf()
  1017. ;    4       MaxNode()
  1018. ;    1       U_RecNum()
  1019. ;    3       ScrText()
  1020. ;    4       ToDate()
  1021. ;    1       ToMoney()
  1022. ;    8       IsBitSet()
  1023. ;
  1024. ;------------------------------------------------------------------------------
  1025. ;
  1026. ; Analysis flags : RdHs
  1027. ;
  1028. ; R - Read user ■ 5
  1029. ;     User records are read, this may signify that someone wants to get
  1030. ;     various informations about a user (for example his password), but
  1031. ;     this may also be normal for a program accessing user records (for
  1032. ;     example a User Editor)
  1033. ;     ■ Search for : GETALTUSER
  1034. ;
  1035. ; d - Access PCBOARD.DAT ■ 2
  1036. ;     Program gets the full pathname to PCBOARD.DAT, this may be usefull
  1037. ;     for many PPE so they can find various informations on the system
  1038. ;     (system paths, max number of lines in messages, ...) but it may also
  1039. ;     be a way to gather vital informations.
  1040. ;     ■ Search for : PCBDAT()
  1041. ;
  1042. ; H - Read Password or Password History ■ 5
  1043. ;     Program is reading the user's password or last password history
  1044. ;     This may be ok for a password manager, but it is very suspect. Check!
  1045. ;     ■ Search for : U_PWDHIST, U_PWD
  1046. ;
  1047. ; s - Sysop level access ■ 5
  1048. ;     Program is reading the sysop access level, this may be normal
  1049. ;     but still it is very suspect. It is the best way to give a user
  1050. ;     all priviledges. Check!
  1051. ;     ■ Search for : SYSOPSEC()
  1052. ;
  1053. ;------------------------------------------------------------------------------
  1054. ;
  1055. ; Postprocessing report
  1056. ;
  1057. ;    11      For/Next
  1058. ;    0       While/EndWhile
  1059. ;    64      If/Then or If/Then/Else
  1060. ;    1       Select Case
  1061. ;
  1062. ;------------------------------------------------------------------------------
  1063. ;                 AEGiS Corp - Break the routines, code against the machines!
  1064. ;------------------------------------------------------------------------------
  1065.