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 |
`---------------------------------------------------------------------------'

View File

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

View File

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

View File

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

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 ('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?');

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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