A37
This commit is contained in:
parent
a8e615dd49
commit
98f8944909
|
@ -204,7 +204,7 @@ Begin
|
|||
End;
|
||||
End;
|
||||
2 : Begin
|
||||
BoxOpen (25, 4, 53, 11);
|
||||
BoxOpen (25, 4, 53, 13);
|
||||
CoolBoxOpen (24, 'Servers');
|
||||
|
||||
Form.AddNone ('I', ' I Internet Server Options', 26, 5, 26, 5, 27, '');
|
||||
|
@ -213,6 +213,8 @@ Begin
|
|||
Form.AddNone ('3', ' 3 POP3 Server Options', 26, 8, 26, 8, 27, '');
|
||||
Form.AddNone ('4', ' 4 SMTP Server Options', 26, 9, 26, 9, 27, '');
|
||||
Form.AddNone ('5', ' 5 NNTP Server Options', 26, 10, 26, 10, 27, '');
|
||||
Form.AddNone ('6', ' 6 BINKP Server Options', 26, 11, 26, 11, 27, '');
|
||||
Form.AddNone ('7', ' 7 FTN-FTP Server Options', 26, 12, 26, 12, 27, '');
|
||||
|
||||
Res := Form.Execute;
|
||||
MenuPos[2] := Form.ItemPos;
|
||||
|
@ -232,6 +234,8 @@ Begin
|
|||
'3' : Configuration_POP3Server;
|
||||
'4' : Configuration_SMTPServer;
|
||||
'5' : Configuration_NNTPServer;
|
||||
'6' : Configuration_BINKPServer;
|
||||
// '7' : Configuration_FTNFTPServer;
|
||||
'X' : Break;
|
||||
Else
|
||||
MenuPtr := 0;
|
||||
|
|
|
@ -16,6 +16,7 @@ Procedure Configuration_TelnetServer;
|
|||
Procedure Configuration_POP3Server;
|
||||
Procedure Configuration_SMTPServer;
|
||||
Procedure Configuration_NNTPServer;
|
||||
Procedure Configuration_BINKPServer;
|
||||
Procedure Configuration_MessageSettings;
|
||||
Procedure Configuration_NewUser1Settings;
|
||||
Procedure Configuration_NewUser2Settings;
|
||||
|
@ -387,6 +388,37 @@ Begin
|
|||
Box.Free;
|
||||
End;
|
||||
|
||||
Procedure Configuration_BINKPServer;
|
||||
Var
|
||||
Box : TAnsiMenuBox;
|
||||
Form : TAnsiMenuForm;
|
||||
Topic : String[80];
|
||||
Begin
|
||||
Topic := '|03(|09BINKP Server|03) |01-|09> |15';
|
||||
|
||||
Box := TAnsiMenuBox.Create;
|
||||
Form := TAnsiMenuForm.Create;
|
||||
|
||||
Box.Header := ' BINKP Server ';
|
||||
|
||||
Box.Open (27, 8, 53, 17);
|
||||
|
||||
VerticalLine (45, 10, 15);
|
||||
|
||||
Form.AddBol ('U', ' Use Server', 33, 10, 47, 10, 12, 3, @Config.inetBINKPUse, Topic + 'Enable BINKP server');
|
||||
Form.AddWord ('P', ' Server Port', 32, 11, 47, 11, 13, 5, 0, 65535, @Config.inetBINKPPort, Topic + 'BINKP Server port');
|
||||
Form.AddByte ('N', ' Max Connections', 28, 12, 47, 12, 17, 3, 1, 255, @Config.inetBINKPMax, Topic + 'Max Connections');
|
||||
Form.AddByte ('I', ' Dupe IP Limit', 30, 13, 47, 13, 15, 3, 1, 255, @Config.inetBINKPDupes, Topic + 'Max connections with same IP');
|
||||
Form.AddWord ('T', ' Timeout', 36, 14, 47, 14, 9, 5, 0, 65535, @Config.inetBINKPTimeout, Topic + 'Connection timeout (seconds)');
|
||||
Form.AddBol ('F', ' Force CRAM-MD5', 29, 15, 47, 15, 16, 3, @Config.inetBINKPCram5, Topic + 'Force CRAM-MD5 auth');
|
||||
|
||||
Form.Execute;
|
||||
Form.Free;
|
||||
|
||||
Box.Close;
|
||||
Box.Free;
|
||||
End;
|
||||
|
||||
Procedure Configuration_SMTPServer;
|
||||
Var
|
||||
Box : TAnsiMenuBox;
|
||||
|
|
|
@ -48,7 +48,8 @@ Uses
|
|||
MIS_Client_SMTP,
|
||||
MIS_Client_POP3,
|
||||
MIS_Client_FTP,
|
||||
MIS_Client_NNTP;
|
||||
MIS_Client_NNTP,
|
||||
MIS_Client_BINKP;
|
||||
|
||||
Const
|
||||
FocusTelnet = 0;
|
||||
|
@ -56,7 +57,8 @@ Const
|
|||
FocusPOP3 = 2;
|
||||
FocusFTP = 3;
|
||||
FocusNNTP = 4;
|
||||
FocusMax = 4;
|
||||
FocusBINKP = 5;
|
||||
FocusMax = 5;
|
||||
|
||||
Var
|
||||
Keyboard : TInput;
|
||||
|
@ -65,6 +67,7 @@ Var
|
|||
POP3Server : TServerManager;
|
||||
SMTPServer : TServerManager;
|
||||
NNTPServer : TServerManager;
|
||||
BINKPServer : TServerManager;
|
||||
FocusPTR : TServerManager;
|
||||
FocusCurrent : Byte;
|
||||
TopPage : Integer;
|
||||
|
@ -122,6 +125,7 @@ Begin
|
|||
FocusPOP3 : GetFocusPtr := POP3Server;
|
||||
FocusFTP : GetFocusPtr := FTPServer;
|
||||
FocusNNTP : GetFocusPtr := NNTPServer;
|
||||
FocusBINKP : GetFocusPtr := BINKPServer;
|
||||
End;
|
||||
End;
|
||||
|
||||
|
@ -160,7 +164,8 @@ Begin
|
|||
1,
|
||||
2,
|
||||
3,
|
||||
4: If (Count <= FocusPtr.ClientList.Count) And (FocusPtr.ClientList[Count - 1] <> NIL) Then Begin
|
||||
4,
|
||||
5 : If (Count <= FocusPtr.ClientList.Count) And (FocusPtr.ClientList[Count - 1] <> NIL) Then Begin
|
||||
Console.WriteXY (3, 3 + PosY, Attr,
|
||||
strPadL(strI2S(Count), 3, '0') + ' ' +
|
||||
strPadR(TFTPServer(FocusPtr.ClientList[Count - 1]).User.Handle, 31, ' ') + ' ' +
|
||||
|
@ -219,17 +224,19 @@ Begin
|
|||
FocusPOP3 : If Pop3Server <> NIL Then Break;
|
||||
FocusFTP : If FtpServer <> NIL Then Break;
|
||||
FocusNNTP : If NNTPServer <> NIL Then Break;
|
||||
FocusBINKP : If BINKPServer <> NIL Then Break;
|
||||
End;
|
||||
Until False;
|
||||
|
||||
Console.WriteXY (50, 1, 112, 'telnet/smtp/pop3/ftp/nntp/http');
|
||||
Console.WriteXY (49, 1, 112, 'telnet/smtp/pop3/ftp/nntp/binkp');
|
||||
|
||||
Case FocusCurrent of
|
||||
FocusTelnet : Console.WriteXY (50, 1, 113, 'TELNET');
|
||||
FocusSMTP : Console.WriteXY (57, 1, 113, 'SMTP');
|
||||
FocusPOP3 : Console.WriteXY (62, 1, 113, 'POP3');
|
||||
FocusFTP : Console.WriteXY (67, 1, 113, 'FTP');
|
||||
FocusNNTP : Console.WriteXY (71, 1, 113, 'NNTP');
|
||||
FocusTelnet : Console.WriteXY (49, 1, 113, 'TELNET');
|
||||
FocusSMTP : Console.WriteXY (56, 1, 113, 'SMTP');
|
||||
FocusPOP3 : Console.WriteXY (61, 1, 113, 'POP3');
|
||||
FocusFTP : Console.WriteXY (66, 1, 113, 'FTP');
|
||||
FocusNNTP : Console.WriteXY (70, 1, 113, 'NNTP');
|
||||
FocusBINKP : Console.WriteXY (75, 1, 113, 'BINKP');
|
||||
End;
|
||||
|
||||
FocusPtr := GetFocusPtr;
|
||||
|
@ -348,7 +355,9 @@ Begin
|
|||
TelnetServer := NIL;
|
||||
FTPServer := NIL;
|
||||
POP3Server := NIL;
|
||||
SMTPServer := NIL;
|
||||
NNTPServer := NIL;
|
||||
BINKPServer := NIL;
|
||||
NodeData := TNodeData.Create(bbsConfig.INetTNNodes);
|
||||
|
||||
If bbsConfig.InetTNUse Then Begin
|
||||
|
@ -396,6 +405,15 @@ Begin
|
|||
Result := True;
|
||||
End;
|
||||
|
||||
If bbsConfig.InetBINKPUse Then Begin
|
||||
BINKPServer := TServerManager.Create(bbsConfig, bbsConfig.InetBINKPPort, bbsConfig.inetBINKPMax, NodeData, @CreateBINKP);
|
||||
|
||||
BINKPServer.Server.FTelnetServer := False;
|
||||
BINKPServer.ClientMaxIPs := bbsConfig.inetBINKPDupes;
|
||||
|
||||
Result := True;
|
||||
End;
|
||||
|
||||
{$IFDEF UNIX}
|
||||
SetUserOwner;
|
||||
{$ENDIF}
|
||||
|
@ -451,6 +469,7 @@ Begin
|
|||
POP3Server.Free;
|
||||
FTPServer.Free;
|
||||
NNTPServer.Free;
|
||||
BinkPServer.Free;
|
||||
NodeData.Free;
|
||||
Halt(0);
|
||||
End;
|
||||
|
@ -487,6 +506,7 @@ Begin
|
|||
|
||||
Repeat
|
||||
WaitMS(60000); // Heartbeat
|
||||
// change to wait 45 and check for event
|
||||
Until False;
|
||||
End;
|
||||
{$ENDIF}
|
||||
|
@ -518,8 +538,7 @@ Begin
|
|||
|
||||
If Not ServerStartup Then Begin
|
||||
Console.ClearScreen;
|
||||
Console.WriteLine('ERROR: No servers are configured as active. Run MYSTIC -CFG to configure');
|
||||
Console.WriteLine('Internet server options.');
|
||||
Console.WriteLine('ERROR: No servers are configured as active.');
|
||||
|
||||
NodeData.Free;
|
||||
Keyboard.Free;
|
||||
|
@ -619,6 +638,9 @@ Begin
|
|||
Console.WriteStr (' NNTP');
|
||||
NNTPServer.Free;
|
||||
|
||||
Console.WriteStr (' BINKP');
|
||||
BINKPServer.Free;
|
||||
|
||||
Console.WriteLine (' (DONE)');
|
||||
|
||||
NodeData.Free;
|
||||
|
|
|
@ -19,6 +19,7 @@ Var
|
|||
Function SearchForUser (UN: String; Var Rec: RecUser; Var RecPos: LongInt) : Boolean;
|
||||
Function CheckAccess (User: RecUser; IgnoreGroup: Boolean; Str: String) : Boolean;
|
||||
Function GetSecurityLevel (Level: Byte; SecLevel: RecSecurity) : Boolean;
|
||||
Function strAddr2Str (Addr : RecEchoMailAddr) : String;
|
||||
|
||||
Implementation
|
||||
|
||||
|
@ -214,4 +215,16 @@ Begin
|
|||
Result := True;
|
||||
End;
|
||||
|
||||
Function strAddr2Str (Addr : RecEchoMailAddr) : String;
|
||||
Var
|
||||
Temp : String[20];
|
||||
Begin
|
||||
Temp := strI2S(Addr.Zone) + ':' + strI2S(Addr.Net) + '/' +
|
||||
strI2S(Addr.Node);
|
||||
|
||||
If Addr.Point <> 0 Then Temp := Temp + '.' + strI2S(Addr.Point);
|
||||
|
||||
Result := Temp;
|
||||
End;
|
||||
|
||||
End.
|
||||
|
|
|
@ -206,7 +206,7 @@ Begin
|
|||
If Terminated Then Exit;
|
||||
|
||||
If ClientMax = 0 Then
|
||||
Status('WARNING: At least one server is configured with 0 max clients.');
|
||||
Status('WARNING: At least one server is configured 0 max clients');
|
||||
|
||||
Status('Opening server socket on port ' + strI2S(Port));
|
||||
|
||||
|
|
|
@ -376,7 +376,7 @@ Begin
|
|||
AddStr ({$IFDEF MPLPARSER} 'useremail', {$ENDIF} iString, 60);
|
||||
AddStr ({$IFDEF MPLPARSER} 'userinfo', {$ENDIF} iString, 30);
|
||||
|
||||
AddStr ({$IFDEF MPLPARSER} 'useropts', {$ENDIF} iString, 10 * 60 - 1);
|
||||
AddStr ({$IFDEF MPLPARSER} 'useropts', {$ENDIF} iString, 10 * 61 - 1);
|
||||
CV[X]^.ArrPos := 1;
|
||||
{$IFNDEF MPLPARSER}
|
||||
CV[X]^.VarSize := 61;
|
||||
|
|
|
@ -145,30 +145,54 @@ Uses
|
|||
|
||||
{$IFDEF LOGGING}
|
||||
Procedure TInterpEngine.LogVarInformation (Num: LongInt);
|
||||
Var
|
||||
TypeStr : String;
|
||||
DimStr : String;
|
||||
Count : LongInt;
|
||||
Begin
|
||||
Session.SystemLog(' DUMP VAR ' + strI2S(Num));
|
||||
|
||||
Case VarData[Num]^.vType of
|
||||
iNone : TypeStr := 'None';
|
||||
iString : TypeStr := 'String';
|
||||
iChar : TypeStr := 'Char';
|
||||
iByte : TypeStr := 'Byte';
|
||||
iShort : TypeStr := 'Short';
|
||||
iWord : TypeStr := 'Word';
|
||||
iInteger : TypeStr := 'Integer';
|
||||
iLongInt : TypeStr := 'LongInt';
|
||||
iCardinal : TypeStr := 'Cardinal';
|
||||
iReal : TypeStr := 'Real';
|
||||
iBool : TypeStr := 'Boolean';
|
||||
iFile : TypeStr := 'File';
|
||||
iRecord : TypeStr := 'Record';
|
||||
iPointer : TypeStr := 'Pointer';
|
||||
Else
|
||||
TypeStr := 'Unknown';
|
||||
End;
|
||||
|
||||
DimStr := '';
|
||||
|
||||
For Count := 1 to VarData[Num]^.ArrPos Do Begin
|
||||
If DimStr <> '' Then DimStr := DimStr + ',';
|
||||
DimStr := DimStr + strI2S(VarData[Num]^.ArrDim[Count]);
|
||||
End;
|
||||
|
||||
With VarData[Num]^ Do Begin
|
||||
Session.SystemLog(' ID: ' + strI2S(VarID));
|
||||
Session.SystemLog(' Type: ' + strI2S(Ord(vType)));
|
||||
Session.SystemLog(' Type: ' + strI2S(Ord(vType)) + ', ' + TypeStr);
|
||||
Session.SystemLog(' DataSize: ' + strI2S(DataSize));
|
||||
Session.SystemLog(' VarSize: ' + strI2S(VarSize));
|
||||
Session.SystemLog(' Kill: ' + strI2S(Ord(Kill)));
|
||||
Session.SystemLog(' ProcPos: ' + strI2S(ProcPos));
|
||||
Session.SystemLog(' NumParams: ' + strI2S(NumParams));
|
||||
Session.SystemLog(' ArrPos: ' + strI2S(ArrPos) + '(' + DimStr + ')');
|
||||
|
||||
If Data <> NIL Then
|
||||
Session.SystemLog(' Data: Assigned')
|
||||
Else
|
||||
Session.SystemLog(' Data: NIL');
|
||||
End;
|
||||
|
||||
// Params : Array[1..mplMaxProcParams] of Char;
|
||||
// NumParams : Byte;
|
||||
// pID : Array[1..mplMaxProcParams] of Word;
|
||||
// ProcPos : LongInt;
|
||||
// Data : PStack;
|
||||
// ArrPos : Byte;
|
||||
// ArrDims : TArrayInfo;
|
||||
|
||||
End;
|
||||
{$ENDIF}
|
||||
|
||||
|
@ -2405,8 +2429,8 @@ Begin
|
|||
|
||||
Case TTokenOpsRec(Byte(Ch)) of
|
||||
{0} opBlockOpen : Begin
|
||||
// PrevChar;
|
||||
// Self.ExecuteBlock(CurVarNum);
|
||||
//PrevChar;
|
||||
//Self.ExecuteBlock(CurVarNum);
|
||||
End;
|
||||
{1} opBlockClose : Break;
|
||||
{2} opVarDeclare : DefineVariable;
|
||||
|
@ -2564,6 +2588,11 @@ Begin
|
|||
Exit;
|
||||
End;
|
||||
|
||||
{$IFDEF LOGGING}
|
||||
Session.SystemLog('-');
|
||||
Session.SystemLog('[!] BEGIN EXECUTION: ' + FN);
|
||||
{$ENDIF}
|
||||
|
||||
InitProcedures (Owner, Self, VarData, CurVarNum, CurVarID, 0);
|
||||
ExecuteBlock (CurVarNum);
|
||||
|
||||
|
@ -2574,6 +2603,10 @@ Begin
|
|||
Session.io.AllowArrow := SavedArrow;
|
||||
|
||||
Result := Ord(ReloadMenu) + 1;
|
||||
|
||||
{$IFDEF LOGGING}
|
||||
Session.SystemLog('[!] END EXECUTION: ' + FN);
|
||||
{$ENDIF}
|
||||
End;
|
||||
|
||||
Function ExecuteMPL (Owner: Pointer; Str: String) : Byte;
|
||||
|
|
|
@ -23,7 +23,7 @@
|
|||
Const
|
||||
mysSoftwareID = 'Mystic BBS';
|
||||
mysCopyYear = '1997-2013'; // its been a long time!
|
||||
mysVersion = '1.10 A36'; // current version
|
||||
mysVersion = '1.10 A37'; // current version
|
||||
mysDataChanged = '1.10 A11'; // version of last records change
|
||||
|
||||
{$IFDEF WIN32}
|
||||
|
@ -327,7 +327,13 @@ Type
|
|||
//AllowEmailPWReset
|
||||
ForceNodeList : Boolean;
|
||||
inetInterface : String[23];
|
||||
Reserved : Array[1..787] of Char;
|
||||
inetBINKPUse : Boolean;
|
||||
inetBINKPPort : Word;
|
||||
inetBINKPMax : Word;
|
||||
inetBINKPDupes : Byte;
|
||||
inetBINKPTimeOut: Word;
|
||||
inetBINKPCram5 : Boolean;
|
||||
Reserved : Array[1..778] of Char;
|
||||
End;
|
||||
|
||||
Const
|
||||
|
|
|
@ -32,6 +32,9 @@ BUGS AND POSSIBLE ISSUES
|
|||
FUTURE / IDEAS / WORK IN PROGRESS / NOTES
|
||||
=========================================
|
||||
|
||||
- when mutil is tossing a packet and auto creates an area figure out if there
|
||||
can be a way to automatically create the uplink back to the originating
|
||||
node.
|
||||
- global user editor for user flags, def protocol, etc etc
|
||||
- ability to configure auto signatures (2 of them) one for handle and one
|
||||
for real names
|
||||
|
|
|
@ -3482,6 +3482,8 @@
|
|||
! Mystic should now will properly display the file base "display file"
|
||||
before listing files.
|
||||
|
||||
! Date corruption with MUTIL echomail export has hopefully been fixed.
|
||||
|
||||
+ MPL now has the ability to interface directly with internal Mystic BBS
|
||||
classes. This opens up a whole world of new possibilities in the future
|
||||
(for example) sockets, full remote ANSI screen library (boxes, listboxes)
|
||||
|
@ -3515,6 +3517,29 @@
|
|||
! Once a default protocol was selected, the GE command (option 22) to change
|
||||
the default was not working.
|
||||
|
||||
+ MPL now supports ANSI screen class. NEED TO DOCUMENT AND SHOW EXAMPLE
|
||||
+ MPL now supports ANSI screen class. This allows the ability to save and
|
||||
restore portions of the user's screen. The example below saves the screen
|
||||
coordinates defined as: X1:20, Y1:5, X2:60, Y2:10. It then clears the
|
||||
screen and then restores the saved portion of the screen.
|
||||
|
||||
Var SavedScreen : LongInt;
|
||||
|
||||
ClassCreate (SavedScreen, 'image');
|
||||
ImageGet (SavedScreen, 20, 5, 60, 10);
|
||||
|
||||
ClrScr;
|
||||
WriteLn ('Press a key to restore');
|
||||
|
||||
Pause;
|
||||
|
||||
ImagePut (SavedScreen);
|
||||
ClassFree (SavedScreen);
|
||||
|
||||
Pause;
|
||||
|
||||
<ALPHA 36 RELEASED>
|
||||
|
||||
! Fixed an issue with useropts variable in MPL which could cause memory
|
||||
corruption.
|
||||
|
||||
<ALPHA 37 RELEASED>
|
Loading…
Reference in New Issue