home *** CD-ROM | disk | FTP | other *** search
/ Beijing Paradise BBS Backup / PARADISE.ISO / software / BBSDOORW / PXAPI11.ZIP / PXQTYPE.PAS < prev   
Pascal/Delphi Source File  |  1995-10-21  |  20KB  |  444 lines

  1. (*-------------------------------------------------------------------------*)
  2. (*  Santronics Software, Co.                                               *)
  3. (*  30034 SW 153 Ct.                                                       *)
  4. (*  Leisure City, FL  33033                                                *)
  5. (*                                                                         *)
  6. (*                   Platimum Xpress Remote Host System                    *)
  7. (*                           File Structures                               *)
  8. (*             (C) Copyright 1994-95, Santronics Software, Co              *)
  9. (*                                                                         *)
  10. (*  L I C E N S E                                                          *)
  11. (*                                                                         *)
  12. (*  You are hereby granted a license to use the structures for product     *)
  13. (*  development. These structures are own and copyrighted by Santronics    *)
  14. (*  software.  You are not allowed to modify these structures or use it    *)
  15. (*  to develop clones or competing products of Platinum Xpress.  You are   *)
  16. (*  allowed to use these structures for 3rd party development only.        *)
  17. (*-------------------------------------------------------------------------*)
  18. (* DATE       VERSION                                                      *)
  19. (* 10/20/95    1.1     Stable Structures                                   *)
  20. (*-------------------------------------------------------------------------*)
  21.  
  22. {$A-}
  23.  
  24. unit pxqtype;
  25.  
  26. uses dos;
  27.  
  28. Const
  29.     AutoPollFname  = 'PXPOLL.DAT';            (* Auto Poll                    *)
  30.     FileReqFname   = 'PXFREQ.DAT';            (* File Request data file       *)
  31.     FRQSessionFname= 'PXFRSC.DAT';            (* file req session control     *)
  32.     MagicFname     = 'PXMAGIC.DAT';           (* File Request Magic File      *)
  33.     AnnounceFname  = 'PXTICANN.DAT';          (* Tic Annoucements             *)
  34.  
  35.     ObMailFname    = 'PXOBMAIL.DAT';          (* Outbound Bundle database     *)
  36.     ObNetFname     = 'PXOBNET.DAT';           (* Outbound NetMail database    *)
  37.     ObQueueFname   = 'PXQUEUE.DAT';           (* Outbound Poll Queue database *)
  38.     ObAttachFname  = 'PXATTACH.DAT';          (* Outbound Attach Que database *)
  39.  
  40.     StatsFname     : pathstr = 'PXSTAT#.DAT'; (* statistics outbound          *)
  41.     PXCallLogFname = 'PXCALL.HIS';            (* Structured Call Log          *)
  42.  
  43. (************************************************************************
  44.  
  45. FILE SHAREING CONSIDERATIONS
  46.  
  47.    All files in Platinum Xpress are to be open in ReadWrite, DenyNone Mode.
  48.    The QUEUE files should be LOCKED prior to reading or writing.  In PX,
  49.    the first byte is used as the LOCK byte.  If this byte is LOCKED, no
  50.    access to the file should be made.  You should wait until it is
  51.    unlocked. Recommended wait time is 60 seconds.
  52.  
  53. PXOBMAIL.DAT - Outbound Bundle Database
  54.  
  55.    Holds the database of outbound files mail bundles for all nodes.
  56.  
  57.    When a connection is made with a system, a scan is performed on the
  58.    PXOBMAIL.DAT to see which if there are any node files to go out.
  59.  
  60.    Bundles files will be added to the Send (ObQueueFname) list if:
  61.  
  62.     - Not Already Sent, and
  63.     - Not in Transient (another node is currently sending it)
  64.     - Node number is equal to 0 or equal to current node.
  65.  
  66.    If a bundle is to be put into the send list, the record's _obLocked bit
  67.    is set and written back to disk.  This must be done by locking the first
  68.    byte of the file.  This prevents another mailer node from sending it.
  69.  
  70.    After the files are sent, the bundles are deleted and the record's
  71.    _obSent bit is set, time sent is set and _obLocked bit is set off.
  72.  
  73.    The utilities PXQEDIT, VIEWOUT can be used to view/manage the the
  74.    PXOBMAIL.DAT file.
  75.  
  76. PXOBNET.DAT    - Outbound Netmail
  77.  
  78.    Holds the database of outbound NETMAIL for all Fido nodes.  It basically
  79.    contains the "Headers" of the NETMAIL conferences (*.MSG and Wildcat).
  80.  
  81.    The usage logic is similar to the PXOBMAIL.DAT system.  When a call
  82.    comes in, a check is made in this file for any outbound netmail.
  83.  
  84.    The main difference is that outbound files (PKT and REQ files) are
  85.    created on the fly when someone calls or a poll is being mail.
  86.  
  87.    When the transfer is completed, PX will go directly back to the message
  88.    base to update the status files.
  89.  
  90. PXATTACH.DAT    - Outbound File Attaches
  91.  
  92.    Holds the database of outbound File Attaches.  Currently being used
  93.    for the TIC processor, but any process can add records to this file.
  94.  
  95.    The usage logic is similar to the PXOBMAIL.DAT system.  When a call
  96.    comes in, a check is made in this file for any outbound files.
  97.  
  98. PXQUEUE.DAT     - Poll QUEUE Database
  99.  
  100.    This file contains the nodes to poll. PX will cycle thru this file to
  101.    determine which node to poll.  The queue logic is simple. Each record
  102.    has a current variable which is the file position of the record. The
  103.    next poll is taken from this previous record.
  104.  
  105. -------------------------------------------------------------------------*)
  106.  
  107. (* Transport Flags (_obXXXXXXX)
  108.  
  109.    These flags tell the outbound system how to send, what to do during a
  110.    call, and what to do after a call. These flags are defined and used to
  111.    AUGMENT the FidoFlag Field in TMSGREC and the ATTR field in *.MSG
  112.    headers.
  113.  
  114.    THESE MUST STAY AS A WORD SIZE (16 BITS).  It is only shown as a 32 bit
  115.    because they are used as a LOW word for some internal LONGINT storage
  116.    done in PX during the scanner.
  117.  
  118.    We didn't use the standard FTSC for WILDCAT because we needed more bits
  119.    to handle the kludge bits (Immed, KillFile, etc). The private bit and
  120.    receipt bits are already available in TMSGREC so we started with a clean
  121.    slate.  FTSC flags are used for *.MSG messages.
  122.  
  123.    NETMAIL and ECHO messages
  124.    -------------------------
  125.  
  126.    When PX is importing MAIL, it will set the PX the _ObImported bit in
  127.    FidoFlags, the mfEchoFlag bit in mFlags, and set the field NETWORK to
  128.    "FIDO" to help in the determining of what came in versus what is going
  129.    out.
  130.  
  131.    For scanning echo mail, PXECHO will ignore the _ObImported bit when
  132.    scanning for mail.  During a scan, if the Network field is set to "FIDO"
  133.    or the mfEchoFlag bit is set, the mail is skipped.  Those are the only
  134.    two conditions to skip echo mail.
  135.  
  136.    For netmail scanning, PX will ignore/skip netmail that has the mfDeleted
  137.    or mfSent bits in Mflags or the _oblocked or _obImported bits in
  138.    FidoFlags
  139.  
  140.    There is only one condition where PX will scan for new netmail and
  141.    ignore the Imported Bit - when mail is being forwarded.  In this
  142.    case, PX will not set the import bit.
  143.  
  144.    All ECHO Utilities must clear the Wildcat mfEchoFlag and the NETWORK
  145.    field must not be "FIDO" if they want the mail to go OUT.
  146.  
  147.    Note, this is the opposite of the "Local" bit concept used in the Fido
  148.    World. Every fido BBS will set the FTS Local bit as done in *.MSG and in
  149.    some BBSes.  But since Wildcat is not setting this bit, including
  150.    WildMail, we need to allow for these utilities to create mail PX will
  151.    scan.  So make sure the bit is cleared.  By having it cleared, it will
  152.    help tell utilities mail was created on-line or using an off-line mail
  153.    system.
  154.  
  155.    Also:
  156.  
  157.    _ObCrash       - Send mail during Next available COST/EVENT slot
  158.    _ObImmed       - Send it now, immediate, No rules.
  159.  
  160.    If _obLocked is enable, please ignore the message. Do not allow editing.
  161.    Other node is handling message.
  162.  
  163. *)
  164.  
  165. (*************************************************************************)
  166.  
  167. Const                                       (* attributes for obFlags     *)
  168.     _obHold       = $00000001;              (* Hold if you make the call  *)
  169.     _obImmed      = $00000002;              (* Call immediately           *)
  170.     _obDirect     = $00000004;              (* Direct, do not route       *)
  171.     _obImported   = $00000008;              (* TMSG. Imported by PX       *)
  172.     _obKillMsg    = $00000010;              (* Kill msg when Sent         *)
  173.     _obKillFile   = $00000020;              (* Kill file when sent        *)
  174.     _obLocked     = $00000040;              (* In Used by mailer node     *)
  175.     _obFileReq    = $00000080;              (* File Request->Subject Line *)
  176.     _obFileAtt    = $00000100;              (* File Attach-> Subject Line *)
  177.     _obFileUReq   = $00000200;              (* Update File Request        *)
  178.     _obCrash      = $00000400;              (* Opposite of Hold           *)
  179.     _obSent       = $00000800;              (* File Sent                  *)
  180.     _obForward    = $00001000;              (* In transient (forward mail)*)
  181.     _obOrphan     = $00002000;              (* Lost message/File          *)
  182.     _obTruncate   = $00004000;              (* Truncate                   *)
  183.     _obReserved   = $00008000;              (* Reserved                   *)
  184.  
  185. Type                                        (* PXOBMAIL.DAT               *)
  186.     BundleRecType =
  187.     record
  188.       Status        : longint;                 (* -1, deleted               *)
  189.       PktName       : string[12];              (* *.??x file                *)
  190.       Address       : AddressType;             (* Fido Address              *)
  191.       EntryDate     : Longint;                 (* MSDOS 4 byte stamp        *)
  192.       obFlags       : longint;                 (* ob flags                  *)
  193.       FileSize      : Longint;
  194.       SentDate      : Longint;
  195.       TaskNumber    : Word;                    (* 0 or the task number      *)
  196.       RouteAddress  : AddressType;             (* not used                  *)
  197.       extra         : array[1..82] of byte;
  198.     end;
  199.  
  200. (*************************************************************************)
  201.  
  202. Type                                         (* PXOBNET.DAT               *)
  203.     NetRecType = Record
  204.       Status       : Longint;
  205.       MsgNum       : Longint;                (* *.MSG message number      *)
  206.       obFlags      : Longint;                (* ob flags                  *)
  207.       DAddress     : AddressType;            (* destination address       *)
  208.       OAddress     : AddressType;            (* Originating address       *)
  209.       DateSent     : Longint;                (* MSDOS 4 byte stamp        *)
  210.       Files        : String[72];             (* Files for request/attach  *)
  211.       WCNetmail    : Boolean;                (* if true, MsgNum is MsgNum *)
  212.                                              (* Must be careful if renumbering
  213.                                                 takes place during existence
  214.                                              *)
  215.       TaskNumber   : Word;
  216.       RouteAddress : AddressType;
  217.       PktName      : Pathstr;                (* Outbound PKT fname name    *)
  218.       extra        : array[1..50] of byte;
  219.     end;
  220.  
  221. (*************************************************************************)
  222.  
  223.                                          (* flags for PXQUEUE.DAT  *)
  224. Const                                    (* attributes for prFlags *)
  225.     _pqLocked     =  $00000001;          (* currently active       *)
  226.     _pqSent       =  $00000002;          (* already sent           *)
  227.     _pqBadNode    =  $00000004;          (* not in nodelist        *)
  228.     _pqMaxTries   =  $00000008;          (* too many attempts      *)
  229.     _pqBadPwd     =  $00000010;          (* Bad Password           *)
  230.     _pqPriority   =  $00000020;          (* High Priority Poll     *)
  231.  
  232. Type
  233.     QueueRecType =                       (* PXQUEUE.DAT                 *)
  234.     Record
  235.       status        : Longint;           (* record status -1 if deleted    *)
  236.       prflags       : Longint;           (* Poll Rec Flags                 *)
  237.       _Current      : Word;              (* OBSOLETE file position         *)
  238.       Task          : Word;              (* Node Handing it                *)
  239.       EventTag      : Word;              (* Event to honor                 *)
  240.       Address       : AddressType;       (* Address to call                *)
  241.       DateCreated   : Longint;           (* Date Poll Record Created       *)
  242.       DateSent      : Longint;           (* Successfully Sent              *)
  243.       LastPolldate  : LongInt;           (* Last Poll Attempt              *)
  244.       Attempts      : Word;              (* Attempts                       *)
  245.       BusyCnt       : Word;              (* Busy                           *)
  246.       NoCarrierCnt  : Word;              (* No Carrier                     *)
  247.       TimeOutCnt    : Word;              (* time out waiting               *)
  248.       DroppedCnt    : Word;              (* remote dropped                 *)
  249.       BadHSCnt      : Word;              (* bad handshake                  *)
  250.       Minutes       : Word;              (* Total Connect Time             *)
  251.       SendMail      : Boolean;           (* Send Mail On Hold              *)
  252.       CostToCall    : Integer;           (* From NodeList                  *)
  253.       PrevDial      : Boolean;           (* Previous dial. For Round Robin *)
  254.       Current       : Longint;           (* File Position                  *)
  255.       Extra         : Array[1..42] of Byte;
  256.     end;
  257.  
  258. (*************************************************************************)
  259.  
  260. (*
  261.    The attach queue can be used by many things.
  262.  
  263.      - Tic Processor
  264. *)
  265.  
  266. Type _AttachQueueType =                                    (* PXATTACH.DAT *)
  267.      record
  268.        status       : longint;
  269.        Daddress     : AddressType;               (* Destination Address   *)
  270.        obFlags      : Longint;                   (* outbound flags        *)
  271.        DateCreated  : Longint;
  272.        DateSent     : Longint;
  273.        files        : string;                    (* List of files to send *)
  274.        TaskNumber   : Word;                      (* 0 or task number      *)
  275.        AppTag       : String[3];                 (* TIC for tic processor *)
  276.        RouteAddress : AddressType;               (* not used              *)
  277.        Extra        : array[1..86] of char;
  278.      end;
  279.  
  280. (*************************************************************************)
  281.  
  282. Type                                                      (* PXSTATS.DAT *)
  283.      _StatRecType =
  284.      record
  285.         InB, OutB, Cost, Extra : Longint;
  286.      end;
  287.      _StatType =
  288.      record
  289.        Total : _StatRecType;
  290.        Fido  : _StatRecType;
  291.        Fax   : _StatRecType;
  292.        Uucp  : _StatRecType;
  293.        Cis   : _StatRecType;
  294.        Human : _StatRecType;
  295.        extra : array[1..10] of _StatRecType;
  296.      end;
  297.  
  298. (************************************************************  CALLER LOG *)
  299.  
  300. type                          (* Date Routines from Turbo Power Software *)
  301.   Date = Word;
  302.   Time = LongInt;
  303.   DateTimeRec = record
  304.     D : Date;
  305.     T : Time;
  306.   end;
  307.  
  308. Type AddressType =     record
  309.                          zone,
  310.                          net,
  311.                          node,
  312.                          point   : word;
  313.                        end;
  314.  
  315. Type FidoAddressType = record
  316.                          zone,
  317.                          net,
  318.                          node,
  319.                          point   : word;
  320.                          domain  : string[25];
  321.                        end;
  322.  
  323.  
  324.  
  325. Type
  326.       EntryKindType = (HumanCall, FidoCall, InternetCall, FaxCall);
  327.  
  328.                                                   (* PXCallLogFname  *)
  329. Type  _CallLogType =                              (* PXCALL.HIS      *)
  330.       record
  331.        Status      : Longint;
  332.        Header      : word;                        (* $FFFF if header *)
  333.        LastEntry   : DatetimeRec;
  334.        TaskNumber  : Word;
  335.        EntryKind   : EntryKindType;
  336.        case integer of
  337.          0 : (                                    (* Not used        *)
  338.               SysopName      : String[35];
  339.               Address        : AddressType;
  340.               FidoTimeCalled : DateTimeRec;
  341.               YouCalled      : Boolean;
  342.              );
  343.          1 : (
  344.               Name           : String[35];
  345.               from           : String[30];
  346.               UserId         : Longint;
  347.               LoginTime      : DateTimeRec;
  348.               LogoffTime     : DateTimeRec;
  349.               BaudRate       : Longint;
  350.               Extra          : array[1..46] of byte;
  351.               );
  352.       end;
  353.  
  354. (************************************************************  AUTO POLL *)
  355.  
  356. Type PollKindType = (pkFido,pkFax,pkUUCP);
  357.  
  358. Const
  359.       PollKindStr : Array[PollKindType] of string[15] =
  360.       (
  361.         'Poll Fido Node',
  362.         'Call Fax Number',
  363.         'Call Internet'
  364.       );
  365.  
  366. Type _PollRecType = record
  367.         status       : longint;
  368.         inActive     : boolean;
  369.         PollKind     : PollKindType;
  370.         Address      : AddressType;             (* fido address      *)
  371.         PhoneNumber  : String[30];              (* fax phone number  *)
  372.         InetProvider : String[30];              (* Internet provider *)
  373.         PollEvent    : Word;
  374.         TaskNumber   : Word;
  375.         SendMail     : Boolean;
  376.         Priority     : Boolean;                 (* Priority, No Round Robin*)
  377.         extra        : array[1..48] of char;
  378.      end;
  379.  
  380. (************************************************ FREQ LIST AND MAGIC LIST *)
  381.  
  382. type _FreqListRecType = record                        (* PXFREQ.DAT  *)
  383.         status       : longint;
  384.         InActive     : Boolean;
  385.         Secured      : Boolean;
  386.         PXonly       : Boolean;
  387.         AddressSpec  : String[25];                    (* Mask Address *)
  388.         password     : string[10];
  389.         Confnum      : Word;
  390.         FileSpec     : String;
  391.      end;
  392.  
  393. type _MagicListRecType = record            (* PXMAGIC.DAT          *)
  394.         status       : longint;            (* -1 for deleted       *)
  395.         InActive     : Boolean;            (* true for inactive    *)
  396.         Secured      : Boolean;            (* Secured Session Only *)
  397.         PXonly       : Boolean;            (* Only PX Connects     *)
  398.         AddressSpec  : String[25];         (* Mask Address         *)
  399.         password     : string[10];         (* File Password        *)
  400.         MagicName    : String[15];         (* Magic Name           *)
  401.         FileSpec     : String;             (* Files(s), Spec       *)
  402.      end;
  403.  
  404.  
  405. Type       (* FRQSessionFname= 'PXFRSC.DAT';  file req session control     *)
  406.   _FreqSessionType = Record
  407.     Status           : Integer;
  408.     Inactive         : Integer;
  409.     Address          : AddressType;
  410.     LastSessionDate  : Date;
  411.     TotalFiles       : Longint;
  412.     TotalBytes       : Longint;
  413.     DayFiles         : Longint;
  414.     DayBytes         : Longint;
  415.     SessionBytes     : Longint;
  416.     SessionFiles     : Longint;
  417.     Extra            : Array[1..50] of byte;
  418.   end;
  419.  
  420. type _TicAnnounceType = record                       (* PXTICANN.DAT *)
  421.         status        : longint;
  422.         InActive      : Boolean;
  423.         EchoTag       : String[50];
  424.         ConfNumber    : Word;
  425.  
  426.         IgnoreMsgAnn  : Boolean;                      (* ignore MsgAnnounce *)
  427.         Address       : Addresstype;
  428.         ToWhom        : String[70];
  429.         FromWhom      : String[70];
  430.         Subject       : String[70];
  431.         Flags         : Word;
  432.         TemplateFname : Pathstr;                      (* Only 12 bytes used *)
  433.         AutoPostMail  : Boolean;
  434.         FooterFname   : String[12];
  435.  
  436.         AkaAddress    : AddressType;
  437.         wcPrivate     : Boolean;
  438.  
  439.         Extra         : array[1..77] of byte;
  440.      end;
  441.  
  442. implementation
  443. end.
  444.