MsgBase format restructure. New message base editor
This commit is contained in:
parent
0a8502afb1
commit
d270e44ef7
|
@ -13,6 +13,35 @@ Uses
|
|||
{$I RECORDS.PAS}
|
||||
|
||||
Type
|
||||
OldMBaseRec = Record { MBASES.DAT }
|
||||
Name : String[40]; { Message base name }
|
||||
QWKName : String[13]; { QWK (short) message base name }
|
||||
FileName : String[40]; { Message base file name }
|
||||
Path : String[40]; { Path where files are stored }
|
||||
BaseType : Byte; { 0 = JAM, 1 = Squish }
|
||||
NetType : Byte; { 0 = Local 1 = EchoMail }
|
||||
{ 2 = UseNet 3 = NetMail }
|
||||
PostType : Byte; { 0 = Public 1 = Private }
|
||||
ACS, { ACS required to see this base }
|
||||
ReadACS, { ACS required to read messages }
|
||||
PostACS, { ACS required to post messages }
|
||||
SysopACS : String[20]; { ACS required for sysop options }
|
||||
Password : String[15]; { Password for this message base }
|
||||
ColQuote : Byte; { Quote text color }
|
||||
ColText : Byte; { Text color }
|
||||
ColTear : Byte; { Tear line color }
|
||||
ColOrigin: Byte; { Origin line color }
|
||||
NetAddr : Byte; { Net AKA to use for this base }
|
||||
Origin : String[50]; { Net origin line for this base }
|
||||
UseReal : Boolean; { Use real names? }
|
||||
DefNScan : Byte; { 0 = off, 1 = on, 2 = always }
|
||||
DefQScan : Byte; { 0 = off, 1 = on, 2 = always }
|
||||
MaxMsgs : Word; { Max messages to allow }
|
||||
MaxAge : Word; { Max age of messages before purge }
|
||||
Header : String[8]; { Display Header file name }
|
||||
Index : SmallInt; { QWK index - NEVER CHANGE THIS }
|
||||
End;
|
||||
|
||||
OldFBaseRec = Record { FBASES.DAT }
|
||||
Name : String[40]; { File base name }
|
||||
FtpName : String[60]; { FTP directory name }
|
||||
|
@ -1074,7 +1103,6 @@ Begin
|
|||
FBase.ULACS := OldFBase.ULACS;
|
||||
FBase.SysopACS := OldFBase.SysopACS;
|
||||
FBase.Path := OldFBase.Path;
|
||||
FBase.Password := OldFBase.Password;
|
||||
FBase.DefScan := OldFBase.DefScan;
|
||||
FBase.CommentACS := 's20';
|
||||
FBase.Flags := 0;
|
||||
|
@ -1094,6 +1122,71 @@ Begin
|
|||
DeleteFile (Config.DataPath + 'fbases.old');
|
||||
End;
|
||||
|
||||
Procedure ConvertMessageBases;
|
||||
Var
|
||||
MBase : RecMessageBase;
|
||||
MBaseFile : File of RecMessageBase;
|
||||
OldMBase : OldMBaseRec;
|
||||
OldMBaseFile : File of OldMBaseRec;
|
||||
Begin
|
||||
WriteLn ('[-] Updating message bases...');
|
||||
|
||||
If Not ReNameFile(Config.DataPath + 'mbases.dat', Config.DataPath + 'mbases.old') Then Begin
|
||||
WriteLn('[!] UNABLE TO FIND: ' + Config.DataPath + 'mbases.dat');
|
||||
Exit;
|
||||
End;
|
||||
|
||||
Assign (OldMBaseFile, Config.DataPath + 'mbases.old');
|
||||
Reset (OldMBaseFile);
|
||||
|
||||
Assign (MBaseFile, Config.DataPath + 'mbases.dat');
|
||||
ReWrite (MBaseFile);
|
||||
|
||||
While Not Eof(OldMBaseFile) Do Begin
|
||||
Read (OldMBaseFile, OldMBase);
|
||||
|
||||
MBase.Name := OldMBase.Name;
|
||||
MBase.QWKName := OldMBase.QwkName;
|
||||
MBase.NewsName := '';
|
||||
MBase.FileName := OldMBase.FileName;
|
||||
MBase.Path := OldMBase.Path;
|
||||
MBase.BaseType := OldMBase.BaseType;
|
||||
MBase.NetType := OldMBase.NetType;
|
||||
MBase.ListACS := OldMBase.ACS;
|
||||
MBase.ReadACS := OldMBase.ReadACS;
|
||||
MBase.PostACS := OldMBase.PostACS;
|
||||
MBase.SysopACS := OldMBase.SysopACS;
|
||||
MBase.Sponsor := '';
|
||||
MBase.ColQuote := OldMBase.ColQuote;
|
||||
MBase.ColText := OldMBase.ColText;
|
||||
MBase.ColTear := OldMBase.ColTear;
|
||||
MBase.ColOrigin := OldMBAse.ColOrigin;
|
||||
MBase.ColKludge := 8;
|
||||
MBase.NetAddr := OldMBase.NetAddr;
|
||||
MBase.Origin := OldMBase.Origin;
|
||||
MBase.DefNScan := OldMBase.DefNScan;
|
||||
MBase.DefQScan := OldMBase.DefQScan;
|
||||
MBase.MaxMsgs := OldMBase.MaxMsgs;
|
||||
MBase.MaxAge := OldMBase.MaxAge;
|
||||
MBase.Header := OldMBase.Header;
|
||||
MBase.RTemplate := 'ansimrd';
|
||||
MBase.ITemplate := 'ansimlst';
|
||||
MBase.Index := OldMBase.Index;
|
||||
|
||||
MBase.Flags := 0;
|
||||
|
||||
If OldMBase.UseReal Then MBase.Flags := MBase.Flags or MBRealNames;
|
||||
If OldMBase.PostType = 1 Then MBase.Flags := MBase.Flags or MBPrivate;
|
||||
|
||||
Write (MBaseFile, MBase);
|
||||
End;
|
||||
|
||||
Close (MBaseFile);
|
||||
Close (OldMBaseFile);
|
||||
|
||||
DeleteFile (Config.DataPath + 'mbases.old');
|
||||
End;
|
||||
|
||||
Var
|
||||
ConfigFile : File of RecConfig;
|
||||
Begin
|
||||
|
@ -1109,7 +1202,8 @@ Begin
|
|||
// ConvertUsers; //1.10a11
|
||||
//ConvertSecurity; //1.10a11
|
||||
//ConvertFileLists; //1.10a11
|
||||
ConvertFileBases; //1.10a11
|
||||
//ConvertFileBases; //1.10a11
|
||||
ConvertMessageBases; //1.10a11
|
||||
|
||||
// ConvertArchives; //1.10a1
|
||||
// ConvertGroups; //1.10a1
|
||||
|
|
|
@ -3875,3 +3875,26 @@
|
|||
+ Added Copy/Paste functions into all new ANSI internal editors.
|
||||
|
||||
+ Added new ANSI message group and file group editors.
|
||||
|
||||
- Removed Password protected file and message bases. This is a barely
|
||||
used feature and it doesn't integrate well when the bases are available
|
||||
via FTP and NTTP, etc. Security around bases needs to be based on the
|
||||
ACS system to avoid issues in those situations.
|
||||
|
||||
Prompts 66, and 67 are no longer used.
|
||||
Prompts 103 and 104 are no longer used.
|
||||
|
||||
+ Ansi message reader template is now configured on a per-base level just
|
||||
as the standard reader template is.
|
||||
|
||||
+ Ansi message reader message index is now configured on a per-base level
|
||||
just like the ansi reader template.
|
||||
|
||||
+ Message base ACS length has been extended to 30 characters.
|
||||
|
||||
+ Message base standard reader header filename has been expanded to 20
|
||||
characters.
|
||||
|
||||
+ Message base path expanded to 80 characters from 40.
|
||||
|
||||
+ Added new ANSI message base editor.
|
||||
|
|
|
@ -46,8 +46,7 @@ Begin
|
|||
Form.AddStr ('C', ' Comment ACS ' , 9, 14, 24, 14, 13, 30, 30, @FBase.CommentACS, Topic + 'ACS to comment and rate files');
|
||||
Form.AddStr ('P', ' FTP ACS' , 13, 15, 24, 15, 9, 30, 30, @FBase.FTPACS, Topic + 'ACS to access via FTP');
|
||||
Form.AddStr ('S', ' Sysop ACS ' , 11, 16, 24, 16, 11, 30, 30, @FBase.SysopACS, Topic + 'ACS for Sysop access');
|
||||
Form.AddTog ('E', ' Default Scan' , 8, 17, 24, 17, 14, 6, 0, 2, 'No Yes Forced', @FBase.DefScan, Topic + 'Default scan setting');
|
||||
Form.AddPass ('A', ' Password' , 12, 18, 24, 18, 10, 20, 20, @FBase.Password, Topic + 'Base password (Blank/Disable)');
|
||||
Form.AddTog ('E', ' Default Scan' , 8, 17, 24, 17, 14, 6, 0, 2, 'No Yes Always', @FBase.DefScan, Topic + 'Default scan setting');
|
||||
Form.AddPath ('I', ' File Path' , 11, 19, 24, 19, 11, 30, 120, @FBase.Path, Topic + 'Directory where files are stored');
|
||||
|
||||
Form.AddBits ('R', ' Free Files' , 57, 7, 71, 7, 12, FBFreeFiles, @FBase.Flags, Topic + 'Files in base are free?');
|
||||
|
|
|
@ -20,14 +20,14 @@ Uses
|
|||
bbs_cfg_SysCfg,
|
||||
bbs_cfg_Archive,
|
||||
bbs_cfg_Protocol,
|
||||
bbs_cfg_FileBase,
|
||||
bbs_cfg_MsgBase,
|
||||
bbs_cfg_Groups,
|
||||
|
||||
//old editors to be rewritten
|
||||
bbs_cfg_useredit,
|
||||
bbs_cfg_groups,
|
||||
bbs_cfg_events,
|
||||
bbs_cfg_filebase,
|
||||
bbs_cfg_language,
|
||||
bbs_cfg_msgbase,
|
||||
bbs_cfg_seclevel,
|
||||
bbs_cfg_vote,
|
||||
bbs_cfg_menuedit;
|
||||
|
@ -40,7 +40,10 @@ Begin
|
|||
|
||||
Case Mode of
|
||||
'A' : Configuration_ArchiveEditor;
|
||||
'B' : Configuration_MessageBaseEditor;
|
||||
'F' : Configuration_FileBaseEditor;
|
||||
'G' : Configuration_GroupEditor(True);
|
||||
'R' : Configuration_GroupEditor(False);
|
||||
'P' : Configuration_ProtocolEditor;
|
||||
End;
|
||||
|
||||
|
@ -74,11 +77,12 @@ End;
|
|||
|
||||
Procedure Configuration_MainMenu;
|
||||
Var
|
||||
Form : TAnsiMenuForm;
|
||||
Box : TAnsiMenuBox;
|
||||
Image : TConsoleImageRec;
|
||||
MenuPos : Array[0..4] of Byte = (1, 1, 1, 1, 1);
|
||||
Res : Char;
|
||||
Form : TAnsiMenuForm;
|
||||
Box : TAnsiMenuBox;
|
||||
Image : TConsoleImageRec;
|
||||
MenuPos : Array[0..4] of Byte = (1, 1, 1, 1, 1);
|
||||
ThemeOld : LangRec;
|
||||
Res : Char;
|
||||
|
||||
Procedure BoxOpen (X1, Y1, X2, Y2: Byte);
|
||||
Begin
|
||||
|
@ -120,8 +124,6 @@ Var
|
|||
'U' : User_Editor(False, False);
|
||||
'M' : Menu_Editor;
|
||||
'T' : Lang_Editor;
|
||||
'B' : Message_Base_Editor;
|
||||
'G',
|
||||
'S' : Levels_Editor;
|
||||
'E' : Event_Editor;
|
||||
'V' : Vote_Editor;
|
||||
|
@ -274,9 +276,17 @@ Begin
|
|||
#75 : MenuPtr := 2;
|
||||
#77 : MenuPtr := 4;
|
||||
End;
|
||||
End Else
|
||||
End Else Begin
|
||||
ThemeOld := Session.Lang;
|
||||
|
||||
Session.Lang.FieldCol1 := 15 + 1 * 16;
|
||||
Session.Lang.FieldCol2 := 9 + 1 * 16;
|
||||
Session.Lang.FieldChar := 'm';
|
||||
Session.Lang.EchoCh := '*';
|
||||
|
||||
Case Res of
|
||||
'A' : Configuration_ArchiveEditor;
|
||||
'B' : Configuration_MessageBaseEditor;
|
||||
'F' : Configuration_FileBaseEditor;
|
||||
'G' : Configuration_GroupEditor(True);
|
||||
'P' : Configuration_ProtocolEditor;
|
||||
|
@ -284,7 +294,6 @@ Begin
|
|||
'U',
|
||||
'M',
|
||||
'T',
|
||||
'B',
|
||||
'S',
|
||||
'E',
|
||||
'V' : ExecuteOldConfiguration(Res);
|
||||
|
@ -292,6 +301,9 @@ Begin
|
|||
Else
|
||||
MenuPtr := 0;
|
||||
End;
|
||||
|
||||
Session.Lang := ThemeOld;
|
||||
End;
|
||||
End;
|
||||
4 : Begin
|
||||
BoxOpen (54, 4, 64, 6);
|
||||
|
|
|
@ -4,233 +4,251 @@ Unit bbs_cfg_MsgBase;
|
|||
|
||||
Interface
|
||||
|
||||
Procedure Message_Base_Editor;
|
||||
Procedure Configuration_MessageBaseEditor;
|
||||
|
||||
Implementation
|
||||
|
||||
Uses
|
||||
m_FileIO,
|
||||
m_Strings,
|
||||
bbs_Common,
|
||||
bbs_Core,
|
||||
bbs_User;
|
||||
m_FileIO,
|
||||
bbs_Ansi_MenuBox,
|
||||
bbs_Ansi_MenuForm,
|
||||
bbs_Cfg_Common,
|
||||
bbs_Cfg_SysCfg,
|
||||
bbs_Common;
|
||||
|
||||
Procedure Message_Base_Editor;
|
||||
Const
|
||||
BT : Array[0..1] of String[6] = ('JAM', 'Squish');
|
||||
NT : Array[0..3] of String[8] = ('Local ', 'EchoMail', 'UseNet ', 'NetMail ');
|
||||
ST : Array[0..2] of String[6] = ('No', 'Yes', 'Always');
|
||||
Var
|
||||
A,
|
||||
B : Word; { was integer }
|
||||
MBaseFile : TBufFile;
|
||||
MBase : RecMessageBase;
|
||||
|
||||
Procedure EditMessageBase;
|
||||
Var
|
||||
Box : TAnsiMenuBox;
|
||||
Form : TAnsiMenuForm;
|
||||
Topic : String;
|
||||
Begin
|
||||
Session.SystemLog ('*MBASE EDITOR*');
|
||||
Topic := '|03(|09Message Base Edit|03) |01-|09> |15';
|
||||
Box := TAnsiMenuBox.Create;
|
||||
Form := TAnsiMenuForm.Create;
|
||||
|
||||
Repeat
|
||||
Session.io.AllowPause := True;
|
||||
Box.Header := ' Index ' + strI2S(MBase.Index) + ' ';
|
||||
|
||||
Session.io.OutFullLn ('|CL|14Message Base Editor|CR|CR|09### Name|$D37 Type Format|CR--- |$D40- ------- ------');
|
||||
Box.Open (3, 5, 77, 21);
|
||||
|
||||
Reset (Session.Msgs.MBaseFile);
|
||||
While Not Eof(Session.Msgs.MBaseFile) Do Begin
|
||||
Read (Session.Msgs.MBaseFile, Session.Msgs.MBase);
|
||||
VerticalLine (17, 6, 20);
|
||||
VerticalLine (66, 6, 20);
|
||||
|
||||
Session.io.OutFullLn ('|15' + strPadR(strI2S(FilePos(Session.Msgs.MBaseFile) - 1), 3, ' ') + ' |14|$R41|MB|10' +
|
||||
NT[Session.Msgs.MBase.NetType] + ' ' + BT[Session.Msgs.MBase.BaseType]);
|
||||
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 (Blank/Disabled)');
|
||||
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 ('P', ' 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, 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');
|
||||
|
||||
If (Session.io.PausePtr = Session.User.ThisUser.ScreenSize) and (Session.io.AllowPause) Then
|
||||
Case Session.io.MorePrompt of
|
||||
'N' : Break;
|
||||
'C' : Session.io.AllowPause := False;
|
||||
End;
|
||||
End;
|
||||
Session.io.OutFull ('|CR|09(I)nsert, (D)elete, (E)dit, (M)ove, (Q)uit? ');
|
||||
case Session.io.OneKey (#13'DIEMQ', True) of
|
||||
'D' : begin
|
||||
Session.io.OutFull ('Delete which? ');
|
||||
a := strS2I(Session.io.GetInput(3, 3, 11, ''));
|
||||
If (A > 0) and (A <= FileSize(Session.Msgs.MBaseFile)) Then Begin
|
||||
Seek (Session.Msgs.MBaseFile, A);
|
||||
Read (Session.Msgs.MBaseFile, Session.Msgs.MBase);
|
||||
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 ('E', ' Tear Color' , 54, 8, 68, 8, 12, @MBase.ColTear, Topic + 'Color for tear line');
|
||||
Form.AddAttr ('G', ' Origin Color', 52, 9, 68, 9, 14, @MBase.ColOrigin, Topic + 'Color for origin line');
|
||||
Form.AddAttr ('K', ' Kludge Color', 52, 10, 68, 10, 14, @MBase.ColKludge, Topic + 'Color for kludge line');
|
||||
Form.AddWord ('M', ' Max Msgs' , 56, 11, 68, 11, 10, 5, 0, 65535, @MBase.MaxMsgs, Topic + 'Maximum number of message in base');
|
||||
Form.AddWord ('1', ' Max Msg Age' , 53, 12, 68, 12, 13, 5, 0, 65535, @MBase.MaxAge, Topic + 'Maximum age (days) to keep messages');
|
||||
Form.AddTog ('2', ' New Scan' , 56, 13, 68, 13, 10, 6, 0, 2, 'No Yes Forced', @MBase.DefNScan, Topic + 'Newscan default for users');
|
||||
Form.AddTog ('3', ' QWK Scan' , 56, 14, 68, 14, 10, 6, 0, 2, 'No Yes Forced', @MBase.DefQScan, Topic + 'QWKscan default for users');
|
||||
Form.AddBits ('4', ' Real Names' , 54, 15, 68, 15, 12, MBRealNames, @MBase.Flags, Topic + 'Use real names in this base?');
|
||||
Form.AddBits ('5', ' Autosigs' , 56, 16, 68, 16, 10, MBAutoSigs, @MBase.Flags, Topic + 'Allow auto signatures in this base?');
|
||||
Form.AddBits ('6', ' Kill Kludge' , 53, 17, 68, 17, 13, MBKillKludge, @MBase.Flags, Topic + 'Filter out kludge lines');
|
||||
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');
|
||||
|
||||
FileErase (config.msgspath + Session.Msgs.MBase.filename + '.jhr');
|
||||
FileErase (config.msgspath + Session.Msgs.MBase.filename + '.jlr');
|
||||
FileErase (config.msgspath + Session.Msgs.MBase.filename + '.jdt');
|
||||
FileErase (config.msgspath + Session.Msgs.MBase.filename + '.jdx');
|
||||
FileErase (config.msgspath + Session.Msgs.MBase.filename + '.sqd');
|
||||
FileErase (config.msgspath + Session.Msgs.MBase.filename + '.sqi');
|
||||
FileErase (config.msgspath + Session.Msgs.MBase.filename + '.sql');
|
||||
Repeat
|
||||
WriteXY (19, 15, 113, strPadR(strAddr2Str(Config.NetAddress[MBase.NetAddr]), 19, ' '));
|
||||
|
||||
KillRecord (Session.Msgs.MBaseFile, A+1, SizeOf(MBaseRec));
|
||||
End;
|
||||
end;
|
||||
'I' : begin
|
||||
Session.io.OutFull ('Insert before? (1-' + strI2S(filesize(Session.Msgs.MBaseFile)) + '): ');
|
||||
a := strS2I(Session.io.GetInput(3, 3, 11, ''));
|
||||
if (a > 0) and (a <= filesize(Session.Msgs.MBaseFile)) then begin
|
||||
AddRecord (Session.Msgs.MBaseFile, A, SizeOf(Session.Msgs.MBaseFile));
|
||||
Case Form.Execute of
|
||||
'D' : MBase.NetAddr := Configuration_EchoMailAddress(False);
|
||||
#27 : Break;
|
||||
End;
|
||||
Until False;
|
||||
|
||||
{find permanent mbase index}
|
||||
b := a + 1;
|
||||
reset (Session.Msgs.MBaseFile);
|
||||
while not eof(Session.Msgs.MBaseFile) do begin
|
||||
read (Session.Msgs.MBaseFile, Session.Msgs.mbase);
|
||||
if B = Session.Msgs.MBase.index then begin
|
||||
inc (b);
|
||||
reset (Session.Msgs.MBaseFile);
|
||||
end;
|
||||
end;
|
||||
Session.Msgs.MBase.name := 'New Message Base';
|
||||
Session.Msgs.MBase.qwkname := 'New Messages';
|
||||
Session.Msgs.MBase.filename := 'NEW';
|
||||
Session.Msgs.MBase.Path := config.msgspath;
|
||||
Session.Msgs.MBase.nettype := 0;
|
||||
Session.Msgs.MBase.posttype := 0;
|
||||
Session.Msgs.MBase.acs := 's255';
|
||||
Session.Msgs.MBase.readacs := 's255';
|
||||
Session.Msgs.MBase.postacs := 's255';
|
||||
Session.Msgs.MBase.sysopacs := 's255';
|
||||
Session.Msgs.MBase.index := B;
|
||||
Session.Msgs.MBase.netaddr := 1;
|
||||
Session.Msgs.MBase.origin := config.origin;
|
||||
Session.Msgs.MBase.usereal := false;
|
||||
Session.Msgs.MBase.colquote := config.colorquote;
|
||||
Session.Msgs.MBase.coltext := config.colortext;
|
||||
Session.Msgs.MBase.coltear := config.colortear;
|
||||
Session.Msgs.MBase.colorigin := config.colororigin;
|
||||
Session.Msgs.MBase.defnscan := 1;
|
||||
Session.Msgs.MBase.defqscan := 1;
|
||||
Session.Msgs.MBase.basetype := 0;
|
||||
seek (Session.Msgs.MBaseFile, a);
|
||||
write (Session.Msgs.MBaseFile, Session.Msgs.mbase);
|
||||
end;
|
||||
end;
|
||||
'E' : begin
|
||||
Session.io.OutFull ('Edit which? ');
|
||||
a := strS2I(Session.io.GetInput(3, 3, 11, ''));
|
||||
if (a >= 0) and (a < filesize(Session.Msgs.MBaseFile)) then begin
|
||||
seek (Session.Msgs.MBaseFile, a);
|
||||
read (Session.Msgs.MBaseFile, Session.Msgs.mbase);
|
||||
repeat
|
||||
Session.io.OutFullLn ('|CL|14Message Base '+strI2S(FilePos(Session.Msgs.MBaseFile)-1)+' of '+strI2S(FileSize(Session.Msgs.MBaseFile)-1)+' |08[Perm Idx:' + strI2S(Session.Msgs.MBase.index) + ']|CR|03');
|
||||
Session.io.OutRawln ('A. Name : ' + Session.Msgs.MBase.name);
|
||||
Session.io.OutRawln ('B. QWK Name : ' + Session.Msgs.MBase.qwkname);
|
||||
Session.io.OutRawln ('C. Filename : ' + Session.Msgs.MBase.filename);
|
||||
Session.io.OutRawln ('D. Storage Path : ' + Session.Msgs.MBase.path);
|
||||
Session.io.OutRaw ('E. Post Type : ');
|
||||
If Session.Msgs.MBase.PostType = 0 Then Session.io.OutRaw ('Public ') Else Session.io.OutRaw ('Private');
|
||||
Session.io.OutRawLn (strRep(' ', 23) + 'Y. Base Format : ' + BT[Session.Msgs.MBase.BaseType]);
|
||||
Box.Close;
|
||||
|
||||
Session.io.OutFull ('|CRF. List ACS : ' + strPadR(Session.Msgs.MBase.acs, 30, ' '));
|
||||
Session.io.OutFull ('O. Quote Color : ');
|
||||
Session.io.AnsiColor(Session.Msgs.MBase.ColQuote);
|
||||
Session.io.OutFullLn ('XX> Quote|03|16');
|
||||
Form.Free;
|
||||
Box.Free;
|
||||
End;
|
||||
|
||||
Session.io.OutRaw ('G. Read ACS : ' + strPadR(Session.Msgs.MBase.readacs, 30, ' '));
|
||||
Session.io.OutFull ('P. Text Color : ');
|
||||
Session.io.AnsiColor(Session.Msgs.MBase.ColText);
|
||||
Session.io.OutFullLn ('Text|03|16');
|
||||
Procedure Configuration_MessageBaseEditor;
|
||||
Var
|
||||
Box : TAnsiMenuBox;
|
||||
List : TAnsiMenuList;
|
||||
MIndex : LongInt;
|
||||
Copied : RecMessageBase;
|
||||
HasCopy : Boolean = False;
|
||||
|
||||
Session.io.OutRaw ('H. Post ACS : ' + strPadR(Session.Msgs.MBase.postacs, 30, ' '));
|
||||
Session.io.OutFull ('R. Tear Color : ');
|
||||
Session.io.AnsiColor(Session.Msgs.MBase.ColTear);
|
||||
Session.io.OutFullLn ('--- Tear|03|16');
|
||||
Procedure MakeList;
|
||||
Var
|
||||
Tag : Byte;
|
||||
Begin
|
||||
List.Clear;
|
||||
|
||||
Session.io.OutRaw ('I. Sysop ACS : ' + strPadR(Session.Msgs.MBase.sysopacs, 30, ' '));
|
||||
Session.io.OutFull ('S. Origin Color : ');
|
||||
Session.io.AnsiColor(Session.Msgs.MBase.ColOrigin);
|
||||
Session.io.OutFullLn ('* Origin:|03|16');
|
||||
MBaseFile.Reset;
|
||||
|
||||
Session.io.OutRaw ('J. Password : ' + strPadR(Session.Msgs.MBase.password, 30, ' '));
|
||||
Session.io.OutRawln ('T. Header File : ' + Session.Msgs.MBase.Header);
|
||||
Session.io.OutRawLn ('K. Base Type : ' + NT[Session.Msgs.MBase.NetType]);
|
||||
Session.io.OutRawln ('L. Net Address : ' + strAddr2Str(config.netaddress[Session.Msgs.MBase.netaddr]) + ' (' + Config.NetDesc[Session.Msgs.MBase.NetAddr] + ')');
|
||||
Session.io.OutRawln ('M. Origin line : ' + Session.Msgs.MBase.origin);
|
||||
Session.io.OutRawLn ('N. Use Realnames: ' + Session.io.OutYN(Session.Msgs.MBase.UseReal));
|
||||
While Not MBaseFile.EOF Do Begin
|
||||
If MBaseFile.FilePos = 0 Then Tag := 2 Else Tag := 0;
|
||||
|
||||
Session.io.OutFullLn ('|CRU. Default New Scan: ' + strPadR(ST[Session.Msgs.MBase.DefNScan], 27, ' ') +
|
||||
'W. Max Messages : ' + strI2S(Session.Msgs.MBase.MaxMsgs));
|
||||
MBaseFile.Read (MBase);
|
||||
|
||||
Session.io.OutRawLn ('V. Default QWK Scan: ' + strPadR(ST[Session.Msgs.MBase.DefQScan], 27, ' ') +
|
||||
'X. Max Msg Age : ' + strI2S(Session.Msgs.MBase.MaxAge) + ' days');
|
||||
List.Add(strPadR(strI2S(MBaseFile.FilePos), 5, ' ') + ' ' + strStripMCI(MBase.Name), Tag);
|
||||
End;
|
||||
|
||||
Session.io.OutFull ('|CR|09([) Prev, (]) Next, (Q)uit: ');
|
||||
case Session.io.OneKey('[]ABCDEFGHIJKLMNOPQRSTUVWXY', True) of
|
||||
'[' : If FilePos(Session.Msgs.MBaseFile) > 1 Then Begin
|
||||
Seek (Session.Msgs.MBaseFile, FilePos(Session.Msgs.MBaseFile)-1);
|
||||
Write (Session.Msgs.MBaseFile, Session.Msgs.MBase);
|
||||
Seek (Session.Msgs.MBaseFile, FilePos(Session.Msgs.MBaseFile)-2);
|
||||
Read (Session.Msgs.MBaseFile, Session.Msgs.MBase);
|
||||
End;
|
||||
']' : If FilePos(Session.Msgs.MBaseFile) < FileSize(Session.Msgs.MBaseFile) Then Begin
|
||||
Seek (Session.Msgs.MBaseFile, FilePos(Session.Msgs.MBaseFile)-1);
|
||||
Write (Session.Msgs.MBaseFile, Session.Msgs.MBase);
|
||||
Read (Session.Msgs.MBaseFile, Session.Msgs.MBase);
|
||||
End;
|
||||
'A' : Session.Msgs.MBase.Name := Session.io.InXY(19, 3, 40, 40, 11, Session.Msgs.MBase.Name);
|
||||
'B' : Session.Msgs.MBase.QwkName := Session.io.InXY(19, 4, 13, 13, 11, Session.Msgs.MBase.QwkName);
|
||||
'C' : Session.Msgs.MBase.FileName := Session.io.InXY(19, 5, 40, 40, 11, Session.Msgs.MBase.filename);
|
||||
'D' : Session.Msgs.MBase.Path := CheckPath(Session.io.InXY(19, 6, 39, 39, 11, Session.Msgs.MBase.Path));
|
||||
'E' : If Session.Msgs.MBase.PostType = 0 Then Inc(Session.Msgs.MBase.PostType) Else Dec(Session.Msgs.MBase.PostType);
|
||||
'F' : Session.Msgs.MBase.ACS := Session.io.InXY(19, 9, 20, 20, 11, Session.Msgs.MBase.acs);
|
||||
'G' : Session.Msgs.MBase.ReadACS := Session.io.InXY(19, 10, 20, 20, 11, Session.Msgs.MBase.readacs);
|
||||
'H' : Session.Msgs.MBase.PostACS := Session.io.InXY(19, 11, 20, 20, 11, Session.Msgs.MBase.postacs);
|
||||
'I' : Session.Msgs.MBase.SysopACS := Session.io.InXY(19, 12, 20, 20, 11, Session.Msgs.MBase.sysopacs);
|
||||
'J' : Session.Msgs.MBase.Password := Session.io.InXY(19, 13, 15, 15, 12, Session.Msgs.MBase.password);
|
||||
'K' : If Session.Msgs.MBase.NetType < 3 Then Inc(Session.Msgs.MBase.NetType) Else Session.Msgs.MBase.NetType := 0;
|
||||
'L' : begin
|
||||
Session.io.OutFullLn ('|03');
|
||||
For A := 1 to 30 Do Begin
|
||||
Session.io.OutRaw (strPadR(strI2S(A) + '.', 5, ' ') + strPadR(strAddr2Str(Config.NetAddress[A]), 30, ' '));
|
||||
If A Mod 2 = 0 then Session.io.OutRawLn('');
|
||||
End;
|
||||
Session.io.OutFull ('|CR|09Address: ');
|
||||
a := strS2I(Session.io.GetInput(2, 2, 12, ''));
|
||||
if (a > 0) and (a < 31) then Session.Msgs.MBase.netaddr := a;
|
||||
end;
|
||||
'M' : Session.Msgs.MBase.origin := Session.io.InXY(19, 16, 50, 50, 11, Session.Msgs.MBase.origin);
|
||||
'N' : Session.Msgs.MBase.usereal := Not Session.Msgs.MBase.UseReal;
|
||||
'O' : Session.Msgs.MBase.ColQuote := getColor(Session.Msgs.MBase.ColQuote);
|
||||
'P' : Session.Msgs.MBase.ColText := getColor(Session.Msgs.MBase.ColText);
|
||||
'R' : Session.Msgs.MBase.ColTear := getColor(Session.Msgs.MBase.ColTear);
|
||||
'S' : Session.Msgs.MBase.ColOrigin := getColor(Session.Msgs.MBase.ColOrigin);
|
||||
'T' : Session.Msgs.MBase.Header := Session.io.InXY(67, 13, 8, 8, 11, Session.Msgs.MBase.Header);
|
||||
'U' : If Session.Msgs.MBase.DefNScan < 2 Then Inc(Session.Msgs.MBase.DefNScan) Else Session.Msgs.MBase.DefNScan := 0;
|
||||
'V' : If Session.Msgs.MBase.DefQScan < 2 Then Inc(Session.Msgs.MBase.DefQScan) Else Session.Msgs.MBase.DefQScan := 0;
|
||||
'W' : Session.Msgs.MBase.MaxMsgs := strS2I(Session.io.InXY(67, 19, 5, 5, 12, strI2S(Session.Msgs.MBase.MaxMsgs)));
|
||||
'X' : Session.Msgs.MBase.MaxAge := strS2I(Session.io.InXY(67, 20, 5, 5, 12, strI2S(Session.Msgs.MBase.MaxAge)));
|
||||
'Y' : If Session.Msgs.MBase.BaseType = 0 Then Session.Msgs.MBase.BaseType := 1 Else Session.Msgs.MBase.BaseType := 0;
|
||||
'Q' : Break;
|
||||
End;
|
||||
Until False;
|
||||
Seek (Session.Msgs.MBaseFile, FilePos(Session.Msgs.MBaseFile) - 1);
|
||||
Write (Session.Msgs.MBaseFile, Session.Msgs.MBase);
|
||||
End;
|
||||
End;
|
||||
'M' : Begin
|
||||
Session.io.OutRaw ('Move which? ');
|
||||
A := strS2I(Session.io.GetInput(3, 3, 12, ''));
|
||||
List.Add('', 2);
|
||||
End;
|
||||
|
||||
Session.io.OutRaw ('Move before? (1-' + strI2S(FileSize(Session.Msgs.MBaseFile)) + '): ');
|
||||
B := strS2I(Session.io.GetInput(3, 3, 12, ''));
|
||||
Procedure AssignRecord (Email: Boolean);
|
||||
Begin
|
||||
MIndex := List.Picked;
|
||||
|
||||
If (A > 0) and (A <= FileSize(Session.Msgs.MBaseFile)) and (B > 0) and (B <= FileSize(Session.Msgs.MBaseFile)) Then Begin
|
||||
Seek (Session.Msgs.MBaseFile, A);
|
||||
Read (Session.Msgs.MBaseFile, Session.Msgs.MBase);
|
||||
MBaseFile.Reset;
|
||||
|
||||
AddRecord (Session.Msgs.MBaseFile, B+1, SizeOf(MBaseRec));
|
||||
Write (Session.Msgs.MBaseFile, Session.Msgs.MBase);
|
||||
While Not MBaseFile.EOF Do Begin
|
||||
MBaseFile.Read (MBase);
|
||||
|
||||
If A > B Then Inc(A);
|
||||
If MIndex = MBase.Index Then Begin
|
||||
Inc (MIndex);
|
||||
MBaseFile.Reset;
|
||||
End;
|
||||
End;
|
||||
|
||||
KillRecord (Session.Msgs.MBaseFile, A+1, SizeOf(MBaseRec));
|
||||
End;
|
||||
End;
|
||||
'Q' : break;
|
||||
end;
|
||||
MBaseFile.RecordInsert (List.Picked);
|
||||
|
||||
until False;
|
||||
close (Session.Msgs.MBaseFile);
|
||||
end;
|
||||
FillChar (MBase, SizeOf(RecMessageBase), 0);
|
||||
|
||||
end.
|
||||
With MBase Do Begin
|
||||
Index := MIndex;
|
||||
FileName := 'new';
|
||||
Path := Config.MsgsPath;
|
||||
Name := 'New Base';
|
||||
DefNScan := 1;
|
||||
DefQScan := 1;
|
||||
MaxMsgs := 500;
|
||||
MaxAge := 365;
|
||||
Header := 'msghead';
|
||||
RTemplate := 'ansimrd';
|
||||
ITemplate := 'ansimlst';
|
||||
SysopACS := 's255';
|
||||
NetAddr := 1;
|
||||
ColQuote := Config.ColorQuote;
|
||||
ColText := Config.ColorText;
|
||||
ColTear := Config.ColorTear;
|
||||
ColOrigin := Config.ColorOrigin;
|
||||
ColKludge := Config.ColorKludge;
|
||||
Flags := MBAutoSigs or MBKillKludge;
|
||||
|
||||
If Email Then Begin
|
||||
FileName := 'email';
|
||||
Name := 'Electronic Mail';
|
||||
Index := 0;
|
||||
Flags := Flags or MBPrivate;
|
||||
End;
|
||||
End;
|
||||
|
||||
MBaseFile.Write(MBase);
|
||||
End;
|
||||
|
||||
Begin
|
||||
MBaseFile := TBufFile.Create(4096);
|
||||
|
||||
If Not MBaseFile.Open(Config.DataPath + 'mbases.dat', fmOpenCreate, fmReadWrite + fmDenyNone, SizeOf(RecMessageBase)) Then Begin
|
||||
MBaseFile.Free;
|
||||
Exit;
|
||||
End;
|
||||
|
||||
Box := TAnsiMenuBox.Create;
|
||||
List := TAnsiMenuList.Create;
|
||||
|
||||
List.NoWindow := True;
|
||||
List.LoChars := #13#27#47;
|
||||
List.AllowTag := True;
|
||||
|
||||
If MBaseFile.FileSize = 0 Then AssignRecord(True);
|
||||
|
||||
Box.Open (15, 5, 65, 21);
|
||||
|
||||
WriteXY (17, 6, 112, '##### Message Base Description');
|
||||
WriteXY (16, 7, 112, strRep('Ä', 49));
|
||||
WriteXY (16, 19, 112, strRep('Ä', 49));
|
||||
WriteXY (29, 20, 112, cfgCommandList);
|
||||
|
||||
Repeat
|
||||
MakeList;
|
||||
|
||||
List.Open (15, 7, 65, 19);
|
||||
List.Close;
|
||||
|
||||
Case List.ExitCode of
|
||||
'/' : Case GetCommandOption(10, 'I-Insert|D-Delete|C-Copy|P-Paste|') of
|
||||
'I' : If List.Picked > 1 Then Begin
|
||||
AssignRecord(False);
|
||||
MakeList;
|
||||
End;
|
||||
'D' : If (List.Picked > 1) and (List.Picked < List.ListMax) Then
|
||||
If ShowMsgBox(1, 'Delete this entry?') Then Begin
|
||||
MBaseFile.Seek (List.Picked - 1);
|
||||
MBaseFile.Read (MBase);
|
||||
|
||||
MBaseFile.RecordDelete (List.Picked);
|
||||
|
||||
If ShowMsgBox(1, 'Delete data files?') Then Begin
|
||||
FileErase (MBase.Path + MBase.FileName + '.jhr');
|
||||
FileErase (MBase.Path + MBase.FileName + '.jlr');
|
||||
FileErase (MBase.Path + MBase.FileName + '.jdt');
|
||||
FileErase (MBase.Path + MBase.FileName + '.jdx');
|
||||
FileErase (MBase.Path + MBase.FileName + '.sqd');
|
||||
FileErase (MBase.Path + MBase.FileName + '.sqi');
|
||||
FileErase (MBase.Path + MBase.FileName + '.sql');
|
||||
FileErase (MBase.Path + MBase.FileName + '.scn');
|
||||
End;
|
||||
|
||||
MakeList;
|
||||
End;
|
||||
'C' : If List.Picked <> List.ListMax Then Begin
|
||||
MBaseFile.Seek (List.Picked - 1);
|
||||
MBaseFile.Read (Copied);
|
||||
|
||||
HasCopy := True;
|
||||
End;
|
||||
'P' : If HasCopy Then Begin
|
||||
MBaseFile.RecordInsert (List.Picked);
|
||||
MBaseFile.Write (Copied);
|
||||
|
||||
MakeList;
|
||||
End;
|
||||
|
||||
End;
|
||||
#13 : If List.Picked < List.ListMax Then Begin
|
||||
MBaseFile.Seek (List.Picked - 1);
|
||||
MBaseFile.Read (MBase);
|
||||
EditMessageBase;
|
||||
MBaseFile.Seek (List.Picked - 1);
|
||||
MBaseFile.Write (MBase);
|
||||
End;
|
||||
#27 : Break;
|
||||
End;
|
||||
Until False;
|
||||
|
||||
Box.Close;
|
||||
|
||||
MBaseFile.Free;
|
||||
List.Free;
|
||||
Box.Free;
|
||||
End;
|
||||
|
||||
End.
|
||||
|
|
|
@ -1434,21 +1434,6 @@ Var
|
|||
Old : RecFileBase;
|
||||
Str : String[5];
|
||||
Compress : Boolean;
|
||||
|
||||
Function CheckPassword : Boolean;
|
||||
Begin
|
||||
CheckPassword := True;
|
||||
|
||||
If FBase.Password <> '' Then
|
||||
If Not Session.io.GetPW(Session.GetPrompt(66), Session.GetPrompt(417), FBase.Password) Then Begin
|
||||
Session.io.OutFullLn (Session.GetPrompt(67));
|
||||
FBase := Old;
|
||||
Close (FBaseFile);
|
||||
CheckPassword := False;
|
||||
Exit;
|
||||
End;
|
||||
End;
|
||||
|
||||
Begin
|
||||
Old := FBase;
|
||||
Compress := Config.FCompress;
|
||||
|
@ -1472,7 +1457,6 @@ Begin
|
|||
If IoResult <> 0 Then Break;
|
||||
|
||||
If Session.User.Access(FBase.ListACS) Then Begin
|
||||
If Not CheckPassword Then Exit;
|
||||
Session.User.ThisUser.LastFBase := FilePos(FBaseFile);
|
||||
Close (FBaseFile);
|
||||
Exit;
|
||||
|
@ -1494,7 +1478,6 @@ Begin
|
|||
Read (FBaseFile, FBase);
|
||||
|
||||
If Session.User.Access(FBase.ListACS) Then Begin
|
||||
If Not CheckPassword Then Exit;
|
||||
Session.User.ThisUser.LastFBase := FilePos(FBaseFile)
|
||||
End Else
|
||||
FBase := Old;
|
||||
|
@ -1555,8 +1538,6 @@ Begin
|
|||
End;
|
||||
End;
|
||||
|
||||
If Not CheckPassword Then Exit;
|
||||
|
||||
Session.User.ThisUser.LastFBase := FilePos(FBaseFile);
|
||||
|
||||
Close (FBaseFile);
|
||||
|
|
|
@ -24,7 +24,7 @@ Type
|
|||
TBBSIO = Class
|
||||
Core : Pointer;
|
||||
Term : TTermAnsi;
|
||||
ScreenInfo : Array[0..9] of Record X, Y, A : Byte; End;
|
||||
ScreenInfo : Array[0..9] of Record X, Y, A : Byte; End;
|
||||
PromptInfo : Array[1..MaxPromptInfo] of String[89];
|
||||
FmtString : Boolean;
|
||||
FmtLen : Byte;
|
||||
|
@ -265,8 +265,8 @@ Begin
|
|||
|
||||
Ch := OneKey('YNC' + #13, False);
|
||||
|
||||
OutBS(Screen.CursorX, True);
|
||||
AnsiColor(SavedAttr);
|
||||
OutBS (Screen.CursorX, True);
|
||||
AnsiColor (SavedAttr);
|
||||
|
||||
PausePtr := 1;
|
||||
AllowMCI := SavedMCI;
|
||||
|
@ -345,7 +345,9 @@ End;
|
|||
Procedure TBBSIO.OutRaw (Str: String);
|
||||
Begin
|
||||
If FmtString Then Begin
|
||||
|
||||
FmtString := False;
|
||||
|
||||
Case FmtType of
|
||||
1 : Str := strPadR(Str, FmtLen, ' ');
|
||||
2 : Str := strPadL(Str, FmtLen, ' ');
|
||||
|
@ -1296,8 +1298,14 @@ Begin
|
|||
|
||||
Repeat
|
||||
AnsiMoveX (X);
|
||||
If Yes Then OutFull (TBBSCore(Core).GetPrompt(316)) Else OutFull (TBBSCore(Core).GetPrompt(317));
|
||||
|
||||
If Yes Then
|
||||
OutFull (TBBSCore(Core).GetPrompt(316))
|
||||
Else
|
||||
OutFull (TBBSCore(Core).GetPrompt(317));
|
||||
|
||||
Ch := UpCase(GetKey);
|
||||
|
||||
If IsArrow Then Begin
|
||||
If Ch = #77 Then Yes := False;
|
||||
If Ch = #75 Then Yes := True;
|
||||
|
@ -1306,14 +1314,18 @@ Begin
|
|||
If Ch = #32 Then Yes := Not Yes Else
|
||||
If Ch = 'Y' Then Begin
|
||||
Yes := True;
|
||||
AnsiMoveX(X);
|
||||
OutFull (TBBSCore(Core).GetPrompt(316));
|
||||
|
||||
AnsiMoveX (X);
|
||||
OutFull (TBBSCore(Core).GetPrompt(316));
|
||||
|
||||
Break;
|
||||
End Else
|
||||
If Ch = 'N' Then Begin
|
||||
Yes := False;
|
||||
|
||||
AnsiMoveX (X);
|
||||
OutFull (TBBSCore(Core).GetPrompt(317));
|
||||
OutFull (TBBSCore(Core).GetPrompt(317));
|
||||
|
||||
Break;
|
||||
End;
|
||||
Until False;
|
||||
|
@ -1321,7 +1333,7 @@ Begin
|
|||
OutRawLn('');
|
||||
|
||||
AllowArrow := Temp;
|
||||
GetYNL := Yes;
|
||||
Result := Yes;
|
||||
End;
|
||||
|
||||
Function TBBSIO.GetYN (Str: String; Yes: Boolean) : Boolean;
|
||||
|
@ -1340,7 +1352,7 @@ Begin
|
|||
|
||||
OutFullLn (OutYN(Yes));
|
||||
|
||||
GetYN := Yes;
|
||||
Result := Yes;
|
||||
End;
|
||||
|
||||
Function TBBSIO.GetPW (Str: String; BadStr: String; PW: String) : Boolean;
|
||||
|
@ -1404,7 +1416,7 @@ Function TBBSIO.GetInput (Field, Max, Mode: Byte; Default: String) : String;
|
|||
Var
|
||||
FieldCh : Char;
|
||||
Ch : Char;
|
||||
S : String;
|
||||
Str : String;
|
||||
StrPos : Integer;
|
||||
xPos : Byte;
|
||||
Junk : Integer;
|
||||
|
@ -1415,7 +1427,7 @@ Var
|
|||
|
||||
Procedure pWrite (Str : String);
|
||||
Begin
|
||||
If (Mode = 6) and (S <> '') Then
|
||||
If (Mode = 6) and (Str <> '') Then
|
||||
BufAddStr (strRep(TBBSCore(Core).Lang.EchoCh, Length(Str)))
|
||||
Else
|
||||
BufAddStr (Str);
|
||||
|
@ -1425,9 +1437,9 @@ Var
|
|||
Begin
|
||||
AnsiMoveX (xPos);
|
||||
|
||||
pWrite (Copy(S, Junk, Field));
|
||||
pWrite (Copy(Str, Junk, Field));
|
||||
If UseInField Then AnsiColor(TBBSCore(Core).Lang.FieldCol2);
|
||||
pWrite (strRep(FieldCh, Field - Length(Copy(S, Junk, Field))));
|
||||
pWrite (strRep(FieldCh, Field - Length(Copy(Str, Junk, Field))));
|
||||
If UseInField Then AnsiColor(TBBSCore(Core).Lang.FieldCol1);
|
||||
|
||||
AnsiMoveX (xPos + CurPos - 1);
|
||||
|
@ -1435,9 +1447,9 @@ Var
|
|||
|
||||
Procedure ReDrawPart;
|
||||
Begin
|
||||
pWrite (Copy(S, StrPos, Field - CurPos + 1));
|
||||
pWrite (Copy(Str, StrPos, Field - CurPos + 1));
|
||||
If UseInField Then AnsiColor(TBBSCore(Core).Lang.FieldCol2);
|
||||
pWrite (strRep(FieldCh, (Field - CurPos + 1) - Length(Copy(S, StrPos, Field - CurPos + 1))));
|
||||
pWrite (strRep(FieldCh, (Field - CurPos + 1) - Length(Copy(Str, StrPos, Field - CurPos + 1))));
|
||||
If UseInField Then AnsiColor(TBBSCore(Core).Lang.FieldCol1);
|
||||
|
||||
AnsiMoveX (xPos + CurPos - 1);
|
||||
|
@ -1446,7 +1458,7 @@ Var
|
|||
Procedure ScrollRight;
|
||||
Begin
|
||||
Inc (Junk, Field DIV 2); {scroll size}
|
||||
If Junk > Length(S) Then Junk := Length(S);
|
||||
If Junk > Length(Str) Then Junk := Length(Str);
|
||||
If Junk > Max Then Junk := Max;
|
||||
CurPos := StrPos - Junk + 1;
|
||||
ReDraw;
|
||||
|
@ -1464,8 +1476,8 @@ Var
|
|||
Begin
|
||||
If CurPos > Field then ScrollRight;
|
||||
|
||||
Insert (Ch, S, StrPos);
|
||||
If StrPos < Length(S) Then ReDrawPart;
|
||||
Insert (Ch, Str, StrPos);
|
||||
If StrPos < Length(Str) Then ReDrawPart;
|
||||
|
||||
Inc (StrPos);
|
||||
Inc (CurPos);
|
||||
|
@ -1496,6 +1508,7 @@ Begin
|
|||
|
||||
If UseInField and (Graphics = 1) Then Begin
|
||||
FieldCh := TBBSCore(Core).Lang.FieldChar;
|
||||
|
||||
AnsiColor (TBBSCore(Core).Lang.FieldCol2);
|
||||
BufAddStr (strRep(FieldCh, Field));
|
||||
AnsiColor (TBBSCore(Core).Lang.FieldCol1);
|
||||
|
@ -1517,12 +1530,15 @@ Begin
|
|||
AllowArrow := (Mode in [1..3, 7..9]) and (Graphics > 0);
|
||||
|
||||
BackPos := 0;
|
||||
S := Default;
|
||||
StrPos := Length(S) + 1;
|
||||
Junk := StrPos - Field;
|
||||
Str := Default;
|
||||
StrPos := Length(Str) + 1;
|
||||
Junk := StrPos - Field;
|
||||
|
||||
If Junk < 1 Then Junk := 1;
|
||||
|
||||
CurPos := StrPos - Junk + 1;
|
||||
pWrite (Copy(S, Junk, Field));
|
||||
|
||||
PWrite (Copy(Str, Junk, Field));
|
||||
|
||||
PurgeInputBuffer;
|
||||
|
||||
|
@ -1540,10 +1556,10 @@ Begin
|
|||
#72 : If (BackPos < mysMaxInputHistory) And (BackPos < InputPos) Then Begin
|
||||
Inc (BackPos);
|
||||
|
||||
If BackPos = 1 Then BackSaved := S;
|
||||
If BackPos = 1 Then BackSaved := Str;
|
||||
|
||||
S := InputData[BackPos];
|
||||
StrPos := Length(S) + 1;
|
||||
Str := InputData[BackPos];
|
||||
StrPos := Length(Str) + 1;
|
||||
Junk := StrPos - Field;
|
||||
If Junk < 1 Then Junk := 1;
|
||||
CurPos := StrPos - Junk + 1;
|
||||
|
@ -1556,14 +1572,14 @@ Begin
|
|||
If CurPos < 1 then CurPos := 1;
|
||||
AnsiMoveX (Screen.CursorX - 1);
|
||||
End;
|
||||
#77 : If StrPos < Length(S) + 1 Then Begin
|
||||
If (CurPos = Field) and (StrPos < Length(S)) Then ScrollRight;
|
||||
#77 : If StrPos < Length(Str) + 1 Then Begin
|
||||
If (CurPos = Field) and (StrPos < Length(Str)) Then ScrollRight;
|
||||
Inc (CurPos);
|
||||
Inc (StrPos);
|
||||
AnsiMoveX (Screen.CursorX + 1);
|
||||
End;
|
||||
#79 : Begin
|
||||
StrPos := Length(S) + 1;
|
||||
StrPos := Length(Str) + 1;
|
||||
Junk := StrPos - Field;
|
||||
If Junk < 1 Then Junk := 1;
|
||||
CurPos := StrPos - Junk + 1;
|
||||
|
@ -1573,18 +1589,18 @@ Begin
|
|||
Dec (BackPos);
|
||||
|
||||
If BackPos = 0 Then
|
||||
S := BackSaved
|
||||
Str := BackSaved
|
||||
Else
|
||||
S := InputData[BackPos];
|
||||
Str := InputData[BackPos];
|
||||
|
||||
StrPos := Length(S) + 1;
|
||||
StrPos := Length(Str) + 1;
|
||||
Junk := StrPos - Field;
|
||||
If Junk < 1 Then Junk := 1;
|
||||
CurPos := StrPos - Junk + 1;
|
||||
ReDraw;
|
||||
End;
|
||||
#83 : If (StrPos <= Length(S)) and (Length(S) > 0) Then Begin
|
||||
Delete(S, StrPos, 1);
|
||||
#83 : If (StrPos <= Length(Str)) and (Length(Str) > 0) Then Begin
|
||||
Delete(Str, StrPos, 1);
|
||||
ReDrawPart;
|
||||
End;
|
||||
End;
|
||||
|
@ -1593,12 +1609,12 @@ Begin
|
|||
#02 : ReDraw;
|
||||
#08 : If StrPos > 1 Then Begin
|
||||
Dec (StrPos);
|
||||
Delete (S, StrPos, 1);
|
||||
Delete (Str, StrPos, 1);
|
||||
|
||||
If CurPos = 1 Then
|
||||
ScrollLeft
|
||||
Else
|
||||
If StrPos = Length(S) + 1 Then Begin
|
||||
If StrPos = Length(Str) + 1 Then Begin
|
||||
If UseInField Then AnsiColor(TBBSCore(Core).Lang.FieldCol2);
|
||||
BufAddStr (#8 + FieldCh + #8);
|
||||
If UseInField Then AnsiColor(TBBSCore(Core).Lang.FieldCol1);
|
||||
|
@ -1611,19 +1627,19 @@ Begin
|
|||
End;
|
||||
#13 : Break;
|
||||
^Y : Begin
|
||||
S := '';
|
||||
Str := '';
|
||||
StrPos := 1;
|
||||
Junk := 1;
|
||||
CurPos := 1;
|
||||
ReDraw;
|
||||
End;
|
||||
#32..
|
||||
#254: If Length(S) < Max Then
|
||||
#254: If Length(Str) < Max Then
|
||||
Case Mode of
|
||||
1 : AddChar (Ch);
|
||||
2 : AddChar (UpCase(Ch));
|
||||
3 : Begin
|
||||
If (CurPos = 1) or (S[StrPos-1] in [' ', '.']) Then
|
||||
If (CurPos = 1) or (Str[StrPos-1] in [' ', '.']) Then
|
||||
Ch := UpCase(Ch)
|
||||
Else
|
||||
Ch := LoCase(Ch);
|
||||
|
@ -1667,7 +1683,7 @@ Begin
|
|||
For Junk := 4 DownTo 2 Do
|
||||
InputData[Junk] := InputData[Junk - 1];
|
||||
|
||||
InputData[1] := S;
|
||||
InputData[1] := Str;
|
||||
|
||||
If InputPos < mysMaxInputHistory Then Inc(InputPos);
|
||||
End;
|
||||
|
@ -1680,15 +1696,15 @@ Begin
|
|||
Case Mode of
|
||||
5 : Case TBBSCore(Core).User.ThisUser.DateType of { Convert to MM/DD/YY }
|
||||
{DD/MM/YY}
|
||||
2 : S := Copy(S, 4, 2) + '/' + Copy(S, 1, 2) + '/' + Copy(S, 7, 2);
|
||||
2 : Str := Copy(Str, 4, 2) + '/' + Copy(Str, 1, 2) + '/' + Copy(Str, 7, 2);
|
||||
{YY/DD/MM}
|
||||
3 : S := Copy(S, 7, 2) + '/' + Copy(S, 4, 2) + '/' + Copy(S, 1, 2);
|
||||
3 : Str := Copy(Str, 7, 2) + '/' + Copy(Str, 4, 2) + '/' + Copy(Str, 1, 2);
|
||||
End;
|
||||
End;
|
||||
|
||||
UseInField := True;
|
||||
AllowArrow := ArrowSave;
|
||||
GetInput := S;
|
||||
Result := Str;
|
||||
End;
|
||||
|
||||
Function TBBSIO.InXY (X, Y, Field, Max, Mode: Byte; Default: String) : String;
|
||||
|
|
|
@ -320,7 +320,7 @@ Begin
|
|||
'F' : Configuration_ExecuteEditor('F');
|
||||
'G' : Configuration_ExecuteEditor('G');
|
||||
'L' : Levels_Editor;
|
||||
'M' : Message_Base_Editor;
|
||||
'M' : Configuration_ExecuteEditor('B');
|
||||
'P' : Configuration_ExecuteEditor('P');
|
||||
'S' : Configuration_MainMenu;
|
||||
'U' : User_Editor(False, False);
|
||||
|
|
|
@ -15,13 +15,13 @@ Uses
|
|||
|
||||
Type
|
||||
TMsgBase = Class
|
||||
MBaseFile : File of MBaseRec;
|
||||
MBaseFile : File of RecMessageBase;
|
||||
MScanFile : File of MScanRec;
|
||||
GroupFile : File of RecGroup;
|
||||
TotalMsgs : Integer;
|
||||
TotalConf : Integer;
|
||||
MsgBase : PMsgBaseABS;
|
||||
MBase : MBaseRec;
|
||||
MBase : RecMessageBase;
|
||||
MScan : MScanRec;
|
||||
Group : RecGroup;
|
||||
MsgText : RecMessageText;
|
||||
|
@ -31,12 +31,12 @@ Type
|
|||
Constructor Create (Var Owner: Pointer);
|
||||
Destructor Destroy; Override;
|
||||
|
||||
Function OpenCreateBase (Var Msg: PMsgBaseABS; Var Area: MBaseRec) : Boolean;
|
||||
Function OpenCreateBase (Var Msg: PMsgBaseABS; Var Area: RecMessageBase) : Boolean;
|
||||
Procedure AppendMessageText (Var Msg: PMsgBaseABS; Lines: Integer; ReplyID: String);
|
||||
Procedure AssignMessageData (Var Msg: PMsgBaseABS);
|
||||
Function GetTotalMessages (Var TempBase: MBaseRec) : LongInt;
|
||||
Function GetTotalMessages (Var TempBase: RecMessageBase) : LongInt;
|
||||
Procedure PostTextFile (Data: String; AllowCodes: Boolean);
|
||||
Function SaveMessage (mArea: MBaseRec; mFrom, mTo, mSubj: String; mAddr: RecEchoMailAddr; mLines: Integer) : Boolean;
|
||||
Function SaveMessage (mArea: RecMessageBase; mFrom, mTo, mSubj: String; mAddr: RecEchoMailAddr; mLines: Integer) : Boolean;
|
||||
Function ListAreas (Compress: Boolean) : Integer;
|
||||
Procedure ChangeArea (Data: String);
|
||||
Procedure SetMessageScan;
|
||||
|
@ -58,7 +58,7 @@ Type
|
|||
Procedure UploadREP;
|
||||
Procedure WriteCONTROLDAT;
|
||||
Function WriteMSGDAT : LongInt;
|
||||
Function ResolveOrigin (var mArea: MBaseRec) : String;
|
||||
Function ResolveOrigin (var mArea: RecMessageBase) : String;
|
||||
End;
|
||||
|
||||
Implementation
|
||||
|
@ -110,7 +110,7 @@ Begin
|
|||
Inherited Destroy;
|
||||
End;
|
||||
|
||||
Function TMsgBase.OpenCreateBase (Var Msg: PMsgBaseABS; Var Area: MBaseRec) : Boolean;
|
||||
Function TMsgBase.OpenCreateBase (Var Msg: PMsgBaseABS; Var Area: RecMessageBase) : Boolean;
|
||||
Begin
|
||||
Result := False;
|
||||
|
||||
|
@ -135,7 +135,7 @@ Begin
|
|||
Result := True;
|
||||
End;
|
||||
|
||||
Function TMsgBase.GetTotalMessages (Var TempBase: MBaseRec) : LongInt;
|
||||
Function TMsgBase.GetTotalMessages (Var TempBase: RecMessageBase) : LongInt;
|
||||
Var
|
||||
TempMsg : PMsgBaseABS;
|
||||
Begin
|
||||
|
@ -241,7 +241,7 @@ Var
|
|||
Begin
|
||||
Msg^.StartNewMsg;
|
||||
|
||||
If MBase.UseReal Then
|
||||
If MBase.Flags And MBRealNames <> 0 Then
|
||||
Msg^.SetFrom(Session.User.ThisUser.RealName)
|
||||
Else
|
||||
Msg^.SetFrom(Session.User.ThisUser.Handle);
|
||||
|
@ -279,33 +279,18 @@ Begin
|
|||
End Else
|
||||
Msg^.SetMailType(mmtNormal);
|
||||
|
||||
Msg^.SetPriv(MBase.PostType = 1);
|
||||
Msg^.SetDate(DateDos2Str(CurDateDos, 1));
|
||||
Msg^.SetTime(TimeDos2Str(CurDateDos, False));
|
||||
Msg^.SetPriv (MBase.Flags and MBPrivate <> 0);
|
||||
Msg^.SetDate (DateDos2Str(CurDateDos, 1));
|
||||
Msg^.SetTime (TimeDos2Str(CurDateDos, False));
|
||||
End;
|
||||
|
||||
Procedure TMsgBase.ChangeArea (Data: String);
|
||||
Var
|
||||
A,
|
||||
Total : Word;
|
||||
Old : MBaseRec;
|
||||
Old : RecMessageBase;
|
||||
Str : String[5];
|
||||
Compress : Boolean;
|
||||
|
||||
Function CheckPassword : Boolean;
|
||||
Begin
|
||||
CheckPassword := True;
|
||||
|
||||
If MBase.Password <> '' Then
|
||||
If Not Session.io.GetPW(Session.GetPrompt(103), Session.GetPrompt(417), MBase.Password) Then Begin
|
||||
Session.io.OutFullLn (Session.GetPrompt(67));
|
||||
MBase := Old;
|
||||
Close (MBaseFile);
|
||||
CheckPassword := False;
|
||||
Exit;
|
||||
End;
|
||||
End;
|
||||
|
||||
Begin
|
||||
Compress := Config.MCompress;
|
||||
Old := MBase;
|
||||
|
@ -328,8 +313,7 @@ Begin
|
|||
|
||||
If IoResult <> 0 Then Break;
|
||||
|
||||
If Session.User.Access(MBase.ACS) Then Begin
|
||||
If Not CheckPassword Then Break;
|
||||
If Session.User.Access(MBase.ListACS) Then Begin
|
||||
Session.User.ThisUser.LastMBase := FilePos(MBaseFile);
|
||||
Close (MBaseFile);
|
||||
Exit;
|
||||
|
@ -349,8 +333,7 @@ Begin
|
|||
If A <= FileSize(MBaseFile) Then Begin
|
||||
Seek (MBaseFile, A-1);
|
||||
Read (MBaseFile, MBase);
|
||||
If Session.User.Access(MBase.ACS) Then Begin
|
||||
If Not CheckPassword Then Exit;
|
||||
If Session.User.Access(MBase.ListACS) Then Begin
|
||||
Session.User.ThisUser.LastMBase := FilePos(MBaseFile)
|
||||
End Else
|
||||
MBase := Old;
|
||||
|
@ -389,7 +372,7 @@ Begin
|
|||
If Not Compress Then Begin
|
||||
Seek (MBaseFile, A - 1);
|
||||
Read (MBaseFile, MBase);
|
||||
If Not Session.User.Access(MBase.ACS) Then Begin
|
||||
If Not Session.User.Access(MBase.ListACS) Then Begin
|
||||
MBase := Old;
|
||||
Close (MBaseFile);
|
||||
Exit;
|
||||
|
@ -399,7 +382,7 @@ Begin
|
|||
|
||||
While Not Eof(MBaseFile) And (A <> Total) Do Begin
|
||||
Read (MBaseFile, MBase);
|
||||
If Session.User.Access(MBase.ACS) Then Inc(Total);
|
||||
If Session.User.Access(MBase.ListACS) Then Inc(Total);
|
||||
End;
|
||||
|
||||
If A <> Total Then Begin
|
||||
|
@ -409,8 +392,6 @@ Begin
|
|||
End;
|
||||
End;
|
||||
|
||||
If Not CheckPassword Then Exit;
|
||||
|
||||
Session.User.ThisUser.LastMBase := FilePos(MBaseFile);
|
||||
|
||||
Close (MBaseFile);
|
||||
|
@ -442,7 +423,7 @@ Var
|
|||
While Not Eof(MBaseFile) Do Begin
|
||||
Read (MBaseFile, MBase);
|
||||
|
||||
If Session.User.Access(MBase.ACS) Then Begin
|
||||
If Session.User.Access(MBase.ListACS) Then Begin
|
||||
Inc (Total);
|
||||
|
||||
Session.io.PromptInfo[1] := strI2S(Total);
|
||||
|
@ -482,7 +463,7 @@ Var
|
|||
|
||||
Repeat
|
||||
Read (MBaseFile, MBase);
|
||||
If Session.User.Access(MBase.ACS) Then Inc(B);
|
||||
If Session.User.Access(MBase.ListACS) Then Inc(B);
|
||||
If A = B Then Break;
|
||||
Until False;
|
||||
|
||||
|
@ -520,7 +501,7 @@ Var
|
|||
End;
|
||||
|
||||
Var
|
||||
Old : MBaseRec;
|
||||
Old : RecMessageBase;
|
||||
Temp : String[11];
|
||||
A : Word;
|
||||
N1 : Word;
|
||||
|
@ -565,7 +546,7 @@ Var
|
|||
A : Word;
|
||||
Total : Word;
|
||||
tGroup : RecGroup;
|
||||
tMBase : MBaseRec;
|
||||
tMBase : RecMessageBase;
|
||||
tLast : Word;
|
||||
Areas : Word;
|
||||
Data : Word;
|
||||
|
@ -661,7 +642,7 @@ Begin
|
|||
Read (MBaseFile, tMBase); { Skip EMAIL base }
|
||||
While Not Eof(MBaseFile) Do Begin
|
||||
Read (MBaseFile, tMBase);
|
||||
If Session.User.Access(tMBase.ACS) Then Inc(Areas);
|
||||
If Session.User.Access(tMBase.ListACS) Then Inc(Areas);
|
||||
End;
|
||||
Close (MBaseFile);
|
||||
End;
|
||||
|
@ -720,7 +701,7 @@ Function TMsgBase.ListAreas (Compress: Boolean) : Integer;
|
|||
Var
|
||||
Total : Word = 0;
|
||||
Listed : Word = 0;
|
||||
TempBase : MBaseRec;
|
||||
TempBase : RecMessageBase;
|
||||
Begin
|
||||
Reset (MBaseFile);
|
||||
|
||||
|
@ -730,7 +711,7 @@ Begin
|
|||
While Not Eof(MBaseFile) Do Begin
|
||||
Read (MBaseFile, TempBase);
|
||||
|
||||
If Session.User.Access(TempBase.ACS) Then Begin
|
||||
If Session.User.Access(TempBase.ListACS) Then Begin
|
||||
Inc (Listed);
|
||||
|
||||
If Listed = 1 Then
|
||||
|
@ -983,9 +964,10 @@ Begin
|
|||
MsgBase^.SetDest(DestAddr)
|
||||
End;
|
||||
End Else
|
||||
If MBase.PostType = 1 Then Begin
|
||||
If MBase.Flags And MBPrivate <> 0 Then Begin
|
||||
Temp1 := Session.io.GetInput (30, 30, 11, MsgBase^.GetTo);
|
||||
If Session.User.SearchUser(Temp1, MBase.UseReal) Then
|
||||
|
||||
If Session.User.SearchUser(Temp1, MBase.Flags and MBRealNames <> 0) Then
|
||||
MsgBase^.SetTo(Temp1);
|
||||
End Else
|
||||
MsgBase^.SetTo(Session.io.GetInput(30, 30, 11, MsgBase^.GetTo));
|
||||
|
@ -1095,7 +1077,7 @@ Var
|
|||
Var
|
||||
MsgNew : PMsgBaseABS;
|
||||
Str : String;
|
||||
TempBase : MBaseRec;
|
||||
TempBase : RecMessageBase;
|
||||
Area : Integer;
|
||||
Addr : RecEchoMailAddr;
|
||||
Begin
|
||||
|
@ -2222,7 +2204,7 @@ Begin
|
|||
If Mode = 'E' Then
|
||||
ScanMode := 1
|
||||
Else
|
||||
If (MBase.PostType = 1) or (Mode = 'Y') or (Mode = 'P') Then
|
||||
If (MBase.Flags and MBPrivate <> 0) or (Mode = 'Y') or (Mode = 'P') Then
|
||||
ScanMode := 2
|
||||
Else
|
||||
If (Mode = 'S') or (Mode = 'T') Then
|
||||
|
@ -2298,7 +2280,7 @@ Var
|
|||
A : Integer;
|
||||
Lines : Integer;
|
||||
Forced : Boolean;
|
||||
Old : MBaseRec;
|
||||
Old : RecMessageBase;
|
||||
Begin
|
||||
Old := MBase;
|
||||
|
||||
|
@ -2358,11 +2340,11 @@ Begin
|
|||
If Not strStr2Addr(MsgAddr, DestAddr) Then MsgTo := '';
|
||||
End;
|
||||
End Else
|
||||
If MBase.PostType = 1 Then Begin { if the base is flagged private }
|
||||
If MBase.Flags and MBPrivate <> 0 Then Begin
|
||||
If MsgTo = '' Then Begin
|
||||
Session.io.OutFull (Session.GetPrompt(450));
|
||||
MsgTo := Session.io.GetInput (30, 30, 18, '');
|
||||
If Not Session.User.SearchUser(MsgTo, MBase.UseReal) Then MsgTo := '';
|
||||
If Not Session.User.SearchUser(MsgTo, MBase.Flags and MBRealNames <> 0) Then MsgTo := '';
|
||||
End Else
|
||||
If strUpper(MsgTo) = 'SYSOP' Then MsgTo := Config.SysopName;
|
||||
|
||||
|
@ -2466,7 +2448,7 @@ End;
|
|||
|
||||
Procedure TMsgBase.CheckEMail;
|
||||
Var
|
||||
Old : MBaseRec;
|
||||
Old : RecMessageBase;
|
||||
Total : Integer;
|
||||
Begin
|
||||
Session.io.OutFull (Session.GetPrompt(123));
|
||||
|
@ -2589,7 +2571,7 @@ Begin
|
|||
Session.io.OutFullLn (Session.GetPrompt(460));
|
||||
|
||||
If Global Then Begin
|
||||
ioReset (MBaseFile, SizeOf(MBaseRec), fmRWDN);
|
||||
ioReset (MBaseFile, SizeOf(RecMessageBase), fmRWDN);
|
||||
ioRead (MBaseFile, MBase);
|
||||
|
||||
While Not Eof(MBaseFile) Do Begin
|
||||
|
@ -2606,7 +2588,7 @@ Procedure TMsgBase.MessageNewScan (Data : String);
|
|||
{ /M : scan only mandatory bases }
|
||||
{ /G : scan all bases in all groups }
|
||||
Var
|
||||
Old : MBaseRec;
|
||||
Old : RecMessageBase;
|
||||
Mode : Char;
|
||||
Mand : Boolean;
|
||||
Begin
|
||||
|
@ -2669,7 +2651,7 @@ Procedure TMsgBase.GlobalMessageSearch (Mode : Char);
|
|||
{ A = all areas in all groups }
|
||||
Var
|
||||
SearchStr : String;
|
||||
Old : MBaseRec;
|
||||
Old : RecMessageBase;
|
||||
Begin
|
||||
If Not (Mode in ['A', 'C', 'G']) Then Mode := 'G';
|
||||
|
||||
|
@ -2728,7 +2710,7 @@ Var
|
|||
MsgTo : String[30];
|
||||
MsgSubj : String[60];
|
||||
Lines : Integer;
|
||||
Old : MBaseRec;
|
||||
Old : RecMessageBase;
|
||||
OldUser : RecUser;
|
||||
|
||||
Procedure Write_Mass_Msg;
|
||||
|
@ -2789,7 +2771,7 @@ Begin
|
|||
Session.io.OutFull (Session.GetPrompt(390));
|
||||
Str := Session.io.GetInput (30, 30, 18, '');
|
||||
If Str <> '' Then Begin
|
||||
If Session.User.SearchUser(Str, MBase.UseReal) Then Begin
|
||||
If Session.User.SearchUser(Str, MBase.Flags And MBRealNames <> 0) Then Begin
|
||||
Inc (NamePos);
|
||||
Names[NamePos] := Str;
|
||||
End;
|
||||
|
@ -2890,7 +2872,7 @@ End;
|
|||
|
||||
Procedure TMsgBase.ViewSentEmail;
|
||||
Var
|
||||
Old : MBaseRec;
|
||||
Old : RecMessageBase;
|
||||
Begin
|
||||
Old := MBase;
|
||||
|
||||
|
@ -3119,7 +3101,7 @@ End;
|
|||
Procedure TMsgBase.UploadREP;
|
||||
Var
|
||||
DataFile : File;
|
||||
OldMBase : MBaseRec;
|
||||
OldMBase : RecMessageBase;
|
||||
QwkHdr : QwkDATHdr;
|
||||
Temp : String[128];
|
||||
A : SmallInt;
|
||||
|
@ -3238,7 +3220,7 @@ Type
|
|||
Pos : LongInt;
|
||||
End;
|
||||
Var
|
||||
Old : MBaseRec;
|
||||
Old : RecMessageBase;
|
||||
DataFile : File;
|
||||
Temp : String;
|
||||
QwkLR : QwkLRRec;
|
||||
|
@ -3459,7 +3441,7 @@ Begin
|
|||
End;
|
||||
*)
|
||||
|
||||
Function TMsgBase.SaveMessage (mArea: MBaseRec; mFrom, mTo, mSubj: String; mAddr: RecEchoMailAddr; mLines: Integer) : Boolean;
|
||||
Function TMsgBase.SaveMessage (mArea: RecMessageBase; mFrom, mTo, mSubj: String; mAddr: RecEchoMailAddr; mLines: Integer) : Boolean;
|
||||
Var
|
||||
SemFile : File;
|
||||
Count : SmallInt;
|
||||
|
@ -3498,7 +3480,7 @@ Begin
|
|||
End Else
|
||||
Msg^.SetMailType (mmtNormal);
|
||||
|
||||
Msg^.SetPriv (mArea.PostType = 1);
|
||||
Msg^.SetPriv (mArea.Flags And MBPrivate <> 0);
|
||||
Msg^.SetDate (DateDos2Str(CurDateDos, 1));
|
||||
Msg^.SetTime (TimeDos2Str(CurDateDos, False));
|
||||
Msg^.SetFrom (mFrom);
|
||||
|
@ -3541,7 +3523,7 @@ Var
|
|||
Pages : Integer;
|
||||
Count : Integer;
|
||||
Offset : Integer;
|
||||
TempBase : MBaseRec;
|
||||
TempBase : RecMessageBase;
|
||||
Begin
|
||||
mName := strWordGet(1, Data, ';');
|
||||
mArea := strS2I(strWordGet(2, Data, ';'));
|
||||
|
@ -3562,7 +3544,7 @@ Begin
|
|||
End;
|
||||
|
||||
Assign (MBaseFile, Config.DataPath + 'mbases.dat');
|
||||
ioReset (MBaseFile, SizeOf(MBaseRec), fmReadWrite + fmDenyNone);
|
||||
ioReset (MBaseFile, SizeOf(RecMessageBase), fmReadWrite + fmDenyNone);
|
||||
|
||||
If Not ioSeek (MBaseFile, mArea) Then Begin
|
||||
Close (MBaseFile);
|
||||
|
@ -3624,7 +3606,7 @@ Begin
|
|||
End;
|
||||
End;
|
||||
|
||||
Function TMsgBase.ResolveOrigin (Var mArea: MBaseRec) : String;
|
||||
Function TMsgBase.ResolveOrigin (Var mArea: RecMessageBase) : String;
|
||||
Var
|
||||
Loc : Byte;
|
||||
FN : String;
|
||||
|
|
|
@ -149,8 +149,8 @@
|
|||
063 |CR|12Cannot download files in local mode!|DE|DE|DE
|
||||
064 |01[|10þ|01] |09Search all file groups? |11
|
||||
065 |CR|12Start your transfer now.
|
||||
066 |CR|14File area "|FB" is password protected.|CR|09Password:
|
||||
067 |CR|12Access denied.
|
||||
066 UNUSED
|
||||
067 UNUSED
|
||||
068 |CR|12You do not have access to upload here!
|
||||
069 |CR|12Illegal filename.|DE|DE|DE
|
||||
070 |CR|14Searching for duplicate files ...
|
||||
|
@ -203,8 +203,8 @@
|
|||
; &1 = base number &2 = base name &3 = total messages
|
||||
101 |15|$L05|&1 |07|$R32|&2
|
||||
102 |09|$D77Ä |CR |09Select Message Base |01[|10?|01/|10List|01]|09:
|
||||
103 |CR|14Message area "|MB" is password protected.|CR|09Password:
|
||||
104 Access denied.
|
||||
103 UNUSED
|
||||
104 UNUSED
|
||||
105 |CR|12You don't have access to post here!
|
||||
106 |CR|12Use the full screen editor? |11
|
||||
107 |01[|10þ|01] |09Saving Message|01...
|
||||
|
@ -594,8 +594,7 @@
|
|||
313 |12Your download ratio would be exceeded.|PN
|
||||
; Lightbar file list: Batch queue is full.
|
||||
314 |12Your batch queue is full.|PN
|
||||
; Node login ACS failed
|
||||
315 |CR|14You do not have access to call this node.
|
||||
315 UNUSED
|
||||
; Lightbar Y/N: YES text
|
||||
316 |08++(|23|00 yes |16|08/ |07no |08)++
|
||||
; Lightbar Y/N: NO text
|
||||
|
|
|
@ -392,11 +392,11 @@ End;
|
|||
Procedure UpdateDataFiles;
|
||||
Var
|
||||
CfgFile : File of RecConfig;
|
||||
MBaseFile : File of MBaseRec;
|
||||
MBaseFile : File of RecMessageBase;
|
||||
FBaseFile : File of RecFileBase;
|
||||
LangFile : File of LangRec;
|
||||
Cfg : RecConfig;
|
||||
MBase : MBaseRec;
|
||||
MBase : RecMessageBase;
|
||||
FBase : RecFileBase;
|
||||
TLang : LangRec;
|
||||
TF : Text;
|
||||
|
|
|
@ -644,8 +644,8 @@ Var
|
|||
UserFile : File of RecUser;
|
||||
TUserFile : File of RecUser;
|
||||
User : RecUser;
|
||||
MBaseFile : File of MBaseRec;
|
||||
MBase : MBaseRec;
|
||||
MBaseFile : File of RecMessageBase;
|
||||
MBase : RecMessageBase;
|
||||
MScanFile : File of MScanRec;
|
||||
MScan : MScanRec;
|
||||
FBaseFile : File of RecFileBase;
|
||||
|
@ -688,7 +688,7 @@ Begin
|
|||
While Not Eof(MBaseFile) Do Begin
|
||||
Read (MBaseFile, MBase);
|
||||
|
||||
If MBase.PostType <> 1 Then Continue;
|
||||
If MBase.Flags And MBPrivate = 0 Then Continue;
|
||||
|
||||
Case MBase.BaseType of
|
||||
0 : MsgBase := New(PMsgBaseJAM, Init);
|
||||
|
@ -852,8 +852,8 @@ Procedure MsgBase_Trash;
|
|||
Var
|
||||
TF : Text;
|
||||
BadName : String;
|
||||
MBaseFile : File of MBaseRec;
|
||||
MBase : MBaseRec;
|
||||
MBaseFile : File of RecMessageBase;
|
||||
MBase : RecMessageBase;
|
||||
MsgBase : PMsgBaseABS;
|
||||
Begin
|
||||
Write ('Trashing Messages :');
|
||||
|
|
|
@ -156,8 +156,8 @@ End;
|
|||
|
||||
Procedure TPOP3Server.CreateMailBoxData;
|
||||
Var
|
||||
MBaseFile : File of MBaseRec;
|
||||
MBase : MBaseRec;
|
||||
MBaseFile : File of RecMessageBase;
|
||||
MBase : RecMessageBase;
|
||||
MsgBase : PMsgBaseABS;
|
||||
|
||||
Function ParseDateTime (Date, Time : String) : String;
|
||||
|
@ -176,7 +176,7 @@ Var
|
|||
Begin
|
||||
Assign (MBaseFile, bbsConfig.DataPath + 'mbases.dat');
|
||||
|
||||
If Not ioReset(MBaseFile, SizeOf(MBaseRec), fmRWDN) Then Exit;
|
||||
If Not ioReset(MBaseFile, SizeOf(RecMessageBase), fmRWDN) Then Exit;
|
||||
|
||||
ioRead (MBaseFile, MBase);
|
||||
Close (MBaseFile);
|
||||
|
@ -231,13 +231,13 @@ End;
|
|||
Procedure TPOP3Server.DeleteMessages;
|
||||
Var
|
||||
Count : LongInt;
|
||||
MBaseFile : File of MBaseRec;
|
||||
MBase : MBaseRec;
|
||||
MBaseFile : File of RecMessageBase;
|
||||
MBase : RecMessageBase;
|
||||
MsgBase : PMsgBaseABS;
|
||||
Begin
|
||||
Assign (MBaseFile, bbsConfig.DataPath + 'mbases.dat');
|
||||
|
||||
If Not ioReset(MBaseFile, SizeOf(MBaseRec), fmRWDN) Then Exit;
|
||||
If Not ioReset(MBaseFile, SizeOf(RecMessageBase), fmRWDN) Then Exit;
|
||||
|
||||
ioRead (MBaseFile, MBase);
|
||||
Close (MBaseFile);
|
||||
|
|
|
@ -152,8 +152,8 @@ Procedure TSMTPServer.cmdDATA;
|
|||
Var
|
||||
InData : String;
|
||||
HackCount : LongInt;
|
||||
MBaseFile : File of MBaseRec;
|
||||
MBase : MBaseRec;
|
||||
MBaseFile : File of RecMessageBase;
|
||||
MBase : RecMessageBase;
|
||||
MsgBase : PMsgBaseABS;
|
||||
MsgText : TStringList;
|
||||
MsgSubject : String;
|
||||
|
@ -205,7 +205,7 @@ Begin
|
|||
Until False;
|
||||
|
||||
Assign (MBaseFile, bbsConfig.DataPath + 'mbases.dat');
|
||||
ioReset (MBaseFile, SizeOf(MBaseRec), fmRWDN);
|
||||
ioReset (MBaseFile, SizeOf(RecMessageBase), fmRWDN);
|
||||
ioRead (MBaseFile, MBase);
|
||||
Close (MBaseFile);
|
||||
|
||||
|
|
|
@ -86,7 +86,7 @@ Type
|
|||
|
||||
Procedure GetUserVars (Var U: RecUser);
|
||||
Function GetUserRecord (Num: LongInt) : Boolean;
|
||||
Procedure GetMBaseVars (Var M: MBaseRec);
|
||||
Procedure GetMBaseVars (Var M: RecMessageBase);
|
||||
Function GetMBaseRecord (Num: LongInt) : Boolean;
|
||||
Procedure GetMGroupVars (Var G: RecGroup);
|
||||
Function GetMGroupRecord (Num: LongInt) : Boolean;
|
||||
|
@ -150,11 +150,11 @@ Begin
|
|||
Close (F);
|
||||
End;
|
||||
|
||||
Procedure TInterpEngine.GetMBaseVars (Var M: MBaseRec);
|
||||
Procedure TInterpEngine.GetMBaseVars (Var M: RecMessageBase);
|
||||
Begin
|
||||
Move (M.Index, VarData[IdxVarMBase ]^.Data^, SizeOf(M.Index));
|
||||
Move (M.Name, VarData[IdxVarMBase + 1 ]^.Data^, SizeOf(M.Name));
|
||||
Move (M.ACS, VarData[IdxVarMBase + 2 ]^.Data^, SizeOf(M.ACS));
|
||||
Move (M.ListACS, VarData[IdxVarMBase + 2 ]^.Data^, SizeOf(M.ListACS));
|
||||
Move (M.ReadACS, VarData[IdxVarMBase + 3 ]^.Data^, SizeOf(M.ReadACS));
|
||||
Move (M.PostACS, VarData[IdxVarMBase + 4 ]^.Data^, SizeOf(M.PostACS));
|
||||
Move (M.SysopACS, VarData[IdxVarMBase + 5 ]^.Data^, SizeOf(M.SysopACS));
|
||||
|
@ -163,12 +163,12 @@ End;
|
|||
Function TInterpEngine.GetMBaseRecord (Num: LongInt) : Boolean;
|
||||
Var
|
||||
F : File;
|
||||
M : MBaseRec;
|
||||
M : RecMessageBase;
|
||||
Begin
|
||||
Result := False;
|
||||
|
||||
Assign (F, Config.DataPath + 'mbases.dat');
|
||||
If Not ioReset(F, SizeOf(MBaseRec), fmRWDN) Then Exit;
|
||||
If Not ioReset(F, SizeOf(RecMessageBase), fmRWDN) Then Exit;
|
||||
|
||||
If ioSeek(F, Num) And (ioRead(F, M)) Then Begin
|
||||
GetMBaseVars(M);
|
||||
|
|
|
@ -44,6 +44,7 @@ Uses
|
|||
Procedure InitClasses;
|
||||
Begin
|
||||
Assign (ConfigFile, 'mystic.dat');
|
||||
|
||||
if ioReset(ConfigFile, SizeOf(RecConfig), fmReadWrite + fmDenyNone) Then Begin
|
||||
Read (ConfigFile, Config);
|
||||
Close (ConfigFile);
|
||||
|
@ -80,12 +81,7 @@ Begin
|
|||
|
||||
ExitProc := ExitSave;
|
||||
|
||||
If ErrorAddr <> NIL Then Begin
|
||||
Session.io.OutFull('|CR|12System Error #' + strI2S(ExitCode));
|
||||
Session.SystemLog ('ERROR #' + strI2S(ExitCode));
|
||||
|
||||
ExitCode := 1;
|
||||
End;
|
||||
If ErrorAddr <> NIL Then ExitCode := 1;
|
||||
|
||||
If Session.User.UserNum <> -1 Then Begin
|
||||
Session.User.ThisUser.LastOn := CurDateDos;
|
||||
|
@ -204,24 +200,46 @@ Procedure CheckPathsAndDataFiles;
|
|||
Var
|
||||
Count : Byte;
|
||||
PR : PercentRec;
|
||||
MBase : MBaseRec;
|
||||
Begin
|
||||
If Not Session.ConfigMode Then Begin
|
||||
CheckDIR (Config.SystemPath);
|
||||
CheckDIR (Config.AttachPath);
|
||||
CheckDIR (Config.DataPath);
|
||||
CheckDIR (Config.MsgsPath);
|
||||
CheckDIR (Config.SemaPath);
|
||||
CheckDIR (Config.QwkPath);
|
||||
CheckDIR (Config.ScriptPath);
|
||||
CheckDIR (Config.LogsPath);
|
||||
End;
|
||||
Randomize;
|
||||
|
||||
Session.TempPath := Config.SystemPath + 'temp' + strI2S(Session.NodeNum) + PathChar;
|
||||
|
||||
{$I-}
|
||||
MkDir (Config.SystemPath + 'temp' + strI2S(Session.NodeNum));
|
||||
If IoResult <> 0 Then;
|
||||
{$I+}
|
||||
|
||||
DirClean(Session.TempPath, '');
|
||||
|
||||
Assign (Session.LangFile, Config.DataPath + 'language.dat');
|
||||
{$I-} Reset (Session.LangFile); {$I+}
|
||||
If IoResult <> 0 Then Begin
|
||||
Screen.WriteLine ('ERROR: No theme configuration. Use MYSTIC -CFG');
|
||||
DisposeClasses;
|
||||
Halt(1);
|
||||
End;
|
||||
Close (Session.LangFile);
|
||||
|
||||
If Not Session.LoadThemeData(Config.DefThemeFile) Then Begin
|
||||
If Not Session.ConfigMode Then Begin
|
||||
Screen.WriteLine ('ERROR: Default theme prompts not found [' + Config.DefThemeFile + '.lng]');
|
||||
DisposeClasses;
|
||||
Halt(1);
|
||||
End;
|
||||
End;
|
||||
|
||||
If Session.ConfigMode Then Exit;
|
||||
|
||||
CheckDIR (Config.SystemPath);
|
||||
CheckDIR (Config.AttachPath);
|
||||
CheckDIR (Config.DataPath);
|
||||
CheckDIR (Config.MsgsPath);
|
||||
CheckDIR (Config.SemaPath);
|
||||
CheckDIR (Config.QwkPath);
|
||||
CheckDIR (Config.ScriptPath);
|
||||
CheckDIR (Config.LogsPath);
|
||||
|
||||
Assign (RoomFile, Config.DataPath + 'chatroom.dat');
|
||||
{$I-} Reset (RoomFile); {$I+}
|
||||
If IoResult <> 0 Then Begin
|
||||
|
@ -232,52 +250,6 @@ Begin
|
|||
End;
|
||||
Close (RoomFile);
|
||||
|
||||
Assign (Session.LangFile, Config.DataPath + 'language.dat');
|
||||
{$I-} Reset (Session.LangFile); {$I+}
|
||||
If IoResult <> 0 Then Begin
|
||||
Session.Lang.Desc := 'Default';
|
||||
Session.Lang.FileName := 'default';
|
||||
Session.Lang.TextPath := Config.SystemPath + 'text' + PathChar;
|
||||
Session.Lang.MenuPath := Config.SystemPath + 'menus' + PathChar;
|
||||
Session.Lang.BarYN := True;
|
||||
Session.Lang.FieldCol1 := 31;
|
||||
Session.Lang.FieldCol2 := 25;
|
||||
Session.Lang.FieldChar := ' ';
|
||||
Session.Lang.QuoteColor := 31;
|
||||
Session.Lang.EchoCh := '*';
|
||||
Session.Lang.TagCh := 'û';
|
||||
Session.Lang.okASCII := True;
|
||||
Session.Lang.okANSI := True;
|
||||
Session.Lang.FileHi := 112;
|
||||
Session.Lang.FileLo := 11;
|
||||
Session.Lang.NewMsgChar := 'N';
|
||||
|
||||
PR.BarLen := 15;
|
||||
PR.LoChar := '°';
|
||||
PR.LoAttr := 8;
|
||||
PR.HiChar := 'Û';
|
||||
PR.HiAttr := 9;
|
||||
|
||||
Session.Lang.VotingBar := PR;
|
||||
Session.Lang.FileBar := PR;
|
||||
Session.Lang.MsgBar := PR;
|
||||
Session.Lang.GalleryBar := PR;
|
||||
|
||||
ReWrite (Session.LangFile);
|
||||
Write (Session.LangFile, Session.Lang);
|
||||
End;
|
||||
Close (Session.LangFile);
|
||||
|
||||
If Not Session.LoadThemeData(Config.DefThemeFile) Then Begin
|
||||
If Not Session.ConfigMode Then Begin
|
||||
Screen.WriteLine ('ERROR: Default theme prompts not found [' + Config.DefThemeFile + '.lng]');
|
||||
|
||||
DisposeClasses;
|
||||
|
||||
Halt(1);
|
||||
End;
|
||||
End;
|
||||
|
||||
Assign (Session.User.UserFile, Config.DataPath + 'users.dat');
|
||||
{$I-} Reset (Session.User.UserFile); {$I+}
|
||||
If IoResult <> 0 Then Begin
|
||||
|
@ -299,35 +271,9 @@ Begin
|
|||
Assign (Session.Msgs.MBaseFile, Config.DataPath + 'mbases.dat');
|
||||
{$I-} Reset(Session.Msgs.MBaseFile); {$I+}
|
||||
If IoResult <> 0 Then Begin
|
||||
ReWrite (Session.Msgs.MBaseFile);
|
||||
|
||||
MBase.Name := 'E-mail';
|
||||
MBase.QWKName := 'Email';
|
||||
MBase.FileName := 'email';
|
||||
MBase.Path := Config.MsgsPath;
|
||||
MBase.BaseType := 0;
|
||||
MBase.NetType := 0;
|
||||
MBase.PostType := 1;
|
||||
MBase.ACS := '%';
|
||||
MBase.ReadACS := '';
|
||||
MBase.PostACS := '';
|
||||
MBase.SysopACS := 's255';
|
||||
MBase.Password := '';
|
||||
MBase.ColQuote := Config.ColorQuote;
|
||||
MBase.ColText := Config.ColorText;
|
||||
MBase.ColTear := Config.ColorTear;
|
||||
MBase.ColOrigin := Config.ColorOrigin;
|
||||
MBase.NetAddr := 1;
|
||||
MBase.Origin := Config.Origin;
|
||||
MBase.UseReal := False;
|
||||
MBase.DefNScan := 1;
|
||||
MBase.DefQScan := 1;
|
||||
MBase.MaxMsgs := 0;
|
||||
MBase.MaxAge := 0;
|
||||
MBase.Header := '';
|
||||
MBase.Index := 1;
|
||||
|
||||
Write (Session.Msgs.MBaseFile, MBase);
|
||||
Screen.WriteLine ('ERROR: No message base configuration. Use MYSTIC -CFG');
|
||||
DisposeClasses;
|
||||
Halt(1);
|
||||
End;
|
||||
Close (Session.Msgs.MBaseFile);
|
||||
|
||||
|
@ -370,14 +316,6 @@ Begin
|
|||
{$I-} Reset (Session.FileBase.ProtocolFile); {$I+}
|
||||
If IoResult <> 0 Then ReWrite (Session.FileBase.ProtocolFile);
|
||||
Close (Session.FileBase.ProtocolFile);
|
||||
|
||||
Session.FindNextEvent;
|
||||
|
||||
Session.TempPath := Config.SystemPath + 'temp' + strI2S(Session.NodeNum) + PathChar;
|
||||
|
||||
DirClean(Session.TempPath, '');
|
||||
|
||||
Randomize;
|
||||
End;
|
||||
|
||||
Var
|
||||
|
@ -471,6 +409,8 @@ Begin
|
|||
Halt(0);
|
||||
End;
|
||||
|
||||
Session.FindNextEvent;
|
||||
|
||||
Session.SystemLog ('Node ' + strI2S(Session.NodeNum) + ' online');
|
||||
|
||||
If Session.TimeOffset > 0 Then
|
||||
|
|
|
@ -122,9 +122,9 @@ Const
|
|||
|
||||
Var
|
||||
ConfigFile : File of RecConfig;
|
||||
MBaseFile : File of MBaseRec;
|
||||
MBaseFile : File of RecMessageBase;
|
||||
Config : RecConfig;
|
||||
MBase : MBaseRec;
|
||||
MBase : RecMessageBase;
|
||||
|
||||
Const
|
||||
DATEC1970 = 2440588;
|
||||
|
|
|
@ -253,17 +253,6 @@ Const
|
|||
|
||||
//FUTURE DATA FILE UPDATES NEEDED
|
||||
//LASTON needs optional1-10 compare to Mystic2
|
||||
//MBASES
|
||||
// expand header filename[20]
|
||||
// add template[20]
|
||||
// add msgbase sponser[30]
|
||||
// add newsname[60]
|
||||
// add colorkludge[b]
|
||||
// add flags[l] merge in useReal
|
||||
// flags:
|
||||
// userealname, forced, allow autosig, allow attachments, kludge filter
|
||||
// remove password?
|
||||
// ACS to s[30]
|
||||
//MENUS
|
||||
// remove fallback?
|
||||
// (flags)
|
||||
|
@ -274,13 +263,6 @@ Const
|
|||
// (commands)
|
||||
// TBD compare to mystic 2
|
||||
// VOTING: expand ACS to s[30]
|
||||
// LANGREC
|
||||
// example path sizes
|
||||
// add script path?
|
||||
// compare to mystic 2 for fallback stuff?
|
||||
// rename to THEME
|
||||
// help percent bar
|
||||
// horizontal/vertical percent bars
|
||||
|
||||
Type
|
||||
RecUser = Record { USERS.DAT }
|
||||
|
@ -408,33 +390,47 @@ Type
|
|||
QwkScan : Byte; { Include this base in qwk scan? }
|
||||
End;
|
||||
|
||||
MBaseRec = Record { MBASES.DAT }
|
||||
Name : String[40]; { Message base name }
|
||||
QWKName : String[13]; { QWK (short) message base name }
|
||||
FileName : String[40]; { Message base file name }
|
||||
Path : String[40]; { Path where files are stored }
|
||||
BaseType : Byte; { 0 = JAM, 1 = Squish }
|
||||
NetType : Byte; { 0 = Local 1 = EchoMail }
|
||||
{ 2 = UseNet 3 = NetMail }
|
||||
PostType : Byte; { 0 = Public 1 = Private }
|
||||
ACS, { ACS required to see this base }
|
||||
ReadACS, { ACS required to read messages }
|
||||
PostACS, { ACS required to post messages }
|
||||
SysopACS : String[20]; { ACS required for sysop options }
|
||||
Password : String[15]; { Password for this message base }
|
||||
ColQuote : Byte; { Quote text color }
|
||||
ColText : Byte; { Text color }
|
||||
ColTear : Byte; { Tear line color }
|
||||
ColOrigin: Byte; { Origin line color }
|
||||
NetAddr : Byte; { Net AKA to use for this base }
|
||||
Origin : String[50]; { Net origin line for this base }
|
||||
UseReal : Boolean; { Use real names? }
|
||||
DefNScan : Byte; { 0 = off, 1 = on, 2 = always }
|
||||
DefQScan : Byte; { 0 = off, 1 = on, 2 = always }
|
||||
MaxMsgs : Word; { Max messages to allow }
|
||||
MaxAge : Word; { Max age of messages before purge }
|
||||
Header : String[8]; { Display Header file name }
|
||||
Index : SmallInt; { QWK index - NEVER CHANGE THIS }
|
||||
Const
|
||||
MBRealNames = $00000001;
|
||||
MBKillKludge = $00000002;
|
||||
MBAutosigs = $00000004;
|
||||
MBNoAttach = $00000008;
|
||||
MBPrivate = $00000010;
|
||||
MBCrossPost = $00000020;
|
||||
|
||||
Type
|
||||
RecMessageBase = Record
|
||||
Name : String[40];
|
||||
QWKName : String[13];
|
||||
NewsName : String[60];
|
||||
FileName : String[40];
|
||||
Path : String[mysMaxPathSize];
|
||||
BaseType : Byte;
|
||||
NetType : Byte;
|
||||
ReadType : Byte;
|
||||
ListType : Byte;
|
||||
ListACS : String[mysMaxAcsSize];
|
||||
ReadACS : String[mysMaxAcsSize];
|
||||
PostACS : String[mysMaxAcsSize];
|
||||
SysopACS : String[mysMaxAcsSize];
|
||||
Sponsor : String[30];
|
||||
ColQuote : Byte;
|
||||
ColText : Byte;
|
||||
ColTear : Byte;
|
||||
ColOrigin : Byte;
|
||||
ColKludge : Byte;
|
||||
NetAddr : Byte; { Net AKA to use for this base }
|
||||
Origin : String[50]; { Net origin line for this base }
|
||||
DefNScan : Byte; { 0 = off, 1 = on, 2 = always }
|
||||
DefQScan : Byte; { 0 = off, 1 = on, 2 = always }
|
||||
MaxMsgs : Word;
|
||||
MaxAge : Word;
|
||||
Header : String[20];
|
||||
RTemplate : String[20];
|
||||
ITemplate : String[20];
|
||||
Index : Word;
|
||||
Flags : LongInt;
|
||||
Res : Array[1..110] of Byte;
|
||||
End;
|
||||
|
||||
FScanRec = Record { <Data Path> *.SCN }
|
||||
|
@ -462,7 +458,6 @@ Type
|
|||
CommentACS : String[30];
|
||||
SysOpACS : String[30];
|
||||
Path : String[80];
|
||||
Password : String[15];
|
||||
DefScan : Byte;
|
||||
Flags : LongInt;
|
||||
Res : Array[1..36] of Byte;
|
||||
|
@ -549,6 +544,15 @@ Type
|
|||
LHText : String[79];
|
||||
End;
|
||||
|
||||
RecPercent = Record
|
||||
BarLength : Byte;
|
||||
LoChar : Char;
|
||||
LoAttr : Byte;
|
||||
HiChar : Char;
|
||||
HiAttr : Byte;
|
||||
Format : Byte;
|
||||
End;
|
||||
|
||||
PercentRec = Record // percentage bar record
|
||||
BarLen : Byte;
|
||||
LoChar : Char;
|
||||
|
@ -557,6 +561,37 @@ Type
|
|||
HiAttr : Byte;
|
||||
End;
|
||||
|
||||
Const
|
||||
ThmAllowASCII = $00000001;
|
||||
ThmAllowANSI = $00000002;
|
||||
ThmLightbarYN = $00000004;
|
||||
ThmFallback = $00000008;
|
||||
|
||||
Type
|
||||
RecTheme = Record
|
||||
FileName : String[20];
|
||||
Desc : String[40];
|
||||
TextPath : String[mysMaxPathSize];
|
||||
MenuPath : String[mysMaxPathSize];
|
||||
ScriptPath : String[mysMaxPathSize];
|
||||
TemplatePath : String[mysMaxPathSize];
|
||||
Flags : LongInt;
|
||||
FieldCol1 : Byte;
|
||||
FieldCol2 : Byte;
|
||||
FieldChar : Char;
|
||||
EchoCh : Char;
|
||||
QuoteColor : Byte;
|
||||
TagCh : Char;
|
||||
FileHi : Byte;
|
||||
FileLo : Byte;
|
||||
NewMsgChar : Char;
|
||||
VotingBar : RecPercent;
|
||||
FileBar : RecPercent;
|
||||
MsgBar : RecPercent;
|
||||
GalleryBar : RecPercent;
|
||||
HelpBar : RecPercent;
|
||||
End;
|
||||
|
||||
LangRec = Record { LANGUAGE.DAT }
|
||||
FileName : String[8]; { Language file name }
|
||||
Desc : String[30]; { Language description }
|
||||
|
|
Loading…
Reference in New Issue