From 1c3dfaff3ad0374335df67cb37acf595ec20396f Mon Sep 17 00:00:00 2001 From: mysticbbs Date: Wed, 28 Aug 2013 23:28:53 -0400 Subject: [PATCH] QWK networking (bbs side) complete. Now onto MIS... --- mystic/bbs_cfg_echomail.pas | 8 ++++++++ mystic/bbs_cfg_main.pas | 2 -- mystic/bbs_cfg_menuedit.pas | 3 +-- mystic/bbs_cfg_msgbase.pas | 3 ++- mystic/bbs_cfg_syscfg.pas | 9 +++++---- mystic/bbs_cfg_useredit.pas | 2 ++ mystic/bbs_core.pas | 2 +- mystic/bbs_general.pas | 3 ++- mystic/bbs_io.pas | 1 + mystic/bbs_menus.pas | 5 ++--- mystic/bbs_msgbase.pas | 27 ++++++++++++++++++--------- mystic/bbs_user.pas | 11 ++++++++++- mystic/mutil_toplists.pas | 3 ++- mystic/mystic.pas | 3 +++ mystic/records.pas | 8 ++++++-- mystic/whatsnew.txt | 34 ++++++++++++++++++++++++++++++++++ 16 files changed, 97 insertions(+), 27 deletions(-) diff --git a/mystic/bbs_cfg_echomail.pas b/mystic/bbs_cfg_echomail.pas index eeb73ec..f01d49b 100644 --- a/mystic/bbs_cfg_echomail.pas +++ b/mystic/bbs_cfg_echomail.pas @@ -483,6 +483,8 @@ Var List.Add(strPadR(strAddr2Str(bbsCfg.NetAddress[A]), 23, ' ') + ' ' + strPadR(bbsCfg.NetDomain[A], 8, ' ') + ' ' + strPadR(strYN(bbsCfg.NetPrimary[A]), 3, ' ') + ' ' + bbsCfg.NetDesc[A], 0); End; +Var + Count : Byte; Begin Result := 0; @@ -512,6 +514,12 @@ Begin End; Until False; + For Count := 1 to 30 Do Begin + If bbsCfg.NetPrimary[Count] Then Break; + + If Count = 30 Then ShowMsgBox(0, 'WARNING: No address is set to primary'); + End; + List.Close; Box.Close; diff --git a/mystic/bbs_cfg_main.pas b/mystic/bbs_cfg_main.pas index c26dfed..a65b2bf 100644 --- a/mystic/bbs_cfg_main.pas +++ b/mystic/bbs_cfg_main.pas @@ -215,7 +215,6 @@ Begin Form.AddNone ('4', ' 4 SMTP Server Options', 26, 9, 26, 9, 27, ''); Form.AddNone ('5', ' 5 NNTP Server Options', 26, 10, 26, 10, 27, ''); Form.AddNone ('6', ' 6 BINKP Server Options', 26, 11, 26, 11, 27, ''); - Form.AddNone ('7', ' 7 FTN-FTP Server Options', 26, 12, 26, 12, 27, ''); Res := Form.Execute; MenuPos[2] := Form.ItemPos; @@ -236,7 +235,6 @@ Begin '4' : Configuration_SMTPServer; '5' : Configuration_NNTPServer; '6' : Configuration_BINKPServer; -// '7' : Configuration_FTNFTPServer; 'X' : Break; Else MenuPtr := 0; diff --git a/mystic/bbs_cfg_menuedit.pas b/mystic/bbs_cfg_menuedit.pas index 7454328..272f151 100644 --- a/mystic/bbs_cfg_menuedit.pas +++ b/mystic/bbs_cfg_menuedit.pas @@ -31,7 +31,7 @@ Type End; Const - Num_Cmds = 102; + Num_Cmds = 101; MenuCmds : Array[1..Num_Cmds] of CmdRec = ( // AUTOSIG MENU COMMANDS ( Name: 'AE'; Desc: 'Autosig editor' ), @@ -112,7 +112,6 @@ Const // OFFLINE MAIL MENU COMMANDS ( Name: 'OS'; Desc: 'Set QWK scanned bases' ), ( Name: 'OD'; Desc: 'Download QWK packet' ), - ( Name: 'OE'; Desc: 'Download QWKE packet' ), ( Name: 'OU'; Desc: 'Upload REP packet' ), // DOWNLOAD QUEUE MENU COMMANDS diff --git a/mystic/bbs_cfg_msgbase.pas b/mystic/bbs_cfg_msgbase.pas index a921be9..84e6bff 100644 --- a/mystic/bbs_cfg_msgbase.pas +++ b/mystic/bbs_cfg_msgbase.pas @@ -114,7 +114,7 @@ Begin Box.Open (3, 4, 77, 22); - VerticalLine (17, 5, 20); + VerticalLine (17, 5, 21); VerticalLine (66, 5, 21); Form.AddStr ('N', ' Name' , 11, 5, 19, 5, 6, 30, 40, @MBase.Name, Topic + 'Message base description'); @@ -133,6 +133,7 @@ Begin Form.AddStr ('S', ' Sponsor' , 8, 18, 19, 18, 9, 30, 30, @MBase.Sponsor, Topic + 'User name of base''s sponser'); 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.AddBits ('0', ' QWK Network' , 4, 21, 19, 21, 13, MBAllowQWKNet, @MBase.Flags, Topic + 'Is this base a QWK network base?'); Form.AddAttr ('Q', ' Quote Color' , 53, 5, 68, 5, 13, @MBase.ColQuote, Topic + 'Color for quoted text'); Form.AddAttr ('X', ' Text Color' , 54, 6, 68, 6, 12, @MBase.ColText, Topic + 'Color for message text'); diff --git a/mystic/bbs_cfg_syscfg.pas b/mystic/bbs_cfg_syscfg.pas index e69dee4..813b134 100644 --- a/mystic/bbs_cfg_syscfg.pas +++ b/mystic/bbs_cfg_syscfg.pas @@ -83,7 +83,7 @@ Begin Box.Open (5, 5, 75, 18); - VerticalLine (24, 7, 16); + VerticalLine (24, 7, 17); VerticalLine (67, 7, 12); Form.AddStr ('B', ' BBS Name', 14, 7, 26, 7, 10, 25, 30, @bbsCfg.BBSName, Topic); @@ -93,9 +93,10 @@ Begin Form.AddStr ('O', ' Sysop ACS', 13, 11, 26, 11, 11, 25, 30, @bbsCfg.ACSSysop, Topic); Form.AddStr ('F', ' Feedback To', 11, 12, 26, 12, 13, 25, 30, @bbsCfg.FeedbackTo, Topic); Form.AddStr ('A', ' Start Menu', 12, 13, 26, 13, 12, 20, 20, @bbsCfg.DefStartMenu, Topic); - Form.AddStr ('H', ' Theme', 17, 14, 26, 14, 7, 20, 20, @bbsCfg.DefThemeFile, Topic); - Form.AddBol ('K', ' Ask Theme', 13, 15, 26, 15, 11, 3, @bbsCfg.ThemeOnStart, Topic + 'Ask theme each connection'); - Form.AddTog ('E', ' Terminal', 14, 16, 26, 16, 10, 10, 0, 3, 'Ask Detect Detect/Ask ANSI', @bbsCfg.DefTermMode, Topic); + Form.AddStr ('Q', ' QWK Net Menu', 10, 14, 26, 14, 14, 20, 20, @bbsCfg.QwkNetMenu, Topic + 'QWK menu for QWK network users'); + Form.AddStr ('H', ' Theme', 17, 15, 26, 15, 7, 20, 20, @bbsCfg.DefThemeFile, Topic); + Form.AddBol ('K', ' Ask Theme', 13, 16, 26, 16, 11, 3, @bbsCfg.ThemeOnStart, Topic + 'Ask theme each connection'); + Form.AddTog ('E', ' Terminal', 14, 17, 26, 17, 10, 10, 0, 3, 'Ask Detect Detect/Ask ANSI', @bbsCfg.DefTermMode, Topic); Form.AddBol ('L', ' Chat Logging', 53, 7, 69, 7, 14, 3, @bbsCfg.ChatLogging, Topic); Form.AddByte ('R', ' Hours Start', 54, 8, 69, 8, 13, 2, 0, 24, @bbsCfg.ChatStart, Topic); diff --git a/mystic/bbs_cfg_useredit.pas b/mystic/bbs_cfg_useredit.pas index e714de8..1146975 100644 --- a/mystic/bbs_cfg_useredit.pas +++ b/mystic/bbs_cfg_useredit.pas @@ -152,6 +152,7 @@ Begin Form.AddBol ('I', ' Mail Index' , 7, 12, 23, 12, 14, 3, @U.UseLBMIdx, Topic + 'Start reading email at message index'); Form.AddTog ('N', ' Node Chat' , 7, 13, 23, 13, 14, 8, 0, 1, 'Standard Full', @U.UseFullChat, Topic + 'User''s node chat type'); Form.AddTog ('C', ' Code Page' , 7, 14, 23, 14, 14, 5, 0, 1, 'CP437 UTF-8', @U.CodePage, Topic + 'User''s character translation'); + Form.AddBol ('Q', ' QWKE Packet' , 7, 15, 23, 15, 14, 3, @U.QwkExtended, Topic + 'Use QWKE (instead of QWK)'); End; 4 : Begin Form.Clear; @@ -190,6 +191,7 @@ Begin Form.AddBits ('P', ' No PW Change', 7, 10, 23, 10, 14, UserNoPWChange, @U.Flags, Topic + 'Exclude from forced password change'); Form.AddBits ('H', ' No History' , 7, 11, 23, 11, 14, UserNoHistory, @U.Flags, Topic + 'Exclude from BBS history stats'); Form.AddBits ('T', ' No Timeout' , 7, 12, 23, 12, 14, UserNoTimeout, @U.Flags, Topic + 'Exclude from inactivity timeout'); + Form.AddBits ('Q', ' QWK Network' , 7, 13, 23, 13, 14, UserQWKNetwork, @U.Flags, Topic + 'User is a QWK network account'); End; End; diff --git a/mystic/bbs_core.pas b/mystic/bbs_core.pas index f47c23e..65a56b1 100644 --- a/mystic/bbs_core.pas +++ b/mystic/bbs_core.pas @@ -246,7 +246,7 @@ Procedure TBBSCore.SystemLog (Str: String); Var tLOG : Text; Begin - Assign (tLOG, bbsCfg.LogsPath + 'sysop.' + strI2S(NodeNum)); + Assign (tLOG, bbsCfg.LogsPath + 'node' + strI2S(NodeNum) + '.log'); {$I-} Append(tLOG); {$I+} If IoResult <> 0 Then ReWrite (tLOG); diff --git a/mystic/bbs_general.pas b/mystic/bbs_general.pas index c6c9c9f..b2bf0f6 100644 --- a/mystic/bbs_general.pas +++ b/mystic/bbs_general.pas @@ -458,7 +458,8 @@ Begin While Not Eof(Session.User.UserFile) Do Begin Read (Session.User.UserFile, TempUser); - If TempUser.Flags AND UserDeleted <> 0 Then Continue; + If (TempUser.Flags AND UserDeleted <> 0) and + (TempUser.Flags AND UserQWKNetwork <> 0) Then Continue; Session.io.PromptInfo[1] := TempUser.Handle; Session.io.PromptInfo[2] := TempUser.City; diff --git a/mystic/bbs_io.pas b/mystic/bbs_io.pas index fcfdfcc..f007cc4 100644 --- a/mystic/bbs_io.pas +++ b/mystic/bbs_io.pas @@ -704,6 +704,7 @@ Begin End; 'Q' : Case Code[2] of 'A' : LastMCIValue := TBBSCore(Core).User.ThisUser.Archive; + 'E' : LastMCIValue := OutYN (TBBSCore(Core).User.ThisUser.QwkExtended); 'L' : LastMCIValue := OutYN (TBBSCore(Core).User.ThisUser.QwkFiles); 'O' : ShowRandomQuote; End; diff --git a/mystic/bbs_menus.pas b/mystic/bbs_menus.pas index ddf4f47..f00a945 100644 --- a/mystic/bbs_menus.pas +++ b/mystic/bbs_menus.pas @@ -258,7 +258,7 @@ Begin 'M' : Case Cmd[2] of 'A' : Session.Msgs.ChangeArea(CmdData); 'C' : Session.Msgs.CheckEMail(CmdData); - 'D' : Session.Msgs.SetMessagePointers; + 'D' : Session.Msgs.SetMessagePointers (Pos('/ALL', strUpper(CmdData)) > 0); 'G' : Session.Msgs.MessageGroupChange (CmdData, True, True); 'L' : Session.Msgs.NetMailLookup (True, '', ''); 'M' : Session.Msgs.SendMassEmail; @@ -285,8 +285,7 @@ Begin End; 'O' : Case Cmd[2] of 'S' : Session.Msgs.ToggleNewScan(True, CmdData); - 'D' : Session.Msgs.DownloadQWK(False, CmdData); - 'E' : Session.Msgs.DownloadQWK(True, CmdData); + 'D' : Session.Msgs.DownloadQWK(Session.User.ThisUser.QwkExtended, CmdData); 'U' : Session.Msgs.UploadREP; End; 'Q' : Case Cmd[2] of diff --git a/mystic/bbs_msgbase.pas b/mystic/bbs_msgbase.pas index 973c55c..53eb384 100644 --- a/mystic/bbs_msgbase.pas +++ b/mystic/bbs_msgbase.pas @@ -64,7 +64,7 @@ Type Procedure MessageNewScan (Data: String); Procedure MessageQuickScan (Data: String); Procedure GlobalMessageSearch (Mode: Char); - Procedure SetMessagePointers; + Procedure SetMessagePointers (ForceGlobal: Boolean); Procedure ViewSentEmail; Function ResolveOrigin (Var mArea: RecMessageBase) : String; // QWK and QWKE goodies @@ -779,7 +779,8 @@ End; Procedure TMsgBase.ToggleNewScan (QWK: Boolean; Data: String); Var - Total: LongInt; + Total : LongInt; + QwkNet : Boolean; Procedure List_Bases; Begin @@ -801,6 +802,8 @@ Var While Not Eof(MBaseFile) Do Begin Read (MBaseFile, MBase); + If QwkNet And (MBase.Flags AND MBAllowQWKNet = 0) Then Continue; + If Session.User.Access(MBase.ListACS) Then Begin Inc (Total); @@ -923,6 +926,8 @@ Begin Session.User.IgnoreGroup := Pos('/ALLGROUP', strUpper(Data)) > 0; + QwkNet := Pos('/QWKNET', strUpper(Data)) > 0; + List_Bases; If Total = 0 Then Begin @@ -3281,7 +3286,7 @@ Begin MBase := TempBase; End; -Procedure TMsgBase.SetMessagePointers; +Procedure TMsgBase.SetMessagePointers (ForceGlobal: Boolean); Var NewDate : LongInt; @@ -3322,7 +3327,6 @@ Var End; Var - Global : Boolean; InDate : String[8]; Begin Session.io.OutFull (Session.GetPrompt(458)); @@ -3332,11 +3336,13 @@ Begin If Not DateValid(InDate) Then Exit; NewDate := DateStr2Dos(InDate); - Global := Session.io.GetYN(Session.GetPrompt(459), False); + + If Not ForceGlobal Then + ForceGlobal := Session.io.GetYN(Session.GetPrompt(459), False); Session.io.OutFullLn (Session.GetPrompt(460)); - If Global Then Begin + If ForceGlobal Then Begin ioReset (MBaseFile, SizeOf(RecMessageBase), fmRWDN); ioRead (MBaseFile, MBase); @@ -3532,10 +3538,13 @@ Begin While Not Eof(Session.User.UserFile) Do Begin Read (Session.User.UserFile, Session.User.ThisUser); - If (Session.User.ThisUser.Flags AND UserDeleted = 0) and Session.User.Access(ACS) Then Begin - Session.io.PromptInfo[1] := Session.User.ThisUser.Handle; + If (Session.User.ThisUser.Flags AND UserDeleted = 0) and + (Session.User.ThisUser.Flags AND UserQWKNetwork = 0) and + Session.User.Access(ACS) Then Begin - Session.io.OutFullLn (Session.GetPrompt(392)); + Session.io.PromptInfo[1] := Session.User.ThisUser.Handle; + + Session.io.OutFullLn (Session.GetPrompt(392)); End; End; diff --git a/mystic/bbs_user.pas b/mystic/bbs_user.pas index aa59551..c8b373d 100644 --- a/mystic/bbs_user.pas +++ b/mystic/bbs_user.pas @@ -310,7 +310,10 @@ Begin While Not Eof(UserFile) Do Begin Read (UserFile, TempUser); - If TempUser.Flags AND UserDeleted <> 0 Then Continue; + If (TempUser.Flags AND UserDeleted <> 0) Then Continue; + +// If (TempUser.Flags AND UserDeleted <> 0) or +// (TempUser.Flags AND UserQWKNetwork <> 0) Then Continue; If Pos(Str, strUpper(TempUser.Handle)) > 0 Then Begin If First Then Begin @@ -356,6 +359,8 @@ Begin Read (UserFile, TempUser); If (((RecNum > 0) And (TempUser.PermIdx = RecNum)) or (strUpper(TempUser.RealName) = Str) or (strUpper(TempUser.Handle) = Str)) and (TempUser.Flags And UserDeleted = 0) Then Begin + //If ExcludeQWK and (TempUser.Flags AND UserQWKNetwork <> 0) Then Continue; + If Adjust Then UserNum := FilePos(UserFile); Result := True; @@ -1047,6 +1052,8 @@ Var Count : Byte; Ch : Char; Begin + If ThisUser.Flags and UserQWKNetwork <> 0 Then Exit; + {$IFDEF LOGGING} Session.SystemLog('Logon3'); {$ENDIF} Chat.Available := True; @@ -1207,6 +1214,7 @@ Begin If Session.User.ThisUser.Security = 0 Then Begin Session.io.OutFullLn(Session.GetPrompt(477)); Session.User.ThisUser.Flags := Session.User.ThisUser.Flags AND UserDeleted; + Exit; End Else Session.io.OutFullLn(Session.GetPrompt(476)); @@ -1437,6 +1445,7 @@ Begin 30 : ThisUser.QwkFiles := Not ThisUser.QwkFiles; 31 : Session.FileBase.SelectArchive; 32 : ThisUser.Protocol := Session.FileBase.SelectProtocol(False, True); + 33 : ThisUser.QwkExtended := Not ThisUser.QwkExtended; End; End; diff --git a/mystic/mutil_toplists.pas b/mystic/mutil_toplists.pas index 9c78c0c..ec708a4 100644 --- a/mystic/mutil_toplists.pas +++ b/mystic/mutil_toplists.pas @@ -187,7 +187,8 @@ Begin While Not EOF(UserFile) Do Begin Read (UserFile, User); - If User.Flags And UserDeleted <> 0 Then Continue; + If (User.Flags And UserDeleted <> 0) or + (User.Flags And UserQWKNetwork <> 0) Then Continue; BarOne.Update(FilePos(UserFile), FileSize(UserFile)); diff --git a/mystic/mystic.pas b/mystic/mystic.pas index 578de1b..8483d2e 100644 --- a/mystic/mystic.pas +++ b/mystic/mystic.pas @@ -492,6 +492,9 @@ Begin If Session.TimeOffset > 0 Then Session.TimeSaved := Session.User.ThisUser.TimeLeft; + If (Session.User.ThisUser.Flags AND UserQWKNetwork <> 0) and (bbsCfg.QwkNetMenu <> '') Then + Session.Menu.MenuName := bbsCfg.QwkNetMenu + Else If Session.User.ThisUser.StartMenu <> '' Then Session.Menu.MenuName := Session.User.ThisUser.StartMenu Else diff --git a/mystic/records.pas b/mystic/records.pas index 11d102a..e5642f2 100644 --- a/mystic/records.pas +++ b/mystic/records.pas @@ -342,7 +342,8 @@ Type inetBINKPDupes : Byte; inetBINKPTimeOut: Word; inetBINKPCram5 : Boolean; - Reserved : Array[1..778] of Char; + QwkNetMenu : String[20]; + Reserved : Array[1..757] of Char; End; Const @@ -354,6 +355,7 @@ Const UserNoPWChange = $00000020; UserNoHistory = $00000040; UserNoTimeout = $00000080; + UserQWKNetwork = $00000100; Type RecUser = Record // USERS.DAT @@ -422,7 +424,8 @@ Type Credits : LongInt; Protocol : Char; CodePage : Byte; // 0 = CP437, 1 = UTF8 - Reserved : Array[1..388] of Byte; + QwkExtended : Boolean; + Reserved : Array[1..387] of Byte; End; RecEvent = Record @@ -493,6 +496,7 @@ Const MBNoAttach = $00000008; // 4 MBPrivate = $00000010; // 5 MBPrivReply = $00000020; // 6 + MBAllowQWKNet = $00000040; // 7 Type RecMessageBase = Record // MBASES.DAT diff --git a/mystic/whatsnew.txt b/mystic/whatsnew.txt index 5a60459..cd170f7 100644 --- a/mystic/whatsnew.txt +++ b/mystic/whatsnew.txt @@ -3554,4 +3554,38 @@ directory, assuming "Server Logging" is turned on in Internet Server Options. + + In order to maintain consistancy and for easier file association, telnet + node logs have changed from "sysop.nodenumber" to "node.log" + in the logs directory. + + + Users can now be flaged as "QWK Network Account" in the User editor. + Account names should be the same as their QWK Network BBSID. These users + will bypass a majority of the login procedures and can have their own + distinct start menu (found in General Settings). A new default menu called + "qwknetwork.mnu" has been included as an example of how one should likely + be setup. + + + Message bases can now be flagged as "Allow QWK Networking" which means that + the message base will be allowed to be selected for scanning by QWK network + scans. + + + The OS menu command (Set QWK scan settings) now has the /QWKNET option + available in command data. This limits the message bases listed to ONLY + show bases flagged for QWK networking. + + + The OE menu command has been removed. Instead, a setting now saves the + users preference of QWK or QWKE packets. You will need to update your + QWK menu to remove this command and to add the toggle of the QWKE packet, + or you can optionally use the new qwk.mnu included as a guide/replacement. + + + New Menu command GE (edit user preferences) optional data: 33. This + toggles the user's preference for QWKE style packets on or off. + + + New MCI code QE returns Yes/No based on the users QWK Extended setting. + + + The MD menu command (set message lastread pointers) now has the optional + data option of /ALL. If this is used, Mystic will NOT has if the user + wants to update their current base, and will instead force the update for + all message bases. +