{ Struktur der BBToss Area- und Link-Daten v 2.08}

{ Die Dateien (*.BBT) sind prinzipiell wie folgt aufgebaut: }

{   +--------------------+
    | DATEIHEADER-RECORD |  Header vom Typ signrec
    +--------------------+
    | Datensaetze ...    |
    |             ...    |
    +--------------------+
    | DATEIHEADER-RECORD |  Wiederholung des Header-Records vom Anfang
    +--------------------+
}

Const

  DataRevisionLevel = $0008;   {ab v2.08 *.BBT Dateien Data-Revisionlevel}
                                  {v2.07á0429}
{Configfile-Namen}
  bbtosscfg      = 'bbtoss.cfg';   {Grundeinstellungen, Pfade und Flags}

  bbtlinkcfg     = 'bbtlink.bbt';  {Configdatei der Linkdaten (binr)}
  bbtareacfg     = 'bbtarea.bbt';  {Configdatei der Areadaten (binr)}

  bbtlinkini     = 'bbtlink.ini';  {Linkdaten als Textdatei}
  bbtareaini     = 'bbtarea.ini';  {Areadaten als Textdatei}
  bbtgroupini    = 'bbtgroup.ini'; {neue Group-Cfg, ersetzt BBTGROUP.CFG}

  bbtakacfg      = 'bbtaka.cfg';   {eingene Akas}
  bbtzipcfg      = 'bbtzip.cfg';   {Packer Pfade und Commandlines}
  bbtzipini      = 'bbtzip.ini';   {Packereinstellungen ersetzt bbtzip.cfg
                                    ab v2.06á0613}
  bbtaliascfg    = 'bbtalias.cfg'; {Aliasnamen}
  bbtuplinkcfg   = 'bbtuplnk.cfg'; {Uplink-Einstellungen}
  bbtuplinkdat   = 'bbtuplnk.bbt';

  bbtroutecfg    = 'bbtroute.cfg'; {Netmail Routing-Einstellungen}

  bbtcrcfile     = 'bbtdupe.bbt';  {CRC Daten fr Dupe-Check}
  bbtsayerrfile  = 'bbsayerr.bbt'; {Textfile fr Errormsgs BTSayerr}
  bbtlockfile    = 'bbtoss.bsy';   {wird bei Progende gelscht}
  bbtimportlog   = 'import.log';   {Echotoss.log der importierten Echomails,
                                    wird bei jedem Tosslauf neu erstellt,
                                    - Default, in bbtoss.cfg berschreibbar}

