A30
This commit is contained in:
parent
8a8516ba2b
commit
8462572104
|
@ -1,4 +1,4 @@
|
|||
.---------------------------------------------------------------------------.
|
||||
.---------------------------------------------------------------------------
|
||||
| Mystic BBS History Documentation Versions 1.05 through 1.10 |
|
||||
`---------------------------------------------------------------------------'
|
||||
|
||||
|
|
|
@ -26,11 +26,12 @@ Uses
|
|||
bbs_cfg_SecLevel,
|
||||
bbs_cfg_Theme,
|
||||
bbs_cfg_UserEdit,
|
||||
bbs_cfg_EchoMail,
|
||||
bbs_cfg_MenuEdit,
|
||||
|
||||
// old shit to rewrite
|
||||
bbs_cfg_events,
|
||||
bbs_cfg_vote,
|
||||
bbs_cfg_menuedit;
|
||||
bbs_cfg_vote;
|
||||
|
||||
Procedure Configuration_ExecuteEditor (Mode: Char);
|
||||
Var
|
||||
|
@ -40,7 +41,7 @@ Begin
|
|||
|
||||
Case Mode of
|
||||
'A' : Configuration_ArchiveEditor;
|
||||
'B' : Configuration_MessageBaseEditor;
|
||||
'B' : Configuration_MessageBaseEditor(True);
|
||||
'F' : Configuration_FileBaseEditor;
|
||||
'G' : Configuration_GroupEditor(True);
|
||||
'L' : Configuration_SecurityEditor(True);
|
||||
|
@ -177,7 +178,7 @@ Begin
|
|||
End;
|
||||
End;
|
||||
1 : Begin
|
||||
BoxOpen (4, 4, 33, 16);
|
||||
BoxOpen (4, 4, 33, 17);
|
||||
CoolBoxOpen (3, 'Configuration');
|
||||
|
||||
Form.AddNone ('S', ' S System Paths', 5, 5, 5, 5, 28, '');
|
||||
|
@ -188,9 +189,10 @@ Begin
|
|||
Form.AddNone ('3', ' 3 New User Optional Fields', 5, 10, 5, 10, 28, '');
|
||||
Form.AddNone ('F', ' F File Base Settings', 5, 11, 5, 11, 28, '');
|
||||
Form.AddNone ('M', ' M Message Base Settings', 5, 12, 5, 12, 28, '');
|
||||
Form.AddNone ('E', ' E Echomail Networks', 5, 13, 5, 13, 28, '');
|
||||
Form.AddNone ('O', ' O Offline Mail Settings', 5, 14, 5, 14, 28, '');
|
||||
Form.AddNone ('C', ' C Console Settings', 5, 15, 5, 15, 28, '');
|
||||
Form.AddNone ('E', ' E EchoMail Addresses', 5, 13, 5, 13, 28, '');
|
||||
Form.AddNone ('N', ' N EchoMail Nodes', 5, 14, 5, 14, 28, '');
|
||||
Form.AddNone ('O', ' O Offline Mail Settings', 5, 15, 5, 15, 28, '');
|
||||
Form.AddNone ('C', ' C Console Settings', 5, 16, 5, 16, 28, '');
|
||||
|
||||
Res := Form.Execute;
|
||||
MenuPos[1] := Form.ItemPos;
|
||||
|
@ -208,6 +210,7 @@ Begin
|
|||
'G' : Configuration_GeneralSettings;
|
||||
'L' : Configuration_LoginMatrix;
|
||||
'E' : Configuration_EchoMailAddress(True);
|
||||
'N' : Configuration_EchoMailNodes(True);
|
||||
'3' : Configuration_OptionalFields;
|
||||
'F' : Configuration_FileSettings;
|
||||
'M' : Configuration_MessageSettings;
|
||||
|
@ -285,7 +288,7 @@ Begin
|
|||
End Else Begin
|
||||
Case Res of
|
||||
'A' : Configuration_ArchiveEditor;
|
||||
'B' : Configuration_MessageBaseEditor;
|
||||
'B' : Configuration_MessageBaseEditor(True);
|
||||
'F' : Configuration_FileBaseEditor;
|
||||
'G' : Configuration_GroupEditor(True);
|
||||
'M' : Configuration_MenuEditor;
|
||||
|
|
|
@ -4,7 +4,7 @@ Unit bbs_cfg_MsgBase;
|
|||
|
||||
Interface
|
||||
|
||||
Procedure Configuration_MessageBaseEditor;
|
||||
Function Configuration_MessageBaseEditor (Edit: Boolean) : LongInt;
|
||||
|
||||
Implementation
|
||||
|
||||
|
@ -17,7 +17,7 @@ Uses
|
|||
bbs_Ansi_MenuBox,
|
||||
bbs_Ansi_MenuForm,
|
||||
bbs_Cfg_Common,
|
||||
bbs_Cfg_SysCfg,
|
||||
bbs_Cfg_EchoMail,
|
||||
bbs_Common;
|
||||
|
||||
Type
|
||||
|
@ -97,33 +97,36 @@ Var
|
|||
Box : TAnsiMenuBox;
|
||||
Form : TAnsiMenuForm;
|
||||
Topic : String;
|
||||
Links : LongInt;
|
||||
Begin
|
||||
Topic := '|03(|09Message Base Edit|03) |01-|09> |15';
|
||||
Box := TAnsiMenuBox.Create;
|
||||
Form := TAnsiMenuForm.Create;
|
||||
|
||||
Box.Shadow := False;
|
||||
Box.Header := ' Index ' + strI2S(MBase.Index) + ' ';
|
||||
|
||||
Box.Open (3, 5, 77, 21);
|
||||
Box.Open (3, 5, 77, 22);
|
||||
|
||||
VerticalLine (17, 6, 20);
|
||||
VerticalLine (66, 6, 20);
|
||||
VerticalLine (17, 6, 21);
|
||||
VerticalLine (66, 6, 21);
|
||||
|
||||
Form.AddStr ('N', ' Name' , 11, 6, 19, 6, 6, 30, 40, @MBase.Name, Topic + 'Message base description');
|
||||
Form.AddStr ('W', ' Newsgroup' , 6, 7, 19, 7, 11, 30, 60, @MBase.NewsName, Topic + 'Newsgroup name');
|
||||
Form.AddStr ('Q', ' QWK Name' , 7, 8, 19, 8, 10, 13, 13, @MBase.QwkName, Topic + 'Qwk Short name');
|
||||
Form.AddStr ('F', ' File Name' , 6, 9, 19, 9, 11, 30, 40, @MBase.FileName, Topic + 'Message base storage file name');
|
||||
Form.AddPath ('P', ' Path' , 11, 10, 19, 10, 6, 30, 80, @MBase.Path, Topic + 'Message base storage path');
|
||||
Form.AddStr ('L', ' List ACS' , 7, 11, 19, 11, 10, 30, 30, @MBase.ListACS, Topic + 'Access required to see in base list');
|
||||
Form.AddStr ('R', ' Read ACS' , 7, 12, 19, 12, 10, 30, 30, @MBase.ReadACS, Topic + 'Access required to read messages');
|
||||
Form.AddStr ('C', ' Post ACS' , 7, 13, 19, 13, 10, 30, 30, @MBase.PostACS, Topic + 'Access required to post messages');
|
||||
Form.AddStr ('Y', ' Sysop ACS' , 6, 14, 19, 14, 11, 30, 30, @MBase.SysopACS, Topic + 'Access required for Sysop access');
|
||||
Form.AddNone ('D', ' Net Address' , 4, 15, 19, 15, 13, Topic + 'NetMail Address');
|
||||
Form.AddStr ('I', ' Origin' , 9, 16, 19, 16, 8, 30, 50, @MBase.Origin, Topic + 'Message base origin line');
|
||||
Form.AddStr ('S', ' Sponsor' , 8, 17, 19, 17, 9, 30, 30, @MBase.Sponsor, Topic + 'User name of base''s sponser');
|
||||
Form.AddStr ('H', ' Header' , 9, 18, 19, 18, 8, 20, 20, @MBase.Header, Topic + 'Display file name of msg header');
|
||||
Form.AddStr ('T', ' R Template' , 5, 19, 19, 19, 12, 20, 20, @MBase.RTemplate, Topic + 'Template for full screen reader');
|
||||
Form.AddStr ('M', ' L Template' , 5, 20, 19, 20, 12, 20, 20, @MBase.ITemplate, Topic + 'Template for lightbar message list');
|
||||
Form.AddStr ('8', ' Echo Tag' , 7, 9, 19, 9, 10, 30, 40, @MBase.EchoTag, Topic + 'FTN EchoTag');
|
||||
Form.AddStr ('F', ' File Name' , 6, 10, 19, 10, 11, 30, 40, @MBase.FileName, Topic + 'Message base storage file name');
|
||||
Form.AddPath ('P', ' Path' , 11, 11, 19, 11, 6, 30, 80, @MBase.Path, Topic + 'Message base storage path');
|
||||
Form.AddStr ('L', ' List ACS' , 7, 12, 19, 12, 10, 30, 30, @MBase.ListACS, Topic + 'Access required to see in base list');
|
||||
Form.AddStr ('R', ' Read ACS' , 7, 13, 19, 13, 10, 30, 30, @MBase.ReadACS, Topic + 'Access required to read messages');
|
||||
Form.AddStr ('C', ' Post ACS' , 7, 14, 19, 14, 10, 30, 30, @MBase.PostACS, Topic + 'Access required to post messages');
|
||||
Form.AddStr ('Y', ' Sysop ACS' , 6, 15, 19, 15, 11, 30, 30, @MBase.SysopACS, Topic + 'Access required for Sysop access');
|
||||
Form.AddNone ('D', ' Net Address' , 4, 16, 19, 16, 13, Topic + 'NetMail Address');
|
||||
Form.AddNone ('7', ' Export To' , 6, 17, 19, 17, 11, Topic + 'Export messages to these nodes');
|
||||
Form.AddStr ('I', ' Origin' , 9, 18, 19, 18, 8, 30, 50, @MBase.Origin, Topic + 'Message base origin line');
|
||||
Form.AddStr ('S', ' Sponsor' , 8, 19, 19, 19, 9, 30, 30, @MBase.Sponsor, Topic + 'User name of base''s sponser');
|
||||
Form.AddStr ('T', ' R Template' , 5, 20, 19, 20, 12, 20, 20, @MBase.RTemplate, Topic + 'Template for full screen reader');
|
||||
Form.AddStr ('M', ' L Template' , 5, 21, 19, 21, 12, 20, 20, @MBase.ITemplate, Topic + 'Template for lightbar message list');
|
||||
|
||||
Form.AddAttr ('Q', ' Quote Color' , 53, 6, 68, 6, 13, @MBase.ColQuote, Topic + 'Color for quoted text');
|
||||
Form.AddAttr ('X', ' Text Color' , 54, 7, 68, 7, 12, @MBase.ColText, Topic + 'Color for message text');
|
||||
|
@ -140,12 +143,24 @@ Begin
|
|||
Form.AddBits ('V', ' Private' , 57, 18, 68, 18, 9, MBPrivate, @MBase.Flags, Topic + 'Is this a private base?');
|
||||
Form.AddTog ('A', ' Base Type' , 55, 19, 68, 19, 11, 9, 0, 3, 'Local EchoMail Newsgroup Netmail', @MBase.NetType, Topic + 'Message base type');
|
||||
Form.AddTog ('B', ' Base Format' , 53, 20, 68, 20, 13, 6, 0, 1, 'JAM Squish', @MBase.BaseType, Topic + 'Message base storage format');
|
||||
Form.AddStr ('H', ' Header' , 58, 21, 68, 21, 8, 9, 20, @MBase.Header, Topic + 'Display file name of msg header');
|
||||
|
||||
|
||||
Repeat
|
||||
WriteXY (19, 15, 113, strPadR(strAddr2Str(Config.NetAddress[MBase.NetAddr]), 19, ' '));
|
||||
WriteXY (19, 16, 113, strPadR(strAddr2Str(Config.NetAddress[MBase.NetAddr]), 19, ' '));
|
||||
|
||||
Links := FileByteSize(MBase.Path + MBase.FileName + '.lnk');
|
||||
|
||||
If Links <> -1 Then
|
||||
Links := Links DIV SizeOf(RecEchoMailExport)
|
||||
Else
|
||||
Links := 0;
|
||||
|
||||
WriteXY (19, 17, 113, strI2S(Links) + ' node(s)');
|
||||
|
||||
Case Form.Execute of
|
||||
'D' : MBase.NetAddr := Configuration_EchoMailAddress(False);
|
||||
'7' : Configuration_NodeExport (MBase);
|
||||
#27 : Break;
|
||||
End;
|
||||
Until False;
|
||||
|
@ -158,7 +173,7 @@ Begin
|
|||
Box.Free;
|
||||
End;
|
||||
|
||||
Procedure Configuration_MessageBaseEditor;
|
||||
Function Configuration_MessageBaseEditor (Edit: Boolean) : LongInt;
|
||||
Var
|
||||
Box : TAnsiMenuBox;
|
||||
List : TAnsiMenuList;
|
||||
|
@ -366,6 +381,8 @@ Var
|
|||
End;
|
||||
|
||||
Begin
|
||||
Result := -1;
|
||||
|
||||
Assign (MBaseFile, Config.DataPath + 'mbases.dat');
|
||||
|
||||
If Not ioReset(MBaseFile, SizeOf(MBase), fmRWDN) Then
|
||||
|
@ -395,7 +412,8 @@ Begin
|
|||
List.Close;
|
||||
|
||||
Case List.ExitCode of
|
||||
'/' : Case GetCommandOption(8, 'I-Insert|D-Delete|C-Copy|P-Paste|G-Global|S-Sort|') of
|
||||
'/' : If Edit Then
|
||||
Case GetCommandOption(8, 'I-Insert|D-Delete|C-Copy|P-Paste|G-Global|S-Sort|') of
|
||||
'I' : If List.Picked > 1 Then Begin
|
||||
AssignRecord(False);
|
||||
MakeList;
|
||||
|
@ -416,6 +434,7 @@ Begin
|
|||
FileErase (MBase.Path + MBase.FileName + '.sqi');
|
||||
FileErase (MBase.Path + MBase.FileName + '.sql');
|
||||
FileErase (MBase.Path + MBase.FileName + '.scn');
|
||||
FileErase (MBase.Path + MBase.FileName + '.lnk');
|
||||
End;
|
||||
|
||||
MakeList;
|
||||
|
@ -453,10 +472,16 @@ Begin
|
|||
Seek (MBaseFile, List.Picked - 1);
|
||||
Read (MBaseFile, MBase);
|
||||
|
||||
EditMessageBase (MBase);
|
||||
If Edit Then Begin
|
||||
EditMessageBase (MBase);
|
||||
|
||||
Seek (MBaseFile, List.Picked - 1);
|
||||
Write (MBaseFile, MBase);
|
||||
Seek (MBaseFile, List.Picked - 1);
|
||||
Write (MBaseFile, MBase);
|
||||
End Else Begin
|
||||
Result := MBase.Index;
|
||||
|
||||
Break;
|
||||
End;
|
||||
End;
|
||||
#27 : Break;
|
||||
End;
|
||||
|
|
|
@ -8,7 +8,6 @@ Procedure Configuration_SysPaths;
|
|||
Procedure Configuration_GeneralSettings;
|
||||
Procedure Configuration_LoginMatrix;
|
||||
Procedure Configuration_OptionalFields;
|
||||
Function Configuration_EchomailAddress (Edit: Boolean) : Byte;
|
||||
Procedure Configuration_FileSettings;
|
||||
Procedure Configuration_QWKSettings;
|
||||
Procedure Configuration_Internet;
|
||||
|
@ -43,9 +42,9 @@ Begin
|
|||
|
||||
Box.Header := ' System Directories ';
|
||||
|
||||
Box.Open (5, 6, 75, 18);
|
||||
Box.Open (5, 6, 75, 20);
|
||||
|
||||
VerticalLine (26, 8, 16);
|
||||
VerticalLine (26, 8, 18);
|
||||
|
||||
Form.AddPath ('S', ' System Path', 13, 8, 28, 8, 13, 45, mysMaxPathSize, @Config.SystemPath, Topic + 'Root Mystic BBS directory');
|
||||
Form.AddPath ('D', ' Data File Path', 10, 9, 28, 9, 16, 45, mysMaxPathSize, @Config.DataPath, Topic + 'Data file directory');
|
||||
|
@ -55,8 +54,9 @@ Begin
|
|||
Form.AddPath ('E', ' Semaphore Path', 10, 13, 28, 13, 16, 45, mysMaxPathSize, @Config.SemaPath, Topic + 'Semaphore file directory');
|
||||
Form.AddPath ('U', ' Menu File Path', 10, 14, 28, 14, 16, 45, mysMaxPathSize, @Config.MenuPath, Topic + 'Default menu file directory');
|
||||
Form.AddPath ('T', ' Text File Path', 10, 15, 28, 15, 16, 45, mysMaxPathSize, @Config.TextPath, Topic + 'Default display file directory');
|
||||
// Form.AddPath ('P', ' Template Path', 11, 16, 29, 16, 15, 45, mysMaxPathSize, @Config.TemplatePath, Topic + 'Default template file directory');
|
||||
Form.AddPath ('R', ' Script Path', 13, 16, 28, 16, 13, 45, mysMaxPathSize, @Config.ScriptPath, Topic + 'Default script (MPL) directory');
|
||||
Form.AddPath ('I', ' Inbound EchoMail', 8, 17, 28, 17, 18, 45, mysMaxPathSize, @Config.InboundPath, Topic + 'Inbound Echomail directory');
|
||||
Form.AddPath ('O', ' Outbound EchoMail', 7, 18, 28, 18, 19, 45, mysMaxPathSize, @Config.OutboundPath, Topic + 'Outbound Echomail directory');
|
||||
|
||||
Form.Execute;
|
||||
|
||||
|
@ -179,98 +179,6 @@ Begin
|
|||
Box.Free;
|
||||
End;
|
||||
|
||||
Function Configuration_EchomailAddress (Edit: Boolean) : Byte;
|
||||
|
||||
Procedure EditAddress (Num: Byte);
|
||||
Var
|
||||
Box : TAnsiMenuBox;
|
||||
Form : TAnsiMenuForm;
|
||||
Topic : String;
|
||||
Begin
|
||||
Topic := '|03(|09Echomail Network|03) |01-|09> |15';
|
||||
Box := TAnsiMenuBox.Create;
|
||||
Form := TAnsiMenuForm.Create;
|
||||
|
||||
Box.Open (14, 6, 66, 17);
|
||||
|
||||
VerticalLine (29, 9, 12);
|
||||
VerticalLine (29, 14, 15);
|
||||
VerticalLine (54, 9, 12);
|
||||
|
||||
WriteXY (21, 8, 112, 'Address');
|
||||
WriteXY (47, 8, 112, 'Uplink');
|
||||
|
||||
Form.AddWord ('Z', ' Zone' , 23, 9, 31, 9, 6, 5, 0, 65535, @Config.NetAddress[Num].Zone, Topic + 'Network Zone');
|
||||
Form.AddWord ('N', ' Net' , 24, 10, 31, 10, 5, 5, 0, 65535, @Config.NetAddress[Num].Net, Topic + 'Network Net');
|
||||
Form.AddWord ('O', ' Node' , 23, 11, 31, 11, 6, 5, 0, 65535, @Config.NetAddress[Num].Node, Topic + 'Network Node');
|
||||
Form.AddWord ('P', ' Point' , 22, 12, 31, 12, 7, 5, 0, 65535, @Config.NetAddress[Num].Point, Topic + 'Network Point');
|
||||
|
||||
Form.AddStr ('M', ' Domain', 21, 14, 31, 14, 8, 8, 8, @Config.NetDomain[Num], Topic + 'Network domain');
|
||||
Form.AddStr ('D', ' Description', 16, 15, 31, 15, 13, 25, 25, @Config.NetDesc[Num], Topic + 'Network description');
|
||||
|
||||
Form.AddWord ('Z', ' Zone' , 48, 9, 56, 9, 6, 5, 0, 65535, @Config.NetUplink[Num].Zone, Topic + 'Uplink Zone');
|
||||
Form.AddWord ('N', ' Net' , 49, 10, 56, 10, 5, 5, 0, 65535, @Config.NetUplink[Num].Net, Topic + 'Uplink Net');
|
||||
Form.AddWord ('O', ' Node' , 48, 11, 56, 11, 6, 5, 0, 65535, @Config.NetUplink[Num].Node, Topic + 'Uplink Node');
|
||||
Form.AddWord ('P', ' Point' , 47, 12, 56, 12, 7, 5, 0, 65535, @Config.NetUplink[Num].Point, Topic + 'Uplink Point');
|
||||
|
||||
Form.Execute;
|
||||
|
||||
Box.Close;
|
||||
|
||||
Form.Free;
|
||||
Box.Free;
|
||||
End;
|
||||
|
||||
Var
|
||||
Box : TAnsiMenuBox;
|
||||
List : TAnsiMenuList;
|
||||
|
||||
Procedure CreateList;
|
||||
Var
|
||||
A : Byte;
|
||||
Begin
|
||||
List.Clear;
|
||||
|
||||
For A := 1 to 30 Do
|
||||
List.Add(strPadL(strAddr2Str(Config.NetAddress[A]), 23, ' ') + ' ' + strPadL(Config.NetDesc[A], 20, ' '), 0);
|
||||
End;
|
||||
|
||||
Begin
|
||||
Result := 0;
|
||||
|
||||
Box := TAnsiMenuBox.Create;
|
||||
List := TAnsiMenuList.Create;
|
||||
|
||||
List.NoWindow := True;
|
||||
|
||||
Box.Open (17, 5, 64, 20);
|
||||
|
||||
WriteXY (27, 6, 112, 'Network Address Description');
|
||||
WriteXY (19, 7, 112, strRep('Ä', 44));
|
||||
|
||||
Repeat
|
||||
CreateList;
|
||||
|
||||
List.Open (17, 7, 64, 20);
|
||||
|
||||
Case List.ExitCode of
|
||||
#13 : If Edit Then
|
||||
EditAddress(List.Picked)
|
||||
Else Begin
|
||||
Result := List.Picked;
|
||||
Break;
|
||||
End;
|
||||
#27 : Break;
|
||||
End;
|
||||
Until False;
|
||||
|
||||
List.Close;
|
||||
Box.Close;
|
||||
|
||||
List.Free;
|
||||
Box.Free;
|
||||
End;
|
||||
|
||||
Procedure Configuration_FileSettings;
|
||||
Var
|
||||
Box : TAnsiMenuBox;
|
||||
|
|
|
@ -702,7 +702,6 @@ Begin
|
|||
Form.AddPath ('T', ' Text Path' , 12, 9, 25, 9, 11, 30, 80, @Theme.TextPath, Topic + 'Text path');
|
||||
Form.AddPath ('M', ' Menu Path' , 12, 10, 25, 10, 11, 30, 80, @Theme.MenuPath, Topic + 'Menu path');
|
||||
Form.AddPath ('S', ' Script Path' , 10, 11, 25, 11, 13, 30, 80, @Theme.ScriptPath, Topic + 'Script path');
|
||||
Form.AddPath ('T', ' Template Path' , 8, 12, 25, 12, 15, 30, 80, @Theme.TemplatePath, Topic + 'Template path');
|
||||
Form.AddBits ('F', ' Allow Fallback' , 7, 13, 25, 13, 16, ThmFallback, @Theme.Flags, Topic + 'Allow fallback to default paths?');
|
||||
Form.AddBits ('C', ' Allow ASCII' , 10, 14, 25, 14, 13, ThmAllowASCII, @Theme.Flags, Topic + 'Allow ASCII users to use this theme?');
|
||||
Form.AddBits ('N', ' Allow ANSI' , 11, 15, 25, 15, 12, ThmAllowANSI, @Theme.Flags, Topic + 'Allow ANSI users to use this theme?');
|
||||
|
|
|
@ -307,7 +307,7 @@ Begin
|
|||
'X' : Case Cmd[2] of
|
||||
'A' : Begin
|
||||
Session.io.OutFile('newuser', True, 0);
|
||||
If Session.io.GetYN(Session.GetPrompt(269), True) Then Begin
|
||||
If Session.io.GetYN(Session.GetPrompt(269), False) Then Begin
|
||||
Session.User.CreateNewUser('');
|
||||
Session.User.UserLogon2;
|
||||
|
||||
|
@ -323,8 +323,10 @@ Begin
|
|||
Session.io.OutFull (Session.GetPrompt(271));
|
||||
End;
|
||||
'L' : If Session.io.GetPW (Session.GetPrompt(272), Session.GetPrompt(423), Config.MatrixPW) Then Begin
|
||||
Session.User.MatrixOK := True;
|
||||
Result := True;
|
||||
// If Session.User.GetMatrixUser Then Begin
|
||||
Session.User.MatrixOK := True;
|
||||
Result := True;
|
||||
// End;
|
||||
End;
|
||||
'P' : {$IFNDEF UNIX} If Session.User.GetMatrixUser Then
|
||||
PageForSysopChat (Pos('/F', strUpper(CmdData)) > 0) {$ENDIF};
|
||||
|
|
|
@ -2,7 +2,6 @@ Unit MIS_Server;
|
|||
|
||||
{$I M_OPS.PAS}
|
||||
|
||||
|
||||
Interface
|
||||
|
||||
Uses
|
||||
|
|
|
@ -146,60 +146,68 @@ Begin
|
|||
End;
|
||||
End;
|
||||
|
||||
Function FormattedDate(DT: DateTime; Mask: String): String;
|
||||
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;
|
||||
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, ' '), 1, 2);
|
||||
MinStr := Copy(strPadL(strI2S(Dt.Min), 2, '0'), 1, 2);
|
||||
SecStr := Copy(strPadL(strI2S(Dt.Sec), 2, '0'), 1, 2);
|
||||
MNStr := MonthStr(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;
|
||||
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, ' '), 1, 2);
|
||||
MinStr := Copy(strPadL(strI2S(Dt.Min), 2, '0'), 1, 2);
|
||||
SecStr := Copy(strPadL(strI2S(Dt.Sec), 2, '0'), 1, 2);
|
||||
MNStr := MonthStr(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
|
||||
|
|
|
@ -52,20 +52,21 @@
|
|||
; Level 1 = basic
|
||||
; Level 2 = verbose
|
||||
|
||||
loglevel=1
|
||||
loglevel=2
|
||||
|
||||
; list of functions to perform on startup
|
||||
|
||||
Import_FIDONET.NA = true
|
||||
Import_MessageBase = true
|
||||
Import_FILEBONE.NA = true
|
||||
Import_FILES.BBS = true
|
||||
MassUpload = true
|
||||
GenerateTopLists = true
|
||||
GenerateAllFiles = true
|
||||
PurgeMessageBases = true
|
||||
PostTextFiles = true
|
||||
PackMessageBases = true
|
||||
Import_FIDONET.NA = false
|
||||
Import_MessageBase = false
|
||||
Import_FILEBONE.NA = false
|
||||
Import_FILES.BBS = false
|
||||
MassUpload = false
|
||||
GenerateTopLists = false
|
||||
GenerateAllFiles = false
|
||||
PurgeMessageBases = false
|
||||
PostTextFiles = false
|
||||
PackMessageBases = false
|
||||
ExportEchoMail = true
|
||||
|
||||
; ==========================================================================
|
||||
; ==========================================================================
|
||||
|
@ -331,7 +332,7 @@
|
|||
file2_addr = 0:0/0
|
||||
file2_delfile = false
|
||||
|
||||
[ImportMessageBase]
|
||||
[Import_MessageBase]
|
||||
|
||||
; This option scans the message base directory, and creates any messages
|
||||
; bases inside of Mystic that have data files in the directory.
|
||||
|
@ -365,3 +366,5 @@
|
|||
private_base = 0
|
||||
new_scan = 1
|
||||
qwk_scan = 1
|
||||
|
||||
[ExportEchoMail]
|
||||
|
|
|
@ -45,6 +45,7 @@ Uses
|
|||
mUtil_MsgPurge,
|
||||
mUtil_MsgPack,
|
||||
mUtil_MsgPost,
|
||||
mUtil_EchoExport,
|
||||
bbs_Common;
|
||||
|
||||
{$I MUTIL_ANSI.PAS}
|
||||
|
@ -133,7 +134,7 @@ Begin
|
|||
Halt(1);
|
||||
End;
|
||||
|
||||
TempPath := bbsConfig.SystemPath + 'temp0' + PathChar;
|
||||
TempPath := bbsConfig.SystemPath + 'temputil' + PathChar;
|
||||
|
||||
GetDIR (0, StartPath);
|
||||
|
||||
|
@ -163,6 +164,7 @@ Var
|
|||
DoMassUpload : Boolean;
|
||||
DoTopLists : Boolean;
|
||||
DoAllFiles : Boolean;
|
||||
DoEchoExport : Boolean;
|
||||
DoMsgPurge : Boolean;
|
||||
DoMsgPack : Boolean;
|
||||
DoMsgPost : Boolean;
|
||||
|
@ -181,6 +183,7 @@ Begin
|
|||
DoTopLists := CheckProcess(Header_TOPLISTS);
|
||||
DoFilesBBS := CheckProcess(Header_FILESBBS);
|
||||
DoAllFiles := CheckProcess(Header_ALLFILES);
|
||||
DoEchoExport := CheckProcess(Header_ECHOEXPORT);
|
||||
DoMsgPurge := CheckProcess(Header_MSGPURGE);
|
||||
DoMsgPack := CheckProcess(Header_MSGPACK);
|
||||
DoMsgPost := CheckProcess(Header_MSGPOST);
|
||||
|
@ -204,6 +207,7 @@ Begin
|
|||
If DoMassUpload Then uMassUpload;
|
||||
If DoTopLists Then uTopLists;
|
||||
If DoAllFiles Then uAllFilesList;
|
||||
If DoEchoExport Then uEchoExport;
|
||||
If DoMsgPurge Then uPurgeMessageBases;
|
||||
If DoMsgPack Then uPackMessageBases;
|
||||
If DoMsgPost Then uPostMessages;
|
||||
|
|
|
@ -27,17 +27,18 @@ Var
|
|||
LogLevel : Byte = 1;
|
||||
|
||||
Const
|
||||
Header_GENERAL = 'General';
|
||||
Header_IMPORTNA = 'Import_FIDONET.NA';
|
||||
Header_IMPORTMB = 'Import_MessageBase';
|
||||
Header_FILEBONE = 'Import_FILEBONE.NA';
|
||||
Header_FILESBBS = 'Import_FILES.BBS';
|
||||
Header_UPLOAD = 'MassUpload';
|
||||
Header_TOPLISTS = 'GenerateTopLists';
|
||||
Header_ALLFILES = 'GenerateAllFiles';
|
||||
Header_MSGPURGE = 'PurgeMessageBases';
|
||||
Header_MSGPACK = 'PackMessageBases';
|
||||
Header_MSGPOST = 'PostTextFiles';
|
||||
Header_GENERAL = 'General';
|
||||
Header_IMPORTNA = 'Import_FIDONET.NA';
|
||||
Header_IMPORTMB = 'Import_MessageBase';
|
||||
Header_ECHOEXPORT = 'ExportEchoMail';
|
||||
Header_FILEBONE = 'Import_FILEBONE.NA';
|
||||
Header_FILESBBS = 'Import_FILES.BBS';
|
||||
Header_UPLOAD = 'MassUpload';
|
||||
Header_TOPLISTS = 'GenerateTopLists';
|
||||
Header_ALLFILES = 'GenerateAllFiles';
|
||||
Header_MSGPURGE = 'PurgeMessageBases';
|
||||
Header_MSGPACK = 'PackMessageBases';
|
||||
Header_MSGPOST = 'PostTextFiles';
|
||||
|
||||
Procedure Log (Level: Byte; Code: Char; Str: String);
|
||||
Function strAddr2Str (Addr : RecEchoMailAddr) : String;
|
||||
|
@ -53,6 +54,10 @@ Procedure ExecuteArchive (FName: String; Temp: String; Mask: String; Mode: B
|
|||
Function GetMBaseByIndex (Num: LongInt; Var TempBase: RecMessageBase) : Boolean;
|
||||
Function MessageBaseOpen (Var Msg: PMsgBaseABS; Var Area: RecMessageBase) : Boolean;
|
||||
Function SaveMessage (mArea: RecMessageBase; mFrom, mTo, mSubj: String; mAddr: RecEchoMailAddr; mText: RecMessageText; mLines: Integer) : Boolean;
|
||||
Function GetFTNPKTName : String;
|
||||
Function GetFTNArchiveName (Orig, Dest: RecEchoMailAddr) : String;
|
||||
Function GetFTNFlowName (Dest: RecEchoMailAddr) : String;
|
||||
Function GetNodeByIndex (Num: LongInt; Var TempNode: RecEchoMailNode) : Boolean;
|
||||
|
||||
Implementation
|
||||
|
||||
|
@ -255,7 +260,10 @@ Var
|
|||
Count : LongInt;
|
||||
Str : String;
|
||||
Begin
|
||||
Temp := strUpper(JustFileExt(FName));
|
||||
If Temp <> '' Then
|
||||
Temp := strUpper(Temp)
|
||||
Else
|
||||
Temp := strUpper(JustFileExt(FName));
|
||||
|
||||
Assign (ArcFile, bbsConfig.DataPath + 'archive.dat');
|
||||
{$I-} Reset (ArcFile); {$I+}
|
||||
|
@ -377,9 +385,9 @@ Begin
|
|||
Msg^.SetOrig(bbsConfig.NetAddress[mArea.NetAddr]);
|
||||
|
||||
Case mArea.NetType of
|
||||
1 : Assign (SemFile, Config.SemaPath + fn_SemFileEcho);
|
||||
2 : Assign (SemFile, Config.SemaPath + fn_SemFileNews);
|
||||
3 : Assign (SemFile, Config.SemaPath + fn_SemFileNet);
|
||||
1 : Assign (SemFile, bbsConfig.SemaPath + fn_SemFileEcho);
|
||||
2 : Assign (SemFile, bbsConfig.SemaPath + fn_SemFileNews);
|
||||
3 : Assign (SemFile, bbsConfig.SemaPath + fn_SemFileNet);
|
||||
End;
|
||||
|
||||
ReWrite (SemFile);
|
||||
|
@ -399,7 +407,7 @@ Begin
|
|||
|
||||
If mArea.NetType > 0 Then Begin
|
||||
Msg^.DoStringLn (#13 + '--- ' + mysSoftwareID + ' BBS v' + mysVersion + ' (' + OSID + ')');
|
||||
Msg^.DoStringLn (' * Origin: ' + mArea.Origin + ' (' + strAddr2Str(Config.NetAddress[mArea.NetAddr]) + ')');
|
||||
Msg^.DoStringLn (' * Origin: ' + mArea.Origin + ' (' + strAddr2Str(bbsConfig.NetAddress[mArea.NetAddr]) + ')');
|
||||
End;
|
||||
|
||||
Msg^.WriteMsg;
|
||||
|
@ -410,4 +418,57 @@ Begin
|
|||
Result := True;
|
||||
End;
|
||||
|
||||
Function GetFTNPKTName : String;
|
||||
Var
|
||||
Hour, Min, Sec, hSec : Word;
|
||||
Year, Month, Day, DOW : Word;
|
||||
Begin
|
||||
GetTime (Hour, Min, Sec, hSec);
|
||||
GetDate (Year, Month, Day, DOW);
|
||||
|
||||
Result := strZero(Day) + strZero(Hour) + strZero(Min) + strZero(Sec);
|
||||
End;
|
||||
|
||||
Function GetFTNArchiveName (Orig, Dest: RecEchoMailAddr) : String;
|
||||
Var
|
||||
Net : LongInt;
|
||||
Node : LongInt;
|
||||
Begin
|
||||
Net := Orig.Net - Dest.Net;
|
||||
Node := Orig.Node - Dest.Node;
|
||||
|
||||
If Net < 0 Then Net := 65536 + Net;
|
||||
If Node < 0 Then Node := 65536 + Node;
|
||||
|
||||
Result := strI2H((Net SHL 16) OR Node);
|
||||
End;
|
||||
|
||||
Function GetFTNFlowName (Dest: RecEchoMailAddr) : String;
|
||||
Begin
|
||||
Result := strI2H((Dest.Net SHL 16) OR Dest.Node);
|
||||
End;
|
||||
|
||||
Function GetNodeByIndex (Num: LongInt; Var TempNode: RecEchoMailNode) : Boolean;
|
||||
Var
|
||||
F : File;
|
||||
Begin
|
||||
Result := False;
|
||||
|
||||
Assign (F, bbsConfig.DataPath + 'echonode.dat');
|
||||
|
||||
If Not ioReset(F, SizeOf(RecEchoMailNode), fmRWDN) Then Exit;
|
||||
|
||||
While Not Eof(F) Do Begin
|
||||
ioRead(F, TempNode);
|
||||
|
||||
If TempNode.Index = Num Then Begin
|
||||
Result := True;
|
||||
|
||||
Break;
|
||||
End;
|
||||
End;
|
||||
|
||||
Close (F);
|
||||
End;
|
||||
|
||||
End.
|
||||
|
|
|
@ -28,7 +28,7 @@ Begin
|
|||
ProcessName ('Import Message Bases', True);
|
||||
ProcessResult (rWORKING, False);
|
||||
|
||||
FindFirst ('*', AnyFile, Info);
|
||||
FindFirst (bbsConfig.MsgsPath + '*', AnyFile, Info);
|
||||
|
||||
While DosError = 0 Do Begin
|
||||
BaseName := JustFileName(Info.Name);
|
||||
|
|
|
@ -23,7 +23,7 @@
|
|||
Const
|
||||
mysSoftwareID = 'Mystic'; // no idea
|
||||
mysCopyYear = '1997-2013'; // its been a long time!
|
||||
mysVersion = '1.10 A29'; // current version
|
||||
mysVersion = '1.10 A30'; // current version
|
||||
mysDataChanged = '1.10 A11'; // version of last records change
|
||||
|
||||
{$IFDEF WIN32}
|
||||
|
@ -78,6 +78,56 @@ Type
|
|||
|
||||
AccessFlagType = Set of 1..26;
|
||||
|
||||
Const
|
||||
pktPrivate = $0001;
|
||||
pktCrash = $0002;
|
||||
pktReceived = $0004;
|
||||
pktSent = $0008;
|
||||
pktFileAttach = $0010;
|
||||
pktInTransit = $0020;
|
||||
pktOrphan = $0040;
|
||||
pktKillSent = $0080;
|
||||
pktLocal = $0100;
|
||||
pktHold = $0200;
|
||||
pktUnused = $0400;
|
||||
pktFileReq = $0800;
|
||||
pktReturnReq = $1000;
|
||||
pktIsReceipt = $2000;
|
||||
pktAuditReq = $4000;
|
||||
pktFileUpdate = $8000;
|
||||
|
||||
Type
|
||||
RecPKTMessageHdr = Record
|
||||
MsgType,
|
||||
OrigNode : System.Word;
|
||||
DestNode : System.Word;
|
||||
OrigNet : System.Word;
|
||||
DestNet : System.Word;
|
||||
Attribute : System.Word;
|
||||
Cost : System.Word;
|
||||
DateTime : String[19];
|
||||
End;
|
||||
|
||||
RecPKTHeader = Record
|
||||
OrigNode : System.Word;
|
||||
DestNode : System.Word;
|
||||
Year : System.Word;
|
||||
Month : System.Word;
|
||||
Day : System.Word;
|
||||
Hour : System.Word;
|
||||
Minute : System.Word;
|
||||
Second : System.Word;
|
||||
Baud : System.Word;
|
||||
PKTType : System.Word;
|
||||
OrigNet : System.Word;
|
||||
DestNet : System.Word;
|
||||
ProdCode : System.Word; // Apply to FTSC for code?
|
||||
Password : Array[1..8] of Char;
|
||||
OrigZone : System.Word;
|
||||
DestZone : System.Word;
|
||||
Filler : Array[1..20] of Char;
|
||||
End;
|
||||
|
||||
RecEchoMailAddr = Record
|
||||
Zone,
|
||||
Net,
|
||||
|
@ -85,6 +135,9 @@ Type
|
|||
Point : Word;
|
||||
End;
|
||||
|
||||
RecEchoMailExport = LongInt;
|
||||
|
||||
(*
|
||||
RecEchoMailOpts = Record
|
||||
SysLocation : String[40];
|
||||
SysFlags : String[40];
|
||||
|
@ -111,17 +164,20 @@ Type
|
|||
BlockSize : Word;
|
||||
Res : Array[1..10] of Byte;
|
||||
End;
|
||||
*)
|
||||
|
||||
RecEchoMailNode = Record
|
||||
Description : String[40];
|
||||
Index : LongInt;
|
||||
Description : String[35];
|
||||
Active : Boolean;
|
||||
AddrList : String[250];
|
||||
InType : Byte; // 0=Disabled 1=FTP 2=BINKP 3=EMAIL 4=DIRECTORY
|
||||
OutType : Byte; // 0=Disabled 1=FTP 2=BINKP 3=EMAIL 4=DIRECTORY
|
||||
FTPin : RecEchoMailNodeFTP;
|
||||
FTPout : RecEchoMailNodeFTP;
|
||||
BINKPin : RecEchoMailNodeBINKP;
|
||||
BINKPout : RecEchoMailNodeBINKP;
|
||||
Address : RecEchoMailAddr;
|
||||
ArcType : String[4];
|
||||
// InType : Byte; // 0=Disabled 1=FTP 2=BINKP 3=EMAIL 4=DIRECTORY
|
||||
// OutType : Byte; // 0=Disabled 1=FTP 2=BINKP 3=EMAIL 4=DIRECTORY
|
||||
// FTPin : RecEchoMailNodeFTP;
|
||||
// FTPout : RecEchoMailNodeFTP;
|
||||
// BINKPin : RecEchoMailNodeBINKP;
|
||||
// BINKPout : RecEchoMailNodeBINKP;
|
||||
LastRecv : LongInt;
|
||||
LastSent : LongInt;
|
||||
LastReset : LongInt;
|
||||
|
@ -159,10 +215,10 @@ Type
|
|||
ScriptPath : String[mysMaxPathSize];
|
||||
QwkPath : String[mysMaxPathSize];
|
||||
SemaPath : String[mysMaxPathSize];
|
||||
TemplatePath : String[mysMaxPathSize];
|
||||
InboundPath : String[mysMaxPathSize];
|
||||
MenuPath : String[mysMaxPathsize];
|
||||
TextPath : String[mysMaxPathSize];
|
||||
WebPath : String[mysMaxPathSize];
|
||||
OutboundPath : String[mysMaxPathSize];
|
||||
// GENERAL SETTINGS
|
||||
BBSName : String[30];
|
||||
SysopName : String[30];
|
||||
|
@ -522,7 +578,8 @@ Type
|
|||
Index : Word; // permanent index
|
||||
Flags : LongInt; // MB flag bits see above
|
||||
Created : LongInt;
|
||||
Res : Array[1..76] of Byte; // RESERVED
|
||||
EchoTag : String[40]; // EchoMail Tag
|
||||
Res : Array[1..35] of Byte; // RESERVED
|
||||
End;
|
||||
|
||||
FScanRec = Record { <Data Path> *.SCN }
|
||||
|
|
|
@ -2897,3 +2897,4 @@
|
|||
+ MPL errors when executing a MPX module are now logged in the SYSOP logs
|
||||
|
||||
<ALPHA 29 RELEASED>
|
||||
|
||||
|
|
Loading…
Reference in New Issue