diff --git a/mystic/bbs_cfg_echomail.pas b/mystic/bbs_cfg_echomail.pas index c0a1db6..a0b9469 100644 --- a/mystic/bbs_cfg_echomail.pas +++ b/mystic/bbs_cfg_echomail.pas @@ -130,7 +130,6 @@ Var Box : TAnsiMenuBox; Form : TAnsiMenuForm; Topic : String; - TempB : Byte; Begin Topic := '|03(|09Echomail Node|03) |01-|09> |15'; Box := TAnsiMenuBox.Create; @@ -417,15 +416,16 @@ Function Configuration_EchomailAddress (Edit: Boolean) : Byte; Box : TAnsiMenuBox; Form : TAnsiMenuForm; Topic : String; + Count : Byte; Begin Topic := '|03(|09Echomail Network|03) |01-|09> |15'; Box := TAnsiMenuBox.Create; Form := TAnsiMenuForm.Create; - Box.Open (14, 6, 66, 17); + Box.Open (14, 6, 66, 18); VerticalLine (29, 9, 12); - VerticalLine (29, 14, 15); + VerticalLine (29, 14, 16); WriteXY (21, 8, 112, 'Address'); @@ -436,11 +436,16 @@ Function Configuration_EchomailAddress (Edit: Boolean) : Byte; Form.AddStr ('M', ' Domain', 21, 14, 31, 14, 8, 8, 8, @Config.NetDomain[Num], Topic + 'Network domain'); Form.AddStr ('D', ' Description', 16, 15, 31, 15, 13, 25, 25, @Config.NetDesc[Num], Topic + 'Network description'); + Form.AddBol ('I', ' Primary', 20, 16, 31, 16, 9, 3, @Config.NetPrimary[Num], Topic + 'Is this a primary address?'); Form.Execute; - Box.Close; + If Config.NetPrimary[Num] Then + For Count := 1 to 30 Do + If Config.NetPrimary[Count] and (Count <> Num) Then + Config.NetPrimary[Count] := False; + Box.Close; Form.Free; Box.Free; End; @@ -456,7 +461,7 @@ Var List.Clear; For A := 1 to 30 Do - List.Add(strPadL(strAddr2Str(Config.NetAddress[A]), 23, ' ') + ' ' + strPadL(Config.NetDesc[A], 20, ' '), 0); + List.Add(strPadR(strAddr2Str(Config.NetAddress[A]), 23, ' ') + ' ' + strPadR(Config.NetDomain[A], 8, ' ') + ' ' + strPadR(strYN(Config.NetPrimary[A]), 3, ' ') + ' ' + Config.NetDesc[A], 0); End; Begin @@ -467,15 +472,15 @@ Begin List.NoWindow := True; - Box.Open (17, 5, 64, 20); + Box.Open (7, 5, 74, 20); - WriteXY (27, 6, 112, 'Network Address Description'); - WriteXY (19, 7, 112, strRep('Ä', 44)); + WriteXY (9, 6, 112, 'Network Address Domain Pri Description'); + WriteXY (9, 7, 112, strRep('Ä', 64)); Repeat CreateList; - List.Open (17, 7, 64, 20); + List.Open (7, 7, 74, 20); Case List.ExitCode of #13 : If Edit Then diff --git a/mystic/bbs_cfg_msgbase.pas b/mystic/bbs_cfg_msgbase.pas index 859240a..88ee5d7 100644 --- a/mystic/bbs_cfg_msgbase.pas +++ b/mystic/bbs_cfg_msgbase.pas @@ -333,7 +333,8 @@ Var Procedure MakeList; Var - Tag : Byte; + Tag : Byte; + Addr : String; Begin List.Clear; @@ -344,7 +345,12 @@ Var Read (MBaseFile, MBase); - List.Add(strPadR(strI2S(FilePos(MBaseFile) - 1), 5, ' ') + ' ' + strPadR(strStripMCI(MBase.Name), 35, ' ') + ' ' + strPadL(strAddr2Str(Config.NetAddress[MBase.NetAddr]), 12, ' '), Tag); + If MBase.NetType = 0 Then + Addr := 'Local' + Else + Addr := strAddr2Str(Config.NetAddress[MBase.NetAddr]); + + List.Add(strPadR(strI2S(FilePos(MBaseFile) - 1), 5, ' ') + ' ' + strPadR(strStripMCI(MBase.Name), 35, ' ') + ' ' + strPadL(Addr, 12, ' '), Tag); End; List.Add('', 2); diff --git a/mystic/bbs_cfg_syscfg.pas b/mystic/bbs_cfg_syscfg.pas index aeba735..ed8bdeb 100644 --- a/mystic/bbs_cfg_syscfg.pas +++ b/mystic/bbs_cfg_syscfg.pas @@ -475,6 +475,7 @@ Begin Form.AddBol ('T', ' External FSE', 13, 15, 29, 15, 14, 3, @Config.FSEditor, Topic + 'Use external editor'); Form.AddStr ('F', ' FSE Command Line', 9, 16, 29, 16, 18, 40, 60, @Config.FSCommand, Topic + 'FSE command line'); Form.AddStr ('D', ' Default Origin', 11, 17, 29, 17, 16, 40, 50, @Config.Origin, Topic + 'Origin line for new bases'); +// Form.AddStr ('2', ' Default Domain', 11, 18, 29, 18, 16, 8, 8, @Config.DefDomain, Topic + 'Default echomail domain'); Form.AddAttr ('Q', ' Quote Color', 52, 7, 67, 7, 13, @Config.ColorQuote, Topic + 'Color for quoted text'); Form.AddAttr ('E', ' Text Color' , 53, 8, 67, 8, 12, @Config.ColorText, Topic + 'Color for message text'); diff --git a/mystic/bbs_edit_ansi.pas b/mystic/bbs_edit_ansi.pas index 9b0618f..5c1eec1 100644 --- a/mystic/bbs_edit_ansi.pas +++ b/mystic/bbs_edit_ansi.pas @@ -68,7 +68,7 @@ Type Procedure DrawPage (StartY, EndY: Byte; ExitEOF: Boolean); Procedure ScrollUp; Procedure ScrollDown (Draw: Boolean); - Function LineUp : Boolean; + Function LineUp (Reset: Boolean) : Boolean; Function LineDown (Reset: Boolean) : Boolean; Procedure PageUp; Procedure PageDown; @@ -514,7 +514,7 @@ Begin DrawPage(1, WinSize, False); End; -Function TEditorANSI.LineUp : Boolean; +Function TEditorANSI.LineUp (Reset: Boolean) : Boolean; Begin Result := False; @@ -523,7 +523,8 @@ Begin Dec (CurLine); Dec (CurY); - If CurX > GetLineLength(ANSI.Data[CurLine], 80) Then + // might be able to use curlength + If Reset or (CurX > GetLineLength(ANSI.Data[CurLine], 80)) Then CurX := GetLineLength(ANSI.Data[CurLine], 80) + 1; If CurY < 1 Then Begin @@ -537,7 +538,8 @@ Function TEditorANSI.LineDown (Reset: Boolean) : Boolean; Begin Result := False; - If CurLine >= mysMaxMsgLines Then Exit; + If CurLine >= LastLine Then Exit; +// If CurLine >= mysMaxMsgLines Then Exit; Inc (CurLine); Inc (CurY); @@ -648,7 +650,7 @@ Begin DeleteLine (CurLine); - If Not LineUp Then DrawPage (CurY, WinSize, False); //optimize + If Not LineUp(False) Then DrawPage (CurY, WinSize, False); //optimize End Else Begin JoinPos := GetWrapPos(ANSI.Data[CurLine], RowSize, RowSize - GetLineLength(ANSI.Data[CurLine - 1], RowSize)); @@ -660,9 +662,9 @@ Begin Move (ANSI.Data[CurLine][JoinPos + 1], JoinBuf, (CurLength - JoinPos + 1) * SizeOf(RecAnsiBufferChar)); Move (JoinBuf, ANSI.Data[CurLine], RowSize * SizeOf(RecAnsiBufferChar)); - If Not LineUp Then DrawPage (CurY, WinSize, False); + If Not LineUp(False) Then DrawPage (CurY, WinSize, False); End Else Begin - LineUp; + LineUp(False); CurX := CurLength + 1; End; @@ -1252,10 +1254,16 @@ Begin If LineLen + JoinLen <= RowSize Then Begin Move (ANSI.Data[Line + 1], ANSI.Data[Line][LineLen + 2], SizeOf(RecAnsiBufferChar) * JoinLen); + + ANSI.Data[Line][LineLen + 1].Ch := ' '; + DeleteLine (Line + 1); End Else If JoinPos > 0 Then Begin Move (ANSI.Data[Line + 1], ANSI.Data[Line][LineLen + 2], SizeOf(RecAnsiBufferChar) * (JoinPos - 1)); + + ANSI.Data[Line][LineLen + 1].Ch := ' '; + FillChar (JoinBuf, SizeOf(JoinBuf), #0); Move (ANSI.Data[Line + 1][JoinPos + 1], JoinBuf, (JoinLen - JoinPos + 1) * SizeOf(RecAnsiBufferChar)); Move (JoinBuf, ANSI.Data[Line + 1], RowSize * SizeOf(RecAnsiBufferChar)); @@ -1287,10 +1295,10 @@ Begin If Session.io.IsArrow Then Begin Case Ch of #71 : CurX := 1; - #72 : LineUp; + #72 : LineUp(False); #73 : PageUp; - #75 : If CurX > 1 Then Dec(CurX); - #77 : If CurX <= RowSize Then Inc(CurX); + #75 : If CurX > 1 Then Dec(CurX) Else LineUp(True); + #77 : If CurX <= CurLength Then Inc(CurX) Else LineDown(True); #79 : CurX := CurLength + 1; #80 : If CurLine < LastLine Then LineDown(False); #81 : PageDown; @@ -1298,7 +1306,30 @@ Begin End; End Else Case Ch of +(* + ^A : Begin + If Forced Then + Session.io.OutFull (Session.GetPrompt(307)) + Else + Done := Session.io.GetYN(Session.GetPrompt(356), False); + + If Not Done Then ReDrawTemplate(False); + End; +*) ^B : ReformParagraph; + ^F : CurX := 1; + ^G : CurX := CurLength + 1; + ^H : DoBackSpace; + ^I : Begin + If (CurX < RowSize) and (CurX MOD 5 = 0) Then + DoChar(' '); + + While (CurX < RowSize) and (CurX MOD 5 <> 0) Do Begin + CurLength := GetLineLength(ANSI.Data[CurLine], RowSize); + + DoChar(' '); + End; + End; ^K : Begin If CutPasted Then Begin CutTextPos := 0; @@ -1315,6 +1346,7 @@ Begin DrawPage (CurY, WinSize, False); //optimize + 1 End; End; + ^M : DoEnter; ^O : Begin Session.io.OutFile('fshelp', True, 0); ReDrawTemplate(False); @@ -1356,8 +1388,6 @@ Begin Session.io.AllowArrow := True; End; - #08 : DoBackSpace; - #13 : DoEnter; #32.. #254 : If (CurLength >= RowSize) and (GetWrapPos(ANSI.Data[CurLine], RowSize, RowSize) = 0) Then Begin // dont do anything diff --git a/mystic/bbs_general.pas b/mystic/bbs_general.pas index 55cc243..f6acbc4 100644 --- a/mystic/bbs_general.pas +++ b/mystic/bbs_general.pas @@ -12,11 +12,7 @@ Uses bbs_SysopChat, {$ENDIF} bbs_Common, - {$IFDEF NEWEDITOR} bbs_Edit_ANSI, - {$ELSE} - bbs_Edit_Full, - {$ENDIF} bbs_Edit_Line; Function Editor (Var Lines: SmallInt; MaxLen, MaxLine: SmallInt; Forced: Boolean; Template: String; Var Subj: String) : Boolean; @@ -57,7 +53,6 @@ Uses bbs_MsgBase_Ansi, bbs_NodeInfo; -{$IFDEF NEWEDITOR} Function AnsiEditor (Var Lines: SmallInt; WrapPos: Byte; MaxLines: SmallInt; Forced: Boolean; Template: String; Var Subj: String) : Boolean; Var Editor : TEditorANSI; @@ -83,16 +78,11 @@ Begin Editor.Free; End; -{$ENDIF} Function Editor (Var Lines: SmallInt; MaxLen, MaxLine: SmallInt; Forced: Boolean; Template: String; Var Subj: String) : Boolean; Begin If (Session.io.Graphics > 0) and ((Session.User.ThisUser.EditType = 1) or ((Session.User.ThisUser.EditType = 2) and Session.io.GetYN(Session.GetPrompt(106), True))) Then - {$IFDEF NEWEDITOR} Editor := AnsiEditor(Lines, MaxLen, MaxLine, Forced, Template, Subj) - {$ELSE} - Editor := FullEditor(Lines, MaxLen, MaxLine, Forced, Template, Subj) - {$ENDIF} Else Editor := LineEditor(Lines, MaxLen, MaxLine, False, Forced, Subj); End; diff --git a/mystic/bbs_msgbase.pas b/mystic/bbs_msgbase.pas index fa1691a..edc3727 100644 --- a/mystic/bbs_msgbase.pas +++ b/mystic/bbs_msgbase.pas @@ -550,8 +550,8 @@ Var S : String; A : SmallInt; Begin - If MBase.NetType > 0 Then Begin - Msg^.DoStringLn (#1 + 'MSGID: ' + strAddr2Str(Config.NetAddress[MBase.NetAddr]) + ' ' + strI2H(CurDateDos)); + If (MBase.NetType > 0) and (MBase.NetType <> 3) Then Begin + Msg^.DoStringLn (#1 + 'MSGID: ' + strAddr2Str(Config.NetAddress[MBase.NetAddr]) + ' ' + strI2H(CurDateDos, 8)); If ReplyID <> '' Then Msg^.DoStringLn (#1 + 'REPLY: ' + ReplyID); @@ -4401,4 +4401,4 @@ Begin Session.io.OutFullLn(Session.GetPrompt(503)); End; -End. \ No newline at end of file +End. diff --git a/mystic/bbs_msgbase_jam.pas b/mystic/bbs_msgbase_jam.pas index 099022f..54f53a9 100644 --- a/mystic/bbs_msgbase_jam.pas +++ b/mystic/bbs_msgbase_jam.pas @@ -474,7 +474,9 @@ Begin Error := IoResult; JM^.TxtBufStart := FileSize(JM^.BufFile); End; + TxtBuf^[JM^.TxtPos - JM^.TxtBufStart] := Ch; + Inc(JM^.TxtPos); End; @@ -1647,8 +1649,7 @@ Begin FindLastRead := -1; Found := False; - New (LastBuf); - + New (LastBuf); Seek (LastFile, 0); LastError := IoResult; @@ -1792,7 +1793,9 @@ Begin LockError := IoResult; End; End; - Inc(JM^.LockCount); + + Inc (JM^.LockCount); + LockMsgBase := (LockError = 0); End; @@ -1821,8 +1824,6 @@ Begin UnLockMsgBase := (LockError = 0); End; -{SetSeeAlso/GetSeeAlso provided by 2:201/623@FidoNet Jonas@iis.bbs.bad.se} - Procedure TMsgBaseJAM.SetNextSeeAlso(SAlso: LongInt); Begin MsgHdr^.JamHdr.ReplyNext := SAlso; @@ -1833,7 +1834,7 @@ Begin GetNextSeeAlso := MsgHdr^.JamHdr.ReplyNext; End; -Function TMsgBaseJAM.ReReadIdx(Var IdxLoc : LongInt) : Word; +Function TMsgBaseJAM.ReReadIdx (Var IdxLoc : LongInt) : Word; Begin ReReadIdx := 0; IdxLoc := JM^.CurrMsgNum - JM^.BaseHdr.BaseMsgNum; diff --git a/mystic/mbbsutil.pas b/mystic/mbbsutil.pas index 18dd117..ebf7a80 100644 --- a/mystic/mbbsutil.pas +++ b/mystic/mbbsutil.pas @@ -892,7 +892,7 @@ Begin If MBase.NetType <> 1 Then Continue; - WriteLn (OutFile, '!' + Config.DataPath + MBase.FileName + ' ' + MBase.FileName + ' ' + strAddr2Str(Config.NetUplink[MBase.NetAddr])); + WriteLn (OutFile, '!' + Config.DataPath + MBase.FileName + ' ' + MBase.FileName + ' ' + '0:0/0'); End; End; diff --git a/mystic/mpl_execute.pas b/mystic/mpl_execute.pas index 55449ab..d28c5d7 100644 --- a/mystic/mpl_execute.pas +++ b/mystic/mpl_execute.pas @@ -1524,7 +1524,7 @@ Begin Store (TempLong, 4); End; 28 : Begin - TempStr := strI2H(Param[1].L); + TempStr := strI2H(Param[1].L, 8); Store (TempStr, 256); End; 29 : Begin diff --git a/mystic/mutil.ini b/mystic/mutil.ini index 98431c0..5493f18 100644 --- a/mystic/mutil.ini +++ b/mystic/mutil.ini @@ -72,7 +72,7 @@ PostTextFiles = false PackMessageBases = false ImportEchoMail = false - ExportEchoMail = false + ExportEchoMail = true ; ========================================================================== ; ========================================================================== diff --git a/mystic/mutil.pas b/mystic/mutil.pas index 3280a76..17221a5 100644 --- a/mystic/mutil.pas +++ b/mystic/mutil.pas @@ -216,8 +216,8 @@ Begin If DoMassUpload Then uMassUpload; If DoTopLists Then uTopLists; If DoAllFiles Then uAllFilesList; - If DoEchoExport Then uEchoExport; If DoEchoImport Then uEchoImport; + If DoEchoExport Then uEchoExport; If DoMsgPurge Then uPurgeMessageBases; If DoMsgPack Then uPackMessageBases; If DoMsgPost Then uPostMessages; diff --git a/mystic/mutil_common.pas b/mystic/mutil_common.pas index 01585ca..056281d 100644 --- a/mystic/mutil_common.pas +++ b/mystic/mutil_common.pas @@ -60,6 +60,7 @@ Function SaveMessage (mArea: RecMessageBase; mFrom, mTo, mSubj: String; Function GetFTNPKTName : String; Function GetFTNArchiveName (Orig, Dest: RecEchoMailAddr) : String; Function GetFTNFlowName (Dest: RecEchoMailAddr) : String; +Function GetFTNOutPath (EchoNode: RecEchoMailNode) : String; Function GetNodeByIndex (Num: LongInt; Var TempNode: RecEchoMailNode) : Boolean; Implementation @@ -494,12 +495,36 @@ Begin If Net < 0 Then Net := 65536 + Net; If Node < 0 Then Node := 65536 + Node; - Result := strI2H((Net SHL 16) OR Node); + Result := strI2H((Net SHL 16) OR Node, 8); End; Function GetFTNFlowName (Dest: RecEchoMailAddr) : String; Begin - Result := strI2H((Dest.Net SHL 16) OR Dest.Node); + Result := strI2H((Dest.Net SHL 16) OR Dest.Node, 8); +End; + +Function IsFTNPrimary (EchoNode: RecEchoMailNode) : Boolean; +Var + Count : Byte; +Begin + For Count := 1 to 30 Do + If (strUpper(EchoNode.Domain) = strUpper(bbsConfig.NetDomain[Count])) and + (EchoNode.Address.Zone = bbsConfig.NetAddress[Count].Zone) and + (bbsConfig.NetPrimary[Count]) Then Begin + Result := True; + + Exit; + End; + + Result := False; +End; + +Function GetFTNOutPath (EchoNode: RecEchoMailNode) : String; +Begin; + If IsFTNPrimary(EchoNode) Then + Result := bbsConfig.OutboundPath + Else + Result := DirLast(bbsConfig.OutboundPath) + strLower(EchoNode.Domain + '.' + strPadL(strI2H(EchoNode.Address.Zone, 3), 3, '0')) + PathChar; End; Function GetNodeByIndex (Num: LongInt; Var TempNode: RecEchoMailNode) : Boolean; diff --git a/mystic/mutil_echoexport.pas b/mystic/mutil_echoexport.pas index 13714e7..23ac677 100644 --- a/mystic/mutil_echoexport.pas +++ b/mystic/mutil_echoexport.pas @@ -40,7 +40,7 @@ Begin While Not Eof(T) Do Begin ReadLn (T, Str); - If strUpper(Str) = '^' + strUpper(PacketFN) Then Begin + If (strUpper(Str) = strUpper(PacketFN)) or (strUpper(Copy(Str, 2, 255)) = strUpper(PacketFN)) Then Begin Close (T); Exit; End; @@ -61,6 +61,7 @@ Var EchoNode : RecEchoMailNode; PKTName : String; BundleName : String; + BundlePath : String; FLOName : String; OrigAddr : RecEchoMailAddr; Begin @@ -84,11 +85,19 @@ Begin OrigAddr.Net := PH.OrigNet; OrigAddr.Node := PH.OrigNode; - // TODO - // if echonode.echomail.crash etc change char F in FLO extension + BundlePath := GetFTNOutPath(EchoNode); - FLOName := bbsConfig.OutboundPath + GetFTNFlowName(EchoNode.Address) + '.flo'; - BundleName := bbsConfig.OutboundPath + GetFTNArchiveName(OrigAddr, EchoNode.Address) + '.' + DayString[DayOfWeek(CurDateDos)]; + DirCreate (BundlePath); + + FLOName := BundlePath + GetFTNFlowName(EchoNode.Address); + BundleName := BundlePath + GetFTNArchiveName(OrigAddr, EchoNode.Address) + '.' + strLower(DayString[DayOfWeek(CurDateDos)]); + + Case EchoNode.MailType of + 0 : FLOName := FLOName + '.flo'; + 1 : FLOName := FLOName + '.clo'; + 2 : FLOName := FLOName + '.dlo'; + 3 : FlOName := FLOName + '.hlo'; + End; // TODO // check for existance, packet size limitations, etc and increment @@ -143,6 +152,7 @@ Var Var TempStr1 : String; TempStr2 : String; + TempStr3 : String; Begin If (EchoNode.Address.Zone = MsgBase^.GetOrigAddr.Zone) and (EchoNode.Address.Net = MsgBase^.GetOrigAddr.Net) and @@ -154,12 +164,32 @@ Var GetTime (DT.Hour, DT.Min, DT.Sec, Temp); If MBase.NetType = 3 Then Begin - TempStr1 := bbsConfig.OutboundPath + GetFTNFlowName(EchoNode.Address) + '.out'; - TempStr2 := bbsConfig.OutboundPath + GetFTNFlowName(EchoNode.Address) + '.flo'; + // need to incorporate routing here?!? - // change extensions based on crash etc from echonode - // need to add aka matching somewhere in here and also incorporate - // routing? + TempStr3 := GetFTNOutPath(EchoNode); + + DirCreate (TempStr3); + + TempStr1 := TempStr3 + GetFTNFlowName(EchoNode.Address); + TempStr2 := TempStr3 + GetFTNFlowName(EchoNode.Address); + + Case EchoNode.MailType of + 1 : Begin + TempStr1 := TempStr1 + '.cut'; + TempStr2 := TempStr2 + '.clo'; + End; + 2 : Begin + TempStr1 := TempStr1 + '.dut'; + TempStr2 := TempStr2 + '.dlo'; + End; + 3 : Begin + TempStr1 := TempStr1 + '.hut'; + TempStr2 := TempStr2 + '.hlo'; + End; + Else + TempStr1 := TempStr1 + '.out'; + TempStr2 := TempStr2 + '.flo'; + End; Assign (F, TempStr1); @@ -179,7 +209,7 @@ Var FillChar (PH, SizeOf(PH), 0); - PH.OrigNode := bbsConfig.NetAddress[MBase.NetAddr].Node; + PH.OrigNode := MsgBase^.GetOrigAddr.Node; PH.DestNode := EchoNode.Address.Node; PH.Year := DT.Year; PH.Month := DT.Month; @@ -188,10 +218,10 @@ Var PH.Minute := DT.Min; PH.Second := DT.Sec; PH.PKTType := 2; - PH.OrigNet := bbsConfig.NetAddress[MBase.NetAddr].Net; + PH.OrigNet := MsgBase^.GetOrigAddr.Net; PH.DestNet := EchoNode.Address.Net; PH.ProdCode := 254; // RESEARCH THIS - PH.OrigZone := bbsConfig.NetAddress[MBase.NetAddr].Zone; + PH.OrigZone := MsgBase^.GetOrigAddr.Zone; PH.DestZone := EchoNode.Address.Zone; //Password : Array[1..8] of Char; // RESEARCH THIS @@ -201,9 +231,9 @@ Var FillChar (MH, SizeOf(MH), 0); MH.MsgType := 2; - MH.OrigNode := bbsConfig.NetAddress[MBase.NetAddr].Node; + MH.OrigNode := MsgBase^.GetOrigAddr.Node; MH.DestNode := EchoNode.Address.Node; - MH.OrigNet := bbsConfig.NetAddress[MBase.NetAddr].Net; + MH.OrigNet := MsgBase^.GetOrigAddr.Net; MH.DestNet := EchoNode.Address.Net; TempStr1 := FormattedDate(DT, 'DD NNN YY HH:MM:SS') + #0; @@ -225,7 +255,7 @@ Var WriteStr ('AREA:' + MBase.EchoTag, #13); If MBase.NetType = 3 Then - WriteStr (#1 + 'INTL ' + strAddr2Str(EchoNode.Address) + ' ' + strAddr2Str(bbsConfig.NetAddress[MBase.NetAddr]), #13); + WriteStr (#1 + 'INTL ' + strAddr2Str(EchoNode.Address) + ' ' + strAddr2Str(MsgBase^.GetOrigAddr), #13); WriteStr (#1 + 'TID: Mystic BBS ' + mysVersion, #13); @@ -237,15 +267,15 @@ Var // SEEN-BY needs to include yourself and ANYTHING it is sent to (downlinks) // so we need to cycle through nodes for this mbase and add ALL of them - TempStr1 := 'SEEN-BY: ' + strI2S(bbsConfig.NetAddress[MBase.NetAddr].Net) + '/' + strI2S(bbsConfig.NetAddress[MBase.NetAddr].Node) + ' '; + TempStr1 := 'SEEN-BY: ' + strI2S(MsgBase^.GetOrigAddr.Net) + '/' + strI2S(MsgBase^.GetOrigAddr.Node) + ' '; - If bbsConfig.NetAddress[MBase.NetAddr].Net <> EchoNode.Address.Net Then + If MsgBase^.GetOrigAddr.Net <> EchoNode.Address.Net Then TempStr1 := TempStr1 + strI2S(EchoNode.Address.Net) + '/'; TempStr1 := TempStr1 + strI2S(EchoNode.Address.Node); WriteStr (TempStr1, #13); - WriteStr (#1 + 'PATH: ' + strI2S(bbsConfig.NetAddress[MBase.NetAddr].Net) + '/' + strI2S(bbsConfig.NetAddress[MBase.NetAddr].Node), #13); + WriteStr (#1 + 'PATH: ' + strI2S(MsgBase^.GetOrigAddr.Net) + '/' + strI2S(MsgBase^.GetOrigAddr.Node), #13); WriteStr (#0#0, #0); Close (F); @@ -303,6 +333,14 @@ Begin While Not Eof(ExportFile) Do Begin Read (ExportFile, ExportIndex); + // check base type and export network or echo? or + // do it from exportmessage? + + If MBase.NetType = 3 Then Begin + If GetNodeByIndex(ExportIndex, EchoNode) Then + If EchoNode.Active and (EchoNode.Address.Zone = MsgBase^.GetOrigAddr.Zone) Then + ExportMessage; + End Else If GetNodeByIndex(ExportIndex, EchoNode) Then If EchoNode.Active Then ExportMessage; diff --git a/mystic/mystic.pas b/mystic/mystic.pas index a7083c1..52697c9 100644 --- a/mystic/mystic.pas +++ b/mystic/mystic.pas @@ -44,12 +44,9 @@ Uses bbs_Common, bbs_Core, bbs_NodeInfo, - {$IFDEF NEWEDITOR} - bbs_edit_ansi, - {$ENDIF} bbs_Cfg_Main; -{$IFDEF NEWEDITOR} +(* Procedure TestEditor; Var T : TEditorANSI; @@ -59,7 +56,7 @@ Begin T.Edit; T.Free; End; -{$ENDIF} +*) Procedure InitClasses; Begin @@ -482,10 +479,8 @@ Begin Set_Node_Action (Session.GetPrompt(345)); - {$IFDEF NEWEDITOR} - //TestEditor; - //Halt(0); - {$ENDIF} +// TestEditor; +// Halt(0); Session.User.UserLogon1 (Script); diff --git a/mystic/records.pas b/mystic/records.pas index 6d4a286..5f19382 100644 --- a/mystic/records.pas +++ b/mystic/records.pas @@ -246,7 +246,8 @@ Type FSCommand : String[60]; // ECHOMAIL NETWORKS NetAddress : Array[1..30] of RecEchoMailAddr; // echomail addresses - NetUplink : Array[1..30] of RecEchoMailAddr; // echomail uplink addresses + NetPrimary : Array[1..30] of Boolean; + Res1 : Array[1..210] of Byte; NetDomain : Array[1..30] of String[8]; // echomail domains (5D) NetDesc : Array[1..30] of String[25]; // echomail network description // OFFLINE MAIL (should include local qwk path) @@ -316,6 +317,7 @@ Type ThemeOnStart : Boolean; StartCodePage : Byte; AcsSeeOffline : String[mysMaxAcsSize]; + // DefDomain : String[8]; //inetSMTPRelay : String[30]; //inetSMTPLogin : String[30]; //inetSMTPPW : String[30]; diff --git a/mystic/whatsnew.txt b/mystic/whatsnew.txt index bb05548..d06be22 100644 --- a/mystic/whatsnew.txt +++ b/mystic/whatsnew.txt @@ -2999,3 +2999,11 @@ + Old Voting booth editor has been replaced with the VD menu command used to delete voting questions. + + + CTRL-B will now reformat paragraphs in the FS editor. + + + In the FSE the TAB key now works in insert mode meaning it will push and + wrap text by tabstop. + + ! Forced messages were able to be aborted sometimes while using the FS + editor and using the CTRL-A key to abort.