home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
DP Tool Club 15
/
CD_ASCQ_15_070894.iso
/
vrac
/
bcon110.zip
/
FEEDBACK.PPE
(
.txt
)
< prev
next >
Wrap
PCBoard Programming Language Executable
|
1994-05-02
|
10KB
|
668 lines
;------------------------------------------------------------------------------
; .ss.
; `²²'
; .,sS$Ss,,s$ .,sS$$$Ss. .,sS$Ss,,s$ .ss. .sSs.
; .d$$²^°²$$$$'.d$P²°^^²$P'.d$$²^°²$$$$'.$$$' .$$$²Sb,.
; $$$' .$$$' $$$²Sçsµ²' .$$$' .$$$'.$$$' .$$$' `$$b.
; $$$b,,d$$$' ,$$$b,....,s$$$$b,,d$$$'.$$$;.,$$$' ;$$$
; `²S$$S²²S$$S²°²S$$$$S²°°²S$$$$$$',$$S²°²S$S'.sS$$$P²'
; .sS²°$$$²²°"' d²°'
; .$$² .$$'
; $$$.,d$$'
; `²S$$S²'
;------------------------------------------------------------------------------
; P.P.L.X. 2.OO (C)1996 - Lone Runner / AEGiS CoRP'96
;------------------------------------------------------------------------------
; PPE 2.OO (plain) - Analysis ON - Postprocessing ON
;------------------------------------------------------------------------------
Boolean BOOLEAN001
Boolean BOOLEAN002
Boolean BOOLEAN003
Boolean BOOLEAN004
Boolean BOOLEAN005
Integer INTEGER001
Integer INTEGER002
Integer INTEGER003
Integer INTEGER004
Integer INTEGER005
Integer INTEGER006
Integer INTEGER007
Integer INTEGER008
Integer INTEGER009
Integer INTEGER010
Integer INTEGER011
Integer INTEGER012
Integer INTEGER013
Integer INTEGER014
Integer INTEGER015
Integer INTEGER016
Integer INTEGER017
Integer INTEGER018
Integer INTEGER019
Integer INTEGER020
Integer INTEGER021
Integer INTEGER022
Integer INTEGER023
Integer INTEGER024
String STRING001
String STRING002
String STRING003
String STRING004
String STRING005
String STRING006
String STRING007
String STRING008
String STRING009
String STRING010
String STRING011
String STRING012
String STRING013
String STRING014
String STRING015
String STRING016
String STRING017
String STRING018
String STRING019
String STRING020
String STRING021
String STRING022
String STRING023
String STRING024
String STRING025
String STRING026
String STRING027
String STRING028
String STRING029
String STRING030
;------------------------------------------------------------------------------
STRING022 = PPEPath() + "cfg\fbmenus.cfg"
BOOLEAN003 = 0
BOOLEAN004 = 0
BOOLEAN001 = 0
STRING001 = PPEPath() + "\graph\fbtext"
If (LangExt() <> "") Then
If (BOOLEAN001) Then
PrintLn "Langext = " + LangExt()
Wait
Endif
If (Exist(STRING001 + LangExt())) STRING001 = STRING001 + LangExt()
Endif
STRING017 = PPEPath() + "\work\mxlog." + String(PcbNode())
STRING018 = PPEPath() + "\work\fbtmp." + String(PcbNode())
STRING002 = PPEPath() + "feedback.cfg"
BOOLEAN005 = 0
Tokenize TokenStr()
If (TokCount() == 2) Then
If (GetToken() == "LOGON") Then
BOOLEAN005 = 1
STRING023 = GetToken()
Endif
Endif
Tokenize ReadLine(STRING002, 2)
INTEGER002 = GetToken()
If (Upper(GetToken()) == "YES") Then
BOOLEAN002 = 1
Else
BOOLEAN002 = 0
Endif
INTEGER015 = GetToken()
STRING012 = PPEPath() + "mx.cfg"
If (BOOLEAN002) Then
If (LoggedOn()) Goto LABEL001
If (Exist(STRING012)) Then
If (Upper(ReadLine(STRING012, 3)) == "YES") Then
FAppend 3, STRING017, 1, 0
Goto LABEL001
Endif
BOOLEAN002 = 0
Endif
Endif
:LABEL001
If (LoggedOn()) Then
GetUser
STRING008 = U_Name()
Endif
INTEGER011 = 1
STRING014 = Chr(13)
STRING015 = Chr(27)
STRING016 = Chr(7)
INTEGER001 = ReadLine(STRING002, 1)
If (BOOLEAN002) Then
STRING003 = "Feedback started at " + String(Time())
Gosub LABEL018
Endif
If (AnsiOn()) Goto LABEL002
If (BOOLEAN002) Then
STRING003 = "No ansi, exiting feedback at " + String(Time())
Gosub LABEL018
Endif
PrintLn
PrintLn "No ansi capability, exiting feedback"
End
:LABEL002
StartDisp 1
INTEGER011 = 1
Tokenize ReadLine(STRING022, 1)
STRING024 = GetToken()
INTEGER016 = GetToken()
:LABEL003
STRING025 = Random(STRING024 - 1) + 1
Tokenize ReadLine(STRING022, 1 + STRING025)
INTEGER021 = STRING025
INTEGER008 = GetToken()
INTEGER004 = GetToken()
INTEGER005 = GetToken()
STRING027 = GetToken()
STRING020 = GetToken()
STRING028 = GetToken()
STRING030 = PPEPath() + "mnutxt\fbmnu"
If (Exist(STRING030 + String(STRING025) + LangExt())) Then
STRING030 = PPEPath() + "mnutxt\fbmnu" + String(STRING025) + LangExt()
ElseIf (Exist(STRING030 + String(STRING025))) Then
STRING030 = PPEPath() + "mnutxt\fbmnu" + String(STRING025)
ElseIf (Exist(STRING030 + LangExt())) Then
STRING030 = PPEPath() + "mnutxt\fbmnu" + LangExt()
Endif
If (INTEGER001 == 1) Goto LABEL010
If (BOOLEAN005) Goto LABEL010
INTEGER012 = INTEGER001
:LABEL004
INTEGER006 = INTEGER004
INTEGER007 = INTEGER005
If (BOOLEAN004) Goto LABEL005
DefColor
Cls
DispFile PPEPath() + "graph\feed" + String(INTEGER021), 1 + 4
:LABEL005
Color DefColor()
STRING029 = ReadLine(STRING030, 1)
INTEGER024 = Len(StripAtx(STRING029)) - 4
If (INTEGER016 >= INTEGER001) Then
INTEGER011 = 1
For INTEGER013 = 1 To INTEGER001
AnsiPos INTEGER006 - INTEGER024, INTEGER007 + INTEGER013 - 1
STRING006 = Chr(Asc("a") + INTEGER013)
INTEGER023 = (INTEGER013 - 1) * 2 + 1
STRING011 = STRING027 + ReadLine(STRING030, INTEGER023 + 1)
STRING011 = STRING011 + STRING028 + ReadLine(STRING030, INTEGER023 + 2)
Print ReplaceStr(STRING029, "%SEP%", STRING006), STRING011
Next
INTEGER019 = INTEGER011
INTEGER018 = INTEGER011 + INTEGER001 - 1
Else
If (INTEGER011 + INTEGER016 <= INTEGER012) INTEGER017 = INTEGER011 + INTEGER016 - 1
If (INTEGER011 + INTEGER016 > INTEGER012) INTEGER017 = INTEGER012
INTEGER013 = INTEGER011 + INTEGER016 - INTEGER012
INTEGER019 = INTEGER011
INTEGER018 = INTEGER017
Color DefColor()
INTEGER014 = INTEGER011 % INTEGER016
For INTEGER013 = INTEGER011 To INTEGER017
If (INTEGER014 == 0) INTEGER014 = INTEGER016
AnsiPos INTEGER006 - INTEGER024, INTEGER007 + INTEGER014 - 1
STRING006 = Chr(Asc("a") + INTEGER014)
INTEGER023 = (INTEGER013 - 1) * 2 + 1
STRING011 = STRING027 + ReadLine(STRING030, INTEGER023 + 1)
STRING011 = STRING011 + STRING028 + ReadLine(STRING030, INTEGER023 + 2)
Print ReplaceStr(STRING029, "%SEP%", STRING006), STRING011
Inc INTEGER014
Next
If (INTEGER011 + INTEGER016 > INTEGER012) Then
INTEGER013 = INTEGER011 + INTEGER016 - INTEGER012
INTEGER003 = GetY()
For INTEGER014 = 1 To INTEGER013 - 1
AnsiPos INTEGER006 - INTEGER024, INTEGER003 + INTEGER014
Print Space(INTEGER008)
Next
Endif
Endif
Newline
BOOLEAN004 = 0
AnsiPos INTEGER006, INTEGER007
Print STRING020, StripAtx(ReadLine(STRING030, (INTEGER011 - 1) * 2 + 1 + 1))
:LABEL006
STRING007 = Inkey()
If (BOOLEAN001) If (STRING007 <> "") PrintLn STRING007
If (((Upper(STRING007) == "A") || (STRING007 == "UP")) || (STRING007 == "LEFT")) Then
INTEGER014 = INTEGER011 % INTEGER016
If (INTEGER014 == 0) INTEGER014 = INTEGER016
AnsiPos INTEGER006, INTEGER007 + INTEGER014 - 1
Print ReadLine(STRING030, (INTEGER011 - 1) * 2 + 1 + 1)
If (INTEGER011 % INTEGER016 == 1) Then
INTEGER011 = INTEGER011 + INTEGER016 - 1
If (INTEGER011 > INTEGER012) INTEGER011 = INTEGER012
Else
INTEGER011 = INTEGER011 - 1 % INTEGER016
Endif
INTEGER014 = INTEGER011 % INTEGER016
If (INTEGER014 == 0) INTEGER014 = INTEGER016
AnsiPos INTEGER006, INTEGER007 + INTEGER014 - 1
Print STRING020, StripAtx(ReadLine(STRING030, (INTEGER011 - 1) * 2 + 1 + 1))
Goto LABEL006
ElseIf (((Upper(STRING007) == "Z") || (STRING007 == "DOWN")) || (STRING007 == "RIGHT")) Then
INTEGER014 = INTEGER011 % INTEGER016
If (INTEGER014 == 0) INTEGER014 = INTEGER016
AnsiPos INTEGER006, INTEGER007 + INTEGER014 - 1
Print ReadLine(STRING030, (INTEGER011 - 1) * 2 + 1 + 1)
If (INTEGER011 % INTEGER016 == 0) Then
INTEGER011 = INTEGER011 - INTEGER016 - 1
ElseIf (INTEGER011 == INTEGER012) Then
INTEGER011 = INTEGER019
Else
INTEGER011 = INTEGER011 + 1
Endif
INTEGER014 = INTEGER011 % INTEGER016
If (INTEGER014 == 0) INTEGER014 = INTEGER016
AnsiPos INTEGER006, INTEGER007 + INTEGER014 - 1
Print STRING020, StripAtx(ReadLine(STRING030, (INTEGER011 - 1) * 2 + 1 + 1))
Goto LABEL006
Else
Select Case (STRING007)
Case STRING014
If (STRING007 <> STRING014) INTEGER011 = STRING007
INTEGER013 = INTEGER011
Gosub LABEL010
INTEGER011 = INTEGER019
Goto LABEL003
Case "HOME"
INTEGER014 = INTEGER011 % INTEGER016
If (INTEGER014 == 0) INTEGER014 = INTEGER016
AnsiPos INTEGER006, INTEGER007 + INTEGER014 - 1
Print ReadLine(STRING030, (INTEGER011 - 1) * 2 + 1 + 1)
INTEGER011 = INTEGER019
INTEGER014 = INTEGER011 % INTEGER016
If (INTEGER014 == 0) INTEGER014 = INTEGER016
AnsiPos INTEGER006, INTEGER007 + INTEGER014 - 1
Print STRING020, StripAtx(ReadLine(STRING030, (INTEGER011 - 1) * 2 + 1 + 1))
Goto LABEL006
Case "END"
INTEGER014 = INTEGER011 % INTEGER016
If (INTEGER014 == 0) INTEGER014 = INTEGER016
AnsiPos INTEGER006, INTEGER007 + INTEGER014 - 1
Print ReadLine(STRING030, (INTEGER011 - 1) * 2 + 1 + 1)
INTEGER011 = INTEGER018
INTEGER014 = INTEGER011 % INTEGER016
If (INTEGER014 == 0) INTEGER014 = INTEGER016
AnsiPos INTEGER006, INTEGER007 + INTEGER014 - 1
Print STRING020, StripAtx(ReadLine(STRING030, (INTEGER011 - 1) * 2 + 1 + 1))
Goto LABEL006
Case "?"
DefColor
INTEGER009 = GetX()
INTEGER010 = GetY()
AnsiPos 1, 23
SaveScrn
Cls
DispFile PPEPath() + "graph\fbhlp", 1 + 4
Wait
RestScrn
AnsiPos INTEGER009, INTEGER010
Goto LABEL006
Case ">", "CTRL PGDN"
If (INTEGER018 + INTEGER016 <= INTEGER012) Then
INTEGER011 = INTEGER018 + 1
BOOLEAN004 = 1
Goto LABEL004
Else
If (INTEGER018 <> INTEGER012) Then
INTEGER011 = INTEGER018 + 1
BOOLEAN004 = 1
Goto LABEL004
Endif
MPrint STRING016
Goto LABEL006
Endif
Case "<", "CTRL PGUP"
If (INTEGER019 - INTEGER016 >= 1) Then
INTEGER011 = INTEGER019 - INTEGER016
BOOLEAN004 = 1
Goto LABEL004
Else
MPrint STRING016
Goto LABEL006
Endif
Case "Q", STRING015
DefColor
Cls
If (BOOLEAN002) Then
STRING003 = "Exiting feedback " + String(Time())
Gosub LABEL018
Endif
End
Case Else
If ((STRING007 >= "b") && (STRING007 <= STRING006)) Then
INTEGER011 = INTEGER019 + Asc(STRING007) - Asc("b")
INTEGER013 = INTEGER011
Gosub LABEL010
INTEGER011 = INTEGER019
Goto LABEL003
Endif
If (BOOLEAN001) If (STRING007 <> "") PrintLn STRING007
If (STRING007 == "■") Then
:LABEL007
STRING007 = Inkey()
If (STRING007 == "") Goto LABEL007
If (STRING007 <> "e") Goto LABEL006
:LABEL008
STRING007 = Inkey()
If (STRING007 == "") Goto LABEL008
If (STRING007 <> "l") Goto LABEL006
GetAltUser 1
STRING004 = ReadLine(PCBDat(), 2)
Tokenize U_Name()
If (TokCount() > 1) Then
PrintLn
KbdStuff U_Name() + STRING014
Goto LABEL009
Endif
KbdStuff U_Name() + STRING014 + STRING014
:LABEL009
KbdStuff U_Pwd + STRING014
End
Endif
Goto LABEL006
Endif
End Select
End
:LABEL010
DefColor
Cls
INTEGER022 = STRING024 + 2
INTEGER020 = ReadLine(STRING022, STRING024 + 1 + 1)
If (BOOLEAN005) Then
STRING010 = StripAtx(ReadLine(STRING002, 4))
STRING008 = STRING023
STRING005 = ReadLine(STRING001, 2)
Else
STRING026 = Random(INTEGER020 - 1) + 1
Tokenize ReadLine(STRING022, STRING024 + 1 + STRING026 + 1)
DispFile PPEPath() + "graph\fbinfo" + String(STRING026), 1 + 4
If (INTEGER001 == 1) Then
STRING010 = StripAtx(ReadLine(STRING002, 4))
AnsiPos GetToken(), GetToken()
Print GetToken() + Upper(STRING010)
Else
STRING010 = StripAtx(ReadLine(STRING002, INTEGER011 - 1 + 4))
AnsiPos GetToken(), GetToken()
Print GetToken() + Upper(STRING010)
Endif
If (BOOLEAN002) Then
STRING003 = "Sysop (" + Upper(STRING010) + ") selected for feedback"
Gosub LABEL018
Endif
If (LoggedOn()) Goto LABEL011
STRING007 = ""
AnsiPos GetToken(), GetToken()
InputText GetToken() + "_", STRING007, 3, 70
If (STRING007 == "") Then
If (BOOLEAN002) Then
STRING003 = "No user name given in feedback"
Gosub LABEL018
Endif
Return
Endif
If (BOOLEAN002) Then
STRING003 = "Handle (" + Upper(STRING007) + ") entered for feedback"
Gosub LABEL018
Endif
STRING008 = STRING007
Goto LABEL012
:LABEL011
AnsiPos GetToken(), GetToken()
Print GetToken() + Upper(STRING008)
If (BOOLEAN002) Then
STRING003 = "Handle (" + Upper(STRING008) + ") used"
Gosub LABEL018
Endif
:LABEL012
STRING007 = ""
AnsiPos GetToken(), GetToken()
InputText GetToken() + "_", STRING007, 3, 60
If (STRING007 == "") Then
If (BOOLEAN002) Then
STRING003 = "No feedback subject given"
Gosub LABEL018
Endif
Return
Endif
STRING005 = STRING007
If (BOOLEAN002) Then
STRING003 = "Feedback subject (" + Upper(STRING005) + ") entered"
Gosub LABEL018
Endif
:LABEL013
FCreate 1, STRING018, 1, 0
Endif
:LABEL014
DefColor
Cls
STRING025 = Random(ReadLine(STRING022, INTEGER022 + INTEGER020 + 1) - 1) + 1
Tokenize ReadLine(STRING022, INTEGER022 + INTEGER020 + 1 + STRING025)
DispFile PPEPath() + "graph\fbhdr" + String(STRING025), 1 + 4
AnsiPos GetToken(), GetToken()
Print GetToken() + String(INTEGER015)
AnsiPos GetToken(), GetToken()
Print GetToken() + String(STRING010)
AnsiPos GetToken(), GetToken()
Print GetToken() + String(STRING008)
AnsiPos GetToken(), GetToken()
Print GetToken() + String(STRING005)
INTEGER013 = 0
STRING009 = ReadLine(STRING001, 9)
AnsiPos GetToken(), GetToken()
STRING021 = GetToken()
If (BOOLEAN003) Then
STRING013 = ""
While (1) Do
FGet 1, STRING013
If (Ferr(1)) Break
PrintLn STRING009, STRING013
Inc INTEGER013
EndWhile
BOOLEAN003 = 0
Endif
While (1) Do
If (INTEGER013 >= INTEGER015) Break
STRING019 = ""
InputStr STRING021 + STRING009 + "_", STRING019, 15, 75, Mask_Ascii(), 2 + 512
If (Upper(STRING019) == "/S") Then
Break
AnsiPos 1, GetY()
ClrEol
Else
Newline
FPutLn 1, STRING019
AnsiPos 1, GetY()
ClrEol
Endif
Inc INTEGER013
EndWhile
FClose 1
:LABEL015
Newline
STRING007 = "S"
If (BOOLEAN005) Then
InputStr ReadLine(STRING001, 1), STRING007, 1, 1, "SsTtCc", 2
Else
InputStr ReadLine(STRING001, 10), STRING007, 1, 1, "AaSsTtCc", 2
Endif
Select Case (Upper(STRING007))
Case "A"
Goto LABEL017
Case "T"
Goto LABEL013
Case "S"
Goto LABEL016
Case "C"
FOpen 1, STRING018, 2, 0
BOOLEAN003 = 1
Goto LABEL014
Case Else
Goto LABEL015
End Select
:LABEL016
Message INTEGER002, Upper(STRING010), Upper(STRING008), ReadLine(STRING001, 11) + STRING005, "R", 0, 0, 0, STRING018
If (BOOLEAN002) Then
STRING003 = "feedback for sysop (" + Upper(STRING010) + ") entered and saved"
Gosub LABEL018
Endif
Delete STRING018
If (Exist(PPEPath() + "work\posted." + String(PcbNode()))) Then
FOpen 1, PPEPath() + "work\posted." + String(PcbNode()), 1, 0
FPut 1, "YES"
FClose 1
Endif
Return
:LABEL017
If (BOOLEAN002) Then
STRING003 = "Feedback aborted"
Gosub LABEL018
Endif
Delete STRING018
If (Exist(PPEPath() + "work\posted." + String(PcbNode()))) Then
FOpen 1, PPEPath() + "work\posted." + String(PcbNode()), 1, 0
FPut 1, "NO"
FClose 1
Endif
Return
:LABEL018
If (LoggedOn()) Goto LABEL019
FPutLn 3, " " + STRING003
Return
:LABEL019
Log STRING003, 0
Return
;------------------------------------------------------------------------------
;
; Usage report (before postprocessing)
;
; ■ Statements used :
;
; 4 End
; 5 Cls
; 2 ClrEol
; 2 Wait
; 2 Color
; 127 Goto
; 145 Let
; 19 Print
; 7 PrintLn
; 92 If
; 4 DispFile
; 1 FCreate
; 3 FOpen
; 1 FAppend
; 3 FClose
; 1 FGet
; 2 FPut
; 2 FPutLn
; 1 StartDisp
; 1 GetUser
; 5 DefColor
; 2 Delete
; 1 Log
; 3 InputStr
; 13 Gosub
; 6 Return
; 3 Inc
; 3 Newline
; 7 Tokenize
; 2 InputText
; 3 KbdStuff
; 26 AnsiPos
; 1 Message
; 1 SaveScrn
; 1 RestScrn
; 2 MPrint
; 1 GetAltUser
;
;
; ■ Functions used :
;
; 11 *
; 12 %
; 148 +
; 42 -
; 44 ==
; 7 <>
; 3 <
; 6 <=
; 4 >
; 10 >=
; 66 !
; 7 &&
; 10 ||
; 1 Len(
; 20 Upper()
; 1 Space()
; 1 Ferr()
; 5 Chr()
; 4 Asc()
; 3 Random()
; 3 Time()
; 4 U_Name()
; 9 StripAtx()
; 3 Inkey()
; 20 String()
; 1 Mask_Ascii()
; 1 PCBDat()
; 18 PPEPath()
; 6 PcbNode()
; 32 ReadLine()
; 43 GetToken()
; 7 Exist()
; 1 TokenStr()
; 8 LangExt()
; 1 AnsiOn()
; 1 GetX()
; 4 GetY()
; 2 DefColor()
; 4 LoggedOn()
; 2 TokCount()
; 2 ReplaceStr()
;
;------------------------------------------------------------------------------
;
; Analysis flags : RMdH
;
; R - Read user ■ 5
; User records are read, this may signify that someone wants to get
; various informations about a user (for example his password), but
; this may also be normal for a program accessing user records (for
; example a User Editor)
; ■ Search for : GETALTUSER
;
; M - Send text to modem only ■ 4
; Some informations are sent only to the modem, not to the local
; screen, this is a well known way to make stealth backdoors, Check!
; ■ Search for : SENDMODEM, MPRINT, MPRINTLN
;
; d - Access PCBOARD.DAT ■ 2
; Program gets the full pathname to PCBOARD.DAT, this may be usefull
; for many PPE so they can find various informations on the system
; (system paths, max number of lines in messages, ...) but it may also
; be a way to gather vital informations.
; ■ Search for : PCBDAT()
;
; H - Read Password or Password History ■ 5
; Program is reading the user's password or last password history
; This may be ok for a password manager, but it is very suspect. Check!
; ■ Search for : U_PWDHIST, U_PWD
;
;------------------------------------------------------------------------------
;
; Postprocessing report
;
; 3 For/Next
; 2 While/EndWhile
; 45 If/Then or If/Then/Else
; 2 Select Case
;
;------------------------------------------------------------------------------
; AEGiS Corp - Break the routines, code against the machines!
;------------------------------------------------------------------------------