More A35 work
This commit is contained in:
parent
80b7d40a77
commit
79d94e90c7
|
@ -1276,13 +1276,12 @@ Begin
|
|||
If BufPos MOD BaudEmulator = 0 Then WaitMS(6);
|
||||
End;
|
||||
|
||||
(*
|
||||
If AllowAbort And (BufPos MOD 128 = 0) Then
|
||||
If InKey(0) = #32 Then Begin
|
||||
If AllowAbort And (BufPos MOD 128 = 0) And Not Session.LocalMode Then
|
||||
If Session.Client.DataWaiting And (InKey(0) = #32) Then Begin
|
||||
AnsiColor(7);
|
||||
Break;
|
||||
End;
|
||||
|
||||
(*
|
||||
If AllowAbort And (InKey(0) = #32) Then Begin
|
||||
AnsiColor(7);
|
||||
Break;
|
||||
|
@ -1440,7 +1439,7 @@ Begin
|
|||
Handles[0] := Input.ConIn;
|
||||
|
||||
If Not TBBSCore(Core).LocalMode Then Begin
|
||||
If TBBSCore(Core).Client.FInBufPos <= TBBSCore(Core).Client.FInBufEnd Then
|
||||
If TBBSCore(Core).Client.FInBufPos < TBBSCore(Core).Client.FInBufEnd Then
|
||||
InType := 2
|
||||
Else Begin
|
||||
Handles[1] := SocketEvent;
|
||||
|
@ -1916,7 +1915,7 @@ Var
|
|||
End;
|
||||
|
||||
Begin
|
||||
PurgeInputBuffer;
|
||||
// PurgeInputBuffer;
|
||||
|
||||
If UseInLimit Then Begin
|
||||
Field := InLimit;
|
||||
|
|
|
@ -350,6 +350,7 @@ Var
|
|||
Begin
|
||||
If Not Config.MCompress Then Begin
|
||||
Result := GetBaseByNum(Num, TempBase);
|
||||
|
||||
Exit;
|
||||
End;
|
||||
|
||||
|
@ -826,31 +827,13 @@ Var
|
|||
End;
|
||||
End;
|
||||
|
||||
Close (MBaseFile);
|
||||
|
||||
Session.io.OutFull (Session.GetPrompt(430));
|
||||
End;
|
||||
|
||||
Procedure ToggleBase (A : Word);
|
||||
Var
|
||||
B : Word;
|
||||
Procedure ToggleCurrent (Forced: LongInt);
|
||||
Begin
|
||||
If A = 0 Then Exit;
|
||||
|
||||
B := 0;
|
||||
FileMode := 66;
|
||||
|
||||
Reset (MBaseFile);
|
||||
|
||||
Repeat
|
||||
{$I-} Read (MBaseFile, MBase); {$I+}
|
||||
|
||||
If IoResult <> 0 Then Exit;
|
||||
|
||||
If Session.User.Access(MBase.ListACS) Then
|
||||
Inc(B);
|
||||
|
||||
If A = B Then Break;
|
||||
Until False;
|
||||
|
||||
GetMessageScan;
|
||||
|
||||
Session.io.PromptInfo[1] := MBase.Name;
|
||||
|
@ -858,32 +841,74 @@ Var
|
|||
If QWK Then Begin
|
||||
Case MScan.QwkScan of
|
||||
0 : Begin
|
||||
MScan.QwkScan := 1;
|
||||
Session.io.OutFullLn (Session.GetPrompt(97));
|
||||
If Forced <> -1 Then
|
||||
MScan.QwkScan := Forced
|
||||
Else Begin
|
||||
MScan.QwkScan := 1;
|
||||
|
||||
Session.io.OutFullLn (Session.GetPrompt(97));
|
||||
End;
|
||||
End;
|
||||
1 : Begin
|
||||
MScan.QwkScan := 0;
|
||||
Session.io.OutFullLn (Session.GetPrompt(96));
|
||||
If Forced <> -1 Then
|
||||
MScan.QwkScan := Forced
|
||||
Else Begin
|
||||
MScan.QwkScan := 0;
|
||||
|
||||
Session.io.OutFullLn (Session.GetPrompt(96));
|
||||
End;
|
||||
End;
|
||||
2 : Session.io.OutFullLn (Session.GetPrompt(302));
|
||||
2 : If Forced <> -1 Then
|
||||
Session.io.OutFullLn (Session.GetPrompt(302));
|
||||
End;
|
||||
End Else Begin
|
||||
Case MScan.NewScan of
|
||||
0 : Begin
|
||||
MScan.NewScan := 1;
|
||||
Session.io.OutFullLn (Session.GetPrompt(99));
|
||||
If Forced <> -1 Then
|
||||
MScan.NewScan := Forced
|
||||
Else Begin
|
||||
MScan.NewScan := 1;
|
||||
|
||||
Session.io.OutFullLn (Session.GetPrompt(99));
|
||||
End;
|
||||
End;
|
||||
1 : Begin
|
||||
MScan.NewScan := 0;
|
||||
Session.io.OutFullLn (Session.GetPrompt(98));
|
||||
If Forced <> -1 Then
|
||||
MScan.NewScan := Forced
|
||||
Else Begin
|
||||
MScan.NewScan := 0;
|
||||
|
||||
Session.io.OutFullLn (Session.GetPrompt(98));
|
||||
End;
|
||||
End;
|
||||
2 : Session.io.OutFullLn (Session.GetPrompt(302));
|
||||
2 : If Forced <> -1 Then
|
||||
Session.io.OutFullLn (Session.GetPrompt(302));
|
||||
End;
|
||||
End;
|
||||
|
||||
SetMessageScan;
|
||||
End;
|
||||
|
||||
Procedure ToggleAll (Value: Byte);
|
||||
Begin
|
||||
Reset (MBaseFile);
|
||||
|
||||
While Not Eof(MBaseFile) Do Begin
|
||||
Read (MBaseFile, MBase);
|
||||
|
||||
If Session.User.Access(MBase.ListACS) Then
|
||||
ToggleCurrent(Value);
|
||||
End;
|
||||
|
||||
Close (MBaseFile);
|
||||
End;
|
||||
|
||||
Procedure ToggleByNumber (BaseNumber: LongInt);
|
||||
Begin
|
||||
If (BaseNumber > 0) And GetBaseCompressed(BaseNumber, MBase) Then
|
||||
ToggleCurrent(-1);
|
||||
End;
|
||||
|
||||
Var
|
||||
Old : RecMessageBase;
|
||||
Temp : String[40];
|
||||
|
@ -892,7 +917,8 @@ Var
|
|||
Num1 : String[40];
|
||||
Num2 : String[40];
|
||||
Begin
|
||||
Old := MBase;
|
||||
Old := MBase;
|
||||
FileMode := 66;
|
||||
|
||||
Session.User.IgnoreGroup := Pos('/ALLGROUP', strUpper(Data)) > 0;
|
||||
|
||||
|
@ -900,8 +926,11 @@ Begin
|
|||
|
||||
If Total = 0 Then Begin
|
||||
Session.io.OutFullLn (Session.GetPrompt(94));
|
||||
|
||||
MBase := Old;
|
||||
|
||||
Session.User.IgnoreGroup := False;
|
||||
|
||||
Exit;
|
||||
End;
|
||||
|
||||
|
@ -912,8 +941,14 @@ Begin
|
|||
|
||||
If (Temp = '') or (Temp = 'Q') Then Break;
|
||||
|
||||
If Temp = 'A' Then
|
||||
ToggleAll(1)
|
||||
Else
|
||||
If Temp = 'D' Then
|
||||
ToggleAll(0)
|
||||
Else
|
||||
If Temp = '?' Then
|
||||
List_Bases
|
||||
// do nothing
|
||||
Else Begin
|
||||
Num1 := '';
|
||||
Num2 := '';
|
||||
|
@ -924,9 +959,9 @@ Begin
|
|||
If Temp[Count1] = ',' Then Begin
|
||||
If Num2 <> '' Then Begin
|
||||
For Count2 := strS2I(Num2) to strS2I(Num1) Do
|
||||
ToggleBase(Count2);
|
||||
ToggleByNumber(Count2);
|
||||
End Else
|
||||
ToggleBase(strS2I(Num1));
|
||||
ToggleByNumber(strS2I(Num1));
|
||||
|
||||
Num1 := '';
|
||||
Num2 := '';
|
||||
|
@ -940,15 +975,13 @@ Begin
|
|||
|
||||
If Num2 <> '' Then Begin
|
||||
For Count1 := strS2I(Num2) to strS2I(Num1) Do
|
||||
ToggleBase(Count1);
|
||||
ToggleByNumber(Count1);
|
||||
End Else
|
||||
ToggleBase(strS2I(Num1));
|
||||
|
||||
List_Bases;
|
||||
ToggleByNumber(strS2I(Num1));
|
||||
End;
|
||||
Until False;
|
||||
|
||||
Close (MBaseFile);
|
||||
List_Bases;
|
||||
Until False;
|
||||
|
||||
MBase := Old;
|
||||
|
||||
|
|
|
@ -1000,7 +1000,7 @@ Begin
|
|||
TmpDt.Hour := strS2I(Copy(SqInfo^.StrTime,1,2));
|
||||
TmpDt.Min := strS2I(Copy(SqInfo^.StrTime, 4,2));
|
||||
TmpDt.Sec := 0;
|
||||
TmpStr := FormattedDate(TmpDT, 'DD NNN YY ') + Copy(SqInfo^.StrTime, 1, 5) + ':00';
|
||||
TmpStr := FormatDate(TmpDT, 'DD NNN YY ') + Copy(SqInfo^.StrTime, 1, 5) + ':00';
|
||||
|
||||
PackTime (TmpDT, TmpDate);
|
||||
|
||||
|
|
|
@ -1309,51 +1309,53 @@ Begin
|
|||
Session.io.OutFile ('prelogon', True, 0);
|
||||
|
||||
If UserNum = -1 Then Begin
|
||||
Count := 1;
|
||||
|
||||
Count := 1;
|
||||
Repeat
|
||||
If Count > Config.LoginAttempts Then Halt;
|
||||
|
||||
Repeat
|
||||
If Count > Config.LoginAttempts Then Halt;
|
||||
Session.io.PromptInfo[1] := strI2S(Count);
|
||||
Session.io.PromptInfo[2] := strI2S(Config.LoginAttempts);
|
||||
Session.io.PromptInfo[3] := strI2S(Config.LoginAttempts - Count);
|
||||
|
||||
Session.io.PromptInfo[1] := strI2S(Count);
|
||||
Session.io.PromptInfo[2] := strI2S(Config.LoginAttempts);
|
||||
Session.io.PromptInfo[3] := strI2S(Config.LoginAttempts - Count);
|
||||
Session.io.OutFull (Session.GetPrompt(0));
|
||||
|
||||
Session.io.OutFull (Session.GetPrompt(0));
|
||||
Str := strStripB(Session.io.GetInput(30, 30, 18, ''), ' ');
|
||||
|
||||
Str := strStripB(Session.io.GetInput(30, 30, 18, ''), ' ');
|
||||
If Not FindUser(Str, True) Then Begin
|
||||
Session.io.OutFile ('newuser', True, 0);
|
||||
|
||||
If Not FindUser(Str, True) Then Begin
|
||||
Session.io.OutFile ('newuser', True, 0);
|
||||
If Session.io.GetYN(Session.GetPrompt(1), False) Then Begin
|
||||
CreateNewUser(Str);
|
||||
UserLogon2;
|
||||
UserLogon3;
|
||||
|
||||
If Session.io.GetYN(Session.GetPrompt(1), False) Then Begin
|
||||
CreateNewUser(Str);
|
||||
UserLogon2;
|
||||
UserLogon3;
|
||||
Exit;
|
||||
End;
|
||||
Exit;
|
||||
End;
|
||||
|
||||
Inc (Count);
|
||||
End Else Break;
|
||||
Until False;
|
||||
Inc (Count);
|
||||
End Else
|
||||
Break;
|
||||
Until False;
|
||||
|
||||
A := UserNum; {If user would drop carrier here itd save their info }
|
||||
UserNum := -1; {which is only User.ThisUser.realname at this time }
|
||||
A := UserNum; {If user would drop carrier here itd save their info }
|
||||
UserNum := -1; {which is only User.ThisUser.realname at this time }
|
||||
|
||||
If Not Session.io.GetPW(Session.GetPrompt(2), Session.GetPrompt(3), TempUser.Password) Then Begin
|
||||
If Config.PWInquiry Then
|
||||
If Session.io.GetYN(Session.GetPrompt(475), False) Then
|
||||
Session.Msgs.PostMessage(True, '/TO:' + strReplace(Config.FeedbackTo, ' ', '_') + ' /SUBJ:Password_Inquiry');
|
||||
If Not Session.io.GetPW(Session.GetPrompt(2), Session.GetPrompt(3), TempUser.Password) Then Begin
|
||||
If Config.PWInquiry Then
|
||||
If Session.io.GetYN(Session.GetPrompt(475), False) Then
|
||||
Session.Msgs.PostMessage(True, '/TO:' + strReplace(Config.FeedbackTo, ' ', '_') + ' /SUBJ:Password_Inquiry');
|
||||
|
||||
Session.Msgs.PostTextFile('hackwarn.txt;0;' + Config.SysopName + ';' + TempUser.Handle + ';Possible hack attempt', True);
|
||||
Session.Msgs.PostTextFile('hackwarn.txt;0;' + Config.SysopName + ';' + TempUser.Handle + ';Possible hack attempt', True);
|
||||
|
||||
Halt(0);
|
||||
Halt(0);
|
||||
End;
|
||||
|
||||
UserNum := A;
|
||||
ThisUser := TempUser;
|
||||
End;
|
||||
|
||||
UserNum := A;
|
||||
End;
|
||||
|
||||
ThisUser := TempUser;
|
||||
// ThisUser := TempUser;
|
||||
End;
|
||||
|
||||
Session.SystemLog ('User: ' + ThisUser.Handle + ' logged in');
|
||||
|
|
|
@ -197,7 +197,8 @@
|
|||
; &1 = base number &2 = base name &3 = scan base? (Yes or No)
|
||||
093 |07|$R04|&1|15|$R03|&3 |07|$R29|&2
|
||||
094 |CR|12There are no available message bases!
|
||||
095 |09Selection |01[|10##|01]|09, |01[|10##|01-|10##|01,|10##|01]|09, |01[|10?|01/|10List|01]|09, or |01[|10Q|01]|09uit: |XX
|
||||
; Message base new and qwk scan toggle prompt:
|
||||
095 Toggle: |09[|11#-#,#|09], Select [|11A|09]ll, [|11D|09]eselect All, [|11?|09/|11List|09]: |XX
|
||||
; For strings 096 - 099: &1 = message base name
|
||||
096 |CR |11|&1 will NOT be scanned in QWK packets!|CR
|
||||
097 |CR |11|&1 will be scanned in QWK packets!|CR
|
||||
|
|
|
@ -316,7 +316,9 @@ Begin
|
|||
Console.SetWindow (1, 1, 80, 25, True);
|
||||
|
||||
FocusCurrent := FocusMax;
|
||||
|
||||
DrawStatusScreen;
|
||||
|
||||
SwitchFocus;
|
||||
End;
|
||||
|
||||
|
|
|
@ -10,7 +10,7 @@ Uses
|
|||
SysUtils,
|
||||
m_Strings,
|
||||
m_FileIO,
|
||||
m_Socket_Class,
|
||||
m_io_Sockets,
|
||||
m_DateTime,
|
||||
MIS_Server,
|
||||
MIS_NodeData,
|
||||
|
@ -19,7 +19,7 @@ Uses
|
|||
BBS_MsgBase_JAM,
|
||||
BBS_MsgBase_Squish;
|
||||
|
||||
Function CreateHTTP (Owner: TServerManager; Config: RecConfig; ND: TNodeData; CliSock: TSocketClass) : TServerClient;
|
||||
Function CreateHTTP (Owner: TServerManager; Config: RecConfig; ND: TNodeData; CliSock: TIOSocket) : TServerClient;
|
||||
|
||||
Type
|
||||
THTTPServer = Class(TServerClient)
|
||||
|
@ -30,7 +30,7 @@ Type
|
|||
Cmd : String;
|
||||
Data : String;
|
||||
|
||||
Constructor Create (Owner: TServerManager; CliSock: TSocketClass);
|
||||
Constructor Create (Owner: TServerManager; CliSock: TIOSocket);
|
||||
Procedure Execute; Override;
|
||||
Destructor Destroy; Override;
|
||||
|
||||
|
@ -39,12 +39,12 @@ Type
|
|||
|
||||
Implementation
|
||||
|
||||
Function CreateHTTP (Owner: TServerManager; Config: RecConfig; ND: TNodeData; CliSock: TSocketClass) : TServerClient;
|
||||
Function CreateHTTP (Owner: TServerManager; Config: RecConfig; ND: TNodeData; CliSock: TIOSocket) : TServerClient;
|
||||
Begin
|
||||
Result := THTTPServer.Create(Owner, CliSock);
|
||||
End;
|
||||
|
||||
Constructor THTTPServer.Create (Owner: TServerManager; CliSock: TSocketClass);
|
||||
Constructor THTTPServer.Create (Owner: TServerManager; CliSock: TIOSocket);
|
||||
Begin
|
||||
Inherited Create(Owner, CliSock);
|
||||
|
||||
|
@ -83,6 +83,7 @@ Begin
|
|||
|
||||
If Cmd = 'QUIT' Then Begin
|
||||
GotQuit := True;
|
||||
|
||||
Break;
|
||||
End Else
|
||||
Client.WriteLine(re_UnknownCommand);
|
||||
|
|
|
@ -17,7 +17,6 @@ Function ToUnixDate (DosDate: LongInt): LongInt;
|
|||
Function DTToUnixDate (DT: DateTime): LongInt;
|
||||
Procedure UnixToDT (SecsPast: LongInt; Var Dt: DateTime);
|
||||
Procedure Str2Az (Str: String; MaxLen: Byte; Var AZStr); {Convert string to asciiz}
|
||||
Function FormattedDate (DT: DateTime; Mask: String): String;
|
||||
Function LoadFilePos (FN: String; Var Rec; FS: Word; FPos: LongInt): Word;
|
||||
Function ExtendFile (FN: String; ToSize: LongInt): Word;
|
||||
Function SaveFilePos (FN: String; Var Rec; FS: Word; FPos: LongInt): Word;
|
||||
|
@ -119,69 +118,6 @@ Begin
|
|||
End;
|
||||
End;
|
||||
|
||||
Function FormattedDate (DT: DateTime; Mask: String) : String;
|
||||
Var
|
||||
DStr : String[2];
|
||||
MStr : String[2];
|
||||
MNStr : String[3];
|
||||
YStr : String[4];
|
||||
HourStr : String[2];
|
||||
MinStr : String[2];
|
||||
SecStr : String[2];
|
||||
TmpStr : String;
|
||||
CurrPos : Word;
|
||||
i : Word;
|
||||
Begin
|
||||
TmpStr := Mask;
|
||||
Mask := strUpper(Mask);
|
||||
DStr := Copy(strPadL(strI2S(Dt.Day), 2, '0'), 1, 2);
|
||||
MStr := Copy(strPadL(strI2S(Dt.Month), 2, '0'), 1, 2);
|
||||
YStr := Copy(strPadL(strI2S(Dt.Year), 4, '0'), 1, 4);
|
||||
HourStr := Copy(strPadL(strI2S(Dt.Hour), 2, '0'), 1, 2);
|
||||
MinStr := Copy(strPadL(strI2S(Dt.Min), 2, '0'), 1, 2);
|
||||
SecStr := Copy(strPadL(strI2S(Dt.Sec), 2, '0'), 1, 2);
|
||||
MNStr := MonthString[Dt.Month];
|
||||
|
||||
If (Pos('YYYY', Mask) = 0) Then YStr := Copy(YStr, 3, 2);
|
||||
|
||||
CurrPos := Pos('DD', Mask);
|
||||
If CurrPos > 0 Then
|
||||
For i := 1 to Length(DStr) Do
|
||||
TmpStr[CurrPos + i - 1] := DStr[i];
|
||||
|
||||
CurrPos := Pos('YY', Mask);
|
||||
If CurrPos > 0 Then
|
||||
For i := 1 to Length(YStr) Do
|
||||
TmpStr[CurrPos + i - 1] := YStr[i];
|
||||
|
||||
CurrPos := Pos('MM', Mask);
|
||||
If CurrPos > 0 Then
|
||||
For i := 1 to Length(MStr) Do
|
||||
TmpStr[CurrPos + i - 1] := MStr[i];
|
||||
|
||||
CurrPos := Pos('HH', Mask);
|
||||
If CurrPos > 0 Then
|
||||
For i := 1 to Length(HourStr) Do
|
||||
TmpStr[CurrPos + i - 1] := HourStr[i];
|
||||
|
||||
CurrPos := Pos('SS', Mask);
|
||||
If CurrPos > 0 Then
|
||||
For i := 1 to Length(SecStr) Do
|
||||
TmpStr[CurrPos + i - 1] := SecStr[i];
|
||||
|
||||
CurrPos := Pos('II', Mask);
|
||||
If CurrPos > 0 Then
|
||||
For i := 1 to Length(MinStr) Do
|
||||
TmpStr[CurrPos + i - 1] := MinStr[i];
|
||||
|
||||
CurrPos := Pos('NNN', Mask);
|
||||
If CurrPos > 0 Then
|
||||
For i := 1 to Length(MNStr) Do
|
||||
TmpStr[CurrPos + i - 1] := MNStr[i];
|
||||
|
||||
FormattedDate := TmpStr;
|
||||
End;
|
||||
|
||||
Function LoadFilePos(FN: String; Var Rec; FS: Word; FPos: LongInt): Word;
|
||||
Var
|
||||
F: File;
|
||||
|
|
|
@ -64,55 +64,63 @@ Procedure InitProcedures (O: Pointer; S: Pointer; Var CV: VarDataRec; Var X: Wor
|
|||
|
||||
Procedure AddProc ({$IFDEF MPLPARSER} I: String; {$ENDIF} P: String; T: TIdentTypes);
|
||||
Begin
|
||||
Inc(X);
|
||||
New(CV[X]);
|
||||
Inc (X);
|
||||
New (CV[X]);
|
||||
|
||||
With CV[X]^ Do Begin
|
||||
VarID := IW;
|
||||
Inc(IW);
|
||||
VarID := IW;
|
||||
vType := T;
|
||||
Move(P[1], Params, Ord(P[0]));
|
||||
NumParams := Ord(p[0]);
|
||||
ArrPos := 0;
|
||||
|
||||
Move (P[1], Params, Ord(P[0]));
|
||||
|
||||
NumParams := Ord(P[0]);
|
||||
|
||||
Inc(IW);
|
||||
|
||||
{$IFNDEF MPLPARSER}
|
||||
VarSize := 0;
|
||||
DataSize := 0;
|
||||
Data := NIL;
|
||||
ProcPos := 0;
|
||||
Kill := True;
|
||||
|
||||
FillChar (pID, SizeOf(pID), 0);
|
||||
{$ELSE}
|
||||
Ident := I;
|
||||
InProc := False;
|
||||
Proc := True;
|
||||
{$ENDIF}
|
||||
ArrPos := 0;
|
||||
End;
|
||||
End;
|
||||
|
||||
Procedure AddStr ({$IFDEF MPLPARSER} I: String; {$ENDIF} T: TIdentTypes; SI: Word);
|
||||
Begin
|
||||
Inc(X);
|
||||
New(CV[X]);
|
||||
Inc (X);
|
||||
New (CV[X]);
|
||||
|
||||
With cV[x]^ Do Begin
|
||||
With CV[X]^ Do Begin
|
||||
VarID := IW;
|
||||
Inc(IW);
|
||||
vType := T;
|
||||
vType := T;
|
||||
NumParams := 0;
|
||||
ArrPos := 0;
|
||||
|
||||
Inc(IW);
|
||||
|
||||
{$IFNDEF MPLPARSER}
|
||||
ProcPos := 0;
|
||||
Kill := True;
|
||||
VarSize := SI + 1;
|
||||
DataSize := VarSize;
|
||||
|
||||
GetMem (Data, DataSize);
|
||||
FillChar (Data^, DataSize, 0);
|
||||
FillChar (pID, SizeOf(pID), 0); //cant we just assign it to 0 here?
|
||||
ProcPos := 0;
|
||||
Kill := True;
|
||||
{$ELSE}
|
||||
Ident := I;
|
||||
InProc := False;
|
||||
Proc := False;
|
||||
Proc := False;
|
||||
{$ENDIF}
|
||||
ArrPos := 0;
|
||||
End;
|
||||
End;
|
||||
|
||||
|
@ -123,27 +131,31 @@ Procedure InitProcedures (O: Pointer; S: Pointer; Var CV: VarDataRec; Var X: Wor
|
|||
|
||||
Procedure AddPointer ({$IFDEF MPLPARSER} I: String; {$ENDIF} T: TIdentTypes; SI: Word; PD: Pointer);
|
||||
Begin
|
||||
Inc(x);
|
||||
New(cV[x]);
|
||||
Inc (X);
|
||||
New (CV[X]);
|
||||
|
||||
With cV[x]^ Do Begin
|
||||
With CV[X]^ Do Begin
|
||||
VarID := IW;
|
||||
Inc(IW);
|
||||
vType := t;
|
||||
vType := T;
|
||||
NumParams := 0;
|
||||
ArrPos := 0;
|
||||
|
||||
Inc (IW);
|
||||
|
||||
{$IFNDEF MPLPARSER}
|
||||
If T = iString Then VarSize := SI + 1 Else VarSize := SI;
|
||||
|
||||
DataSize := VarSize;
|
||||
Data := PD;
|
||||
Data := PD;
|
||||
ProcPos := 0;
|
||||
Kill := False;
|
||||
|
||||
FillChar (pID, SizeOf(pID), 0);
|
||||
ProcPos := 0;
|
||||
Kill := False;
|
||||
{$ELSE}
|
||||
Ident := I;
|
||||
InProc := False;
|
||||
Proc := False;
|
||||
Proc := False;
|
||||
{$ENDIF}
|
||||
ArrPos := 0;
|
||||
End;
|
||||
End;
|
||||
|
||||
|
|
|
@ -33,6 +33,7 @@ Uses
|
|||
|
||||
Var
|
||||
SavedX : Byte;
|
||||
SavedY : Byte;
|
||||
Console : TOutput;
|
||||
WasError : Boolean;
|
||||
|
||||
|
@ -72,15 +73,17 @@ Begin
|
|||
Else Begin
|
||||
If Pos('-ALL', strUpper(ParamStr(1))) > 0 Then Begin
|
||||
FindFirst ('*.mps', AnyFile - Directory - VolumeID, Dir);
|
||||
|
||||
While DosError = 0 Do Begin
|
||||
Parser := TParserEngine.Create(Status);
|
||||
If Not Parser.Compile(Dir.Name) Then Begin
|
||||
Parser.Free;
|
||||
Break;
|
||||
End;
|
||||
FindNext(Dir);
|
||||
|
||||
Parser.Compile(Dir.Name);
|
||||
|
||||
Parser.Free;
|
||||
|
||||
FindNext(Dir);
|
||||
End;
|
||||
|
||||
FindClose(Dir);
|
||||
End Else Begin
|
||||
Parser := TParserEngine.Create(Status);
|
||||
|
|
|
@ -236,7 +236,7 @@ Var
|
|||
MH.OrigNet := MsgBase^.GetOrigAddr.Net;
|
||||
MH.DestNet := EchoNode.Address.Net;
|
||||
|
||||
TempStr1 := FormattedDate(DT, 'DD NNN YY HH:MM:SS') + #0;
|
||||
TempStr1 := FormatDate(DT, 'DD NNN YY HH:II:SS') + #0;
|
||||
Move (TempStr1[1], MH.DateTime[0], 20);
|
||||
|
||||
If MsgBase^.IsLocal Then MH.Attribute := MH.Attribute OR pktLocal;
|
||||
|
|
|
@ -159,7 +159,8 @@ Var
|
|||
Excluded : Boolean;
|
||||
SortMode : TSortMethod;
|
||||
Begin
|
||||
Result := True;
|
||||
Result := True;
|
||||
FileMode := 66;
|
||||
|
||||
Case ListType of
|
||||
TopCall : ProcessStatus('Top Callers', False);
|
||||
|
@ -206,6 +207,7 @@ Begin
|
|||
|
||||
If (strUpper(User.Handle) = Str) or (strUpper(User.RealName) = Str) Then Begin
|
||||
Excluded := True;
|
||||
|
||||
Break;
|
||||
End;
|
||||
End;
|
||||
|
|
|
@ -33,6 +33,7 @@ Uses
|
|||
|
||||
Type
|
||||
PhoneRec = Record
|
||||
Position : LongInt;
|
||||
Name : String[26];
|
||||
Address : String[60];
|
||||
User : String[30];
|
||||
|
@ -164,6 +165,7 @@ Begin
|
|||
Book[Count].StatusBar := INI.ReadString(strI2S(Count), 'statusbar', '1') = '1';
|
||||
Book[Count].LastCall := INI.ReadString(strI2S(Count), 'last', '');
|
||||
Book[Count].Calls := INI.ReadString(strI2S(Count), 'calls', '');
|
||||
Book[Count].Position := Count;
|
||||
End;
|
||||
|
||||
INI.Free;
|
||||
|
@ -704,18 +706,60 @@ Begin
|
|||
Screen.PutScreenImage(Image);
|
||||
End;
|
||||
|
||||
Procedure TelnetClient (Dial: PhoneRec);
|
||||
Procedure EditEntry (Var Book: PhoneBookRec; Num: SmallInt);
|
||||
Var
|
||||
Box : TMenuBox;
|
||||
Form : TMenuForm;
|
||||
NewRec : PhoneRec;
|
||||
Begin
|
||||
NewRec := Book[Num];
|
||||
Box := TMenuBox.Create(TOutput(Screen));
|
||||
Form := TMenuForm.Create(TOutput(Screen));
|
||||
|
||||
Procedure DrawStatus;
|
||||
Box.HeadAttr := 1 + 7 * 16;
|
||||
Box.Header := ' Book Editor ';
|
||||
|
||||
Box.Open (17, 8, 63, 16);
|
||||
|
||||
Form.HelpSize := 0;
|
||||
|
||||
Form.AddStr ('N', ' Name' , 24, 10, 32, 10, 6, 26, 26, @NewRec.Name, '');
|
||||
Form.AddStr ('A', ' Address', 21, 11, 32, 11, 9, 30, 60, @NewRec.Address, '');
|
||||
Form.AddStr ('U', ' User Name', 19, 12, 32, 12, 11, 30, 30, @NewRec.User, '');
|
||||
Form.AddPass ('P', ' Password', 20, 13, 32, 13, 10, 20, 20, @NewRec.Password, '');
|
||||
Form.AddBol ('S', ' StatusBar', 19, 14, 32, 14, 11, 3, @NewRec.StatusBar, '');
|
||||
|
||||
Form.Execute;
|
||||
|
||||
If Form.Changed Then
|
||||
If ShowMsgBox(1, 'Save changes?') Then Begin
|
||||
Book[Num] := NewRec;
|
||||
WriteBook(Book);
|
||||
End;
|
||||
|
||||
Form.Free;
|
||||
|
||||
Box.Close;
|
||||
Box.Free;
|
||||
End;
|
||||
|
||||
Procedure TelnetClient (Var Book: PhoneBookRec; Dial: PhoneRec);
|
||||
|
||||
Procedure DrawStatus (Toggle: Boolean);
|
||||
Begin
|
||||
If Dial.StatusBar Then Begin
|
||||
Screen.SetWindow (1, 1, 80, 24, False);
|
||||
Screen.WriteXY (1, 25, Config.StatusColor3, strPadC('ALT/B-Scrollback ALT/L-Send Login ALT/T-Zmodem ALT-H/Hangup ALT-X/Quit', 80, ' '));
|
||||
Screen.WriteXY (1, 25, Config.StatusColor3, strPadC('ALT/B-Scrollback ALT/L-Send Login ALT/T-Zmodem ALT-E/Edit ALT-X/Quit', 80, ' '));
|
||||
End Else
|
||||
If Toggle Then Begin
|
||||
Screen.SetWindow (1, 1, 80, 25, False);
|
||||
Screen.WriteXY (1, 25, 7, strRep(' ', 79));
|
||||
End;
|
||||
End;
|
||||
|
||||
Const
|
||||
BufferSize = 1024 * 4;
|
||||
|
||||
Var
|
||||
Client : TIOSocket;
|
||||
Res : LongInt;
|
||||
|
@ -733,13 +777,20 @@ Begin
|
|||
If Not Client.Connect(StripAddressPort(Dial.Address), GetAddressPort(Dial.Address)) Then
|
||||
ShowMsgBox (0, 'Unable to connect')
|
||||
Else Begin
|
||||
Book[Dial.Position].LastCall := DateDos2Str(CurDateDos, 1);
|
||||
Book[Dial.Position].Calls := strI2S(strS2I(Dial.Calls) + 1);
|
||||
|
||||
WriteBook(Book);
|
||||
|
||||
Dial := Book[Dial.Position];
|
||||
|
||||
Screen.TextAttr := 7;
|
||||
Screen.ClearScreen;
|
||||
|
||||
Done := False;
|
||||
Term := TTermAnsi.Create(TOutput(Screen));
|
||||
|
||||
DrawStatus;
|
||||
DrawStatus(False);
|
||||
|
||||
Term.SetReplyClient(TIOBase(Client));
|
||||
|
||||
|
@ -748,8 +799,6 @@ Begin
|
|||
Res := Client.ReadBuf (Buffer, BufferSize);
|
||||
|
||||
If Res < 0 Then Begin
|
||||
ShowMsgBox (0, 'Connection terminated');
|
||||
|
||||
Done := True;
|
||||
|
||||
Break;
|
||||
|
@ -785,13 +834,23 @@ Begin
|
|||
|
||||
Case Ch of
|
||||
#00 : Case Keyboard.ReadKey of
|
||||
#18 : Begin
|
||||
EditEntry(Book, Dial.Position);
|
||||
|
||||
If Dial.StatusBar <> Book[Dial.Position].StatusBar Then Begin
|
||||
Dial := Book[Dial.Position];
|
||||
|
||||
DrawStatus (True);
|
||||
End Else
|
||||
Dial := Book[Dial.Position];
|
||||
End;
|
||||
#20 : Begin
|
||||
Case GetTransferType of
|
||||
1 : DoZmodemDownload(TIOBase(Client));
|
||||
2 : DoZmodemUpload(TIOBase(Client));
|
||||
End;
|
||||
|
||||
DrawStatus;
|
||||
DrawStatus(False);
|
||||
End;
|
||||
#35 : Done := True;
|
||||
#38 : Begin
|
||||
|
@ -801,7 +860,7 @@ Begin
|
|||
#45 : Break;
|
||||
#48 : Begin
|
||||
ActivateScrollBack;
|
||||
DrawStatus;
|
||||
DrawStatus(False);
|
||||
End;
|
||||
#71 : Client.WriteStr(#27 + '[H');
|
||||
#72 : Client.WriteStr(#27 + '[A');
|
||||
|
@ -827,48 +886,12 @@ Begin
|
|||
|
||||
Client.Free;
|
||||
|
||||
ShowMsgBox (0, 'Connection terminated');
|
||||
|
||||
Screen.TextAttr := 7;
|
||||
Screen.SetWindow (1, 1, 80, 25, True);
|
||||
End;
|
||||
|
||||
Procedure EditEntry (Var Book: PhoneBookRec; Num: SmallInt);
|
||||
Var
|
||||
Box : TMenuBox;
|
||||
Form : TMenuForm;
|
||||
NewRec : PhoneRec;
|
||||
Begin
|
||||
NewRec := Book[Num];
|
||||
Box := TMenuBox.Create(TOutput(Screen));
|
||||
Form := TMenuForm.Create(TOutput(Screen));
|
||||
|
||||
Box.HeadAttr := 1 + 7 * 16;
|
||||
Box.Header := ' Book Editor ';
|
||||
|
||||
Box.Open (17, 8, 63, 16);
|
||||
|
||||
Form.HelpSize := 0;
|
||||
|
||||
Form.AddStr ('N', ' Name' , 24, 10, 32, 10, 6, 26, 26, @NewRec.Name, '');
|
||||
Form.AddStr ('A', ' Address', 21, 11, 32, 11, 9, 30, 60, @NewRec.Address, '');
|
||||
Form.AddStr ('U', ' User Name', 19, 12, 32, 12, 11, 30, 30, @NewRec.User, '');
|
||||
Form.AddPass ('P', ' Password', 20, 13, 32, 13, 10, 20, 20, @NewRec.Password, '');
|
||||
Form.AddBol ('S', ' StatusBar', 19, 14, 32, 14, 11, 3, @NewRec.StatusBar, '');
|
||||
|
||||
|
||||
Form.Execute;
|
||||
|
||||
If Form.Changed Then
|
||||
If ShowMsgBox(1, 'Save changes?') Then Begin
|
||||
Book[Num] := NewRec;
|
||||
WriteBook(Book);
|
||||
End;
|
||||
|
||||
Form.Free;
|
||||
|
||||
Box.Close;
|
||||
Box.Free;
|
||||
End;
|
||||
|
||||
Procedure SearchEntry (Var Owner: Pointer; Str: String);
|
||||
Begin
|
||||
If Str = '' Then
|
||||
|
@ -943,13 +966,6 @@ Begin
|
|||
#13 : If Book[List.Picked].Address = '' Then
|
||||
ShowMsgBox(0, 'Address is empty')
|
||||
Else Begin
|
||||
With Book[List.Picked] Do Begin
|
||||
LastCall := DateDos2Str(CurDateDos, 1);
|
||||
Calls := strI2S(strS2I(Calls) + 1);
|
||||
End;
|
||||
|
||||
WriteBook(Book);
|
||||
|
||||
Dial := Book[List.Picked];
|
||||
Result := True;
|
||||
|
||||
|
@ -1005,7 +1021,7 @@ Begin
|
|||
Repeat
|
||||
If Not GetTerminalEntry(Book, Dial) Then Break;
|
||||
|
||||
TelnetClient(Dial);
|
||||
TelnetClient(Book, Dial);
|
||||
Until False;
|
||||
End;
|
||||
|
||||
|
|
|
@ -3440,4 +3440,25 @@
|
|||
+ If the download directory doesn't exist when NodeSpy attempts a Zmodem
|
||||
download, it will now tell you instead of crashing.
|
||||
|
||||
+ NodeSpy Terminal now allows the current connected phone book entry to be
|
||||
edited while connected. This allows the password to be set, statusbar to
|
||||
be turned on/off, etc.
|
||||
|
||||
+ NodeSpy Terminal now only updates the last call date and times called if
|
||||
the connection was successful.
|
||||
|
||||
+ NodeSpy terminal now fully disconnects the session before displaying the
|
||||
"connection terminated" box.
|
||||
|
||||
+ MPLC will now continue to attempt to compile subsequent MPL programs even
|
||||
if one compilation fails.
|
||||
|
||||
+ Message Base QWK scan and regular scan settings now have the ability to
|
||||
toggle ALL bases on or off at one time. An updated prompt goes along with
|
||||
this:
|
||||
|
||||
; Message base new and qwk scan toggle prompt:
|
||||
095 Toggle: |09[|11#-#,#|09], Select [|11A|09]ll, [|11D|09]eselect All, [|11?|09/|11List|09]: |XX
|
||||
|
||||
|
||||
<ALPHA 35 RELEASED>
|
||||
|
|
Loading…
Reference in New Issue