diff --git a/mystic/bbs_ansi_menuform.pas b/mystic/bbs_ansi_menuform.pas index 06d7d29..d14b39c 100644 --- a/mystic/bbs_ansi_menuform.pas +++ b/mystic/bbs_ansi_menuform.pas @@ -30,6 +30,7 @@ Type ItemFlags, ItemDate, ItemPass, + ItemMask, ItemPipe, ItemCaps, ItemBits, @@ -113,6 +114,7 @@ Type Procedure AddPipe (HK: Char; D: String; X, Y, FX, FY, DS, FS, MX: Byte; P: Pointer; H: String); Procedure AddPath (HK: Char; D: String; X, Y, FX, FY, DS, FS, MX: Byte; P: Pointer; H: String); Procedure AddPass (HK: Char; D: String; X, Y, FX, FY, DS, FS, MX: Byte; P: Pointer; H: String); + Procedure AddMask (HK: Char; D: String; X, Y, FX, FY, DS, FS, MX: Byte; P: Pointer; H: String); Procedure AddBol (HK: Char; D: String; X, Y, FX, FY, DS, FS: Byte; P: Pointer; H: String); Procedure AddByte (HK: Char; D: String; X, Y, FX, FY, DS, FS: Byte; MN, MX: Byte; P: Pointer; H: String); Procedure AddWord (HK: Char; D: String; X, Y, FX, FY, DS, FS: Byte; MN, MX: Word; P: Pointer; H: String); @@ -338,6 +340,7 @@ Begin ItemPass, ItemDate, ItemPath, + ItemMask, ItemString : S := P; ItemBoolean : O := P; ItemAttr, @@ -398,6 +401,13 @@ Begin AddBasic (HK, D, X, Y, FX, FY, DS, FS, MX, ItemPass, P, H); End; +Procedure TAnsiMenuForm.AddMask (HK: Char; D: String; X, Y, FX, FY, DS, FS, MX: Byte; P: Pointer; H: String); +Begin + If Items = FormMaxItems Then Exit; + + AddBasic (HK, D, X, Y, FX, FY, DS, FS, MX, ItemMask, P, H); +End; + Procedure TAnsiMenuForm.AddPath (HK: Char; D: String; X, Y, FX, FY, DS, FS, MX: Byte; P: Pointer; H: String); Begin If Items = FormMaxItems Then Exit; @@ -529,6 +539,7 @@ Procedure TAnsiMenuForm.FieldWrite (RecPos : Word); Begin With ItemData[RecPos]^ Do Begin Case ItemType of + ItemMask, ItemPass : WriteXY (FieldX, FieldY, cData, strPadR(strRep('*', Length(S^)), FieldSize, ' ')); ItemCaps, ItemDate, @@ -564,6 +575,7 @@ Begin ItemCaps : S^ := Input.GetStr(FieldX, FieldY, FieldSize, MaxSize, 2, S^); ItemDate : S^ := Input.GetStr(FieldX, FieldY, FieldSize, MaxSize, 3, S^); ItemPipe, + ItemMask, ItemString : S^ := Input.GetStr(FieldX, FieldY, FieldSize, MaxSize, 1, S^); ItemBoolean : Begin O^ := Not O^; diff --git a/mystic/bbs_cfg_echomail.pas b/mystic/bbs_cfg_echomail.pas index f62c228..c0a1db6 100644 --- a/mystic/bbs_cfg_echomail.pas +++ b/mystic/bbs_cfg_echomail.pas @@ -130,28 +130,43 @@ Var Box : TAnsiMenuBox; Form : TAnsiMenuForm; Topic : String; + TempB : Byte; Begin Topic := '|03(|09Echomail Node|03) |01-|09> |15'; Box := TAnsiMenuBox.Create; Form := TAnsiMenuForm.Create; Box.Header := ' Index ' + strI2S(Node.Index) + ' '; + Box.Shadow := False; - Box.Open (14, 6, 66, 18); + Box.Open (3, 5, 76, 21); - VerticalLine (29, 9, 12); - VerticalLine (29, 14, 16); + VerticalLine (19, 7, 12); + VerticalLine (19, 15, 19); + VerticalLine (53, 7, 11); +// VerticalLine (53, 14, 19); - WriteXY (21, 8, 112, 'Address'); + WriteXY (13, 14, 112, 'BINKP'); +// WriteXY (49, 13, 112, 'FTP'); - Form.AddWord ('Z', ' Zone' , 23, 9, 31, 9, 6, 5, 0, 65535, @Node.Address.Zone, Topic + 'Network Zone'); - Form.AddWord ('N', ' Net' , 24, 10, 31, 10, 5, 5, 0, 65535, @Node.Address.Net, Topic + 'Network Net'); - Form.AddWord ('O', ' Node' , 23, 11, 31, 11, 6, 5, 0, 65535, @Node.Address.Node, Topic + 'Network Node'); - Form.AddWord ('P', ' Point' , 22, 12, 31, 12, 7, 5, 0, 65535, @Node.Address.Point, Topic + 'Network Point'); + Form.AddStr ('D', ' Description' , 6, 7, 21, 7, 13, 23, 35, @Node.Description, Topic + 'Node description'); + Form.AddBol ('A', ' Active' , 11, 8, 21, 8, 8, 3, @Node.Active, Topic + 'Is node active?'); + Form.AddStr ('R', ' Archive Type' , 5, 9, 21, 9, 14, 4, 4, @Node.ArcType, Topic + 'Archive type for packets'); + Form.AddTog ('E', ' Network Type' , 5, 10, 21, 10, 14, 7, 0, 1, 'FidoNet QWK', @Node.NetType, Topic); + Form.AddTog ('L', ' Session Type' , 5, 11, 21, 11, 14, 5, 0, 1, 'BinkP FTP', @Node.ProtType, Topic); + Form.AddTog ('Y', ' Export Type' , 6, 12, 21, 12, 13, 6, 0, 3, 'Normal Crash Direct Hold', @Node.MailType, Topic); - Form.AddBol ('A', ' Active' , 21, 14, 31, 14, 8, 3, @Node.Active, Topic + 'Is node active?'); - Form.AddStr ('D', ' Description', 16, 15, 31, 15, 13, 35, 35, @Node.Description, Topic + 'Node description'); - Form.AddStr ('R', ' Arc Type' , 19, 16, 31, 16, 10, 4, 4, @Node.ArcType, Topic + 'Archive type for packets'); + Form.AddStr ('H', ' Host' , 13, 15, 21, 15, 6, 20, 60, @Node.binkHost, Topic + ':'); + Form.AddMask ('S', ' Password' , 9, 16, 21, 16, 10, 20, 20, @Node.binkPass, Topic); + Form.AddWord ('T', ' TimeOut' , 10, 17, 21, 17, 9, 4, 10, 9999, @Node.binkTimeOut, Topic + 'Inactive session timeout (seconds)'); + Form.AddWord ('B', ' BlockSize' , 8, 18, 21, 18, 11, 5, 4096, 30720, @Node.binkBlock, Topic + 'Blocksize in bytes'); + Form.AddTog ('M', ' CRAM-MD5' , 9, 19, 21, 19, 10, 6, 0, 2, 'No Yes Forced', @Node.binkMD5, Topic); + + Form.AddWord ('Z', ' Zone' , 47, 7, 55, 7, 6, 5, 0, 65535, @Node.Address.Zone, Topic + 'Network Zone'); + Form.AddWord ('N', ' Net' , 48, 8, 55, 8, 5, 5, 0, 65535, @Node.Address.Net, Topic + 'Network Net'); + Form.AddWord ('O', ' Node' , 47, 9, 55, 9, 6, 5, 0, 65535, @Node.Address.Node, Topic + 'Network Node'); + Form.AddWord ('P', ' Point' , 46, 10, 55, 10, 7, 5, 0, 65535, @Node.Address.Point, Topic + 'Network Point'); + Form.AddStr ('I', ' Domain' , 45, 11, 55, 11, 8, 8, 8, @Node.Domain, Topic + 'Network Domain'); Form.Execute; @@ -302,6 +317,9 @@ Var With EchoNode Do Begin Description := 'New echomail node'; Index := GetPermanentIndex(FileSize(EchoFile)); + ArcType := 'ZIP'; + BinkBlock := 16 * 1024; + BinkTimeOut := 30; End; Write (EchoFile, EchoNode); diff --git a/mystic/bbs_cfg_useredit.pas b/mystic/bbs_cfg_useredit.pas index 28ca143..2856b90 100644 --- a/mystic/bbs_cfg_useredit.pas +++ b/mystic/bbs_cfg_useredit.pas @@ -302,7 +302,7 @@ Begin List.Close; Case List.ExitCode of - #13 : Begin + #13 : If List.ListMax <> 0 Then Begin UserFile.Seek (List.Picked - 1); UserFile.Read (User); diff --git a/mystic/bbs_edit_ansi.pas b/mystic/bbs_edit_ansi.pas index ce0b886..2854a9d 100644 --- a/mystic/bbs_edit_ansi.pas +++ b/mystic/bbs_edit_ansi.pas @@ -362,6 +362,8 @@ Begin End; Procedure TEditorANSI.ReDrawTemplate (Reset: Boolean); +Var + Count : LongInt; Begin TBBSCore(Owner).io.AllowArrow := True; @@ -385,6 +387,13 @@ Begin QuoteAttr := Session.io.ScreenInfo[2].A; FindLastLine; + + If LastLine > 1 Then + For Count := 1 to LastLine Do + If Session.Msgs.IsQuotedText(GetLineText(Count)) Then + ANSI.SetLineColor(QuoteAttr, Count) + Else + ANSI.SetLineColor(CurAttr, Count); End; DrawPage(1, WinSize, False); @@ -550,7 +559,7 @@ Var JoinBuf : Array[1..255] of RecAnsiBufferChar; Begin If CurX <= CurLength Then Begin - Move (ANSI.Data[CurLine][CurX + 1], ANSI.Data[CurLine][CurX], (CurLength - 1) * SizeOf(RecAnsiBufferChar)); + Move (ANSI.Data[CurLine][CurX + 1], ANSI.Data[CurLine][CurX], (CurLength - CurX + 1) * SizeOf(RecAnsiBufferChar)); ANSI.Data[CurLine][CurLength].Ch := #0; diff --git a/mystic/mutil.ini b/mystic/mutil.ini index 8858971..98431c0 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 ; ========================================================================== @@ -385,10 +385,6 @@ max_msgs = 500 max_msgs_age = 365 - ; default base type when creating (if unknown) 0=jam 1=squish - - base_format = 0 - ; network type (0=local, 1=echomail, 2=newsgroup 3=netmail) net_type = 1 @@ -410,19 +406,39 @@ ; If you want to save duplicated / bad messages to a certain message ; base, then set this value to the *INDEX* of the message base (viewable - ; at the top of the editor). Otherwise, set this value to -1 or leave it - ; commented out and they will be ignored + ; at the top of the msgbase editor). Otherwise, set this value to -1 + ; or leave it commented out and they will be ignored. - dupe_msg_index = 5 + ; dupe_msg_index = 5 - ; Set this value to true if you'd like to auto create message bases when - ; an incoming message is found for an area that does not exist. MUTIL - ; takes default values from the Import_MessageBase function and the system - ; configuration, then uses attributes from the message itself in order to - ; build a new message base profile. + ; If you want MUTIL to auto create message bases when it finds an + ; echomail message for a non-existing base, set this value to true + ; and use the options below to define the default values auto_create = true + ; base format 0=jam 1=squish + + base_format = 0 + acs_list = + acs_read = + acs_post = + acs_news = + acs_sysop = s255 + header = msghead + read_template = ansimrd + index_template = ansimlst + max_msgs = 500 + max_msgs_age = 365 + + ; true/false type values 0=false 1=true (newscan 2=forced) + + use_autosig = 1 + use_realname = 0 + kill_kludge = 1 + new_scan = 1 + qwk_scan = 1 + ; ========================================================================== ; ========================================================================== ; ========================================================================== diff --git a/mystic/mutil_echoimport.pas b/mystic/mutil_echoimport.pas index d686d36..f114183 100644 --- a/mystic/mutil_echoimport.pas +++ b/mystic/mutil_echoimport.pas @@ -203,19 +203,19 @@ Var MBase.ColOrigin := bbsConfig.ColorOrigin; MBase.ColKludge := bbsConfig.ColorKludge; MBase.Origin := bbsConfig.Origin; - MBase.BaseType := INI.ReadInteger(Header_IMPORTMB, 'base_type', 0); - MBase.ListACS := INI.ReadString(Header_IMPORTMB, 'acs_list', ''); - MBase.ReadACS := INI.ReadString(Header_IMPORTMB, 'acs_read', ''); - MBase.PostACS := INI.ReadString(Header_IMPORTMB, 'acs_post', ''); - MBase.NewsACS := INI.ReadString(Header_IMPORTMB, 'acs_news', ''); - MBase.SysopACS := INI.ReadString(Header_IMPORTMB, 'acs_sysop', 's255'); - MBase.Header := INI.ReadString(Header_IMPORTMB, 'header', 'msghead'); - MBase.RTemplate := INI.ReadString(Header_IMPORTMB, 'read_template', 'ansimrd'); - MBase.ITemplate := INI.ReadString(Header_IMPORTMB, 'index_template', 'ansimlst'); - MBase.MaxMsgs := INI.ReadInteger(Header_IMPORTMB, 'max_msgs', 500); - MBase.MaxAge := INI.ReadInteger(Header_IMPORTMB, 'max_msgs_age', 365); - MBase.DefNScan := INI.ReadInteger(Header_IMPORTMB, 'new_scan', 1); - MBase.DefQScan := INI.ReadInteger(Header_IMPORTMB, 'qwk_scan', 1); + MBase.BaseType := INI.ReadInteger(Header_ECHOIMPORT, 'base_type', 0); + MBase.ListACS := INI.ReadString (Header_ECHOIMPORT, 'acs_list', ''); + MBase.ReadACS := INI.ReadString (Header_ECHOIMPORT, 'acs_read', ''); + MBase.PostACS := INI.ReadString (Header_ECHOIMPORT, 'acs_post', ''); + MBase.NewsACS := INI.ReadString (Header_ECHOIMPORT, 'acs_news', ''); + MBase.SysopACS := INI.ReadString (Header_ECHOIMPORT, 'acs_sysop', 's255'); + MBase.Header := INI.ReadString (Header_ECHOIMPORT, 'header', 'msghead'); + MBase.RTemplate := INI.ReadString (Header_ECHOIMPORT, 'read_template', 'ansimrd'); + MBase.ITemplate := INI.ReadString (Header_ECHOIMPORT, 'index_template', 'ansimlst'); + MBase.MaxMsgs := INI.ReadInteger(Header_ECHOIMPORT, 'max_msgs', 500); + MBase.MaxAge := INI.ReadInteger(Header_ECHOIMPORT, 'max_msgs_age', 365); + MBase.DefNScan := INI.ReadInteger(Header_ECHOIMPORT, 'new_scan', 1); + MBase.DefQScan := INI.ReadInteger(Header_ECHOIMPORT, 'qwk_scan', 1); MBase.NetAddr := 1; For Count := 1 to 30 Do @@ -224,13 +224,13 @@ Var Break; End; - If INI.ReadString(Header_IMPORTMB, 'use_autosig', '1') = '1' Then + If INI.ReadString(Header_ECHOIMPORT, 'use_autosig', '1') = '1' Then MBase.Flags := MBase.Flags OR MBAutoSigs; - If INI.ReadString(Header_IMPORTMB, 'use_realname', '0') = '1' Then + If INI.ReadString(Header_ECHOIMPORT, 'use_realname', '0') = '1' Then MBase.Flags := MBase.Flags OR MBRealNames; - If INI.ReadString(Header_IMPORTMB, 'kill_kludge', '1') = '1' Then + If INI.ReadString(Header_ECHOIMPORT, 'kill_kludge', '1') = '1' Then MBase.Flags := MBase.Flags OR MBKillKludge; // ADD DOWNLINK INFORMATION HERE INTO ECHONODES?? diff --git a/mystic/mutil_importmsgbase.pas b/mystic/mutil_importmsgbase.pas index 55b2515..6e77881 100644 --- a/mystic/mutil_importmsgbase.pas +++ b/mystic/mutil_importmsgbase.pas @@ -44,6 +44,7 @@ Begin MBase.Name := BaseName; MBase.QWKName := BaseName; MBase.NewsName := strReplace(BaseName, ' ', '.'); + MBase.EchoTag := BaseName; MBase.FileName := BaseName; MBase.Path := bbsConfig.MsgsPath; MBase.NetType := INI.ReadInteger(Header_IMPORTMB, 'net_type', 0); diff --git a/mystic/mutil_importna.pas b/mystic/mutil_importna.pas index 5ee064d..249fbd4 100644 --- a/mystic/mutil_importna.pas +++ b/mystic/mutil_importna.pas @@ -60,6 +60,7 @@ Begin MBase.Name := BaseName; MBase.QWKName := TagName; MBase.NewsName := strReplace(BaseName, ' ', '.'); + MBase.EchoTag := TagName; MBase.FileName := TagName; MBase.Path := bbsConfig.MsgsPath; MBase.NetType := 1; diff --git a/mystic/records.pas b/mystic/records.pas index 023b075..a88064d 100644 --- a/mystic/records.pas +++ b/mystic/records.pas @@ -96,7 +96,8 @@ Type ArcType : String[4]; MailType : Byte; binkHost : String[60]; - binkPort : Word; + NetType : Byte; + ProtType : Byte; binkTimeout : Word; binkBlock : Word; binkMD5 : Byte; @@ -114,7 +115,8 @@ Type InSize : Cardinal; OutFiles : Cardinal; OutSize : Cardinal; - Res : Array[1..512] of Byte; + binkPass : String[20]; + Res : Array[1..491] of Byte; End; RecSauceInfo = Packed Record diff --git a/mystic/todo.pas b/mystic/todo.pas index 3bd553d..997ea00 100644 --- a/mystic/todo.pas +++ b/mystic/todo.pas @@ -8,6 +8,7 @@ design elements/issues. BUGS AND POSSIBLE ISSUES ======================== +! DUPE database needs to limit itself based on configurable size ! GE option 32 (change def protocol) might be broken ! LBP menus arent scrolling correctly in Linux ! MUTIL FILESBBS import is not skipping FILES.BBS? @@ -29,6 +30,8 @@ BUGS AND POSSIBLE ISSUES FUTURE / IDEAS / WORK IN PROGRESS / NOTES ========================================= +- cut/paste needs to be added back into the FS editor +- QWK put/get per individual users via FTP - EXCLUDE from all files list. important. - Reply to echomail via netmail. - Msgbase flag for AKA matching or just rewrite netmail all together. diff --git a/mystic/whatsnew.txt b/mystic/whatsnew.txt index e83c3ce..9eb11e6 100644 --- a/mystic/whatsnew.txt +++ b/mystic/whatsnew.txt @@ -2902,16 +2902,16 @@ Configuration. + Added new Echomail node editor. This allows you to configure nodes which - you are going to exchange echomail from, either an uplink or downlink. + you are going to exchange echomail from, either an uplink or downlink. In + addition, you can view/edit the list of message bases configured for + export to that node. + Message bases now have a echomail TAG option which is intended to include - the bases's echomail tag from the .NA files. + the bases's echomail tag from .NA files. + Message bases now have an "Export To" option where up to 2 million - echomail nodes can be linked to each message base. - - + The echomail node editor now has an editor where message bases can be - list, linked, and unlinked from each configured node. + echomail nodes can be linked to each message base. This relationship with + nodes can also be edited from the Echomail node editor. ! Fixed a bug which would cause the file to be deleted if you tried to move it to the new file base. Mystic should check now and give an @@ -2936,24 +2936,54 @@ + Mystic will now attempt to perform AKA matching on the origin address of netmail messages. If you have a netmail base configured as the address of 1:111/111 but you send a Netmail to 911:111/111, Mystic will switch the - origin address to your 911 AKA if you have one configured in Network - addresses. Translation: Use one netmail base for many networks with - tossers like FastEcho. + origin address to your 911 AKA (if you have one configured in Network + addresses). + Message quoting will now indent itself by a single character to better facilitate separation from regular text. The text will wrap and reformat itself so no text should be lost. + + The full screen editor now shows a different text color for quoted text. + The attributes are defined in the template file (ansiedit.ans). The + attribute of |!1 is the standard text color, and the attribute of |!2 is + the quoted text color. + + If you change message base's storage filename or path, Mystic will now ask - you if you want to physically rename them on disk too (and of course it - will rename them if you say yes). + you if you want to physically rename them on disk too upon leaving the + base editor. - + MUTIL now has a full binkley-style echomail importer and exporter with a - bunch of features. It can autocreate new bases, perform unlimited dupe - checking, and store duplicate/badmsgs to name a few. + + MUTIL now has a full binkley-style echomail importer and exporter. It + can autocreate new bases, perform dupe checking, and push duplicate msgs + to their own base. All node configuration, echos, and export info comes + from within the new editor options with Mystic's configuration. - INSERT NEW SHIT HERE WHEN NOT DRUNK AND LAZY LOL + Please review MUTIL.INI for the two new added functions for import/export - + NEW FSE/BSO FTN TOSSER AND BINKP MAILER need to type up the changes - when done + The basic setup is this: + 0. Set your inbound and outbound directories in the System Paths. + + 1. Edit echomail message bases to set their ECHOTAG value (match + whatever they are from the .NA definitions). Make sure you don't + forget to set your origin address / base type! + + 2. Configure any nodes that you want to import/export echomail with + using the Echomail Node editor. + + 3. Link each message base to the node that you want to export messages + to. You can do this either by node (using Echomail Node editor) + or by attaching nodes to a specific message base (using the Message + base editor). + + 4. If you want to use a base for duplicate messages, see information + inside of MUTIL.INI + + 5. If you want to auto-create message bases when a new echobase is + found, see information inside of MUTIL.INI + + 6. Turn on importing/exporting in MUTIL.INI. + + 7. At your own risk: Delete FastEcho, GEcho, CrashMail, etc. :) + + ! Fixed a bug that could cause the user editor to crash directly after a + new install if you didn't create your SysOp account first.