This commit is contained in:
mysticbbs 2013-08-17 22:06:47 -04:00
parent a8e615dd49
commit 98f8944909
10 changed files with 167 additions and 29 deletions

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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.

View File

@ -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));

View File

@ -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;

View File

@ -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}
@ -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;

View File

@ -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

View File

@ -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

View File

@ -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>