Annotation of sbbs/src/sbbs3/sbbsecho.h, revision 1.1.1.2

1.1       root        1: /* sbbsecho.h */
                      2: 
                      3: /* Synchronet FidoNet Echomail tosser/scanner/areafix program */
                      4: 
1.1.1.2 ! root        5: /* $Id: sbbsecho.h,v 1.14 2009/01/15 08:02:29 rswindell Exp $ */
1.1       root        6: 
                      7: /****************************************************************************
                      8:  * @format.tab-size 4          (Plain Text/Source Code File Header)                    *
                      9:  * @format.use-tabs true       (see http://www.synchro.net/ptsc_hdr.html)              *
                     10:  *                                                                                                                                                     *
1.1.1.2 ! root       11:  * Copyright 2009 Rob Swindell - http://www.synchro.net/copyright.html         *
1.1       root       12:  *                                                                                                                                                     *
                     13:  * This program is free software; you can redistribute it and/or                       *
                     14:  * modify it under the terms of the GNU General Public License                         *
                     15:  * as published by the Free Software Foundation; either version 2                      *
                     16:  * of the License, or (at your option) any later version.                                      *
                     17:  * See the GNU General Public License for more details: gpl.txt or                     *
                     18:  * http://www.fsf.org/copyleft/gpl.html                                                                                *
                     19:  *                                                                                                                                                     *
                     20:  * Anonymous FTP access to the most recent released source is available at     *
                     21:  * ftp://vert.synchro.net, ftp://cvs.synchro.net and ftp://ftp.synchro.net     *
                     22:  *                                                                                                                                                     *
                     23:  * Anonymous CVS access to the development source and modification history     *
                     24:  * is available at cvs.synchro.net:/cvsroot/sbbs, example:                                     *
                     25:  * cvs -d :pserver:[email protected]:/cvsroot/sbbs login                       *
                     26:  *     (just hit return, no password is necessary)                                                     *
                     27:  * cvs -d :pserver:[email protected]:/cvsroot/sbbs checkout src                *
                     28:  *                                                                                                                                                     *
                     29:  * For Synchronet coding style and modification guidelines, see                                *
                     30:  * http://www.synchro.net/source.html                                                                          *
                     31:  *                                                                                                                                                     *
                     32:  * You are encouraged to submit any modifications (preferably in Unix diff     *
                     33:  * format) via e-mail to [email protected]                                                                      *
                     34:  *                                                                                                                                                     *
                     35:  * Note: If this box doesn't appear square, then you need to fix your tabs.    *
                     36:  ****************************************************************************/
                     37: 
                     38: /* Portions written by Allen Christiansen 1994-1996                                            */
                     39: 
