home *** CD-ROM | disk | FTP | other *** search
/ Monster Media 1994 #1 / monster.zip / monster / PCBOARD / LOPBCK40.ZIP / CALLBACK.PPE (.txt) < prev    next >
PCBoard Programming Language Executable  |  1994-01-16  |  23KB  |  901 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.     Date     DATE002
  21.     Date     DATE003
  22.     Integer  INTEGER003
  23.     Integer  INTEGER004
  24.     Integer  INTEGER005
  25.     Integer  TINTEGER006(99)
  26.     Integer  INTEGER007
  27.     Integer  INTEGER008
  28.     Integer  INTEGER009
  29.     Integer  INTEGER010
  30.     Integer  INTEGER011
  31.     Integer  INTEGER012
  32.     Integer  INTEGER013
  33.     Integer  INTEGER014
  34.     Integer  INTEGER015
  35.     Integer  INTEGER016
  36.     Integer  INTEGER017
  37.     Integer  INTEGER018
  38.     Integer  INTEGER019
  39.     Integer  INTEGER020
  40.     Integer  INTEGER021
  41.     Integer  INTEGER022
  42.     Integer  INTEGER023
  43.     Integer  INTEGER024
  44.     Integer  INTEGER025
  45.     String   STRING003
  46.     String   STRING004
  47.     String   STRING005
  48.     String   STRING006
  49.     String   STRING007
  50.     String   STRING008
  51.     String   TSTRING009(4)
  52.     String   STRING010
  53.     String   STRING011
  54.     String   STRING012
  55.     String   STRING013
  56.     String   STRING014
  57.     String   STRING015
  58.     String   STRING016
  59.     String   STRING017
  60.     String   STRING018
  61.     String   STRING019
  62.     String   STRING020
  63.     String   STRING021
  64.     String   STRING022
  65.     String   STRING023
  66.     String   STRING024
  67.     String   TSTRING025(33)
  68.     String   TSTRING026(11)
  69.     String   TSTRING027(11)
  70.     String   STRING028
  71.     String   STRING029
  72.     String   TSTRING030(5)
  73.     String   TSTRING031(5)
  74.     String   STRING032
  75.     String   STRING033
  76.     String   STRING034
  77.     String   STRING035
  78.     String   STRING036
  79.     String   STRING037
  80.     String   TSTRING038(99)
  81.     String   STRING039
  82.     String   STRING040
  83.     String   STRING041
  84.     String   STRING042
  85.     String   STRING043
  86.  
  87. ;------------------------------------------------------------------------------
  88.  
  89.     GetUser
  90.     STRING039 = Time()
  91.     Log "Entered LoopBack at -> " + STRING039, 0
  92.     RdUNet PcbNode()
  93.     WrUNet PcbNode(), UN_Stat(), UN_Name(), UN_City(), "RUNNING " + PPEName(), ""
  94.     FOpen 1, PPEPath() + PPEName() + ".CFG", 0, 0
  95.     For INTEGER004 = 1 To 33
  96.         FGet 1, TSTRING025(INTEGER004)
  97.         TSTRING025(INTEGER004) = RTrim(Left(TSTRING025(INTEGER004), 16), " ")
  98.     Next
  99.     FClose 1
  100.     If (U_Sec == SysopSec()) Then
  101.         If (TSTRING025(25) == "Y") Goto LABEL001
  102.     Endif
  103.     If (U_Sec >= TSTRING025(3)) Goto LABEL033
  104.     :LABEL001
  105.     BOOLEAN001 = 0
  106.     STRING005 = TSTRING025(1)
  107.     STRING006 = Chr(13)
  108.     STRING011 = TSTRING025(27)
  109.     If (TSTRING025(27) == "0") Then
  110.         STRING011 = ""
  111.     ElseIf (TSTRING025(27) <> "0") Then
  112.         STRING011 = TSTRING025(27)
  113.     Endif
  114.     STRING033 = TSTRING025(28)
  115.     STRING036 = TSTRING025(29)
  116.     INTEGER020 = Len(TSTRING025(31))
  117.     STRING041 = Len(TSTRING025(4))
  118.     INTEGER024 = INTEGER020 - STRING041 - 2
  119.     FOpen 1, PPEPath() + PPEName() + ".KEY", 0, 0
  120.     For INTEGER004 = 1 To 4
  121.         FGet 1, TSTRING009(INTEGER004)
  122.     Next
  123.     FClose 1
  124.     STRING010 = TSTRING009(1) + TSTRING009(2) + TSTRING009(3)
  125.     STRING010 = Strip(STRING010, " ")
  126.     For INTEGER005 = 1 To Len(STRING010)
  127.         TINTEGER006(INTEGER005) = Asc(Mid(STRING010, INTEGER005, 1))
  128.     Next
  129.     INTEGER007 = 0
  130.     For INTEGER005 = 1 To 80
  131.         INTEGER007 = INTEGER007 + TINTEGER006(INTEGER005)
  132.     Next
  133.     INTEGER008 = INTEGER007 * 709
  134.     If (INTEGER008 == TSTRING009(4)) Goto LABEL004
  135.     INTEGER019 = 0
  136.     FOpen 5, PPEPath() + PPEName() + ".FON", 0, 0
  137.     :LABEL002
  138.     If (Ferr(5)) Goto LABEL003
  139.     Inc INTEGER019
  140.     FGet 5, STRING019
  141.     Goto LABEL002
  142.     :LABEL003
  143.     FClose 5
  144.     INTEGER019 = INTEGER019 - 1
  145.     StartDisp 1
  146.     Cls
  147.     PrintLn "@X0A┌─────────────────────────────────────────────────────────────────────────────┐"
  148.     PrintLn "│                      @X8CUNREGISTERED EVALUATION SOFTWARE                       @X0A│"
  149.     PrintLn "│ @X0CPLEASE HAVE YOUR SYSOP REGISTER THIS PROGRAM (OR EVEN HELP HIM REGISTER IT) @X0A│"
  150.     PrintLn "└─────────────────────────────────────────────────────────────────────────────┘"
  151.     PrintLn "                                                                  "
  152.     PrintLn "     ╓─┐ ╥  ┬ ╥──┐ ╥  ┬ ─╥─ ╥  ┬ ╓──┐ ╥          ╓─╥─┐ ╥──┐ ╓──┐ ╥  ┬"
  153.     PrintLn "     @X04╙─┐ ║  │ ╟─┬┘ ╙╖┌┘  ║  ╙╖┌┘ ╟──┤ ║     ───    ║   ╟─   ║    ╟──┤"
  154.     PrintLn "    @X02╙──┘ ╙──┘ ╨ ┴   ╙┘  ─╨─  ╙┘  ╨  ┴ ╨──┘         ╨   ╨──┘ ╙──┘ ╨  ┴ o"
  155.     PrintLn "                                                                   "
  156.     PrintLn "                       @X0D ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀"
  157.     PrintLn "                                @X0BPRESENTS        "
  158.     PrintLn "                                                                          "
  159.     PrintLn "@X0C┌─┐    ┌──────┐ ┌──────┐ ┌─────┐        ┌──────┐ ┌──────┐ ┌─────┐ ┌─┐ ┌──┐"
  160.     PrintLn "@X0C│ │    │ ┌──┐ │ │ ┌──┐ │ │ ┌─┐ │        └┐ ┌─┐ │ │ ┌──┐ │ │ ┌─┐ │ │ │┌┘ ┌┘"
  161.     PrintLn "@X0C│ │    │ │  │ │ │ │  │ │ │ └─┘ │ ┌────┐  │ └─┘ │ │ └──┘ │ │ │ └─┘ │ └┘ └─┐"
  162.     PrintLn "@X0C│ │    │ │  │ │ │ │  │ │ │ ┌───┘ └────┘  │ ┌─┐ │ │ ┌──┐ │ │ │ ┌─┐ │ ┌──┐ │"
  163.     PrintLn "@X0C│ └──┐ │ └──┘ │ │ └──┘ │ │ │            ┌┘ └─┘ │ │ │  │ │ │ └─┘ │ │ │  │ │"
  164.     PrintLn "@X0C└────┘ └──────┘ └──────┘ └─┘            └──────┘ └─┘  └─┘ └─────┘ └─┘  └─┘"
  165.     PrintLn "                              @X0EProgrammed by     "
  166.     PrintLn "                               ", Chr(66), Chr(105), Chr(108), Chr(108), Chr(32), Chr(77), Chr(97), Chr(114), Chr(99), Chr(121)
  167.     PrintLn "                                  @X091994          "
  168.     PrintLn "                 @X0CRegistered to: ", Chr(85), Chr(110), Chr(114), Chr(101), Chr(103), Chr(105), Chr(115), Chr(116), Chr(101), Chr(114), Chr(101), Chr(100), Chr(32), Chr(69), Chr(118), Chr(97), Chr(108), Chr(117), Chr(97), Chr(116), Chr(105), Chr(111), Chr(110), Chr(32), Chr(67), Chr(111), Chr(112), Chr(121)
  169.     For INTEGER019 = INTEGER019 To 0 Step -1
  170.         AnsiPos 7, 22
  171.         PrintLn "@X0EThis @X0B", INTEGER019, "@X0E second delay is removed once this program is registered.@X0F "
  172.         Delay (1.5 * 182) / 18
  173.     Next
  174.     Goto LABEL005
  175.     :LABEL004
  176.     If (TSTRING025(9) == "Y") Goto LABEL005
  177.     StartDisp 1
  178.     Cls
  179.     PrintLn "                                                                  "
  180.     PrintLn "                                                                  "
  181.     PrintLn "     @X0A ╓─┐ ╥  ┬ ╥──┐ ╥  ┬ ─╥─ ╥  ┬ ╓──┐ ╥          ╓─╥─┐ ╥──┐ ╓──┐ ╥  ┬"
  182.     PrintLn "@X04      ╙─┐ ║  │ ╟─┬┘ ╙╖┌┘  ║  ╙╖┌┘ ╟──┤ ║     ───    ║   ╟─   ║    ╟──┤"
  183.     PrintLn "@X02     ╙──┘ ╙──┘ ╨ ┴   ╙┘  ─╨─  ╙┘  ╨  ┴ ╨──┘         ╨   ╨──┘ ╙──┘ ╨  ┴ o"
  184.     PrintLn "                                                 "
  185.     PrintLn "                        @X0D▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀"
  186.     PrintLn "                                @X0BPRESENTS        "
  187.     PrintLn "@X0C┌─┐    ┌──────┐ ┌──────┐ ┌─────┐        ┌──────┐ ┌──────┐ ┌─────┐ ┌─┐ ┌──┐"
  188.     PrintLn "@X0C│ │    │ ┌──┐ │ │ ┌──┐ │ │ ┌─┐ │        └┐ ┌─┐ │ │ ┌──┐ │ │ ┌─┐ │ │ │┌┘ ┌┘"
  189.     PrintLn "@X0C│ │    │ │  │ │ │ │  │ │ │ └─┘ │ ┌────┐  │ └─┘ │ │ └──┘ │ │ │ └─┘ │ └┘ └─┐"
  190.     PrintLn "@X0C│ │    │ │  │ │ │ │  │ │ │ ┌───┘ └────┘  │ ┌─┐ │ │ ┌──┐ │ │ │ ┌─┐ │ ┌──┐ │"
  191.     PrintLn "@X0C│ └──┐ │ └──┘ │ │ └──┘ │ │ │            ┌┘ └─┘ │ │ │  │ │ │ └─┘ │ │ │  │ │"
  192.     PrintLn "@X0C└────┘ └──────┘ └──────┘ └─┘            └──────┘ └─┘  └─┘ └─────┘ └─┘  └─┘"
  193.     PrintLn "@X0A                              Programmed by     "
  194.     PrintLn "                               ", Chr(66), Chr(105), Chr(108), Chr(108), Chr(32), Chr(77), Chr(97), Chr(114), Chr(99), Chr(121)
  195.     PrintLn "                                  @X021994          "
  196.     PrintLn "                                                 "
  197.     PrintLn "                REGISTERED TO: ", TSTRING009(3)
  198.     PrintLn "                                       "
  199.     PrintLn "                                                                    @X0BVer.4.0"
  200.     Delay (1 * 182) / 10
  201.     :LABEL005
  202.     Cls
  203.     DispFile PPEPath() + "ONE.DSP", 2 + 1 + 4
  204.     STRING017 = "Y"
  205.     If (TSTRING025(10) == "Y") InputYN "Do you wish to continue with Call Back Verification (Y/n)@X0A ", STRING017, 10
  206.     If (Upper(STRING017) == "N") Then
  207.         STRING039 = Time()
  208.         Log "Voluntary LoopBack exit at -> " + STRING039, 0
  209.         End
  210.     Endif
  211.     Newline
  212.     Select Case (TSTRING025(7))
  213.         Case "1"
  214.             STRING043 = U_HVPhone
  215.         Case "2"
  216.             STRING043 = U_BDPhone
  217.         Case "3"
  218.             Goto LABEL006
  219.     End Select
  220.     If (STRING043 == "             ") Goto LABEL006
  221.     Print "@X0C", STRING043
  222.     InputYN " @X0A <- Would you like to use this number (Y/n) ", STRING017, 10
  223.     If (Upper(STRING017) == "Y") Then
  224.         STRING003 = STRING043
  225.     Endif
  226.     If (Upper(STRING017) == "Y") Goto LABEL007
  227.     :LABEL006
  228.     Newline
  229.     InputStr "@X0AEnter the number you can be verified at (ex " + TSTRING025(8) + ") ", STRING003, 10, INTEGER020, "0123456789-", 0
  230.     If (STRING003 == 0) Goto LABEL005
  231.     If (Len(STRING003) < Len(TSTRING025(31))) Goto LABEL005
  232.     :LABEL007
  233.     STRING003 = Strip(STRING003, "-")
  234.     STRING003 = Strip(STRING003, " ")
  235.     STRING003 = Strip(STRING003, "(")
  236.     STRING003 = Strip(STRING003, ")")
  237.     If (TSTRING025(5) == "LC") Then
  238.         If (TSTRING025(5) == "LD") Goto LABEL008
  239.         If (Left(STRING003, 3) <> TSTRING025(4)) Goto LABEL034
  240.     Endif
  241.     :LABEL008
  242.     If (TSTRING025(13) == "N") Goto LABEL011
  243.     FOpen 5, PPEPath() + "CALLBACK.BAD", 2, 0
  244.     If (Ferr(5)) Then
  245.         Goto LABEL011
  246.     Endif
  247.     INTEGER021 = 1
  248.     :LABEL009
  249.     If (Ferr(5)) Goto LABEL010
  250.     STRING042 = ReadLine(PPEPath() + "CallBack.Bad", INTEGER021)
  251.     If (Mid(Strip(STRING042, "-"), 2, 10) == STRING003) Inc INTEGER025
  252.     Inc INTEGER021
  253.     If (INTEGER025 == TSTRING025(30)) Goto LABEL030
  254.     If (STRING042 == "") Goto LABEL010
  255.     Goto LABEL009
  256.     :LABEL010
  257.     FClose 5
  258.     :LABEL011
  259.     If (Left(STRING003, STRING041) == TSTRING025(4)) Goto LABEL014
  260.     STRING040 = "LNG"
  261.     If (TSTRING025(32) == "N") Goto LABEL014
  262.     FOpen 1, PPEPath() + "AREAEXCH.CAL", 0, 0
  263.     If (Ferr(1)) Then
  264.         PrintLn "ERROR NO AREAEXCH.CAL FILE...EXITING"
  265.         End
  266.     Endif
  267.     INTEGER021 = 1
  268.     :LABEL012
  269.     If (Ferr(1)) Goto LABEL013
  270.     FGet 1, TSTRING038(INTEGER021)
  271.     INTEGER023 = Strip(TSTRING038(INTEGER021), ",")
  272.     INTEGER022 = Len(INTEGER023)
  273.     If (INTEGER023 == Left(STRING003, INTEGER022)) STRING040 = "LCL"
  274.     If (INTEGER023 == "0") Goto LABEL013
  275.     Inc INTEGER021
  276.     Goto LABEL012
  277.     :LABEL013
  278.     FClose 1
  279.     :LABEL014
  280.     FClose 1
  281.     If (STRING040 == "LNG") Then
  282.         STRING003 = "1" + STRING003
  283.     Endif
  284.     If (Left(STRING003, STRING041) == TSTRING025(4)) Then
  285.         STRING003 = Right(STRING003, INTEGER024)
  286.     Endif
  287.     FClose 1
  288.     FOpen 1, PPEPath() + "BADNUMS.CAL", 0, 0
  289.     If (Ferr(1)) Then
  290.         PrintLn "ERROR NO BADNUMS.CAL FILE...EXITING"
  291.         End
  292.     Endif
  293.     :LABEL015
  294.     If (Ferr(1)) Goto LABEL016
  295.     FGet 1, STRING012
  296.     If (Mid(STRING003, 2, 3) == Strip(STRING012, "-")) Goto LABEL031
  297.     If (Strip(STRING003, "-") == Strip(STRING012, "-")) Goto LABEL031
  298.     If (STRING003 == Strip(STRING012, "-")) Goto LABEL031
  299.     Goto LABEL015
  300.     :LABEL016
  301.     FClose 1
  302.     If (TSTRING025(17) == "N") Goto LABEL019
  303.     FOpen 2, PPEPath() + "AREACODE.CAL", 0, 0
  304.     If (Ferr(2)) Then
  305.         PrintLn "ERROR NO AREACODE.CAL FILE...EXITING"
  306.         End
  307.     Endif
  308.     :LABEL017
  309.     If (Ferr(2)) Goto LABEL018
  310.     FGet 2, STRING022
  311.     If (Mid(STRING003, 2, 3) == STRING022) Goto LABEL039
  312.     Goto LABEL017
  313.     :LABEL018
  314.     FClose 2
  315.     :LABEL019
  316.     If (TSTRING025(23) == "N") Goto LABEL022
  317.     FOpen 5, PPEPath() + "EXCHANGE.CAL", 0, 0
  318.     If (Ferr(5)) Then
  319.         PrintLn "ERROR NO EXCHANGE.CAL FILE...EXITING"
  320.         End
  321.     Endif
  322.     :LABEL020
  323.     If (Ferr(5)) Goto LABEL021
  324.     FGet 5, STRING024
  325.     If (Mid(STRING003, 2, 3) == Strip(STRING024, "-")) Goto LABEL040
  326.     Goto LABEL020
  327.     :LABEL021
  328.     FClose 5
  329.     :LABEL022
  330.     FOpen 3, PPEPath() + PPEName() + ".FON", 0, 0
  331.     Cls
  332.     Newline
  333.     DispFile PPEPath() + "TWO.DSP", 2 + 1 + 4
  334.     STRING018 = STRING003
  335.     :LABEL023
  336.     If (Ferr(3)) Goto LABEL024
  337.     Gosub LABEL035
  338.     FGet 3, STRING013
  339.     If (STRING003 == Mid(STRING013, 2, 12)) Goto LABEL032
  340.     Goto LABEL023
  341.     :LABEL024
  342.     FClose 3
  343.     If (TSTRING025(24) == "N") Goto LABEL025
  344.     DispFile PPEPath() + "THREE.DSP", 2 + 1 + 4
  345.     FOpen 6, PPEPath() + "TIMEREST.CAL", 0, 0
  346.     If (Ferr(6)) Then
  347.         PrintLn "ERROR NO TIMEREST.CAL FILE...EXITING"
  348.         End
  349.     Endif
  350.     For INTEGER011 = 1 To 11
  351.         FGet 6, TSTRING026(INTEGER011)
  352.     Next
  353.     FClose 6
  354.     Select Case (Dow(Date()))
  355.         Case "0"
  356.             INTEGER012 = 5
  357.         Case "1"
  358.             INTEGER012 = 6
  359.         Case "2"
  360.             INTEGER012 = 7
  361.         Case "3"
  362.             INTEGER012 = 8
  363.         Case "4"
  364.             INTEGER012 = 9
  365.         Case "5"
  366.             INTEGER012 = 10
  367.         Case "6"
  368.             INTEGER012 = 11
  369.     End Select
  370.     Select Case (Hour(Time()))
  371.         Case "00"
  372.             INTEGER013 = 6
  373.         Case "01"
  374.             INTEGER013 = 7
  375.         Case "02"
  376.             INTEGER013 = 8
  377.         Case "03"
  378.             INTEGER013 = 9
  379.         Case "04"
  380.             INTEGER013 = 10
  381.         Case "05"
  382.             INTEGER013 = 11
  383.         Case "06"
  384.             INTEGER013 = 12
  385.         Case "07"
  386.             INTEGER013 = 13
  387.         Case "08"
  388.             INTEGER013 = 14
  389.         Case "09"
  390.             INTEGER013 = 15
  391.         Case "10"
  392.             INTEGER013 = 16
  393.         Case "11"
  394.             INTEGER013 = 17
  395.         Case "12"
  396.             INTEGER013 = 18
  397.         Case "13"
  398.             INTEGER013 = 19
  399.         Case "14"
  400.             INTEGER013 = 20
  401.         Case "15"
  402.             INTEGER013 = 21
  403.         Case "16"
  404.             INTEGER013 = 22
  405.         Case "17"
  406.             INTEGER013 = 23
  407.         Case "18"
  408.             INTEGER013 = 24
  409.         Case "19"
  410.             INTEGER013 = 25
  411.         Case "20"
  412.             INTEGER013 = 26
  413.         Case "21"
  414.             INTEGER013 = 27
  415.         Case "22"
  416.             INTEGER013 = 28
  417.         Case "23"
  418.             INTEGER013 = 29
  419.     End Select
  420.     If (Mid(TSTRING026(INTEGER012), INTEGER013, 1) == " ") Goto LABEL041
  421.     :LABEL025
  422.     STRING003 = STRING018
  423.     DispFile PPEPath() + "FOUR.DSP", 2 + 1 + 4
  424.     StartDisp 1
  425.     DispFile PPEPath() + "FIVE.DSP", 2 + 1 + 4
  426.     Delay (10 * 182) / 10
  427.     If (U_Sec == SysopSec()) Then
  428.         If (TSTRING025(25) == "Y") Goto LABEL026
  429.     Endif
  430.     CdChkOff
  431.     DtrOff
  432.     Gosub LABEL036
  433.     KbdChkOff
  434.     STRING034 = STRING033 + STRING006
  435.     SendModem STRING034
  436.     STRING037 = TSTRING025(11)
  437.     For INTEGER019 = STRING037 To 0 Step -1
  438.         AnsiPos 55, 15
  439.         PrintLn "@X7ECountdown Delay = @X74", INTEGER019, "@X78 @X0F"
  440.         Delay (1 * 182) / 10
  441.     Next
  442.     Log "Attempting to call -> " + STRING003, 0
  443.     DtrOn
  444.     STRING035 = STRING036 + STRING006
  445.     SendModem STRING035
  446.     Delay (2 * 182) / 10
  447.     STRING004 = STRING005 + STRING011 + STRING003 + STRING006
  448.     INTEGER009 = TSTRING025(14)
  449.     WaitFor "CONNECT", BOOLEAN001, 1
  450.     For INTEGER003 = 1 To TSTRING025(12)
  451.         AnsiPos 55, 16
  452.         PrintLn "@X7EDial Attempt    =@X79 ", INTEGER003, "@X0E"
  453.         SendModem STRING004
  454.         AnsiPos 55, 17
  455.         PrintLn "@X7ERinging Status  = @X74Ring  @X08"
  456.         WaitFor "CONNECT", BOOLEAN001, INTEGER009
  457.         If (BOOLEAN001) Goto LABEL026
  458.     Next
  459.     STRING008 = "Unsuccessful (No answer/connect)"
  460.     Goto LABEL029
  461.     :LABEL026
  462.     KbdChkOn
  463.     CdChkOn
  464.     INTEGER018 = 0
  465.     OpText "Calling back for verification"
  466.     :LABEL027
  467.     Inc INTEGER018
  468.     Cls
  469.     PrintLn "@X70┌─────────────────────────────────────────────────────────────────────────────@X7F┐@X0F"
  470.     PrintLn "@X70│@X71@BOARDNAME:76C@ @X7F│@X0F"
  471.     PrintLn "@X70│@X71@OPTEXT:76C@ @X7F│@X0F"
  472.     PrintLn "@X70└@X7F─────────────────────────────────────────────────────────────────────────────┘@X0F"
  473.     For INTEGER019 = 4 To 0 Step -1
  474.         AnsiPos 0, 5
  475.         PrintLn "@X70┌─────────────────────────────────────────────────────────────────────────────@X7F┐@X0F"
  476.         PrintLn "@X70│ @X71Attempt @X74", INTEGER018, " @X71of @X743", "                                    @X71Please wait for @X74", INTEGER019, "@X71 seconds @X7F│@X0F"
  477.         PrintLn "@X70└@X7F─────────────────────────────────────────────────────────────────────────────┘@X0F"
  478.         Delay (1 * 182) / 10
  479.     Next
  480.     KeyFlush
  481.     StartDisp 1
  482.     DispFile PPEPath() + "seventee.dsp", 2 + 1 + 4
  483.     Newline
  484.     STRING032 = ""
  485.     InputStr "    @X0BFull Name:@X0E ", STRING032, 10, 35, Mask_Ascii(), 8
  486.     Newline
  487.     STRING007 = ""
  488.     InputStr "     @X0BPassword:@X0E ", STRING007, 10, 12, Mask_Ascii(), 8 + 1
  489.     If (INTEGER018 == 3) Goto LABEL028
  490.     If (STRING032 <> U_Name()) Goto LABEL027
  491.     If (STRING007 <> U_Pwd) Goto LABEL027
  492.     :LABEL028
  493.     If (Len(STRING003) == 7) Then
  494.         STRING003 = TSTRING025(4) + STRING003
  495.         STRING014 = Left(STRING003, 3)
  496.         STRING015 = Mid(STRING003, 4, 3)
  497.         STRING016 = Mid(STRING003, 7, 4)
  498.         STRING003 = STRING014 + "-" + STRING015 + "-" + STRING016
  499.     Endif
  500.     If (Len(STRING003) == 11) Then
  501.         STRING003 = Right(STRING003, 10)
  502.         STRING014 = Left(STRING003, 3)
  503.         STRING015 = Mid(STRING003, 4, 3)
  504.         STRING016 = Mid(STRING003, 7, 4)
  505.         STRING003 = STRING014 + "-" + STRING015 + "-" + STRING016
  506.     Endif
  507.     If ((U_Name() == STRING032) && (U_Pwd == STRING007)) Then
  508.         STRING008 = "Successful"
  509.         If (TSTRING025(15) == "0") Then
  510.             DATE003 = "00-00-00"
  511.         ElseIf (TSTRING025(15) > "0") Then
  512.             DATE003 = Date() + TSTRING025(15)
  513.         Endif
  514.         U_ExpDate = DATE003
  515.         U_Sec = TSTRING025(2)
  516.         STRING023 = TSTRING025(18)
  517.         U_ExpSec = STRING023
  518.         DATE002 = Date()
  519.         STRING020 = DATE002
  520.         STRING021 = "LoopBack·" + STRING020 + "·" + STRING003
  521.         Select Case (TSTRING025(16))
  522.             Case "1"
  523.                 U_Cmnt1 = STRING021
  524.             Case "2"
  525.                 U_Cmnt2 = STRING021
  526.         End Select
  527.         Newline
  528.         Log "------- CALLBACK SUCCESSFUL -------", 1
  529.         DispFile PPEPath() + "SIX.DSP", 2 + 1 + 4
  530.         FAppend 1, PPEPath() + PPEName() + ".FON", 2, 0
  531.         FPutLn 1, Chr(34), STRING003, Chr(34), ",", Chr(34), U_Name(), Chr(34), ",", Chr(34), Date(), Chr(34)
  532.         FClose 1
  533.         If (TSTRING025(19) == "Y") Then
  534.             Message TSTRING025(20), "SYSOP", U_Name(), "LoopBack Successful", "R", Date(), 0, 0, PPEPath() + "SYSOP.MSG"
  535.         Endif
  536.         If (TSTRING025(21) == "Y") Then
  537.             Message TSTRING025(22), U_Name(), "SYSOP", "Welcome....", "R", Date(), 0, 0, PPEPath() + "NEWUSER.MSG"
  538.         Endif
  539.         If (TSTRING025(26) > "0") Then
  540.             AdjBytes TSTRING025(26)
  541.         Endif
  542.         PutUser
  543.     Else
  544.         STRING008 = "Unsuccessful (Incorrect Login)"
  545.         Newlines 2
  546.         Log "------- CALLBACK UNSUCCESSFUL -------", 1
  547.         DispFile PPEPath() + "SEVEN.DSP", 2 + 1 + 4
  548.         FAppend 1, PPEPath() + PPEName() + ".BAD", 2, 0
  549.         FPutLn 1, Chr(34), STRING003, Chr(34), ",", Chr(34), U_Name(), Chr(34), ",", Chr(34), Date(), Chr(34)
  550.         FClose 1
  551.         FAppend 1, PPEPath() + "CallBack.bad", 2, 0
  552.         FPutLn 1, Chr(34), STRING003, Chr(34), ",", Chr(34), U_Name(), Chr(34), ",", Chr(34), Date(), Chr(34)
  553.         FClose 1
  554.     Endif
  555.     :LABEL029
  556.     KbdChkOn
  557.     CdChkOn
  558.     Hangup
  559.     STRING039 = Time()
  560.     Log "Exited LoopBack normally at  -> " + STRING039, 0
  561.     End
  562.     :LABEL030
  563.     Newline
  564.     DispFile PPEPath() + "NINETEEN.DSP", 2 + 1 + 4
  565.     STRING039 = Time()
  566.     Log "Exited LoopBack with too many # attempts at-> " + STRING039, 0
  567.     Delay (2 * 182) / 10
  568.     Hangup
  569.     :LABEL031
  570.     STRING003 = Strip(STRING003, "-")
  571.     STRING003 = Strip(STRING003, "(")
  572.     STRING003 = Strip(STRING003, ")")
  573.     FAppend 2, PPEPath() + PPEName() + ".!!!", 2, 0
  574.     FPutLn 2, Chr(34), STRING003, Chr(34), ",", Chr(34), U_Name(), Chr(34), ",", Chr(34), Date(), Chr(34)
  575.     FClose 2
  576.     Newline
  577.     DispFile PPEPath() + "NINE.DSP", 2 + 1 + 4
  578.     STRING039 = Time()
  579.     Log "Exited LoopBack with a BAD Number! at  -> " + STRING039, 0
  580.     Wait
  581.     Hangup
  582.     End
  583.     :LABEL032
  584.     PrintLn " "
  585.     DispFile PPEPath() + "TEN.DSP", 2 + 1 + 4
  586.     STRING039 = Time()
  587.     Log "Exited LoopBack with a duplicate number at  -> " + STRING039, 0
  588.     End
  589.     :LABEL033
  590.     If (TSTRING025(33) == "Y") Then
  591.         DispFile PPEPath() + "eight.dsp", 2 + 1 + 4
  592.     Endif
  593.     STRING039 = Time()
  594.     Log "Exited LoopBack as security was too high at-> " + STRING039, 0
  595.     Delay (2 * 182) / 10
  596.     End
  597.     If (Len(STRING003) == 7) Then
  598.         Return
  599.     Endif
  600.     If (Upper(TSTRING025(6)) == "Y") Goto LABEL034
  601.     Newline
  602.     DispFile PPEPath() + "ELEVEN.DSP", 2 + 1 + 4
  603.     STRING039 = Time()
  604.     Log "Exited LoopBack because # was long dist at  -> " + STRING039, 0
  605.     End
  606.     DispFile PPEPath() + "TWELVE.DSP", 2 + 1 + 4
  607.     STRING039 = Time()
  608.     Log "Exited LoopBack Sysop Callback at  -> " + STRING039, 0
  609.     End
  610.     :LABEL034
  611.     Call PPEPath() + "postcard.ppe"
  612.     End
  613.     :LABEL035
  614.     If (Len(STRING003) == 7) Then
  615.         STRING003 = TSTRING025(4) + STRING003
  616.         STRING014 = Left(STRING003, 3)
  617.         STRING015 = Mid(STRING003, 4, 3)
  618.         STRING016 = Mid(STRING003, 7, 4)
  619.         STRING003 = STRING014 + "-" + STRING015 + "-" + STRING016
  620.     Endif
  621.     If (Len(STRING003) == 11) Then
  622.         STRING003 = Right(STRING003, 10)
  623.         STRING014 = Left(STRING003, 3)
  624.         STRING015 = Mid(STRING003, 4, 3)
  625.         STRING016 = Mid(STRING003, 7, 4)
  626.         STRING003 = STRING014 + "-" + STRING015 + "-" + STRING016
  627.     Endif
  628.     Return
  629.     :LABEL036
  630.     INTEGER010 = 0
  631.     FOpen 5, PPEPath() + PPEName() + ".FON", 0, 0
  632.     :LABEL037
  633.     If (Ferr(5)) Goto LABEL038
  634.     Inc INTEGER010
  635.     FGet 5, STRING019
  636.     Goto LABEL037
  637.     :LABEL038
  638.     FClose 5
  639.     INTEGER010 = INTEGER010 - 1
  640.     StartDisp 1
  641.     AnsiPos 0, 11
  642.     Print "@X0F"
  643.     Cls
  644.     Newlines 11
  645.     PrintLn "@X70┌─────────────────────────────────────────────────────────────────────────────@X7F┐@X08"
  646.     PrintLn "@X70│ @X7ETotal users verified:                  Verification number:                 @X7F│@X08"
  647.     PrintLn "@X70└@X7F─────────────────────────────────────────────────────────────────────────────┘@X08"
  648.     PrintLn "@X70┌───────────────────────────────────────────────────@X7F┐@X70┌────────────────────────@X7F┐@X08"
  649.     PrintLn "@X70│ @X75Data Number   @X76Date      @X71User Name                 @X7F│@X70│                        @X7F│@X08"
  650.     PrintLn "@X70│ @X75────────────  @X76────────  @X71───────────────────────── @X7F│@X70│                        @X7F│@X08"
  651.     PrintLn "@X70│                                                   @X7F│@X70│@X7EDelay Status    = @XF4ACTIVE@X7F│@X08"
  652.     PrintLn "@X70│                                                   @X7F│@X70└@X7F────────────────────────┘@X08"
  653.     PrintLn "@X70│                                                   @X7F│@X70┌────────────────────────@X7F┐@X08"
  654.     PrintLn "@X70│                                                   @X7F│@X70│      @X7ALoopBack@X7E(tm)      @X7F│@X08"
  655.     PrintLn "@X70│                                                   @X7F│@X70│   @X71 Bill Marcy (@X74c@X71)93    @X7F│@X08"
  656.     PrintLn "@X70└@X7F───────────────────────────────────────────────────┘@X70└@X7F────────────────────────┘@X01"
  657.     AnsiPos 25, 12
  658.     Print "@X74", INTEGER010
  659.     AnsiPos 63, 12
  660.     Print "", STRING003
  661.     AnsiPos 1, 17
  662.     INTEGER016 = 1
  663.     INTEGER014 = INTEGER010 - 4
  664.     For INTEGER015 = INTEGER014 To INTEGER010
  665.         TSTRING030(INTEGER016) = ReadLine(PPEPath() + PPEName() + ".FON", INTEGER015)
  666.         Inc INTEGER016
  667.     Next
  668.     TSTRING031(1) = Len(TSTRING030(1))
  669.     INTEGER017 = TSTRING031(1) - 28
  670.     TSTRING031(2) = Mid(TSTRING030(1), 17, INTEGER017)
  671.     PrintLn "@X70│@X75 ", Strip(Left(TSTRING030(1), 14), Chr(34)), " @X76 ", Strip(Right(TSTRING030(1), 10), Chr(34)), " @X71 ", TSTRING031(2)
  672.     TSTRING031(1) = Len(TSTRING030(2))
  673.     INTEGER017 = TSTRING031(1) - 28
  674.     TSTRING031(2) = Mid(TSTRING030(2), 17, INTEGER017)
  675.     PrintLn "@X70│@X75 ", Strip(Left(TSTRING030(2), 14), Chr(34)), " @X76 ", Strip(Right(TSTRING030(2), 10), Chr(34)), " @X71 ", TSTRING031(2)
  676.     TSTRING031(1) = Len(TSTRING030(3))
  677.     INTEGER017 = TSTRING031(1) - 28
  678.     TSTRING031(2) = Mid(TSTRING030(3), 17, INTEGER017)
  679.     PrintLn "@X70│@X75 ", Strip(Left(TSTRING030(3), 14), Chr(34)), " @X76 ", Strip(Right(TSTRING030(3), 10), Chr(34)), " @X71 ", TSTRING031(2)
  680.     TSTRING031(1) = Len(TSTRING030(4))
  681.     INTEGER017 = TSTRING031(1) - 28
  682.     TSTRING031(2) = Mid(TSTRING030(4), 17, INTEGER017)
  683.     PrintLn "@X70│@X75 ", Strip(Left(TSTRING030(4), 14), Chr(34)), " @X76 ", Strip(Right(TSTRING030(4), 10), Chr(34)), " @X71 ", TSTRING031(2)
  684.     TSTRING031(1) = Len(TSTRING030(5))
  685.     INTEGER017 = TSTRING031(1) - 28
  686.     TSTRING031(2) = Mid(TSTRING030(5), 17, INTEGER017)
  687.     PrintLn "@X70│@X75 ", Strip(Left(TSTRING030(5), 14), Chr(34)), " @X76 ", Strip(Right(TSTRING030(5), 10), Chr(34)), " @X71 ", TSTRING031(2)
  688.     Return
  689.     :LABEL039
  690.     Newline
  691.     Newline
  692.     DispFile PPEPath() + "FOURTEEN.DSP", 2 + 1 + 4
  693.     STRING039 = Time()
  694.     Log "Exited LoopBack with an excluded area code at-> " + STRING039, 0
  695.     Delay (2 * 182) / 10
  696.     End
  697.     :LABEL040
  698.     Newline
  699.     Newline
  700.     DispFile PPEPath() + "FIFTEEN.DSP", 2 + 1 + 4
  701.     STRING039 = Time()
  702.     Log "Exited LoopBack with an excluded exchange at-> " + STRING039, 0
  703.     Delay (2 * 182) / 10
  704.     End
  705.     :LABEL041
  706.     DispFile PPEPath() + "SIXTEEN.DSP", 2 + 1 + 4
  707.     STRING017 = "Y"
  708.     Newline
  709.     InputYN "@X0EWould you like to view the Call-Back schedule (Y/n) ", STRING017, 10
  710.     STRING039 = Time()
  711.     Log "Exited LoopBack due to a time restrict -> " + STRING039, 0
  712.     If (Upper(STRING017) == "N") Then
  713.         End
  714.     Endif
  715.     Select Case (Dow(Date()))
  716.         Case "0"
  717.             STRING028 = "SUN"
  718.         Case "1"
  719.             STRING028 = "MON"
  720.         Case "2"
  721.             STRING028 = "TUE"
  722.         Case "3"
  723.             STRING028 = "WED"
  724.         Case "4"
  725.             STRING028 = "THU"
  726.         Case "5"
  727.             STRING028 = "FRI"
  728.         Case "6"
  729.             STRING028 = "SAT"
  730.     End Select
  731.     STRING029 = Hour(Time())
  732.     Cls
  733.     StartDisp 1
  734.     FOpen 6, PPEPath() + "TIMEREST.CAL", 0, 0
  735.     If (Ferr(6)) Then
  736.         PrintLn "ERROR NO TIMEREST.CAL FILE...EXITING"
  737.         End
  738.     Endif
  739.     PrintLn "                     @X0ALoopBack(tm) Callback Schedule"
  740.     Newline
  741.     For INTEGER011 = 1 To 11
  742.         FGet 6, TSTRING027(INTEGER011)
  743.         PrintLn "                    @X0E " + TSTRING027(INTEGER011)
  744.     Next
  745.     FClose 6
  746.     PrintLn 
  747.     PrintLn "@X0BThe current DOW is@X0C " + STRING028 + "@X0B and the current hour is@X0C " + STRING029
  748.     PrintLn 
  749.     PrintLn "@X0BTimes start with Midnight or 00 hours military time, and go through to 23:00."
  750.     PrintLn "If there is an " + Chr(34) + "@X0Ex@X0B" + Chr(34) + " in the time slot for the day, the system can call you back."
  751.     PrintLn 
  752.     PrintLn "If there is no " + Chr(34) + "@X0Ex@X0B" + Chr(34) + " in this time slot, please try calling back at a time"
  753.     PrintLn "designated above."
  754.     Delay (10 * 182) / 10
  755.     End
  756.  
  757. ;------------------------------------------------------------------------------
  758. ;
  759. ; Usage report (before postprocessing)
  760. ;
  761. ; ■ Statements used :
  762. ;
  763. ;    18      End
  764. ;    7       Cls
  765. ;    1       Wait
  766. ;    187     Goto 
  767. ;    178     Let 
  768. ;    4       Print 
  769. ;    88      PrintLn 
  770. ;    126     If 
  771. ;    17      DispFile 
  772. ;    12      FOpen 
  773. ;    4       FAppend 
  774. ;    18      FClose 
  775. ;    11      FGet 
  776. ;    4       FPutLn 
  777. ;    6       StartDisp 
  778. ;    3       Hangup
  779. ;    1       GetUser
  780. ;    1       PutUser
  781. ;    15      Log 
  782. ;    3       InputStr 
  783. ;    3       InputYN 
  784. ;    2       Gosub 
  785. ;    3       Return
  786. ;    1       DtrOn
  787. ;    1       DtrOff
  788. ;    2       CdChkOn
  789. ;    1       CdChkOff
  790. ;    11      Delay 
  791. ;    3       SendModem 
  792. ;    7       Inc 
  793. ;    15      Newline
  794. ;    2       Newlines 
  795. ;    1       Call 
  796. ;    2       WaitFor 
  797. ;    2       KbdChkOn
  798. ;    1       KbdChkOff
  799. ;    1       OpText 
  800. ;    1       RdUNet 
  801. ;    1       WrUNet 
  802. ;    9       AnsiPos 
  803. ;    2       Message 
  804. ;    1       AdjBytes 
  805. ;    1       KeyFlush
  806. ;
  807. ;
  808. ; ■ Functions used :
  809. ;
  810. ;    9       -
  811. ;    12      *
  812. ;    11      /
  813. ;    152     +
  814. ;    10      -
  815. ;    92      ==
  816. ;    4       <>
  817. ;    12      <
  818. ;    11      <=
  819. ;    2       >
  820. ;    23      >=
  821. ;    91      !
  822. ;    23      &&
  823. ;    11      ||
  824. ;    17      Len(
  825. ;    5       Upper()
  826. ;    20      Mid()
  827. ;    14      Left()
  828. ;    8       Right()
  829. ;    15      Ferr()
  830. ;    87      Chr()
  831. ;    1       Asc()
  832. ;    1       RTrim()
  833. ;    22      Date()
  834. ;    37      Time()
  835. ;    8       U_Name()
  836. ;    14      Dow()
  837. ;    25      Hour()
  838. ;    25      Strip()
  839. ;    2       Mask_Ascii()
  840. ;    38      PPEPath()
  841. ;    2       PcbNode()
  842. ;    2       ReadLine()
  843. ;    2       SysopSec()
  844. ;    1       UN_Stat()
  845. ;    1       UN_Name()
  846. ;    1       UN_City()
  847. ;    10      PPEName()
  848. ;
  849. ;------------------------------------------------------------------------------
  850. ;
  851. ; Analysis flags : WBMCaHs
  852. ;
  853. ; W - Write user ■ 5
  854. ;     Program writes a user record. Although this may be normal for a
  855. ;     User Editor, it may also be a way to modify an account level.
  856. ;     ■ Search for : PUTUSER
  857. ;
  858. ; B - Brute hangup ■ 1
  859. ;     Program hangup without notification. This may be a good way to
  860. ;     disconnect a user, but if used randomly, may be very nasty
  861. ;     ■ Search for : HANGUP, DTROFF
  862. ;
  863. ; M - Send text to modem only ■ 4
  864. ;     Some informations are sent only to the modem, not to the local
  865. ;     screen, this is a well known way to make stealth backdoors, Check!
  866. ;     ■ Search for : SENDMODEM, MPRINT, MPRINTLN
  867. ;
  868. ; C - Call child PPE ■ 3
  869. ;     This is usually normal, but may be a tricky way to launch some
  870. ;     sysop-only commands.
  871. ;     ■ Search for : CALL
  872. ;
  873. ; a - Adjust ratio ■ 4
  874. ;     User's ratio is adjusted by changing the amount of files/bytes
  875. ;     uploaded. This may be normal for a user editor.
  876. ;     ■ Search for : ADJBYTES, ADJDBYTES, ADJTBYTES, ADJTFILES
  877. ;
  878. ; H - Read Password or Password History ■ 5
  879. ;     Program is reading the user's password or last password history
  880. ;     This may be ok for a password manager, but it is very suspect. Check!
  881. ;     ■ Search for : U_PWDHIST, U_PWD
  882. ;
  883. ; s - Sysop level access ■ 5
  884. ;     Program is reading the sysop access level, this may be normal
  885. ;     but still it is very suspect. It is the best way to give a user
  886. ;     all priviledges. Check!
  887. ;     ■ Search for : SYSOPSEC()
  888. ;
  889. ;------------------------------------------------------------------------------
  890. ;
  891. ; Postprocessing report
  892. ;
  893. ;    11      For/Next
  894. ;    0       While/EndWhile
  895. ;    29      If/Then or If/Then/Else
  896. ;    5       Select Case
  897. ;
  898. ;------------------------------------------------------------------------------
  899. ;                 AEGiS Corp - Break the routines, code against the machines!
  900. ;------------------------------------------------------------------------------
  901.