This commit is contained in:
mysticbbs 2013-03-17 07:01:46 -04:00
parent 8a8516ba2b
commit 8462572104
14 changed files with 296 additions and 226 deletions

View File

@ -1,4 +1,4 @@
.---------------------------------------------------------------------------. .---------------------------------------------------------------------------
| Mystic BBS History Documentation Versions 1.05 through 1.10 | | Mystic BBS History Documentation Versions 1.05 through 1.10 |
`---------------------------------------------------------------------------' `---------------------------------------------------------------------------'

View File

@ -26,11 +26,12 @@ Uses
bbs_cfg_SecLevel, bbs_cfg_SecLevel,
bbs_cfg_Theme, bbs_cfg_Theme,
bbs_cfg_UserEdit, bbs_cfg_UserEdit,
bbs_cfg_EchoMail,
bbs_cfg_MenuEdit,
// old shit to rewrite // old shit to rewrite
bbs_cfg_events, bbs_cfg_events,
bbs_cfg_vote, bbs_cfg_vote;
bbs_cfg_menuedit;
Procedure Configuration_ExecuteEditor (Mode: Char); Procedure Configuration_ExecuteEditor (Mode: Char);
Var Var
@ -40,7 +41,7 @@ Begin
Case Mode of Case Mode of
'A' : Configuration_ArchiveEditor; 'A' : Configuration_ArchiveEditor;
'B' : Configuration_MessageBaseEditor; 'B' : Configuration_MessageBaseEditor(True);
'F' : Configuration_FileBaseEditor; 'F' : Configuration_FileBaseEditor;
'G' : Configuration_GroupEditor(True); 'G' : Configuration_GroupEditor(True);
'L' : Configuration_SecurityEditor(True); 'L' : Configuration_SecurityEditor(True);
@ -177,7 +178,7 @@ Begin
End; End;
End; End;
1 : Begin 1 : Begin
BoxOpen (4, 4, 33, 16); BoxOpen (4, 4, 33, 17);
CoolBoxOpen (3, 'Configuration'); CoolBoxOpen (3, 'Configuration');
Form.AddNone ('S', ' S System Paths', 5, 5, 5, 5, 28, ''); 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 ('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 ('F', ' F File Base Settings', 5, 11, 5, 11, 28, '');
Form.AddNone ('M', ' M Message Base Settings', 5, 12, 5, 12, 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 ('E', ' E EchoMail Addresses', 5, 13, 5, 13, 28, '');
Form.AddNone ('O', ' O Offline Mail Settings', 5, 14, 5, 14, 28, ''); Form.AddNone ('N', ' N EchoMail Nodes', 5, 14, 5, 14, 28, '');
Form.AddNone ('C', ' C Console Settings', 5, 15, 5, 15, 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; Res := Form.Execute;
MenuPos[1] := Form.ItemPos; MenuPos[1] := Form.ItemPos;
@ -208,6 +210,7 @@ Begin
'G' : Configuration_GeneralSettings; 'G' : Configuration_GeneralSettings;
'L' : Configuration_LoginMatrix; 'L' : Configuration_LoginMatrix;
'E' : Configuration_EchoMailAddress(True); 'E' : Configuration_EchoMailAddress(True);
'N' : Configuration_EchoMailNodes(True);
'3' : Configuration_OptionalFields; '3' : Configuration_OptionalFields;
'F' : Configuration_FileSettings; 'F' : Configuration_FileSettings;
'M' : Configuration_MessageSettings; 'M' : Configuration_MessageSettings;
@ -285,7 +288,7 @@ Begin
End Else Begin End Else Begin
Case Res of Case Res of
'A' : Configuration_ArchiveEditor; 'A' : Configuration_ArchiveEditor;
'B' : Configuration_MessageBaseEditor; 'B' : Configuration_MessageBaseEditor(True);
'F' : Configuration_FileBaseEditor; 'F' : Configuration_FileBaseEditor;
'G' : Configuration_GroupEditor(True); 'G' : Configuration_GroupEditor(True);
'M' : Configuration_MenuEditor; 'M' : Configuration_MenuEditor;

View File

@ -4,7 +4,7 @@ Unit bbs_cfg_MsgBase;
Interface Interface
Procedure Configuration_MessageBaseEditor; Function Configuration_MessageBaseEditor (Edit: Boolean) : LongInt;
Implementation Implementation
@ -17,7 +17,7 @@ Uses
bbs_Ansi_MenuBox, bbs_Ansi_MenuBox,
bbs_Ansi_MenuForm, bbs_Ansi_MenuForm,
bbs_Cfg_Common, bbs_Cfg_Common,
bbs_Cfg_SysCfg, bbs_Cfg_EchoMail,
bbs_Common; bbs_Common;
Type Type
@ -97,33 +97,36 @@ Var
Box : TAnsiMenuBox; Box : TAnsiMenuBox;
Form : TAnsiMenuForm; Form : TAnsiMenuForm;
Topic : String; Topic : String;
Links : LongInt;
Begin Begin
Topic := '|03(|09Message Base Edit|03) |01-|09> |15'; Topic := '|03(|09Message Base Edit|03) |01-|09> |15';
Box := TAnsiMenuBox.Create; Box := TAnsiMenuBox.Create;
Form := TAnsiMenuForm.Create; Form := TAnsiMenuForm.Create;
Box.Shadow := False;
Box.Header := ' Index ' + strI2S(MBase.Index) + ' '; Box.Header := ' Index ' + strI2S(MBase.Index) + ' ';
Box.Open (3, 5, 77, 21); Box.Open (3, 5, 77, 22);
VerticalLine (17, 6, 20); VerticalLine (17, 6, 21);
VerticalLine (66, 6, 20); VerticalLine (66, 6, 21);
Form.AddStr ('N', ' Name' , 11, 6, 19, 6, 6, 30, 40, @MBase.Name, Topic + 'Message base description'); 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 ('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 ('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.AddStr ('8', ' Echo Tag' , 7, 9, 19, 9, 10, 30, 40, @MBase.EchoTag, Topic + 'FTN EchoTag');
Form.AddPath ('P', ' Path' , 11, 10, 19, 10, 6, 30, 80, @MBase.Path, Topic + 'Message base storage path'); Form.AddStr ('F', ' File Name' , 6, 10, 19, 10, 11, 30, 40, @MBase.FileName, Topic + 'Message base storage file name');
Form.AddStr ('L', ' List ACS' , 7, 11, 19, 11, 10, 30, 30, @MBase.ListACS, Topic + 'Access required to see in base list'); Form.AddPath ('P', ' Path' , 11, 11, 19, 11, 6, 30, 80, @MBase.Path, Topic + 'Message base storage path');
Form.AddStr ('R', ' Read ACS' , 7, 12, 19, 12, 10, 30, 30, @MBase.ReadACS, Topic + 'Access required to read messages'); Form.AddStr ('L', ' List ACS' , 7, 12, 19, 12, 10, 30, 30, @MBase.ListACS, Topic + 'Access required to see in base list');
Form.AddStr ('C', ' Post ACS' , 7, 13, 19, 13, 10, 30, 30, @MBase.PostACS, Topic + 'Access required to post messages'); Form.AddStr ('R', ' Read ACS' , 7, 13, 19, 13, 10, 30, 30, @MBase.ReadACS, Topic + 'Access required to read messages');
Form.AddStr ('Y', ' Sysop ACS' , 6, 14, 19, 14, 11, 30, 30, @MBase.SysopACS, Topic + 'Access required for Sysop access'); Form.AddStr ('C', ' Post ACS' , 7, 14, 19, 14, 10, 30, 30, @MBase.PostACS, Topic + 'Access required to post messages');
Form.AddNone ('D', ' Net Address' , 4, 15, 19, 15, 13, Topic + 'NetMail Address'); Form.AddStr ('Y', ' Sysop ACS' , 6, 15, 19, 15, 11, 30, 30, @MBase.SysopACS, Topic + 'Access required for Sysop access');
Form.AddStr ('I', ' Origin' , 9, 16, 19, 16, 8, 30, 50, @MBase.Origin, Topic + 'Message base origin line'); Form.AddNone ('D', ' Net Address' , 4, 16, 19, 16, 13, Topic + 'NetMail Address');
Form.AddStr ('S', ' Sponsor' , 8, 17, 19, 17, 9, 30, 30, @MBase.Sponsor, Topic + 'User name of base''s sponser'); Form.AddNone ('7', ' Export To' , 6, 17, 19, 17, 11, Topic + 'Export messages to these nodes');
Form.AddStr ('H', ' Header' , 9, 18, 19, 18, 8, 20, 20, @MBase.Header, Topic + 'Display file name of msg header'); Form.AddStr ('I', ' Origin' , 9, 18, 19, 18, 8, 30, 50, @MBase.Origin, Topic + 'Message base origin line');
Form.AddStr ('T', ' R Template' , 5, 19, 19, 19, 12, 20, 20, @MBase.RTemplate, Topic + 'Template for full screen reader'); Form.AddStr ('S', ' Sponsor' , 8, 19, 19, 19, 9, 30, 30, @MBase.Sponsor, Topic + 'User name of base''s sponser');
Form.AddStr ('M', ' L Template' , 5, 20, 19, 20, 12, 20, 20, @MBase.ITemplate, Topic + 'Template for lightbar message list'); 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 ('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'); 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.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 ('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.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 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 Case Form.Execute of
'D' : MBase.NetAddr := Configuration_EchoMailAddress(False); 'D' : MBase.NetAddr := Configuration_EchoMailAddress(False);
'7' : Configuration_NodeExport (MBase);
#27 : Break; #27 : Break;
End; End;
Until False; Until False;
@ -158,7 +173,7 @@ Begin
Box.Free; Box.Free;
End; End;
Procedure Configuration_MessageBaseEditor; Function Configuration_MessageBaseEditor (Edit: Boolean) : LongInt;
Var Var
Box : TAnsiMenuBox; Box : TAnsiMenuBox;
List : TAnsiMenuList; List : TAnsiMenuList;
@ -366,6 +381,8 @@ Var
End; End;
Begin Begin
Result := -1;
Assign (MBaseFile, Config.DataPath + 'mbases.dat'); Assign (MBaseFile, Config.DataPath + 'mbases.dat');
If Not ioReset(MBaseFile, SizeOf(MBase), fmRWDN) Then If Not ioReset(MBaseFile, SizeOf(MBase), fmRWDN) Then
@ -395,7 +412,8 @@ Begin
List.Close; List.Close;
Case List.ExitCode of 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 'I' : If List.Picked > 1 Then Begin
AssignRecord(False); AssignRecord(False);
MakeList; MakeList;
@ -416,6 +434,7 @@ Begin
FileErase (MBase.Path + MBase.FileName + '.sqi'); FileErase (MBase.Path + MBase.FileName + '.sqi');
FileErase (MBase.Path + MBase.FileName + '.sql'); FileErase (MBase.Path + MBase.FileName + '.sql');
FileErase (MBase.Path + MBase.FileName + '.scn'); FileErase (MBase.Path + MBase.FileName + '.scn');
FileErase (MBase.Path + MBase.FileName + '.lnk');
End; End;
MakeList; MakeList;
@ -453,10 +472,16 @@ Begin
Seek (MBaseFile, List.Picked - 1); Seek (MBaseFile, List.Picked - 1);
Read (MBaseFile, MBase); Read (MBaseFile, MBase);
If Edit Then Begin
EditMessageBase (MBase); EditMessageBase (MBase);
Seek (MBaseFile, List.Picked - 1); Seek (MBaseFile, List.Picked - 1);
Write (MBaseFile, MBase); Write (MBaseFile, MBase);
End Else Begin
Result := MBase.Index;
Break;
End;
End; End;
#27 : Break; #27 : Break;
End; End;

View File

@ -8,7 +8,6 @@ Procedure Configuration_SysPaths;
Procedure Configuration_GeneralSettings; Procedure Configuration_GeneralSettings;
Procedure Configuration_LoginMatrix; Procedure Configuration_LoginMatrix;
Procedure Configuration_OptionalFields; Procedure Configuration_OptionalFields;
Function Configuration_EchomailAddress (Edit: Boolean) : Byte;
Procedure Configuration_FileSettings; Procedure Configuration_FileSettings;
Procedure Configuration_QWKSettings; Procedure Configuration_QWKSettings;
Procedure Configuration_Internet; Procedure Configuration_Internet;
@ -43,9 +42,9 @@ Begin
Box.Header := ' System Directories '; 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 ('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'); 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 ('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 ('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 ('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 ('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; Form.Execute;
@ -179,98 +179,6 @@ Begin
Box.Free; Box.Free;
End; 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; Procedure Configuration_FileSettings;
Var Var
Box : TAnsiMenuBox; Box : TAnsiMenuBox;

View File

@ -702,7 +702,6 @@ Begin
Form.AddPath ('T', ' Text Path' , 12, 9, 25, 9, 11, 30, 80, @Theme.TextPath, Topic + 'Text path'); 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 ('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 ('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 ('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 ('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?'); Form.AddBits ('N', ' Allow ANSI' , 11, 15, 25, 15, 12, ThmAllowANSI, @Theme.Flags, Topic + 'Allow ANSI users to use this theme?');

View File

@ -307,7 +307,7 @@ Begin
'X' : Case Cmd[2] of 'X' : Case Cmd[2] of
'A' : Begin 'A' : Begin
Session.io.OutFile('newuser', True, 0); 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.CreateNewUser('');
Session.User.UserLogon2; Session.User.UserLogon2;
@ -323,8 +323,10 @@ Begin
Session.io.OutFull (Session.GetPrompt(271)); Session.io.OutFull (Session.GetPrompt(271));
End; End;
'L' : If Session.io.GetPW (Session.GetPrompt(272), Session.GetPrompt(423), Config.MatrixPW) Then Begin 'L' : If Session.io.GetPW (Session.GetPrompt(272), Session.GetPrompt(423), Config.MatrixPW) Then Begin
// If Session.User.GetMatrixUser Then Begin
Session.User.MatrixOK := True; Session.User.MatrixOK := True;
Result := True; Result := True;
// End;
End; End;
'P' : {$IFNDEF UNIX} If Session.User.GetMatrixUser Then 'P' : {$IFNDEF UNIX} If Session.User.GetMatrixUser Then
PageForSysopChat (Pos('/F', strUpper(CmdData)) > 0) {$ENDIF}; PageForSysopChat (Pos('/F', strUpper(CmdData)) > 0) {$ENDIF};

View File

@ -2,7 +2,6 @@ Unit MIS_Server;
{$I M_OPS.PAS} {$I M_OPS.PAS}
Interface Interface
Uses Uses

View File

@ -146,7 +146,7 @@ Begin
End; End;
End; End;
Function FormattedDate(DT: DateTime; Mask: String): String; Function FormattedDate (DT: DateTime; Mask: String) : String;
Var Var
DStr : String[2]; DStr : String[2];
MStr : String[2]; MStr : String[2];
@ -168,38 +168,46 @@ Begin
MinStr := Copy(strPadL(strI2S(Dt.Min), 2, '0'), 1, 2); MinStr := Copy(strPadL(strI2S(Dt.Min), 2, '0'), 1, 2);
SecStr := Copy(strPadL(strI2S(Dt.Sec), 2, '0'), 1, 2); SecStr := Copy(strPadL(strI2S(Dt.Sec), 2, '0'), 1, 2);
MNStr := MonthStr(Dt.Month); MNStr := MonthStr(Dt.Month);
If (Pos('YYYY', Mask) = 0) Then YStr := Copy(YStr,3,2); If (Pos('YYYY', Mask) = 0) Then YStr := Copy(YStr,3,2);
CurrPos := Pos('DD', Mask); CurrPos := Pos('DD', Mask);
If CurrPos > 0 Then If CurrPos > 0 Then
For i := 1 to Length(DStr) Do For i := 1 to Length(DStr) Do
TmpStr[CurrPos + i - 1] := DStr[i]; TmpStr[CurrPos + i - 1] := DStr[i];
CurrPos := Pos('YY', Mask); CurrPos := Pos('YY', Mask);
If CurrPos > 0 Then If CurrPos > 0 Then
For i := 1 to Length(YStr) Do For i := 1 to Length(YStr) Do
TmpStr[CurrPos + i - 1] := YStr[i]; TmpStr[CurrPos + i - 1] := YStr[i];
CurrPos := Pos('MM', Mask); CurrPos := Pos('MM', Mask);
If CurrPos > 0 Then If CurrPos > 0 Then
For i := 1 to Length(MStr) Do For i := 1 to Length(MStr) Do
TmpStr[CurrPos + i - 1] := MStr[i]; TmpStr[CurrPos + i - 1] := MStr[i];
CurrPos := Pos('HH', Mask); CurrPos := Pos('HH', Mask);
If CurrPos > 0 Then If CurrPos > 0 Then
For i := 1 to Length(HourStr) Do For i := 1 to Length(HourStr) Do
TmpStr[CurrPos + i - 1] := HourStr[i]; TmpStr[CurrPos + i - 1] := HourStr[i];
CurrPos := Pos('SS', Mask); CurrPos := Pos('SS', Mask);
If CurrPos > 0 Then If CurrPos > 0 Then
For i := 1 to Length(SecStr) Do For i := 1 to Length(SecStr) Do
TmpStr[CurrPos + i - 1] := SecStr[i]; TmpStr[CurrPos + i - 1] := SecStr[i];
CurrPos := Pos('II', Mask); CurrPos := Pos('II', Mask);
If CurrPos > 0 Then If CurrPos > 0 Then
For i := 1 to Length(MinStr) Do For i := 1 to Length(MinStr) Do
TmpStr[CurrPos + i - 1] := MinStr[i]; TmpStr[CurrPos + i - 1] := MinStr[i];
CurrPos := Pos('NNN', Mask); CurrPos := Pos('NNN', Mask);
If CurrPos > 0 Then If CurrPos > 0 Then
For i := 1 to Length(MNStr) Do For i := 1 to Length(MNStr) Do
TmpStr[CurrPos + i - 1] := MNStr[i]; TmpStr[CurrPos + i - 1] := MNStr[i];
FormattedDate := TmpStr;
End;
FormattedDate := TmpStr;
End;
Function LoadFilePos(FN: String; Var Rec; FS: Word; FPos: LongInt): Word; Function LoadFilePos(FN: String; Var Rec; FS: Word; FPos: LongInt): Word;
Var Var

View File

@ -52,20 +52,21 @@
; Level 1 = basic ; Level 1 = basic
; Level 2 = verbose ; Level 2 = verbose
loglevel=1 loglevel=2
; list of functions to perform on startup ; list of functions to perform on startup
Import_FIDONET.NA = true Import_FIDONET.NA = false
Import_MessageBase = true Import_MessageBase = false
Import_FILEBONE.NA = true Import_FILEBONE.NA = false
Import_FILES.BBS = true Import_FILES.BBS = false
MassUpload = true MassUpload = false
GenerateTopLists = true GenerateTopLists = false
GenerateAllFiles = true GenerateAllFiles = false
PurgeMessageBases = true PurgeMessageBases = false
PostTextFiles = true PostTextFiles = false
PackMessageBases = true PackMessageBases = false
ExportEchoMail = true
; ========================================================================== ; ==========================================================================
; ========================================================================== ; ==========================================================================
@ -331,7 +332,7 @@
file2_addr = 0:0/0 file2_addr = 0:0/0
file2_delfile = false file2_delfile = false
[ImportMessageBase] [Import_MessageBase]
; This option scans the message base directory, and creates any messages ; This option scans the message base directory, and creates any messages
; bases inside of Mystic that have data files in the directory. ; bases inside of Mystic that have data files in the directory.
@ -365,3 +366,5 @@
private_base = 0 private_base = 0
new_scan = 1 new_scan = 1
qwk_scan = 1 qwk_scan = 1
[ExportEchoMail]

View File

@ -45,6 +45,7 @@ Uses
mUtil_MsgPurge, mUtil_MsgPurge,
mUtil_MsgPack, mUtil_MsgPack,
mUtil_MsgPost, mUtil_MsgPost,
mUtil_EchoExport,
bbs_Common; bbs_Common;
{$I MUTIL_ANSI.PAS} {$I MUTIL_ANSI.PAS}
@ -133,7 +134,7 @@ Begin
Halt(1); Halt(1);
End; End;
TempPath := bbsConfig.SystemPath + 'temp0' + PathChar; TempPath := bbsConfig.SystemPath + 'temputil' + PathChar;
GetDIR (0, StartPath); GetDIR (0, StartPath);
@ -163,6 +164,7 @@ Var
DoMassUpload : Boolean; DoMassUpload : Boolean;
DoTopLists : Boolean; DoTopLists : Boolean;
DoAllFiles : Boolean; DoAllFiles : Boolean;
DoEchoExport : Boolean;
DoMsgPurge : Boolean; DoMsgPurge : Boolean;
DoMsgPack : Boolean; DoMsgPack : Boolean;
DoMsgPost : Boolean; DoMsgPost : Boolean;
@ -181,6 +183,7 @@ Begin
DoTopLists := CheckProcess(Header_TOPLISTS); DoTopLists := CheckProcess(Header_TOPLISTS);
DoFilesBBS := CheckProcess(Header_FILESBBS); DoFilesBBS := CheckProcess(Header_FILESBBS);
DoAllFiles := CheckProcess(Header_ALLFILES); DoAllFiles := CheckProcess(Header_ALLFILES);
DoEchoExport := CheckProcess(Header_ECHOEXPORT);
DoMsgPurge := CheckProcess(Header_MSGPURGE); DoMsgPurge := CheckProcess(Header_MSGPURGE);
DoMsgPack := CheckProcess(Header_MSGPACK); DoMsgPack := CheckProcess(Header_MSGPACK);
DoMsgPost := CheckProcess(Header_MSGPOST); DoMsgPost := CheckProcess(Header_MSGPOST);
@ -204,6 +207,7 @@ Begin
If DoMassUpload Then uMassUpload; If DoMassUpload Then uMassUpload;
If DoTopLists Then uTopLists; If DoTopLists Then uTopLists;
If DoAllFiles Then uAllFilesList; If DoAllFiles Then uAllFilesList;
If DoEchoExport Then uEchoExport;
If DoMsgPurge Then uPurgeMessageBases; If DoMsgPurge Then uPurgeMessageBases;
If DoMsgPack Then uPackMessageBases; If DoMsgPack Then uPackMessageBases;
If DoMsgPost Then uPostMessages; If DoMsgPost Then uPostMessages;

View File

@ -30,6 +30,7 @@ Const
Header_GENERAL = 'General'; Header_GENERAL = 'General';
Header_IMPORTNA = 'Import_FIDONET.NA'; Header_IMPORTNA = 'Import_FIDONET.NA';
Header_IMPORTMB = 'Import_MessageBase'; Header_IMPORTMB = 'Import_MessageBase';
Header_ECHOEXPORT = 'ExportEchoMail';
Header_FILEBONE = 'Import_FILEBONE.NA'; Header_FILEBONE = 'Import_FILEBONE.NA';
Header_FILESBBS = 'Import_FILES.BBS'; Header_FILESBBS = 'Import_FILES.BBS';
Header_UPLOAD = 'MassUpload'; Header_UPLOAD = 'MassUpload';
@ -53,6 +54,10 @@ Procedure ExecuteArchive (FName: String; Temp: String; Mask: String; Mode: B
Function GetMBaseByIndex (Num: LongInt; Var TempBase: RecMessageBase) : Boolean; Function GetMBaseByIndex (Num: LongInt; Var TempBase: RecMessageBase) : Boolean;
Function MessageBaseOpen (Var Msg: PMsgBaseABS; Var Area: 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 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 Implementation
@ -255,6 +260,9 @@ Var
Count : LongInt; Count : LongInt;
Str : String; Str : String;
Begin Begin
If Temp <> '' Then
Temp := strUpper(Temp)
Else
Temp := strUpper(JustFileExt(FName)); Temp := strUpper(JustFileExt(FName));
Assign (ArcFile, bbsConfig.DataPath + 'archive.dat'); Assign (ArcFile, bbsConfig.DataPath + 'archive.dat');
@ -377,9 +385,9 @@ Begin
Msg^.SetOrig(bbsConfig.NetAddress[mArea.NetAddr]); Msg^.SetOrig(bbsConfig.NetAddress[mArea.NetAddr]);
Case mArea.NetType of Case mArea.NetType of
1 : Assign (SemFile, Config.SemaPath + fn_SemFileEcho); 1 : Assign (SemFile, bbsConfig.SemaPath + fn_SemFileEcho);
2 : Assign (SemFile, Config.SemaPath + fn_SemFileNews); 2 : Assign (SemFile, bbsConfig.SemaPath + fn_SemFileNews);
3 : Assign (SemFile, Config.SemaPath + fn_SemFileNet); 3 : Assign (SemFile, bbsConfig.SemaPath + fn_SemFileNet);
End; End;
ReWrite (SemFile); ReWrite (SemFile);
@ -399,7 +407,7 @@ Begin
If mArea.NetType > 0 Then Begin If mArea.NetType > 0 Then Begin
Msg^.DoStringLn (#13 + '--- ' + mysSoftwareID + ' BBS v' + mysVersion + ' (' + OSID + ')'); 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; End;
Msg^.WriteMsg; Msg^.WriteMsg;
@ -410,4 +418,57 @@ Begin
Result := True; Result := True;
End; 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. End.

View File

@ -28,7 +28,7 @@ Begin
ProcessName ('Import Message Bases', True); ProcessName ('Import Message Bases', True);
ProcessResult (rWORKING, False); ProcessResult (rWORKING, False);
FindFirst ('*', AnyFile, Info); FindFirst (bbsConfig.MsgsPath + '*', AnyFile, Info);
While DosError = 0 Do Begin While DosError = 0 Do Begin
BaseName := JustFileName(Info.Name); BaseName := JustFileName(Info.Name);

View File

@ -23,7 +23,7 @@
Const Const
mysSoftwareID = 'Mystic'; // no idea mysSoftwareID = 'Mystic'; // no idea
mysCopyYear = '1997-2013'; // its been a long time! 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 mysDataChanged = '1.10 A11'; // version of last records change
{$IFDEF WIN32} {$IFDEF WIN32}
@ -78,6 +78,56 @@ Type
AccessFlagType = Set of 1..26; 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 RecEchoMailAddr = Record
Zone, Zone,
Net, Net,
@ -85,6 +135,9 @@ Type
Point : Word; Point : Word;
End; End;
RecEchoMailExport = LongInt;
(*
RecEchoMailOpts = Record RecEchoMailOpts = Record
SysLocation : String[40]; SysLocation : String[40];
SysFlags : String[40]; SysFlags : String[40];
@ -111,17 +164,20 @@ Type
BlockSize : Word; BlockSize : Word;
Res : Array[1..10] of Byte; Res : Array[1..10] of Byte;
End; End;
*)
RecEchoMailNode = Record RecEchoMailNode = Record
Description : String[40]; Index : LongInt;
Description : String[35];
Active : Boolean; Active : Boolean;
AddrList : String[250]; Address : RecEchoMailAddr;
InType : Byte; // 0=Disabled 1=FTP 2=BINKP 3=EMAIL 4=DIRECTORY ArcType : String[4];
OutType : Byte; // 0=Disabled 1=FTP 2=BINKP 3=EMAIL 4=DIRECTORY // InType : Byte; // 0=Disabled 1=FTP 2=BINKP 3=EMAIL 4=DIRECTORY
FTPin : RecEchoMailNodeFTP; // OutType : Byte; // 0=Disabled 1=FTP 2=BINKP 3=EMAIL 4=DIRECTORY
FTPout : RecEchoMailNodeFTP; // FTPin : RecEchoMailNodeFTP;
BINKPin : RecEchoMailNodeBINKP; // FTPout : RecEchoMailNodeFTP;
BINKPout : RecEchoMailNodeBINKP; // BINKPin : RecEchoMailNodeBINKP;
// BINKPout : RecEchoMailNodeBINKP;
LastRecv : LongInt; LastRecv : LongInt;
LastSent : LongInt; LastSent : LongInt;
LastReset : LongInt; LastReset : LongInt;
@ -159,10 +215,10 @@ Type
ScriptPath : String[mysMaxPathSize]; ScriptPath : String[mysMaxPathSize];
QwkPath : String[mysMaxPathSize]; QwkPath : String[mysMaxPathSize];
SemaPath : String[mysMaxPathSize]; SemaPath : String[mysMaxPathSize];
TemplatePath : String[mysMaxPathSize]; InboundPath : String[mysMaxPathSize];
MenuPath : String[mysMaxPathsize]; MenuPath : String[mysMaxPathsize];
TextPath : String[mysMaxPathSize]; TextPath : String[mysMaxPathSize];
WebPath : String[mysMaxPathSize]; OutboundPath : String[mysMaxPathSize];
// GENERAL SETTINGS // GENERAL SETTINGS
BBSName : String[30]; BBSName : String[30];
SysopName : String[30]; SysopName : String[30];
@ -522,7 +578,8 @@ Type
Index : Word; // permanent index Index : Word; // permanent index
Flags : LongInt; // MB flag bits see above Flags : LongInt; // MB flag bits see above
Created : LongInt; Created : LongInt;
Res : Array[1..76] of Byte; // RESERVED EchoTag : String[40]; // EchoMail Tag
Res : Array[1..35] of Byte; // RESERVED
End; End;
FScanRec = Record { <Data Path> *.SCN } FScanRec = Record { <Data Path> *.SCN }

View File

@ -2897,3 +2897,4 @@
+ MPL errors when executing a MPX module are now logged in the SYSOP logs + MPL errors when executing a MPX module are now logged in the SYSOP logs
<ALPHA 29 RELEASED> <ALPHA 29 RELEASED>