diff --git a/mystic/bbs_cfg_msgbase.pas b/mystic/bbs_cfg_msgbase.pas index 6d4bad2..1b37943 100644 --- a/mystic/bbs_cfg_msgbase.pas +++ b/mystic/bbs_cfg_msgbase.pas @@ -166,7 +166,10 @@ Begin Case Form.Execute of 'D' : MBase.NetAddr := Configuration_EchoMailAddress(False); '7' : Configuration_NodeExport (MBase); - #27 : Break; + #27 : If (MBase.NetType > 0) And (MBase.EchoTag = '') And (MBase.NetType <> 3) Then + ShowMsgBox(0, 'Echo base requires echotag') + Else + Break; End; Until False; diff --git a/mystic/bbs_cfg_syscfg.pas b/mystic/bbs_cfg_syscfg.pas index a0953a0..8ee46dd 100644 --- a/mystic/bbs_cfg_syscfg.pas +++ b/mystic/bbs_cfg_syscfg.pas @@ -276,13 +276,14 @@ Begin Box.Header := ' Internet Servers '; - Box.Open (16, 9, 64, 15); + Box.Open (16, 9, 64, 16); - VerticalLine (31, 11, 13); + VerticalLine (31, 11, 14); Form.AddStr ('D', ' Domain', 23, 11, 33, 11, 8, 25, 25, @Config.inetDomain, Topic + 'Internet domain name'); - Form.AddBol ('B', ' IP Blocking', 18, 12, 33, 12, 13, 3, @Config.inetIPBlocking, Topic + 'Enable IP blocking'); - Form.AddBol ('L', ' IP Logging', 19, 13, 33, 13, 12, 3, @Config.inetIPLogging, Topic + 'Enable IP logging'); + Form.AddStr ('I', ' Interface', 20, 12, 33, 12, 11, 23, 23, @Config.inetInterface, Topic + 'Network interface IP address'); + Form.AddBol ('B', ' IP Blocking', 18, 13, 33, 13, 13, 3, @Config.inetIPBlocking, Topic + 'Enable IP blocking'); + Form.AddBol ('L', ' IP Logging', 19, 14, 33, 14, 12, 3, @Config.inetIPLogging, Topic + 'Enable IP logging'); Form.Execute; diff --git a/mystic/bbs_edit_ansi.pas b/mystic/bbs_edit_ansi.pas index a1246dd..4bbe559 100644 --- a/mystic/bbs_edit_ansi.pas +++ b/mystic/bbs_edit_ansi.pas @@ -925,7 +925,6 @@ Var Var Ch : Char; - Added : Boolean; QWinSize : Byte; QWinDataPos : Byte; QWinData : Array[1..15] of String[79]; @@ -963,8 +962,6 @@ Var Var Temp : Integer; Begin - Added := False; - Assign (InFile, Session.TempPath + 'msgtmp'); {$I-} Reset(InFile); {$I+} @@ -1075,7 +1072,6 @@ Begin Case Ch of #27 : Break; #13 : If (LastLine < mysMaxMsgLines) and (Not NoMore) Then Begin - Added := True; If QuoteTopPage + QuoteCurLine = QuoteLines Then NoMore := True; diff --git a/mystic/bbs_io.pas b/mystic/bbs_io.pas index a5db011..332021d 100644 --- a/mystic/bbs_io.pas +++ b/mystic/bbs_io.pas @@ -2239,17 +2239,13 @@ Begin End; Procedure TBBSIO.PurgeInputBuffer; -{$IFDEF WINDOWS} -Var - Ch : Char; -{$ENDIF} Begin {$IFDEF UNIX} While Input.KeyPressed Do Input.ReadKey; {$ENDIF} {$IFDEF WINDOWS} If Not TBBSCore(Core).LocalMode Then TBBSCore(Core).Client.PurgeInputData(100); - If TBBSCore(Core).LocalMode Then While Input.KeyPressed Do Ch := Input.ReadKey; + If TBBSCore(Core).LocalMode Then While Input.KeyPressed Do Input.ReadKey; {$ENDIF} End; diff --git a/mystic/bbs_msgbase.pas b/mystic/bbs_msgbase.pas index a54579e..b31abf1 100644 --- a/mystic/bbs_msgbase.pas +++ b/mystic/bbs_msgbase.pas @@ -4091,34 +4091,35 @@ Begin End; Function TMsgBase.WriteMSGDAT (Extended: Boolean) : LongInt; -{ returns last message added to qwk packet } Var DataFile : File; NdxFile : File of QwkNdxHdr; NdxHdr : QwkNdxHdr; - QwkHdr : QwkDATHdr; - Temp : String; - MsgAdded : Integer; {# of message added in packet} - LastRead : LongInt; + Header : String[128]; + Chunks : Word; BufStr : String[128]; - Blocks : Word; - Index : LongInt; + MsgAdded : Integer; + LastRead : LongInt; + QwkIndex : LongInt; TooBig : Boolean; Procedure DoString (Str: String); Var Count : SmallInt; Begin - For Count := 1 to Length(Temp) Do Begin - BufStr := BufStr + Temp[Count]; + For Count := 1 to Length(Str) Do Begin + BufStr := BufStr + Str[Count]; If BufStr[0] = #128 Then Begin BlockWrite (DataFile, BufStr[1], 128); + BufStr := ''; End; End; End; +Var + TempStr : String; Begin MsgAdded := 0; @@ -4132,13 +4133,11 @@ Begin LastRead := MsgBase^.GetLastRead(Session.User.UserNum) + 1; - MsgBase^.SeekFirst(LastRead); + MsgBase^.SeekFirst (LastRead); While MsgBase^.SeekFound Do Begin - If ((Config.qwkMaxBase > 0) and (MsgAdded = Config.qwkMaxBase)) or - ((Config.qwkMaxPacket > 0) and (TotalMsgs = Config.qwkMaxPacket)) Then Break; - - FillChar (QwkHdr, 128, ' '); + If ((Config.QwkMaxBase > 0) and (MsgAdded = Config.QwkMaxBase)) or + ((Config.QwkMaxPacket > 0) and (TotalMsgs = Config.QwkMaxPacket)) Then Break; MsgBase^.MsgStartUp; @@ -4152,81 +4151,86 @@ Begin Inc (TotalMsgs); LastRead := MsgBase^.GetMsgNum; - - Temp := strPadR(strUpper(MsgBase^.GetFrom), 25, ' '); - Move (Temp[1], QwkHdr.UPFrom, 25); - Temp := strPadR(strUpper(MsgBase^.GetTo), 25, ' '); - Move (Temp[1], QwkHdr.UPTo, 25); - Temp := strPadR(MsgBase^.GetSubj, 25, ' '); - Move (Temp[1], QwkHdr.Subject, 25); - Temp := MsgBase^.GetDate; - Move (Temp[1], QwkHdr.Date, 8); - Temp := MsgBase^.GetTime; - Move (Temp[1], QwkHdr.Time, 5); - Temp := strPadR(strI2S(MsgBase^.GetMsgNum), 7, ' '); - Move (Temp[1], QwkHdr.MSGNum, 7); - Temp := strPadR(strI2S(MsgBase^.GetRefer), 8, ' '); - Move (Temp[1], QwkHdr.ReferNum, 8); - - QwkHdr.Active := #225; - QwkHdr.ConfNum := MBase.Index; - QwkHdr.Status := ' '; + Chunks := 0; + BufStr := ''; + TooBig := False; + QwkIndex := FileSize(DataFile) DIV 128 + 1; MsgBase^.MsgTxtStartUp; - Blocks := MsgBase^.GetTextLen DIV 128; + While Not MsgBase^.EOM Do Begin + TempStr := MsgBase^.GetString(79); - If MsgBase^.GetTextLen MOD 128 > 0 Then Inc(Blocks, 2) Else Inc(Blocks); + If TempStr[1] = #1 Then Continue; - Temp := strPadR(strI2S(Blocks), 6, ' '); + Inc (Chunks, Length(TempStr)); + End; - Move (Temp[1], QwkHdr.NumChunk, 6); + If Chunks MOD 128 = 0 Then + Chunks := Chunks DIV 128 + 1 + Else + Chunks := Chunks DIV 128 + 2; + + Header := + ' ' + + strPadR(strI2S(MsgBase^.GetMsgNum), 7, ' ') + + MsgBase^.GetDate + + MsgBase^.GetTime + + strPadR(strUpper(MsgBase^.GetTo), 25, ' ') + + strPadR(strUpper(MsgBase^.GetFrom), 25, ' ') + + strPadR(strUpper(MsgBase^.GetSubj), 25, ' ') + + strPadR('', 12, ' ') + + strPadR(strI2S(MsgBase^.GetRefer), 8, ' ') + + strPadR(strI2S(Chunks), 6, ' ') + + #255 + + ' ' + + ' ' + + ' '; If MsgAdded = 1 Then Begin Assign (NdxFile, Session.TempPath + strPadL(strI2S(MBase.Index), 3, '0') + '.ndx'); ReWrite (NdxFile); End; - Index := FileSize(DataFile) DIV 128 + 1; - - long2msb (Index, NdxHdr.MsgPos); - - Write (NdxFile, NdxHdr); - - BlockWrite (DataFile, QwkHdr, 128); - - BufStr := ''; - TooBig := False; + LONG2MSB (QwkIndex, NdxHdr.MsgPos); + Write (NdxFile, NdxHdr); + BlockWrite (DataFile, Header[1], 128); If Extended Then Begin If Length(MsgBase^.GetFrom) > 25 Then Begin DoString('From: ' + MsgBase^.GetFrom + #227); + TooBig := True; End; If Length(MsgBase^.GetTo) > 25 Then Begin DoString('To: ' + MsgBase^.GetTo + #227); + TooBig := True; End; If Length(MsgBase^.GetSubj) > 25 Then Begin DoString('Subject: ' + MsgBase^.GetSubj + #227); + TooBig := True; End; If TooBig Then DoString(#227); End; + MsgBase^.MsgTxtStartUp; + While Not MsgBase^.EOM Do Begin - Temp := MsgBase^.GetString(79) + #227; + TempStr := MsgBase^.GetString(79) + #227; - If Temp[1] = #1 Then Continue; + If TempStr[1] = #1 Then Continue; - DoString(Temp); + DoString (TempStr); End; If BufStr <> '' Then Begin - BufStr := strPadR(BufStr, 128, ' '); + BufStr := strPadR (BufStr, 128, ' '); + BlockWrite (DataFile, BufStr[1], 128); End; @@ -4246,7 +4250,7 @@ Begin MsgBase^.CloseMsgBase; Dispose (MsgBase, Done); - Session.io.OutBS (Screen.CursorX, True); + Session.io.OutBS (Screen.CursorX, True); Session.io.OutFullLn (Session.GetPrompt(232)); Result := LastRead; @@ -4331,7 +4335,10 @@ Begin // Session.SystemLog('DEBUG: Archiving QWK packet'); If Session.LocalMode Then Begin + FileErase (Config.QWKPath + Temp); + Session.FileBase.ExecuteArchive (Config.QWKPath + Temp, Session.User.ThisUser.Archive, Session.TempPath + '*', 1); + Session.io.OutFullLn (Session.GetPrompt(235)); End Else Begin // Session.SystemLog('DEBUG: Arc QWK: Nonlocal mode'); diff --git a/mystic/bbs_msgbase_jam.pas b/mystic/bbs_msgbase_jam.pas index 54f53a9..0ba24f2 100644 --- a/mystic/bbs_msgbase_jam.pas +++ b/mystic/bbs_msgbase_jam.pas @@ -76,7 +76,7 @@ Type DateRcvd : LongInt; DateArrived : LongInt; MsgNum : LongInt; - Attr1 : LongInt; + Attr1 : Cardinal; Attr2 : LongInt; TextOfs : LongInt; TextLen : LongInt; @@ -238,7 +238,7 @@ Type Procedure MsgTxtStartUp; Virtual; {Do message text start up tasks} Function GetTxtPos : LongInt; Virtual; {Get indicator of msg text position} Procedure SetTxtPos (TP: LongInt); Virtual; {Set text position} - Procedure SetAttr1 (Mask: LongInt; St: Boolean); {Set attribute 1} + Procedure SetAttr1 (Mask: Cardinal; St: Boolean); {Set attribute 1} Function ReadIdx : Word; Function WriteIdx : Word; Procedure AddSubField (id: Word; Data: String); @@ -371,7 +371,7 @@ Begin JM^.MsgTime := STime; End; -Procedure TMsgBaseJAM.SetAttr1 (Mask: LongInt; St: Boolean); +Procedure TMsgBaseJAM.SetAttr1 (Mask: Cardinal; St: Boolean); Begin If St Then MsgHdr^.JamHdr.Attr1 := MsgHdr^.JamHdr.Attr1 Or Mask diff --git a/mystic/bbs_msgbase_squish.pas b/mystic/bbs_msgbase_squish.pas index 2e62947..fd95048 100644 --- a/mystic/bbs_msgbase_squish.pas +++ b/mystic/bbs_msgbase_squish.pas @@ -45,7 +45,7 @@ Type End; SqFrameHdrType = Record - Id : LongInt; { Must equal SqHdrId } + Id : Cardinal; { Must equal SqHdrId } NextFrame : LongInt; { Next msg frame } PrevFrame : LongInt; { Prior msg frame } FrameLength : LongInt; { Length of this frame not counting header } diff --git a/mystic/mide.pas b/mystic/mide.pas index 92915b6..7d20701 100644 --- a/mystic/mide.pas +++ b/mystic/mide.pas @@ -96,7 +96,7 @@ Var cfg_ExecPath : String[160]; cfg_ExecUser : String[35]; cfg_ExecPW : String[20]; - cfg_TextString : Byte; +// cfg_TextString : Byte; cfg_TextKeyword : Byte; cfg_TextComment : Byte; cfg_TextNormal : Byte; @@ -136,11 +136,9 @@ Type CutTextRec = String[255]; Var - CutPasted : Boolean = False; - CutTextPos : Word = 0; - CutText : Array[1..MaxCutText] of CutTextPTR; - -Var + CutPasted : Boolean = False; + CutTextPos : Word = 0; + CutText : Array[1..MaxCutText] of CutTextPTR; Console : TOutput; Input : TInput; StartDir : String; @@ -1855,7 +1853,7 @@ Begin cfg_ExecPW := INI.ReadString('Execute', 'password', 'Guest'); cfg_TextNormal := INI.ReadInteger('Colors', 'syn_normal', 30); cfg_TextKeyword := INI.ReadInteger('Colors', 'syn_keyword', 31); - cfg_TextString := INI.ReadInteger('Colors', 'syn_string', 27); +// cfg_TextString := INI.ReadInteger('Colors', 'syn_string', 27); cfg_TextNumber := INI.ReadInteger('Colors', 'syn_number', 19); cfg_TextComment := INI.ReadInteger('Colors', 'syn_comment', 23); cfg_TextHex := INI.ReadInteger('Colors', 'syn_hex', 28); diff --git a/mystic/mis_client_ftp.pas b/mystic/mis_client_ftp.pas index 1dc8b01..8d26b0c 100644 --- a/mystic/mis_client_ftp.pas +++ b/mystic/mis_client_ftp.pas @@ -1,6 +1,7 @@ Unit MIS_Client_FTP; {$I M_OPS.PAS} + {.$DEFINE FTPDEBUG} // does not send file/directory datestamps @@ -281,7 +282,7 @@ Begin WaitSock.FTelnetServer := False; WaitSock.FTelnetClient := False; - WaitSock.WaitInit(DataPort); + WaitSock.WaitInit(bbsConfig.inetInterface, DataPort); DataSocket := WaitSock.WaitConnection; @@ -446,20 +447,23 @@ Begin DataPort := Random(bbsConfig.inetFTPPortMax - bbsConfig.inetFTPPortMin) + bbsConfig.inetFTPPortMin; - {$IFDEF FTPDEBUG} LOG('PASV on host ' + Client.HostIP + ' port ' + strI2S(DataPort)); {$ENDIF} + {$IFDEF FTPDEBUG} + LOG('PASV on host ' + Client.HostIP + ' port ' + strI2S(DataPort)); + + Server.Status(re_PassiveOK + '(' + strReplace(Client.HostIP, '.', ',') + ',' + strI2S(WordRec(DataPort).Hi) + ',' + strI2S(WordRec(DataPort).Lo) + ').'); + {$ENDIF} Client.WriteLine(re_PassiveOK + '(' + strReplace(Client.HostIP, '.', ',') + ',' + strI2S(WordRec(DataPort).Hi) + ',' + strI2S(WordRec(DataPort).Lo) + ').'); IsPassive := True; - - WaitSock := TIOSocket.Create; + WaitSock := TIOSocket.Create; WaitSock.FTelnetServer := False; WaitSock.FTelnetClient := False; {$IFDEF FTPDEBUG} LOG('PASV Init'); {$ENDIF} - WaitSock.WaitInit(DataPort); + WaitSock.WaitInit(bbsConfig.inetInterface, DataPort); {$IFDEF FTPDEBUG} LOG('PASV Wait'); {$ENDIF} @@ -765,7 +769,7 @@ Begin WaitSock := TIOSocket.Create; - WaitSock.WaitInit(DataPort); + WaitSock.WaitInit(bbsConfig.inetInterface, DataPort); DataSocket := WaitSock.WaitConnection; @@ -813,7 +817,10 @@ Begin Else Data := ''; - {$IFDEF FTPDEBUG} LOG('Cmd: ' + Cmd + ' Data: ' + Data); {$ENDIF} + {$IFDEF FTPDEBUG} + LOG('Cmd: ' + Cmd + ' Data: ' + Data); + Server.Status ('Cmd: ' + Cmd + ' Data: ' + Data); + {$ENDIF} If Cmd = 'CDUP' Then cmdCDUP Else If Cmd = 'CWD' Then cmdCWD Else diff --git a/mystic/mis_server.pas b/mystic/mis_server.pas index 9104357..4bb947a 100644 --- a/mystic/mis_server.pas +++ b/mystic/mis_server.pas @@ -17,7 +17,7 @@ Const Type TServerManager = Class; TServerClient = Class; - TServerCreateProc = Function (Manager: TServerManager; Config: RecConfig; ND: TNodeData; Client: TIOSocket): TServerClient; + TServerCreateProc = Function (Manager: TServerManager; Cfg: RecConfig; ND: TNodeData; Client: TIOSocket): TServerClient; TServerManager = Class(TThread) Critical : TRTLCriticalSection; @@ -37,7 +37,7 @@ Type Port : LongInt; TextPath : String[80]; - Constructor Create (Config: RecConfig; PortNum: Word; CliMax: Word; ND: TNodeData; CreateProc: TServerCreateProc); + Constructor Create (Cfg: RecConfig; PortNum: Word; CliMax: Word; ND: TNodeData; CreateProc: TServerCreateProc); Destructor Destroy; Override; Procedure Execute; Override; Procedure Status (Str: String); @@ -60,7 +60,7 @@ Uses m_Strings, m_DateTime; -Constructor TServerManager.Create (Config: RecConfig; PortNum: Word; CliMax: Word; ND: TNodeData; CreateProc: TServerCreateProc); +Constructor TServerManager.Create (Cfg: RecConfig; PortNum: Word; CliMax: Word; ND: TNodeData; CreateProc: TServerCreateProc); Var Count : Byte; Begin @@ -82,7 +82,7 @@ Begin ClientList := TList.Create; TextPath := Config.DataPath; NodeInfo := ND; - Config := Config; + Config := Cfg; For Count := 1 to ClientMax Do ClientList.Add(NIL); @@ -201,7 +201,7 @@ Begin Repeat Until Server <> NIL; // Synchronize with server class Repeat Until ServerStatus <> NIL; // Syncronize with status class - Server.WaitInit(Port); + Server.WaitInit(Config.inetInterface, Port); If Terminated Then Exit; diff --git a/mystic/mutil.ini b/mystic/mutil.ini index f512b37..2c6e20e 100644 --- a/mystic/mutil.ini +++ b/mystic/mutil.ini @@ -71,7 +71,7 @@ PurgeMessageBases = false PostTextFiles = false PackMessageBases = false - ImportEchoMail = true + ImportEchoMail = false ExportEchoMail = false ; ========================================================================== diff --git a/mystic/mutil_common.pas b/mystic/mutil_common.pas index 0ff61dc..67a4240 100644 --- a/mystic/mutil_common.pas +++ b/mystic/mutil_common.pas @@ -2,37 +2,6 @@ Unit MUTIL_Common; {$I M_OPS.PAS} -(* -add domain into this? how would this be used in routing? where is routing -configuration going? - -Function IsAddressMatch (Str: String; Addr: RecEchoMailAddr) : Boolean; -Var - Zone : String; - Net : String; - Node : String; - A : Byte; - B : Byte; -Begin - Result := False; - - A := Pos(':', Str); - B := Pos('/', Str); - - If (A = 0) or (B <= A) Then Exit; - - Zone := Copy(Str, 1, A - 1); - Net := Copy(Str, A + 1, B - 1 - A); - Node := Copy(Str, B + 1, 255); - - If (Zone <> '*') and (Addr.Zone <> strS2I(Zone)) Then Exit; - If (Net <> '*') and (Addr.Net <> strS2I(Net)) Then Exit; - If (Node <> '*') and (Addr.Node <> strS2I(Node)) Then Exit; - - Result := True; -End; -*) - Interface Uses @@ -339,7 +308,9 @@ Begin Inc (Count); End; - ShellDOS ('', Temp); + Log (3, '!', 'Arc Result (' + strI2S(ShellDOS('', Temp)) + ') ' + Temp); + +// ShellDOS ('', Temp); End; Function GetMBaseByIndex (Num: LongInt; Var TempBase: RecMessageBase) : Boolean; @@ -533,7 +504,10 @@ End; Function GetFTNFlowName (Dest: RecEchoMailAddr) : String; Begin - Result := strI2H((Dest.Net SHL 16) OR Dest.Node, 8); + If Dest.Point = 0 Then + Result := strI2H((Dest.Net SHL 16) OR Dest.Node, 8) + Else + Result := strI2H(Dest.Point, 8); End; Function IsFTNPrimary (EchoNode: RecEchoMailNode) : Boolean; @@ -558,6 +532,9 @@ Begin; Result := bbsConfig.OutboundPath Else Result := DirLast(bbsConfig.OutboundPath) + strLower(EchoNode.Domain + '.' + strPadL(strI2H(EchoNode.Address.Zone, 3), 3, '0')) + PathChar; + + If EchoNode.Address.Point <> 0 Then + Result := Result + strI2H((EchoNode.Address.Net SHL 16) OR EchoNode.Address.Node, 8) + '.pnt' + PathChar; End; Function GetNodeByIndex (Num: LongInt; Var TempNode: RecEchoMailNode) : Boolean; @@ -587,6 +564,49 @@ Function GetNodeByRoute (Dest: RecEchoMailAddr; Var TempNode: RecEchoMailNode) : Function IsMatch (Str: String) : Boolean; + Function IsOneMatch (Mask: String) : Boolean; + Var + Zone : String; + Net : String; + Node : String; + Point : String; + A : Byte; + B : Byte; + C : Byte; + Begin + Result := False; + Zone := ''; + Net := ''; + Node := ''; + Point := ''; + A := Pos(':', Mask); + B := Pos('/', Mask); + C := Pos('.', Mask); + + If A <> 0 Then Begin + Zone := Copy(Mask, 1, A - 1); + + If B = 0 Then B := 255; + If C = 0 Then C := 255; + + Net := Copy(Mask, A + 1, B - 1 - A); + Node := Copy(Mask, B + 1, C - 1 - B); + Point := Copy(Mask, C + 1, 255); + End; + + If Zone = '' Then Zone := '*'; + If Net = '' Then Net := '*'; + If Node = '' Then Node := '*'; + If Point = '' Then Point := '*'; + + If (Zone <> '*') and (Dest.Zone <> strS2I(Zone)) Then Exit; + If (Net <> '*') and (Dest.Net <> strS2I(Net)) Then Exit; + If (Node <> '*') and (Dest.Node <> strS2I(Node)) Then Exit; + If (Point <> '*') and (Dest.Point <> strS2I(Point)) Then Exit; + + Result := True; + End; +(* Function IsOneMatch (Mask: String) : Boolean; Var Zone : String; @@ -622,10 +642,9 @@ Function GetNodeByRoute (Dest: RecEchoMailAddr; Var TempNode: RecEchoMailNode) : Result := True; End; - +*) Var Mask : String = ''; - IsNot : Boolean; OneRes : Boolean; Procedure GetNextAddress; @@ -694,6 +713,10 @@ Var Begin Result := False; + // this doesn't check points because a point is not in the PKT header so + // we cannot compare it against the point aspect. maybe PKT 2.2 fixes + // this? research it someday + For Count := 1 to 30 Do Begin Result := (bbsConfig.NetAddress[Count].Zone = Zone) And (bbsConfig.NetAddress[Count].Net = Net) And diff --git a/mystic/mutil_echocore.pas b/mystic/mutil_echocore.pas index 32f34af..39251fb 100644 --- a/mystic/mutil_echocore.pas +++ b/mystic/mutil_echocore.pas @@ -122,8 +122,7 @@ Implementation Constructor TPKTDupe.Create (Max: Cardinal); Var - F : File; - RS : Cardinal; + F : File; Begin Inherited Create; diff --git a/mystic/mutil_echoexport.pas b/mystic/mutil_echoexport.pas index 6cecb25..3733d26 100644 --- a/mystic/mutil_echoexport.pas +++ b/mystic/mutil_echoexport.pas @@ -54,7 +54,6 @@ End; Procedure BundleMessages; Var F : File; - T : Text; PH : RecPKTHeader; DirInfo : SearchRec; NodeIndex : LongInt; @@ -156,9 +155,10 @@ Var Begin // if msg originated from this echomail address then do not export - If (EchoNode.Address.Zone = MsgBase^.GetOrigAddr.Zone) and - (EchoNode.Address.Net = MsgBase^.GetOrigAddr.Net) and - (EchoNode.Address.Node = MsgBase^.GetOrigAddr.Node) Then Exit; + If (EchoNode.Address.Zone = MsgBase^.GetOrigAddr.Zone) and + (EchoNode.Address.Net = MsgBase^.GetOrigAddr.Net) and + (EchoNode.Address.Node = MsgBase^.GetOrigAddr.Node) and + (EchoNode.Address.Point = MsgBase^.GetOrigAddr.Point) Then Exit; Log (2, '+', ' Export #' + strI2S(MsgBase^.GetMsgNum) + ' to ' + strAddr2Str(EchoNode.Address)); @@ -257,7 +257,7 @@ Var If MBase.NetType = 3 Then WriteStr (#1 + 'INTL ' + strAddr2Str(EchoNode.Address) + ' ' + strAddr2Str(MsgBase^.GetOrigAddr), #13); - WriteStr (#1 + 'TID: Mystic BBS ' + mysVersion, #13); + WriteStr (#1 + 'TID: ' + mysSoftwareID + ' ' + mysVersion, #13); MsgBase^.MsgTxtStartUp; diff --git a/mystic/mutil_echoimport.pas b/mystic/mutil_echoimport.pas index 9709368..bf76663 100644 --- a/mystic/mutil_echoimport.pas +++ b/mystic/mutil_echoimport.pas @@ -68,7 +68,6 @@ Var TotalEcho : LongInt; TotalNet : LongInt; TotalDupes : LongInt; - EchoNode : RecEchoMailNode; DupeIndex : LongInt; DupeMBase : RecMessageBase; CreateBases : Boolean; diff --git a/mystic/mutil_msgpack.pas b/mystic/mutil_msgpack.pas index 223104d..fed3461 100644 --- a/mystic/mutil_msgpack.pas +++ b/mystic/mutil_msgpack.pas @@ -63,7 +63,6 @@ Var UserTotal : Cardinal; Link : RecMsgLink; Count : Cardinal; - Addr : RecEchoMailAddr; Begin FileMode := 66; BaseKills := 0; diff --git a/mystic/records.pas b/mystic/records.pas index 4bab4b4..ec18a25 100644 --- a/mystic/records.pas +++ b/mystic/records.pas @@ -325,7 +325,8 @@ Type //EmailValidationLevel //AllowEmailPWReset ForceNodeList : Boolean; - Reserved : Array[1..811] of Char; + inetInterface : String[23]; + Reserved : Array[1..787] of Char; End; Const diff --git a/mystic/todo.pas b/mystic/todo.pas index 8609989..6b42ed1 100644 --- a/mystic/todo.pas +++ b/mystic/todo.pas @@ -34,12 +34,10 @@ FUTURE / IDEAS / WORK IN PROGRESS / NOTES - PGUP/DOWN moves bases in message base editor? - AreaFix - Echomail export saves last scanned pointers -- Echomail export support for points - Echomail export support for netmail routing - FileFix / TIC - Add "Add Export To" to global msgbase editor. Also Del Export? -! Use NetReply in RecMB also Reply to another base -- cut/paste needs to be added back into the FS editor +! Use NetReply in RecMB also Reply to another base? - QWK put/get per individual users via FTP - EXCLUDE from all files list. important. - Reply to echomail via netmail. diff --git a/mystic/whatsnew.txt b/mystic/whatsnew.txt index 5b80643..5a7800c 100644 --- a/mystic/whatsnew.txt +++ b/mystic/whatsnew.txt @@ -3308,4 +3308,17 @@ + Further optimized the on-the-fly ANSI optimization generated by Mystic. I think its probably not possible to make it more efficient now. + + MUTIL now properly exports echomail and netmail for BSO-style point nodes. + + + FIDOPOLL now supports sending/receiving echomail from point systems. + + ! Fixed a bug in the QWK download system that could cause some networked + message bases to get corrupted. + + + Mystic now allows the network interface to be defined for its MIS servers. + If you want it to work the same as before, you MUST set the "Interface" + value in "System Configuration -> Internet Options" to "0.0.0.0" without + the quotes. + +