home *** CD-ROM | disk | FTP | other *** search
/ Carsten's PPE Collection / Carstens_PPE_Collection_2007.zip / S / SCUMN10.ZIP / NUKER.PPE (.txt) < prev    next >
PCBoard Programming Language Executable  |  1994-06-13  |  15KB  |  813 lines

  1. ;------------------------------------------------------------------------------
  2. ;                                                   .ss.
  3. ;                                                   `²²'
  4. ;             .,sS$Ss,,s$  .,sS$$$Ss.  .,sS$Ss,,s$ .ss.  .sSs.
  5. ;           .d$$²^°²$$$$'.d$P²°^^²$P'.d$$²^°²$$$$'.$$$' .$$$²Sb,.
  6. ;           $$$'   .$$$' $$$²Sçsµ²' .$$$'   .$$$'.$$$' .$$$'  `$$b.
  7. ;           $$$b,,d$$$' ,$$$b,....,s$$$$b,,d$$$'.$$$;.,$$$'    ;$$$
  8. ;           `²S$$S²²S$$S²°²S$$$$S²°°²S$$$$$$',$$S²°²S$S'.sS$$$P²'
  9. ;                                    .sS²°$$$²²°"'       d²°'
  10. ;                                  .$$²  .$$'
  11. ;                                  $$$.,d$$'
  12. ;                                  `²S$$S²'
  13. ;------------------------------------------------------------------------------
  14. ; P.P.L.X. 2.OO                          (C)1996 - Lone Runner / AEGiS CoRP'96 
  15. ;------------------------------------------------------------------------------
  16. ; PPE 2.OO (plain) - Analysis ON - Postprocessing ON
  17. ;------------------------------------------------------------------------------
  18.  
  19.     Boolean  BOOLEAN001
  20.     Boolean  BOOLEAN002
  21.     Boolean  BOOLEAN003
  22.     Boolean  BOOLEAN004
  23.     Boolean  BOOLEAN005
  24.     Boolean  BOOLEAN006
  25.     Integer  INTEGER001
  26.     Integer  INTEGER002
  27.     Integer  INTEGER003
  28.     Integer  INTEGER004
  29.     Integer  INTEGER005
  30.     Integer  INTEGER006
  31.     Integer  INTEGER007
  32.     Integer  INTEGER008
  33.     Integer  INTEGER009
  34.     Integer  INTEGER010
  35.     Integer  INTEGER011
  36.     Integer  INTEGER012
  37.     Integer  INTEGER013
  38.     Integer  INTEGER014
  39.     Integer  INTEGER015
  40.     Integer  INTEGER016
  41.     Integer  INTEGER017
  42.     Integer  INTEGER018
  43.     Integer  INTEGER019
  44.     Integer  INTEGER020
  45.     Integer  INTEGER021
  46.     Integer  INTEGER022
  47.     Integer  INTEGER023
  48.     Integer  INTEGER024
  49.     Integer  INTEGER025
  50.     Integer  INTEGER026
  51.     Integer  INTEGER027
  52.     Integer  INTEGER028
  53.     Integer  INTEGER029
  54.     Real     REAL001
  55.     String   STRING002
  56.     String   TSTRING003(50)
  57.     String   STRING004
  58.     String   STRING005
  59.     String   TSTRING006(25)
  60.     String   STRING007
  61.     String   STRING008
  62.     String   STRING009
  63.     String   STRING010
  64.     String   STRING011
  65.     String   STRING012
  66.     String   STRING013
  67.     String   TSTRING014(23)
  68.     String   STRING015
  69.     String   STRING016
  70.     String   STRING017
  71.     String   STRING018
  72.     String   STRING019
  73.     String   STRING020
  74.     String   STRING021
  75.     String   STRING022
  76.     String   STRING023
  77.     String   STRING024
  78.     String   STRING025
  79.     String   STRING026
  80.     String   STRING027
  81.     String   STRING028
  82.     String   STRING029
  83.     String   STRING030
  84.     String   STRING031
  85.     String   STRING032
  86.     String   STRING033
  87.     String   STRING034
  88.     String   STRING035
  89.     String   STRING036
  90.     String   TSTRING037(48)
  91.     String   STRING038
  92.  
  93. ;------------------------------------------------------------------------------
  94.  
  95.     STRING038 = TokenStr()
  96.     FOpen 2, PPEPath() + "nuker.cfg", 2, 0
  97.     FGet 2, INTEGER003
  98.     For INTEGER013 = 1 To INTEGER003
  99.         FGet 2, STRING018
  100.     Next
  101.     FGet 2, STRING018
  102.     For INTEGER013 = 0 To 48
  103.         FGet 2, TSTRING037(INTEGER013)
  104.     Next
  105.     FClose 2
  106.     For INTEGER028 = 1 To MaxNode()
  107.         RdUNet INTEGER028
  108.         If (UN_City() == "Running SCuM-NuKeR!") Then
  109.             PrintLn 
  110.             PrintLn "Node " + String(INTEGER028) + " - " + UN_Name() + " - " + UN_City()
  111.             PrintLn TSTRING037(0)
  112.             PrintLn TSTRING037(1)
  113.             PrintLn 
  114.             Goto LABEL018
  115.         Endif
  116.     Next
  117.     RdUNet PcbNode()
  118.     WrUNet PcbNode(), UN_Stat(), UN_Name(), "Running SCuM-NuKeR!", "", ""
  119.     If (STRING038 == "") STRING038 = "NONE"
  120.     STRING025 = STRING038
  121.     Gosub LABEL029
  122.     STRING027 = FileInf(PCBDat(), 6) + ":" + FileInf(PCBDat(), 7) + "public.bak"
  123.     Copy STRING007, STRING027
  124.     STRING013 = FileInf(PCBDat(), 6) + ":" + FileInf(PCBDat(), 7) + "UPLOADS.BAK"
  125.     If (Exist(STRING013)) Delete STRING013
  126.     BOOLEAN003 = 1
  127.     GetUser
  128.     STRING010 = U_Name()
  129.     INTEGER013 = 0
  130.     :LABEL001
  131.     If ((TSTRING003(1) == "") && Exist(PPEPath() + "FNUKE." + String(PcbNode()))) Then
  132.         FOpen 3, PPEPath() + "FNUKE." + String(PcbNode()), 2, 0
  133.         INTEGER013 = 0
  134.         FGet 3, STRING021
  135.         STRING021 = ""
  136.         :LABEL002
  137.         If (Ferr(3)) Goto LABEL003
  138.         INTEGER013 = INTEGER013 + 1
  139.         FGet 3, TSTRING003(INTEGER013)
  140.         Goto LABEL002
  141.         :LABEL003
  142.         INTEGER013 = INTEGER013 - 1
  143.         FClose 3
  144.     Endif
  145.     INTEGER016 = 1
  146.     INTEGER014 = 0
  147.     INTEGER018 = 0
  148.     BOOLEAN001 = 0
  149.     Cls
  150.     DispFile PPEPath() + "NUKER.MNU", 4 + 2 + 1
  151.     InputStr TSTRING037(2), STRING002, 15, 1, Mask_Ascii(), 8 + 256
  152.     If (STRING002 == "") Goto LABEL018
  153.     If (Upper(STRING002) == "F") Goto LABEL009
  154.     If (Upper(STRING002) == "Q") Goto LABEL018
  155.     If (Upper(STRING002) == "H") Goto LABEL015
  156.     If (Upper(STRING002) == "S") Goto LABEL016
  157.     If (Upper(STRING002) == "L") Goto LABEL016
  158.     If (Upper(STRING002) == "Z") Goto LABEL017
  159.     If (Upper(STRING002) == "?") Goto LABEL001
  160.     If (Upper(STRING002) == "E") Goto LABEL006
  161.     If (Upper(STRING002) == "V") Goto LABEL005
  162.     If (Upper(STRING002) == "D") Goto LABEL004
  163.     PrintLn 
  164.     PrintLn TSTRING037(3)
  165.     More
  166.     Goto LABEL001
  167.     :LABEL004
  168.     If (CurSec() <> SysopSec()) Then
  169.         PrintLn 
  170.         PrintLn TSTRING037(33)
  171.         PrintLn 
  172.         More
  173.         Goto LABEL001
  174.     Endif
  175.     PrintLn 
  176.     InputStr TSTRING037(4), STRING021, 15, 1, Mask_Ascii(), 8 + 256 + 16384
  177.     If (STRING021 == "Y") Then
  178.         If (Exist(PPEPath() + "NUKER.LOG")) Then
  179.             Delete PPEPath() + "nuker.log"
  180.             FreshLine
  181.             PrintLn 
  182.             PrintLn TSTRING037(5)
  183.             PrintLn 
  184.             More
  185.         Endif
  186.     Endif
  187.     Goto LABEL001
  188.     :LABEL005
  189.     PrintLn " @X07"
  190.     DispFile PPEPath() + "nuker.log", 0
  191.     More
  192.     InputStr TSTRING037(37), STRING018, 15, 1, Mask_Ascii(), 256
  193.     Goto LABEL001
  194.     :LABEL006
  195.     FreshLine
  196.     Newline
  197.     InputStr TSTRING037(47), STRING019, 15, 1, "RrAa", 256 + 8
  198.     If (STRING019 == "") Goto LABEL001
  199.     If (Upper(STRING019) == "R") Goto LABEL008
  200.     :LABEL007
  201.     STRING019 = ""
  202.     FreshLine
  203.     Newline
  204.     InputStr TSTRING037(48), STRING019, 15, 12, Mask_File(), 256 + 8
  205.     If (STRING019 == "") Goto LABEL001
  206.     If ((InStr(STRING019, "?") > 0) || (InStr(STRING019, "*") > 0)) Goto LABEL007
  207.     FCreate 3, PPEPath() + "FNUKE." + String(PcbNode()), 2, 0
  208.     GetUser
  209.     FPutLn 3, U_Name()
  210.     For INTEGER019 = 1 To INTEGER013
  211.         FPutLn 3, TSTRING003(INTEGER019)
  212.     Next
  213.     FPutLn 3, STRING019
  214.     TSTRING003(INTEGER019 + 1) = STRING019
  215.     FClose 3
  216.     Goto LABEL001
  217.     :LABEL008
  218.     FreshLine
  219.     Newline
  220.     INTEGER020 = 0
  221.     If (TSTRING003(1) == "") Then
  222.         PrintLn 
  223.         PrintLn TSTRING037(6)
  224.         PrintLn 
  225.         More
  226.         Goto LABEL001
  227.     Endif
  228.     For INTEGER019 = 1 To INTEGER013
  229.         If (INTEGER019 < 10) PrintLn "@X08[ @X0F" + String(INTEGER019) + "@X08]@X0F  " + TSTRING003(INTEGER019)
  230.         If (INTEGER019 > 10) PrintLn "@X08[@X0F" + String(INTEGER019) + "@X08]@X0F  " + TSTRING003(INTEGER019)
  231.     Next
  232.     FreshLine
  233.     Newline
  234.     InputStr TSTRING037(7), INTEGER020, 15, 2, Mask_Ascii(), 4096 + 256 + 8
  235.     If ((INTEGER020 == "") || (INTEGER020 == 0)) Goto LABEL001
  236.     Gosub LABEL031
  237.     FCreate 3, PPEPath() + "FNUKE." + String(PcbNode()), 2, 0
  238.     GetUser
  239.     FPutLn 3, U_Name()
  240.     For INTEGER019 = 1 To INTEGER013
  241.         FPutLn 3, TSTRING003(INTEGER019)
  242.     Next
  243.     FClose 3
  244.     Goto LABEL001
  245.     :LABEL009
  246.     GetUser
  247.     If (!Exist(PPEPath() + "FNUKE." + String(PcbNode())) || (ReadLine(PPEPath() + "FNUKE." + String(PcbNode()), 1) <> U_Name())) Then
  248.         PrintLn TSTRING037(8)
  249.         PrintLn 
  250.         More
  251.         Goto LABEL001
  252.     Endif
  253.     PrintLn TSTRING037(9)
  254.     BOOLEAN004 = 0
  255.     FOpen 2, STRING027, 2, 0
  256.     FOpen 6, STRING013, 2, 0
  257.     :LABEL010
  258.     If (Ferr(2)) Goto LABEL012
  259.     BOOLEAN001 = 0
  260.     FGet 2, STRING016
  261.     :LABEL011
  262.     If (INTEGER013 > 0) Then
  263.         If (Left(STRING016, 1) <> " ") Then
  264.             For INTEGER014 = 1 To INTEGER013
  265.                 STRING005 = Left(STRING016, 12)
  266.                 STRING005 = Trim(STRING005, " ")
  267.                 If (Upper(STRING005) == Upper(TSTRING003(INTEGER014))) Then
  268.                     STRING028 = Upper(STRING005)
  269.                     Gosub LABEL019
  270.                     STRING016 = TSTRING014(INTEGER018)
  271.                     BOOLEAN001 = 0
  272.                     Goto LABEL011
  273.                 Endif
  274.             Next
  275.         Endif
  276.     Endif
  277.     If (!BOOLEAN001 && (InStr(STRING016, STRING028) == 0)) Then
  278.         FPutLn 6, STRING016
  279.         TSTRING014(INTEGER018) = ""
  280.     Endif
  281.     If (!BOOLEAN004 && (INTEGER013 == 0)) Then
  282.         BOOLEAN004 = 1
  283.         FreshLine
  284.         PrintLn TSTRING037(10)
  285.     Endif
  286.     Goto LABEL010
  287.     :LABEL012
  288.     FClose 2
  289.     FClose 6
  290.     For INTEGER021 = 1 To INTEGER013
  291.         TSTRING003(INTEGER021) = ""
  292.     Next
  293.     Delete PPEPath() + "FNUKE." + String(PcbNode())
  294.     :LABEL013
  295.     Copy STRING013, STRING007
  296.     STRING029 = 0
  297.     If (FileInf(STRING013, 4) <> FileInf(STRING007, 4)) Then
  298.         FreshLine
  299.         Newline
  300.         PrintLn "            " + TSTRING037(41)
  301.         PrintLn 
  302.         PrintLn TSTRING037(42)
  303.         PrintLn 
  304.         PrintLn TSTRING037(43)
  305.         PrintLn TSTRING037(44)
  306.         PrintLn TSTRING037(45)
  307.         PrintLn 
  308.         :LABEL014
  309.         InputStr TSTRING037(46), STRING029, 15, 1, Mask_Num(), 256
  310.         If (STRING029 == 1) Goto LABEL013
  311.         If (STRING029 == 2) Goto LABEL001
  312.         If (STRING029 == 3) Then
  313.             If (Exist("$$LOGOFF.BAT")) Copy "$$LOGOFF.BAT", "$$LOGOFF.BAK"
  314.             FAppend 7, "$$LOGOFF.BAT", 2, 0
  315.             FPutLn 7, PPEPath() + "TRYAGAIN.EXE " + STRING007 + " " + STRING013
  316.             FPutLn 7, "if exist $$LOGOFF.BAK del $$LOGOFF.BAK"
  317.             FClose 7
  318.             Goto LABEL001
  319.         Endif
  320.         Goto LABEL014
  321.     Endif
  322.     Goto LABEL001
  323.     :LABEL015
  324.     PrintLn " @X07"
  325.     DispFile PPEPath() + "NUKER.HLP", 2
  326.     More
  327.     InputStr TSTRING037(37), STRING018, 15, 1, Mask_Ascii(), 256
  328.     Goto LABEL001
  329.     :LABEL016
  330.     PromptStr 71, STRING020, 12, Mask_Ascii(), 8 + 256 + 128
  331.     Dir "L " + STRING020 + " U"
  332.     Gosub LABEL030
  333.     Goto LABEL001
  334.     :LABEL017
  335.     Dir "Z" + STRING020 + " U"
  336.     Gosub LABEL030
  337.     Goto LABEL001
  338.     :LABEL018
  339.     FreshLine
  340.     Newline
  341.     PrintLn "@X08                   NuKeR PPe  Mindfryer/Liquidater  SCuM '94"
  342.     Delete PPEPath() + "FNUKE." + String(PcbNode())
  343.     Delete PPEPath() + "INUSE." + String(PcbNode())
  344.     End
  345.     :LABEL019
  346.     INTEGER018 = 0
  347.     STRING008 = ""
  348.     STRING008 = TSTRING037(34) + Mid(STRING016, 1, 13)
  349.     STRING008 = STRING008 + TSTRING037(35) + Mid(STRING016, 14, 10)
  350.     STRING008 = STRING008 + TSTRING037(34) + Mid(STRING016, 24, 10)
  351.     STRING008 = STRING008 + TSTRING037(36) + Mid(STRING016, 34, 45)
  352.     PrintLn STRING008
  353.     STRING026 = Trim(Mid(STRING016, 15, 21), " ")
  354.     INTEGER026 = STRING026
  355.     STRING005 = " "
  356.     INTEGER016 = 1
  357.     TSTRING014(INTEGER016) = " "
  358.     While (((Left(TSTRING014(INTEGER016), 1) == " ") && !Ferr(2)) && (INTEGER016 < 23)) Do
  359.         FGet 2, TSTRING014(INTEGER016)
  360.         If (Left(TSTRING014(INTEGER016), 1) <> " ") Break
  361.         STRING008 = TSTRING037(34) + TSTRING014(INTEGER016)
  362.         STRING008 = Replace(STRING008, "|", " ")
  363.         PrintLn STRING008
  364.         INTEGER016 = INTEGER016 + 1
  365.     EndWhile
  366.     InputYN TSTRING037(11), STRING021, 15
  367.     INTEGER018 = INTEGER016
  368.     If (Upper(STRING021) == "N") Then
  369.         FPutLn 6, STRING016
  370.         For INTEGER016 = 1 To INTEGER018 - 1
  371.             FPutLn 6, TSTRING014(INTEGER016)
  372.             TSTRING014(INTEGER016) = ""
  373.         Next
  374.         INTEGER020 = INTEGER014
  375.         Gosub LABEL031
  376.         PrintLn 
  377.         Return
  378.     Endif
  379.     GetUser
  380.     FAppend 4, PPEPath() + "nuker.log", 2, 0
  381.     FPutLn 4, "**********************************************************************"
  382.     FPutLn 4, String(Date()) + "  " + String(TimeAp(Time()))
  383.     FPutLn 4, TSTRING003(INTEGER014) + " was nuked by " + Mixed(U_Name())
  384.     INTEGER007 = FileInf(STRING017 + TSTRING003(INTEGER014), 4)
  385.     STRING009 = INTEGER007
  386.     If (Exist(STRING017 + TSTRING003(INTEGER014))) Then
  387.         FreshLine
  388.         Newline
  389.         PrintLn 
  390.         PrintLn TSTRING037(12)
  391.         PrintLn TSTRING037(13)
  392.         PrintLn TSTRING037(14)
  393.         PrintLn 
  394.         InputStr TSTRING037(15), INTEGER008, 15, 1, "123", 4096
  395.         If (INTEGER008 == 3) Then
  396.             FPutLn 4, TSTRING003(INTEGER014) + " left online."
  397.             PrintLn 
  398.             PrintLn TSTRING037(16) + TSTRING003(INTEGER014) + TSTRING037(17)
  399.             Goto LABEL020
  400.         Endif
  401.         Delete STRING017 + TSTRING003(INTEGER014)
  402.         If (INTEGER008 == 1) Then
  403.             FPutLn 4, TSTRING003(INTEGER014) + " was Deleted."
  404.             PrintLn 
  405.             PrintLn TSTRING037(16) + TSTRING003(INTEGER014) + TSTRING037(18)
  406.             Goto LABEL020
  407.         Endif
  408.         FCreate 5, STRING017 + TSTRING003(INTEGER014), 2, 0
  409.         FClose 5
  410.         PrintLn 
  411.         FPutLn 4, TSTRING003(INTEGER014) + " was 0-byted."
  412.         PrintLn TSTRING037(19)
  413.     Endif
  414.     :LABEL020
  415.     PrintLn 
  416.     Print TSTRING037(20)
  417.     FOpen 1, ReadLine(PCBDat(), 46), 2, 0
  418.     BOOLEAN002 = 1
  419.     :LABEL021
  420.     If (Ferr(1)) Goto LABEL022
  421.     FGet 1, STRING023
  422.     If (Mid(STRING023, 2, 1) == "U") Then
  423.         If (InStr(STRING023, "," + TSTRING003(INTEGER014)) > 0) Then
  424.             BOOLEAN002 = 0
  425.         Else
  426.             Goto LABEL021
  427.         Endif
  428.     Endif
  429.     :LABEL022
  430.     FClose 1
  431.     PrintLn 
  432.     STRING023 = Mid(STRING023, 5, 30)
  433.     STRING023 = Mid(STRING023, 1, InStr(STRING023, ",") - 1)
  434.     STRING024 = STRING023
  435.     STRING018 = STRING024
  436.     INTEGER024 = U_RecNum(STRING024)
  437.     If (BOOLEAN002 == 1) Then
  438.         PrintLn TSTRING037(21)
  439.         FPutLn 4, "Uploader was not found in DOWNLOAD.TXT"
  440.     Else
  441.         FreshLine
  442.         Newline
  443.         Gosub LABEL032
  444.         If (!BOOLEAN002) PrintLn TSTRING037(22) + Mixed(STRING024)
  445.         InputStr TSTRING037(23), INTEGER005, 15, 1, "012345", 256
  446.         If (INTEGER005 == 0) Goto LABEL023
  447.         INTEGER007 = INTEGER007 * INTEGER005
  448.         Shell 0, BOOLEAN005, PPEPath() + "UPBYTES.EXE", " " + STRING035 + " -" + String(INTEGER007) + " " + String(INTEGER024) + " U"
  449.         PrintLn TSTRING037(36) + String(INTEGER007) + " " + TSTRING037(38) + " " + STRING018
  450.         FPutLn 4, String(INTEGER007) + " Upload bytes have been removed from " + STRING018
  451.         FPutLn 4, String(INTEGER005) + " Upload files have been removed from " + STRING018
  452.         PrintLn TSTRING037(36) + String(INTEGER005) + " " + TSTRING037(39) + " " + STRING018
  453.         FOpen 5, STRING035, 2, 0
  454.         FreshLine
  455.         INTEGER009 = (INTEGER024 - 1) * 400 + 111
  456.         FSeek 5, INTEGER009, 0
  457.         FRead 5, INTEGER029, 2
  458.         INTEGER029 = INTEGER029 - INTEGER005
  459.         If (INTEGER029 > 0) INTEGER029 = 0
  460.         FSeek 5, INTEGER009, 0
  461.         FWrite 5, INTEGER029, 2
  462.         FClose 5
  463.         If (BOOLEAN003 == 1) Then
  464.             INTEGER025 = U_RecNum(STRING024)
  465.             Gosub LABEL033
  466.             INTEGER027 = INTEGER026 / INTEGER002
  467.             INTEGER027 = INTEGER027 * INTEGER005
  468.             STRING036 = INTEGER027
  469.             INTEGER006 = STRING031
  470.             INTEGER006 = INTEGER006 - INTEGER027
  471.             STRING031 = INTEGER006
  472.             Gosub LABEL034
  473.             PrintLn TSTRING037(16) + String(INTEGER027) + TSTRING037(24)
  474.             FPutLn 4, String(INTEGER027) + " file points were removed from " + Mixed(STRING024) + " (" + String(INTEGER005) + " times)"
  475.             INTEGER020 = INTEGER014
  476.         Endif
  477.     Endif
  478.     :LABEL023
  479.     FreshLine
  480.     Newline
  481.     For INTEGER016 = 1 To ReadLine(PPEPath() + "NUKER.CFG", 1)
  482.         TSTRING006(INTEGER016) = ReadLine(PPEPath() + "NUKER.CFG", INTEGER016 + 1)
  483.         If (INTEGER016 < 10) PrintLn " @X08[@X0F" + String(INTEGER016) + "@X08]   @X0F" + TSTRING006(INTEGER016)
  484.         If (INTEGER016 >= 10) Print "@X08[@X0F" + String(INTEGER016) + "@X08]   @X0F" + TSTRING006(INTEGER016)
  485.     Next
  486.     If (INTEGER016 < 10) Then
  487.         Print " @X08[@X0F"
  488.         Print INTEGER016
  489.         PrintLn "@X08]   " + TSTRING037(25)
  490.     Endif
  491.     If (INTEGER016 >= 10) Then
  492.         Print "@X08[@X0F"
  493.         Print INTEGER016
  494.         PrintLn "@X08]   " + TSTRING037(25)
  495.     Endif
  496.     FreshLine
  497.     Newline
  498.     FreshLine
  499.     :LABEL024
  500.     InputStr TSTRING037(26), INTEGER017, 15, 2, Mask_Ascii(), 4096 + 256
  501.     If ((INTEGER017 == "") || (INTEGER017 == "0")) Goto LABEL024
  502.     If (INTEGER017 == INTEGER016) Then
  503.         FreshLine
  504.         Newline
  505.         InputStr TSTRING037(27) + " _", STRING015, 15, 45, Mask_Ascii(), 4096 + 256
  506.         TSTRING006(INTEGER017) = STRING015
  507.     Endif
  508.     STRING004 = Mid(STRING016, 1, 33)
  509.     FPut 6, STRING004
  510.     STRING022 = Mid(STRING004, 14, 9)
  511.     STRING022 = Trim(STRING004, " ")
  512.     INTEGER023 = STRING022
  513.     FPutLn 6, TSTRING006(INTEGER017)
  514.     FPutLn 4, "Comment used: " + TSTRING006(INTEGER017) + " @X07"
  515.     GetUser
  516.     STRING004 = Space(31) + "| @X04Nuked by: " + Mixed(U_Name())
  517.     FPutLn 6, STRING004
  518.     STRING004 = Space(31) + "| " + Mid(STRING016, 34, Len(STRING016) - 33)
  519.     FPutLn 6, STRING004
  520.     STRING004 = ""
  521.     For INTEGER016 = 1 To INTEGER018 - 1
  522.         FPutLn 6, TSTRING014(INTEGER016)
  523.         TSTRING014(INTEGER016) = ""
  524.         FreshLine
  525.     Next
  526.     InputYN TSTRING037(28), STRING021, 15
  527.     PrintLn 
  528.     INTEGER010 = 0
  529.     If (Upper(STRING021) == "Y") Then
  530.         BOOLEAN006 = 0
  531.         PrintLn TSTRING037(29)
  532.         FOpen 1, ReadLine(PCBDat(), 46), 2, 0
  533.         :LABEL025
  534.         If (Ferr(1)) Goto LABEL026
  535.         FGet 1, STRING023
  536.         If (Mid(STRING023, 2, 1) == "D") Then
  537.             If (InStr(STRING023, "," + TSTRING003(INTEGER014)) > 0) Then
  538.                 INTEGER027 = INTEGER026 / INTEGER002
  539.                 STRING023 = Mid(STRING023, 5, 30)
  540.                 STRING023 = Mid(STRING023, 1, InStr(STRING023, ",") - 1)
  541.                 STRING024 = STRING023
  542.                 Shell 0, BOOLEAN005, PPEPath() + "UPBYTES.EXE", " " + STRING035 + " -" + String(STRING009) + " " + String(INTEGER024) + " D"
  543.                 FPutLn 4, String(STRING009) + " download bytes returned to : " + Mixed(STRING024)
  544.                 PrintLn TSTRING037(36) + String(STRING009) + " " + TSTRING037(40) + " " + Mixed(STRING024)
  545.                 INTEGER025 = U_RecNum(STRING024)
  546.                 FOpen 5, STRING035, 2, 0
  547.                 FreshLine
  548.                 INTEGER009 = (INTEGER025 - 1) * 400 + 113
  549.                 FSeek 5, INTEGER009, 0
  550.                 FRead 5, INTEGER029, 2
  551.                 INTEGER029 = INTEGER029 - 1
  552.                 FSeek 5, INTEGER009, 0
  553.                 FWrite 5, INTEGER029, 2
  554.                 FPutLn 4, "1 downloaded file returned to " + Mixed(STRING024)
  555.                 FClose 5
  556.                 If (BOOLEAN003 == 1) Then
  557.                     Gosub LABEL033
  558.                     INTEGER006 = STRING031
  559.                     INTEGER006 = INTEGER006 + INTEGER027
  560.                     STRING031 = INTEGER006
  561.                     Gosub LABEL034
  562.                     FreshLine
  563.                     PrintLn TSTRING037(16) + String(INTEGER027) + TSTRING037(30) + Mixed(STRING024) + "@X07"
  564.                     FPutLn 4, String(INTEGER027) + " file points returned to : " + Mixed(STRING024)
  565.                     INTEGER012 = INTEGER004
  566.                     REAL001 = INTEGER012
  567.                     REAL001 = REAL001 / 100
  568.                     REAL001 = REAL001 * INTEGER027
  569.                     INTEGER010 = INTEGER010 + ToInteger(REAL001)
  570.                 Endif
  571.                 BOOLEAN006 = 1
  572.             Endif
  573.         Endif
  574.         Goto LABEL025
  575.         :LABEL026
  576.         FClose 1
  577.         If ((BOOLEAN006 == 1) && (BOOLEAN003 == 1)) Then
  578.             If (INTEGER010 > 0) Then
  579.                 INTEGER025 = U_RecNum(STRING018)
  580.                 Gosub LABEL033
  581.                 INTEGER011 = STRING031
  582.                 INTEGER011 = INTEGER011 - INTEGER010
  583.                 STRING031 = INTEGER011
  584.                 FPutLn 4, String(INTEGER010) + " Commission file points deducted from : " + STRING018
  585.                 Gosub LABEL034
  586.             Endif
  587.         Endif
  588.         If (BOOLEAN006) Goto LABEL027
  589.         FPutLn 4, "No downloaders were found."
  590.         FreshLine
  591.         PrintLn TSTRING037(31)
  592.     Endif
  593.     :LABEL027
  594.     If (BOOLEAN002) Goto LABEL028
  595.     FPutLn 4, "Message Written to " + Mixed(STRING018) + " about this nukeing."
  596.     FClose 4
  597.     BOOLEAN001 = 1
  598.     If (STRING036 == "") STRING036 = "0"
  599.     If (Exist(PPEPath() + "MESSAGE.TMP")) Delete PPEPath() + "MESSAGE.TMP"
  600.     FOpen 5, PPEPath() + "MESSAGE.TMP", 2, 0
  601.     FPutLn 5, "Hello, "
  602.     FPutLn 5, Mixed(STRING010) + " has nuked your upload: " + TSTRING003(INTEGER014) + ". (" + String(INTEGER005) + " times)"
  603.     FPutLn 5, "It was nuked for the reason of: " + TSTRING006(INTEGER017) + "@X07."
  604.     FPutLn 5, "You lost " + String(INTEGER007) + " uploaded bytes and " + String(INTEGER005) + " upload file credits."
  605.     If (STRING025 <> "NONE") Then
  606.         FPutLn 5, "Also, " + STRING036 + " upload file points were deducted, and " + String(INTEGER010) + " commission."
  607.     Endif
  608.     FPutLn 5, ""
  609.     FPutLn 5, ""
  610.     FPutLn 5, " -=[ ViA SCuM-NuKeR ]=-"
  611.     FClose 5
  612.     FReAltUser
  613.     Message 0, STRING018, "", "Nuke!", "R", 0, 0, 0, PPEPath() + "MESSAGE.TMP"
  614.     PrintLn TSTRING037(32)
  615.     :LABEL028
  616.     Gosub LABEL031
  617.     Return
  618.     :LABEL029
  619.     INTEGER015 = CurConf()
  620.     INTEGER015 = INTEGER015 * 33
  621.     INTEGER015 = INTEGER015 + 15
  622.     STRING012 = ReadLine(PCBDat(), 31)
  623.     STRING011 = ReadLine(STRING012, INTEGER015)
  624.     INTEGER015 = INTEGER015 + 1
  625.     STRING017 = ReadLine(STRING012, INTEGER015)
  626.     STRING007 = STRING011
  627.     STRING035 = ReadLine(PCBDat(), 29)
  628.     Return
  629.     :LABEL030
  630.     For INTEGER021 = 1 To INTEGER013
  631.         TSTRING003(INTEGER021) = ""
  632.     Next
  633.     INTEGER013 = 0
  634.     Return
  635.     :LABEL031
  636.     INTEGER022 = INTEGER020
  637.     For INTEGER021 = INTEGER022 To INTEGER013
  638.         TSTRING003(INTEGER021) = TSTRING003(INTEGER021 + 1)
  639.     Next
  640.     INTEGER013 = INTEGER013 - 1
  641.     Return
  642.     :LABEL032
  643.     If (!Exist(STRING025 + "PCBFPS.CFG") || (STRING025 == "NONE")) Then
  644.         BOOLEAN003 = 0
  645.         Return
  646.     Endif
  647.     FOpen 1, STRING025 + "PCBFPS.CFG", 0, 0
  648.     FGet 1, STRING034
  649.     FGet 1, INTEGER001
  650.     FGet 1, INTEGER003
  651.     FGet 1, INTEGER002
  652.     FGet 1, INTEGER004
  653.     FClose 1
  654.     BOOLEAN003 = 1
  655.     Return
  656.     :LABEL033
  657.     GetAltUser INTEGER025
  658.     STRING033 = U_Notes(3)
  659.     Tokenize STRING033
  660.     STRING030 = GetToken()
  661.     STRING031 = GetToken()
  662.     STRING032 = GetToken()
  663.     Return
  664.     :LABEL034
  665.     U_Notes(3) = STRING030 + " " + STRING031 + " " + STRING032
  666.     PutUser
  667.     Return
  668.  
  669. ;------------------------------------------------------------------------------
  670. ;
  671. ; Usage report (before postprocessing)
  672. ;
  673. ; ■ Statements used :
  674. ;
  675. ;    1       End
  676. ;    1       Cls
  677. ;    7       More
  678. ;    112     Goto 
  679. ;    149     Let 
  680. ;    6       Print 
  681. ;    64      PrintLn 
  682. ;    85      If 
  683. ;    3       DispFile 
  684. ;    3       FCreate 
  685. ;    10      FOpen 
  686. ;    2       FAppend 
  687. ;    15      FClose 
  688. ;    15      FGet 
  689. ;    1       FPut 
  690. ;    39      FPutLn 
  691. ;    6       GetUser
  692. ;    1       PutUser
  693. ;    7       Delete 
  694. ;    12      InputStr 
  695. ;    2       InputYN 
  696. ;    14      Gosub 
  697. ;    9       Return
  698. ;    1       PromptStr 
  699. ;    11      Newline
  700. ;    1       Tokenize 
  701. ;    2       Shell 
  702. ;    2       Dir 
  703. ;    2       RdUNet 
  704. ;    1       WrUNet 
  705. ;    19      FreshLine
  706. ;    1       Message 
  707. ;    4       FSeek 
  708. ;    2       FRead 
  709. ;    2       FWrite 
  710. ;    3       Copy 
  711. ;    1       GetAltUser 
  712. ;    1       FReAltUser
  713. ;
  714. ;
  715. ; ■ Functions used :
  716. ;
  717. ;    6       *
  718. ;    3       /
  719. ;    210     +
  720. ;    15      -
  721. ;    45      ==
  722. ;    6       <>
  723. ;    17      <
  724. ;    13      <=
  725. ;    8       >
  726. ;    28      >=
  727. ;    59      !
  728. ;    32      &&
  729. ;    18      ||
  730. ;    1       Len(
  731. ;    16      Upper()
  732. ;    14      Mid()
  733. ;    4       Left()
  734. ;    2       Space()
  735. ;    5       Ferr()
  736. ;    7       InStr()
  737. ;    3       Trim()
  738. ;    1       Date()
  739. ;    1       Time()
  740. ;    6       U_Name()
  741. ;    1       TimeAp()
  742. ;    1       Replace()
  743. ;    36      String()
  744. ;    1       Mask_Num()
  745. ;    1       Mask_File()
  746. ;    8       Mask_Ascii()
  747. ;    1       CurConf()
  748. ;    8       PCBDat()
  749. ;    26      PPEPath()
  750. ;    11      PcbNode()
  751. ;    10      ReadLine()
  752. ;    1       SysopSec()
  753. ;    1       UN_Stat()
  754. ;    2       UN_Name()
  755. ;    2       UN_City()
  756. ;    1       CurSec()
  757. ;    3       GetToken()
  758. ;    8       Exist()
  759. ;    1       TokenStr()
  760. ;    7       FileInf()
  761. ;    2       MaxNode()
  762. ;    4       U_RecNum()
  763. ;    1       ToInteger()
  764. ;    11      Mixed()
  765. ;
  766. ;------------------------------------------------------------------------------
  767. ;
  768. ; Analysis flags : WRSds
  769. ;
  770. ; W - Write user ■ 5
  771. ;     Program writes a user record. Although this may be normal for a
  772. ;     User Editor, it may also be a way to modify an account level.
  773. ;     ■ Search for : PUTUSER
  774. ;
  775. ; R - Read user ■ 5
  776. ;     User records are read, this may signify that someone wants to get
  777. ;     various informations about a user (for example his password), but
  778. ;     this may also be normal for a program accessing user records (for
  779. ;     example a User Editor)
  780. ;     ■ Search for : GETALTUSER
  781. ;
  782. ; S - Shell to DOS ■ 5
  783. ;     This may be normal if the PPE need to execute an external command,
  784. ;     but may be actually anything... nasty (formating HD, rebooting,...)
  785. ;     or usefull (sorting, maintenance,...). Check!
  786. ;     ■ Search for : SHELL
  787. ;
  788. ; d - Access PCBOARD.DAT ■ 2
  789. ;     Program gets the full pathname to PCBOARD.DAT, this may be usefull
  790. ;     for many PPE so they can find various informations on the system
  791. ;     (system paths, max number of lines in messages, ...) but it may also
  792. ;     be a way to gather vital informations.
  793. ;     ■ Search for : PCBDAT()
  794. ;
  795. ; s - Sysop level access ■ 5
  796. ;     Program is reading the sysop access level, this may be normal
  797. ;     but still it is very suspect. It is the best way to give a user
  798. ;     all priviledges. Check!
  799. ;     ■ Search for : SYSOPSEC()
  800. ;
  801. ;------------------------------------------------------------------------------
  802. ;
  803. ; Postprocessing report
  804. ;
  805. ;    13      For/Next
  806. ;    1       While/EndWhile
  807. ;    33      If/Then or If/Then/Else
  808. ;    0       Select Case
  809. ;
  810. ;------------------------------------------------------------------------------
  811. ;                 AEGiS Corp - Break the routines, code against the machines!
  812. ;------------------------------------------------------------------------------
  813.