{----- Declarationen fr Links und Link-Record---------------------}
{Link Flag-Definitionen fr Link-Record}
Link_activ        = $00000001; {link ist aktiv}
Link_checkpktpwd  = $00000002; {checkpktpwd}
Link_sayerror     = $00000004; {automatische Nachricht bei Fehlern}
Link_autocreate   = $00000008; {berechtigt zum anlegen neuer Areas}
Link_forwardmgr   = $00000010; {Areamgr Requests forwarded zum uplink}
Link_packnetmail  = $00000020; {netmail mit einpacken}
Link_packholdnet  = $00000040; {netmail mit Hold-Status einpacken}
Link_nodailyzip   = $00000080; {Arcmail auffllen, nicht tglich neue Endung}
Link_autoconnect  = $00000100; {link zu neuen Areas automatisch connecten}
Link_notify       = $00000200; {send Statusmsgs}
Link_fattachok    = $00000400; {link darf f'attach Msgs schicken}
Link_mgrpwdchange = $00000800; {link darf per Areamgr Passwort aendern}
Link_areainfo     = $00001000; {link bekommt info bei neuen Areas seiner Gruppe}
                               {     wenn area per autocreate eingerichtet}
Link_arcmail060   = $00002000; {Arc mail packets entsprechend arcmail 0.60 Standard}

{----- Declarationen fr Areas und Area-Record----------------------}
{Arc-Mail Status und AntwortmsgStatus Verwendung in Link-Record}
mailstatus_normal =  0;  {arcmail_status = linkrec.mailstatus and $0F}
mailstatus_hold   =  1;
mailstatus_direct =  2;
mailstatus_crash  =  4;

{mgrmsg_normal  =  0;  {mgrmail_staus = linkrec.mailstatus and $F0}
{mgrmsg_hold    =$10;
 mgrmsg_direct  =$20;
 mgrmsg_crash   =$40;}

{Area Flags-Definitionen}
Area_killseenby  = $00000001; {seen-by zeilen lschen  }
Area_killpath    = $00000002; {path-zeile zurcksetzen }
Area_resetscanaka= $00000004; {beim scan immer AreaAka verwenden + Msgid update}
Area_chkaka      = $00000008; {prfe Absender-Aka jeder Msg}
Area_passive     = $00000010; {Area temporr passiv    }
Area_importseenby= $00000020; {import seenby in msgbase}
Area_importpath  = $00000040; {import path in MsgBase  }
Area_excludebbs  = $00000080; {nicht in Box exportieren}
Area_Pflichtarea = $00000100; {abmelden nicht mglich  }

type  SignStr = array[1..10] of char;  {Keyword in SignRec}

const AreaSign   : SignStr = 'BBTAREACFG';
      LinkSign   : SignStr = 'BBTLINKCFG';
      GroupSign  : SignStr = 'BBTGROUP  ';
      TosserSign : SignStr = 'BBTOSSGLOB';
      UplinkSign : SignStr = 'BBTUPLINKS';
      LngSign    : SignStr = 'BBTOSSLANG';

type SignRec = record     {Vorspann in Bit-Cfg Files}
        Sign : SignStr;   {bbtarea.bbt & bbtlink.bbt usw.}
        Rev  : SmallWord; {SmallWord = 2 Byte Word (16Bit), Datarevision}
        Count: SmallWord; {Anzahl folgender Datenstze}
        end;

{String sind im Turbo Pascal Format, also LngenByte+x-Zeichen}
{SmallWord = 16 Bit Word ohne Vorzeichen}
String60 = String[60];
String79 = String[79];

{
aktuelle Definitionen, in anderer Unit declariert ....

Addrtype = record
   Zone,
   Net,
   Node,
   Point : Word;
   end;
}

{verwendete Zeichen fr Packer -> LinkFileRec.Zipper}
{      Z = ZIP     }
{      A = ARC     }
{      L = LHA/LZH }
{      J = ARJ     }
{      S = SQZ     }
{      R = RAR     }
{      H = HYP     }
{      O = ZOO     }
{      U = UC2     }

{ Structur fr BBTLINK.BBT}
LinkFileRec = Record
   SysOp   : String[40];   {Sysop-Name}
   NodeNr  : Addrtype;
   UseAka  : Addrtype;     {Absender Aka fr PKT-Files}
   PktPwd  : String[9];    {Packet Password}
   MgrPwd  : String[15];   {Areamgr Password}
   Level   : SmallWord;    {Level des Links}
   Zipper  : Char;         {Packer fr AcrMails Z=Zip J=ARJ A=ARC L=LHA...}
   Group   : String[15];   {Buchstabe der angeschlossenen Gruppen A..Z,a..z,
                            0..9, *=alle}
   Mailstatus: Byte;       {normal hold direct crash..siehe arcmail_xxx}
                           {Arcmail = Mailstatus and $F, Msg = mailstatus and $F0}
   Capability: SmallWord;  {Packetformat, Type 2 type 2+ usw. (aktuell not used)}
   Flags   : LongInt;      {Link-Flags, siehe Link_xxxx Konstanten}
   Flow    : LongInt;      {Anzahl gesendeter Echomails (aktuell not used)}
   FlowKB  : LongInt;      {Anzahl KB gesendeter Echomails (uncomprimiert)}
   Comment : String[40];   {Kommentar}
   end;

{
Aufbau Area-Datei BBTAREA.BBT
   signrec
      areafilerec
        array [1..areafilerec.storedlinks] of addrtype; -> variable Lnge
      areafilerec
        array [1..areafilerec.storedlinks] of addrtype;
      ...
        ...
      ...
        ...
   signrec

{verwendete Zeichen fr Messagebasetype -> AreaFileRec.Basetyp}
{   E = EzyCom              }
{   H = Hudson              }
{   J = JAM                 }
{   N = Fido Netmail *.MSG  }
{   S = Squish              }
{   P = Passthrough         }

{verwendete Zeichen fr Area-Typ -> AreaFileRec.Typ}
{   B = Badmail Area                  }
{   D = Dupemail Area                 }
{   E = Echo Area                     }
{   L = lokales Area (also ohne Links)}
{   N = Netmail                       }
{   * = neu bestellt per Uplinkmgr    }

{ Structur BBTAREA.BBT}
AreaFileRec = Record
   TagName    : String60;  {Echo-Area Name}
   Nr         : SmallWord;      {Nr. des Messagearea (in der Mailbox)}
   MPath      : String79;  {Msgbasename, bei Hudson '' (muá mit \ enden)}
   BaseTyp    : char;      {Msg-Basetype  J=Jam H=Hudson S=Squish usw.}
   Group      : char;      {Gruppe des Areas  'A'..'Z','a'..z','0'..'9','*'}
   Typ        : char;      {E=Echo L=Lokal B=Bad D=Dupe}
   MainAka    : addrtype;  {eigene Aka fr das Area}
   UpLink     : addrtype;  {Aka des Uplinks des Areas * not activ *}
                           {neu in Datarevisionlevel 8}
   Flags      : LongInt;   {Area-Flags}
   WriteLevel : SmallWord; {Schreiblevel }
   ReadLevel  : SmallWord; {Lese/Bestell-Level}
   MaxMsgs    : SmallWord; {max Anzahl Msgs fr Clean}
   MinMsgs    : SmallWord; {min Anzahl Msgs fr Clean}
   DaysOld    : SmallWord; {Anzahl Tage fr Clean}
   DaysRcvd   : SmallWord; {Anzahl Tage fr Clean}
   Flow       : LongInt;   {Anzahl verarbeiteter Msgs seit StatDate}
   TodayFlow  : LongInt;   {Anzahl heute verarbeiteter Msgs}
   Desc       : String60;  {Beschreibung fr Area}
   DOrigin    : String60;  {Origin Zeile}
   StatDate   : LongInt;   {StatistikDate (Julian)}
   RuleFile   : String79;  {Name der Arearule Datei}
   StoredLinks: SmallWord; {anzahl aktuell angeschlossener Links}
{ gefolgt von   Storedlinks * Size(Addrtype)  Bytes, pro angeschlossenem
  Link eine Aka (= 8 Byte)}
   end;

{ Structur BBTGROUP.BBT}
PGroupRec = ^GroupRec;
GroupRec = record
   Tag         : char;      {Gruppen Kennbuchstabe (fr externe Progs)}
   Desc        : String;    {Beschreibung}
   Uplink      : addrtype;  {Uplink-Aka}
   AreaBaseTyp : char;      {Areabasetyp fr autom. anlegen}
   Areapath    : String;    {Verzeichnis fr autom. erzeugte Areas}
   Startarea   : SmallWord; {freie Areanummer suchen ab...}
   RulePath    : String79;  {Verzeichnis der Rule-Text-Files}
   StatArea    : String60;  {Area-Tag fr Tagesstatistik}
   end;

{ Structur BBTOSS.BBT}
tosserrec = record
   RegName         : String[80]; {registrier Daten}
   RegKey          : String[15];

{Arbeits-Pfade  aus *.cfg Textfile}
   InboundDir      : String79; {secure inbound path}
   UnsecinboundDir : String79; {unsecure inbound path}
   LocalInboundDir : String79; {local inbound path, toss ohne check}
   TmpInboundDir   : String79; {temporres inbound, Entpackdir}

   OutBoundDir     : String79; {outbound fr ARCMail-Archive (und pkts)}
   TmpOutboundDir  : String79; {tmpoutbound fr PKT an downlink}

   MsgDir          : String79; {Netmail-Folder *.MSG}
   HMBDir          : String79; {Hudson Path}
   EzymsgDir       : String79; {pfad zur Ezycom Messagebase}
   BBTWorkDir      : String79; {Arbeitspfad fr temporre Files}
   LogPath         : String79; {Logdateipath}
   SemaDir         : String79; {semaphoredir fr Mailer}
   EchotossLog     : String79; {Echotoss.log file fr scan}
   JamLog          : String79; {Echomail.jam und Netmail.jam Dir fr scan}
   ImportLog       : String79; {Echotoss.log der getossten echomails}

   MailerDir       : String79; {Haupdir des Mailers}
   BoxDir          : String79; {Haupdir der Box}
   PackerDir       : String79; {Default Pfad zu den Packern}

   DupeMax         : SmallWord; {Anzahl duperecords [not used]}
   HoldDays        : SmallWord; {Arcmail Alter (Tage) um Link auf HOLD zu setzen}
   DupeDays        : SmallWord; {Msg-Alter in Tagen wo sie immer als Bad gilt}
   MaxTime         : SmallWord; {maximale Tossdauer in Minuten}

   Flags           : LongInt;   {Tosserflags}

   Mailer          : SmallWord; {Kennung fr Mailertyp}
   Mailbox         : SmallWord; {Kennung fr Mailbox}

   DebugMode       : Boolean;   {Debugmodus, jeden Fehler ausgeben}
   LogLevel        : SmallWord;
   Nozip           : Boolean;   {nicht sofort beim tossen zippen sondern per ZIP-Befehl}
   tmaxfilesopen   : SmallWord; {maximal gleichzeitig zu ffnende Files}
   MemavailLimit   : SmallWord; {memavail minwert bei dem gespeichert wird}
   MaxpktfileSize  : LongInt ;  {in Byte}
   MaxzipfileSize  : LongInt ;  {Arcmail-Size in Byte}
   Mindiskspace    : LongInt ;  {min. freier Plattenplatz}
   end;