1.1.1.2 ! root       40: #define SBBSECHO_VER "2.12"
1.1       root       41: 
                     42: #define IMPORT_NETMAIL  (1L<<0)
                     43: #define IMPORT_PACKETS (1L<<1)
                     44: #define IMPORT_ECHOMAIL (1L<<2)
                     45: #define EXPORT_ECHOMAIL (1L<<3)
                     46: #define DELETE_NETMAIL (1L<<4)
                     47: #define DELETE_PACKETS (1L<<5)
                     48: #define STORE_SEENBY   (1L<<6)                 /* Store SEEN-BYs in SMB */
                     49: #define STORE_PATH             (1L<<7)                 /* Store PATHs in SMB */
                     50: #define STORE_KLUDGE   (1L<<8)                 /* Store unknown kludges in SMB */
                     51: #define IGNORE_MSGPTRS (1L<<9)
                     52: #define UPDATE_MSGPTRS (1L<<10)
                     53: #define LEAVE_MSGPTRS  (1L<<11)
                     54: #define STRIP_LF               (1L<<12)                /* Stripl line-feeds from outgoing messages */
                     55: #define ASCII_ONLY             (1L<<13)
                     56: #define LOGFILE                (1L<<14)
                     57: #define REPORT                 (1L<<15)
                     58: #define EXPORT_ALL             (1L<<16)
                     59: #define UNKNOWN_NETMAIL (1L<<17)
                     60: #define IGNORE_ADDRESS (1L<<18)
                     61: #define IGNORE_RECV    (1L<<19)
                     62: #define CONVERT_TEAR   (1L<<20)
                     63: #define IMPORT_PRIVATE (1L<<21)
                     64: #define LOCAL_NETMAIL  (1L<<22)
                     65: #define NOTIFY_RECEIPT (1L<<23)
                     66: #define FLO_MAILER             (1L<<24)                /* Binkley .FLO style mailer */
                     67: #define PACK_NETMAIL   (1L<<25)                /* Pack *.MSG NetMail into packets */
                     68: #define FUZZY_ZONE             (1L<<26)
                     69: #define TRUNC_BUNDLES  (1L<<27)                /* Truncate bundles after sent (set TFS flag) */
                     70: #define SECURE                 (1L<<28)                /* Secure operation */
                     71: #define ELIST_ONLY             (1L<<29)                /* Allow adding from AREAS.BBS */
                     72: #define GEN_NOTIFY_LIST (1L<<30)               /* Generate Notify Lists */
                     73: #define KILL_EMPTY_MAIL (1L<<31)               /* Kill empty netmail messages */
                     74: 
                     75: #define ATTR_HOLD              (1<<0)                  /* Hold */
                     76: #define ATTR_CRASH             (1<<1)                  /* Crash */
                     77: #define ATTR_DIRECT    (1<<2)                  /* Direct */
                     78: #define ATTR_PASSIVE   (1<<3)                  /* Used to temp disconnect */
                     79: #define SEND_NOTIFY    (1<<4)                  /* Send Notify Lists */
                     80: 
                     81: 
                     82: #define LOG_AREAFIX    (1L<<0)                 /* Log areafix messages */
                     83: #define LOG_IMPORTED   (1L<<1)                 /* Log imported netmail messages */
                     84: #define LOG_PACKETS    (1L<<2)                 /* Log imported packet names/types */
                     85: #define LOG_SECURE             (1L<<3)                 /* Log security violations */
                     86: #define LOG_GRUNGED    (1L<<4)                 /* Log grunged messages */
                     87: #define LOG_PRIVATE    (1L<<5)                 /* Log disallowed private msgs */
                     88: #define LOG_AREA_TOTALS (1L<<6)                /* Log totals for each area */
                     89: #define LOG_TOTALS             (1L<<7)                 /* Log over-all totals */
                     90: #define LOG_PACKING    (1L<<8)                 /* Log packing of out-bound netmail */
                     91: #define LOG_ROUTING    (1L<<9)                 /* Log routing of out-bound netmail */
                     92: 
                     93: #define LOG_DUPES              (1L<<24)                 /* Log individual dupe messages */
                     94: #define LOG_CIRCULAR   (1L<<25)                 /* Log individual circ paths */
                     95: #define LOG_IGNORED    (1L<<26)                 /* Log ignored netmail */
                     96: #define LOG_UNKNOWN    (1L<<27)                 /* Log netmail for unknown users */
                     97: 
                     98: #define LOG_DEFAULTS   0xffffffL               /* Low 24 bits default to ON */
                     99: 
                    100: #define MAX_OPEN_SMBS  2
                    101: #define DFLT_OPEN_PKTS  4
                    102: #define MAX_TOTAL_PKTS  100
                    103: #define DFLT_PKT_SIZE   250*1024L
                    104: #define DFLT_BDL_SIZE   250*1024L
                    105: 
                    106: #define NOFWD                  (1<<0)                  /* Do not forward requests */
                    107: 
                    108: typedef struct {                        /* Fidonet Packet Header */
                    109:     short orignode,                     /* Origination Node of Packet */
                    110:           destnode,                     /* Destination Node of Packet */
                    111:           year,                         /* Year of Packet Creation e.g. 1995 */
                    112:           month,                        /* Month of Packet Creation 0-11 */
                    113:           day,                          /* Day of Packet Creation 1-31 */
                    114:           hour,                         /* Hour of Packet Creation 0-23 */
                    115:           min,                          /* Minute of Packet Creation 0-59 */
                    116:           sec,                          /* Second of Packet Creation 0-59 */
                    117:           baud,                         /* Max Baud Rate of Orig & Dest */
                    118:           pkttype,                      /* Packet Type (-1 is obsolete) */
                    119:           orignet,                      /* Origination Net of Packet */
                    120:           destnet;                      /* Destination Net of Packet */
                    121:     uchar prodcode,                     /* Product Code (00h is Fido) */
                    122:           sernum,                       /* Binary Serial Number or NULL */
                    123:           password[8];                  /* Session Password or NULL */
                    124:     short origzone,                     /* Origination Zone of Packet or NULL */
                    125:           destzone;                     /* Destination Zone of Packet or NULL */
                    126:     uchar empty[20];                    /* Fill Characters */
                    127:        } pkthdr_t;
                    128: 
                    129: typedef struct {                                               /* Type 2+ Packet Header Info */
                    130:        short auxnet,                                           /* Orig Net if Origin is a Point */
                    131:                  cwcopy;                                               /* Must be Equal to cword */
                    132:        uchar prodcode,                                         /* Product Code */
                    133:                  revision;                                     /* Revision */
                    134:        short cword,                                            /* Compatibility Word */
                    135:                  origzone,                                     /* Zone of Packet Sender or NULL */
                    136:                  destzone,                                     /* Zone of Packet Receiver or NULL */
                    137:                  origpoint,                                    /* Origination Point of Packet */
                    138:                  destpoint;                                    /* Destination Point of Packet */
                    139:        uchar empty[4];
                    140:        } two_plus_t;
                    141: 
                    142: typedef struct {                                               /* Type 2.2 Packet Header Info */
                    143:        uchar origdomn[8],                                      /* Origination Domain */
                    144:                  destdomn[8],                                  /* Destination Domain */
                    145:                  empty[4];                                     /* Product Specific Data */
                    146:        } two_two_t;
                    147: 
                    148: typedef struct {
                    149:     uint  sub;                  /* Set to INVALID_SUB if pass-thru */
                    150:        ulong tag;                                      /* CRC-32 of tag name */
                    151:     char *name;                 /* Area tag name */
                    152:     uint  uplinks;              /* Total number of uplinks for this echo */
                    153:        uint  imported;                         /* Total messages imported this run */
                    154:        uint  exported;                         /* Total messages exported this run */
                    155:        uint  circular;                         /* Total circular paths detected */
                    156:        uint  dupes;                            /* Total duplicate messages detected */
                    157:     faddr_t *uplink;            /* Each uplink */
                    158:     } areasbbs_t;
                    159: 
                    160: typedef struct {
                    161:        char flag[5];
                    162:        } flag_t;
                    163: 
                    164: typedef struct {
                    165:        uint tags;                                      /* Number of area tags */
                    166:        char **tag;                             /* Name of each area tag */
                    167:        } area_t;
                    168: 
                    169: typedef struct {
                    170:        FILE *stream;                           /* The stream associated with this packet */
                    171:        faddr_t uplink;                         /* The current uplink for this packet */
                    172:        uchar filename[128],curopen;/* Name of the file and if it's open or not */
                    173:     } outpkt_t;
                    174: 
                    175: typedef struct {
                    176:        uint addrs;                             /* Total number of uplinks */
                    177:        faddr_t *addr;                          /* Each uplink */
                    178:        } addrlist_t;
                    179: 
                    180: typedef struct {
                    181:        char name[26]                           /* Short name of archive type */
                    182:                ,hexid[26]                              /* Hexadecimal ID to search for */
                    183:                ,pack[81]                               /* Pack command line */
                    184:                ,unpack[81];                    /* Unpack command line */
                    185:        uint byteloc;                           /* Offset to Hex ID */
                    186:        } arcdef_t;
                    187: 
                    188: typedef struct {
                    189:        faddr_t         faddr                           /* Fido address of this node */
                    190:                           ,route;                              /* Address to route FLO stuff through */
                    191:        ushort          arctype                         /* De/archiver to use for this node */
                    192:                           ,numflags                    /* Number of flags defined for this node */
                    193:                           ,pkt_type;                   /* Packet type to use for outgoing PKTs */
1.1.1.2 ! root      194:                                                                        /* Packet types for nodecfg_t.pkt_type value ONLY: */
        !           195: #define PKT_TWO_PLUS   0                       /* Type 2+ Packet Header                                */
        !           196: #define PKT_TWO_TWO    1                       /* Type 2.2 Packet Header                               */
        !           197: #define PKT_TWO                2                       /* Old Type Packet Header                               */
        !           198: 
1.1       root      199:        ushort          attr;                           /* Message bits to set for this node */
                    200:        char            password[26];           /* Areafix password for this node */
                    201:        char            pktpwd[9];                      /* Packet password for this node */
                    202:        flag_t          *flag;                          /* Areafix flags for this node */
                    203:        } nodecfg_t;
                    204: 
                    205: typedef struct {
                    206:        char            listpath[129];          /* Path to this echolist */
                    207:        uint            numflags,misc;          /* Number of flags for this echolist */
                    208:        flag_t          *flag;                          /* Flags to access this echolist */
                    209:        faddr_t         forward;                        /* Where to forward requests */
                    210:        char            password[72];           /* Password to use for forwarding req's */
                    211:        } echolist_t;
                    212: 
                    213: typedef struct {
                    214:        faddr_t         dest;
                    215:        char            fname[13];
                    216:        } attach_t;
                    217: 
                    218: typedef struct {
                    219:        char            inbound[82]             /* Inbound directory */
                    220:                           ,secure[82]                  /* Secure Inbound directory */
                    221:                           ,outbound[82]                /* Outbound directory */
                    222:                           ,areafile[128]               /* AREAS.BBS path/filename */
                    223:                           ,logfile[128]                /* LOG path/filename */
                    224:                           ,cfgfile[128];               /* Configuration path/filename */
                    225:        ulong           maxpktsize                      /* Maximum size for packets */
                    226:                           ,maxbdlsize                  /* Maximum size for bundles */
1.1.1.2 ! root      227:                           ,log                                 /* What do we log? */
        !           228:                           ,log_level;                  /* Highest level (lowest severity) */
1.1       root      229:        int             badecho;                        /* Area to store bad echomail msgs */
                    230:        uint            arcdefs                         /* Number of archive definitions */
                    231:                           ,nodecfgs                    /* Number of nodes with configs */
                    232:                           ,listcfgs                    /* Number of echolists defined */
                    233:                           ,areas                               /* Number of areas defined */
                    234:                           ,notify;                     /* User number (sysop) to notify */
                    235:        arcdef_t   *arcdef;                     /* Each archive definition */
                    236:        nodecfg_t  *nodecfg;                    /* Each node configuration */
                    237:        echolist_t *listcfg;                    /* Each echolist configuration */
                    238:        areasbbs_t *area;                               /* Each area configuration */
                    239:        BOOL            check_path;                     /* Enable circular path detection */
                    240:        } config_t;
                    241: 
                    242: #ifdef __WATCOMC__
                    243: struct time    {
                    244:     unsigned char   ti_min;     /* Minutes */
                    245:     unsigned char   ti_hour;    /* Hours */
                    246:     unsigned char   ti_hund;    /* Hundredths of seconds */
                    247:     unsigned char   ti_sec;     /* Seconds */
                    248: };
                    249: 
                    250: struct  date    {
                    251:        int             da_year;        /* Year - 1980 */
                    252:     char        da_day;     /* Day of the month */
                    253:     char        da_mon;     /* Month (1 = Jan) */
                    254: };
                    255: #endif
                    256: 
                    257: /***********************/
                    258: /* Function prototypes */
                    259: /***********************/
                    260: void read_echo_cfg(void);
                    261: void bail(int code);
                    262: faddr_t atofaddr(char *str);
                    263: int  matchnode(faddr_t addr, int exact);
                    264: void export_echomail(char *sub_code,faddr_t addr);

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.