1 /* 2 ** gestruct.h 3 ** 4 ** System data file definitions for GEcho 1.20.b9+ 5 ** 6 ** Copyright (C) 1991-1995 Gerard J. van der Land. All rights reserved. 7 ** 8 ** All information in this document is subject to change at any time 9 ** without prior notice. 10 ** 11 ** Last revision: 09-Aug-95 12 ** 13 ** Strings are NUL padded and NUL terminated arrays of char type. 14 ** Path names are back slash ('\') terminated. 15 */ 16 17 /* 18 ** Modified 26-Sep-98 by J. S�rensen 19 */ 20 21 #define GE_THISREV 0x0002 /* System file revision level */ 22 #define GE_MAJOR 1 /* GEcho major revision version */ 23 #define GE_MINOR 20 /* GEcho minor revision version */ 24 25 #define AKAS 32 /* Main + AKAs */ 26 #define OLDAKAS 11 /* Not used */ 27 #define OLDUPLINKS 10 /* Not used */ 28 #define OLDGROUPS 26 /* Not used */ 29 #define USERS 10 /* User names */ 30 #define MAXAREAS 10000 /* Area records */ 31 #define MAXCONNECTIONS 500 /* Connections per area */ 32 #define MAXGROUPS 256 /* Group records */ 33 #define MAXNODES 5000 /* Node records */ 34 #define MAXVIAS 60 /* Pack "Via" records */ 35 #define MAXROUTES 640 /* Pack "Routed node" records */ 36 37 #define GROUPBYTES ((MAXGROUPS + 7) / 8) 38 39 /* --- Data types */ 40 41 #ifndef MSGAPI_VERSION 42 typedef unsigned char byte; /* ( 8-bit) */ 43 typedef unsigned short word; /* (16-bit) */ 44 typedef unsigned long dword; /* (32-bit) */ 45 #endif 46 47 typedef struct 48 { 49 word zone; 50 word net; 51 word node; 52 word point; 53 } 54 GE_ADDRESS; 55 #define GE_ADDRESS_SIZE 8 56 57 typedef byte GROUPS[GROUPBYTES]; 58 59 /* --- Log levels */ 60 61 #define LOG_INBOUND 0x0001 /* Inbound activities */ 62 #define LOG_OUTBOUND 0x0002 /* Outbound activities */ 63 #define LOG_PACKETS 0x0004 /* Inbound packet info */ 64 #define LOG_UNEXPECT 0x0008 /* Extended packet info */ 65 #define LOG_AREAMGR 0x0010 /* Unexpected passwords */ 66 #define LOG_EXTPKTINFO 0x0040 /* AreaMgr messages */ 67 #define LOG_NETEXPORT 0x0100 /* Exporting of netmail */ 68 #define LOG_NETIMPORT 0x0200 /* Importing of netmail */ 69 #define LOG_NETPACK 0x0400 /* Packing of netmail */ 70 #define LOG_NETMOVED 0x0800 /* Moving Sent/Rcvd mail */ 71 #define LOG_STATISTICS 0x2000 /* GEcho's statistics */ 72 #define LOG_MBUTIL 0x4000 /* MBUTIL's activities */ 73 #define LOG_DEBUG 0x8000 /* DEBUG: All of the above */ 74 75 76 /* --- Log styles */ 77 78 #define LOG_FD 0 /* FrontDoor */ 79 #define LOG_BINK 1 /* BinkleyTerm */ 80 #define LOG_QUICK 2 /* QuickBBS */ 81 #define LOG_DBRIDGE 3 /* D'Bridge */ 82 83 84 /* --- Setup option bits */ 85 86 #define NOKILLNULL 0x0001 /* Don't kill null netmail messages while tossing */ 87 #define RESCANOK 0x0002 /* Allow %RESCAN */ 88 #define KEEPREQS 0x0004 /* Keep AreaMgr requests */ 89 #define NONODEADD 0x0008 /* Don't automatically add NodeMgr records */ 90 #define USEHMBBUF 0x0020 /* Use Hudson buffers */ 91 #define KEEPNET 0x0040 /* Don't use Kill/Sent on exported netmail */ 92 #define KEEPMGR 0x0080 /* Don't use Kill/Sent on MGR receipts */ 93 #define NORRQS 0x0100 /* Ignore Return receipt Requests */ 94 #define GE_KILLDUPES 0x0200 /* Kill duplicate messages */ 95 #define DOS32BIT 0x0400 /* Run 32-bit DOS version on 386+ machines */ 96 #define NOCRSTRIP 0x0800 /* Don't strip Soft-CRs */ 97 #define REMOVEJUNK 0x1000 /* Remove "Re:" junk from JAM subjects */ 98 #define NOAUTODISC 0x2000 /* Don't automatically disconnect empty PT areas */ 99 #define NOCHECKEND 0x4000 /* Don't check for valid end of archives */ 100 #define SETPVT 0x8000 /* Set Pvt on imported netmail messages */ 101 102 103 /* --- Extra option bits */ 104 105 #define NOCHKDEST 0x0001 /* Don't check packet destination */ 106 #define AUTOCREAT 0x0002 /* Automatically create message bases */ 107 #define PAUSEOK 0x0004 /* Allow %PAUSE */ 108 #define NOTIFYOK 0x0008 /* Allow %NOTIFY OFF */ 109 #define ADDALLOK 0x0010 /* Allow +* */ 110 #define PWDOK 0x0020 /* Allow %PWD */ 111 #define PKTPWDOK 0x0040 /* Allow %PKTPWD */ 112 #define NOBADPKTS 0x0080 /* Don't notify sysop about BAD/DST/LOC packets */ 113 #define PKTPRGONCE 0x0100 /* Run PKT program only before the first PKT */ 114 #define CREATEBUSY 0x0200 /* Create busy flags */ 115 #define COMPRESSOK 0x0400 /* Allow %COMPRESS */ 116 #define FROMOK 0x0800 /* Allow %FROM */ 117 #define REDIR2NUL 0x1000 /* Redirect output of external utilities to NUL */ 118 #define NOEXPAND 0x2000 /* Don't expand filenames of file attaches */ 119 #define LOCALEXPT 0x4000 /* Export netmail to our own AKA */ 120 #define OPUSDATES 0x8000 /* Use Opus style binary date/time stamps */ 121 122 123 /* --- Compression types */ 124 125 #define PR_ARC 0 /* Compressed mail files created by ARC or PKPAK */ 126 #define PR_ARJ 1 /* Compressed mail files created by ARJ */ 127 #define PR_LZH 2 /* Compressed mail files created by LHA */ 128 #define PR_PAK 3 /* Compressed mail files created by PAK */ 129 #define PR_ZIP 4 /* Compressed mail files created by PKZIP */ 130 #define PR_ZOO 5 /* Compressed mail files created by ZOO */ 131 #define PR_SQZ 6 /* Compressed mail files created by SQZ */ 132 #define PR_UC2 7 /* Compressed mail files created by UC II */ 133 #define PR_RAR 8 /* For compressed mail files created by RAR */ 134 #define PR_PKT 10 /* Uncompressed PKT files */ 135 136 137 /* --- Locking method */ 138 139 #define LOCK_OFF 0 /* Deny Write (Exclusive) */ 140 #define LOCK_RA101 1 /* RemoteAccess 1.01 (SHARE) */ 141 #define LOCK_RA111 2 /* RemoteAccess 1.11 (SHARE) */ 142 143 144 /* --- Semaphore mode */ 145 146 #define SEMAPHORE_OFF 0 /* Don't use semaphores */ 147 #define SEMAPHORE_FD 1 /* FrontDoor 2.1x */ 148 #define SEMAPHORE_IM 2 /* InterMail 2.2x */ 149 #define SEMAPHORE_DB 3 /* D'Bridge 1.5x */ 150 #define SEMAPHORE_BT 4 /* BinkleyTerm 2.5x */ 151 #define SEMAPHORE_MD 5 /* MainDoor */ 152 153 154 /* --- Check user name */ 155 156 #define CHECK_NOT 0 /* Don't check if user name exists */ 157 #define CHECK_USERFILE 1 /* User file (USERS.BBS) */ 158 #define CHECK_USERINDEX 2 /* User index (USERSIDX.BBS / NAMEIDX.BBS) */ 159 160 161 /* --- Mailer type */ 162 163 #define MAILER_FD 0 /* FrontDoor */ 164 #define MAILER_DB 1 /* D'Bridge */ 165 #define MAILER_BT 2 /* BinkleyTerm */ 166 167 168 /* --- BBS type */ 169 170 #define BBS_RA111 0 /* RemoteAccess 1.1x */ 171 #define BBS_RA200 1 /* RemoteAccess 2.xx */ 172 #define BBS_QUICK275 2 /* QuickBBS 2.7x */ 173 #define BBS_SBBS116 3 /* SuperBBS 1.16 */ 174 #define BBS_WC400 4 /* Wildcat! 4.x */ 175 176 177 /* --- Change tear line */ 178 179 #define TEAR_NO 0 /* No */ 180 #define TEAR_DEFAULT 1 /* Replace default */ 181 #define TEAR_CUSTOM 2 /* Replace custom */ 182 #define TEAR_EMPTY 3 /* Replace empty */ 183 #define TEAR_REMOVE 4 /* Remove */ 184 185 typedef struct 186 { 187 GE_ADDRESS address; /* Uplink address */ 188 char areafix[9]; /* AreaFix program */ 189 char password[17]; /* AreaFix password */ 190 char filename[13]; /* "Forward List" filename */ 191 byte unused[6]; 192 byte options; /* See --- Uplink options bits */ 193 byte filetype; /* 0 = Random, 1 = "<areaname> <description>" */ 194 dword groups; /* Nodes must have one of these groups */ 195 byte origin; /* Origin AKA */ 196 } 197 OLDUPLINK; 198 199 typedef struct 200 { 201 word zone; 202 word net; 203 byte aka; 204 } 205 AKAMATCH; 206 207 typedef struct 208 { 209 byte bg_char; 210 byte headerframe; 211 byte headertext; 212 byte background; 213 byte bottomline; 214 byte bottomtext; 215 byte bottomkey; 216 byte errorframe; 217 byte errortext; 218 byte helpframe; 219 byte helptitle; 220 byte helptext; 221 byte helpfound; 222 byte winframe; 223 byte wintitle; 224 byte winline; 225 byte wintext; 226 byte winkey; 227 byte windata; 228 byte winselect; 229 byte inputdata; 230 byte exportonly; 231 byte importonly; 232 byte lockedout; 233 } 234 COLORSET; 235 236 237 /* --- SETUP.GE structure */ 238 239 typedef struct 240 { 241 word sysrev; /* Must contain GE_THISREV */ 242 word options; /* Options bits, see --- Setup option bits */ 243 word autorenum; /* Auto renumber value */ 244 word maxpktsize; /* Maximum packet size, 0 = unlimited */ 245 byte logstyle; /* See --- Log styles */ 246 byte oldnetmailboard; /* Netmail board, must be zero now */ 247 byte oldbadboard; /* Where bad echomail is stored (0 = path) */ 248 byte olddupboard; /* Where duplicates are stored (0 = path) */ 249 byte recoveryboard; /* Recovery board (1-200, 0 = delete) */ 250 byte filebuffer; /* Size (in KB) of MBU file I/O buffer */ 251 byte days; /* Days to keep old mail around */ 252 byte swapping; /* Swapping method */ 253 byte compr_default; /* Default compresion type */ 254 byte pmcolor[15]; /* Not used */ 255 GE_ADDRESS oldaka[OLDAKAS]; /* Main address and AKAs */ 256 word oldpointnet[OLDAKAS]; /* Pointnets for all addresses */ 257 dword gekey; /* GEcho registration key */ 258 dword mbukey; /* MBUTIL registration key */ 259 char geregto[51]; /* Text used to generate the GEcho key */ 260 char mburegto[51]; /* Text used to generate the MBUTIL key */ 261 char username[USERS][36]; /* User names */ 262 char hmbpath[53]; /* Hudson message base path */ 263 char mailpath[53]; /* Netmail path */ 264 char inbound_path[53]; /* Where incoming compressed mail is stored */ 265 char outbound_path[53]; /* Where outgoing compressed mail is stored */ 266 char echotoss_file[65]; /* The ECHOTOSS.LOG used for Squish areas */ 267 char nodepath[53]; /* Not used */ 268 char areasfile[65]; /* AREAS.BBS style file */ 269 char logfile[65]; /* GEcho/MBUTIL log file */ 270 char mgrlogfile[65]; /* AreaMgr log file */ 271 char swap_path[53]; /* Swap path */ 272 char tear_line[31]; /* Tearline to be placed by MBUTIL Export */ 273 char originline[20][61]; /* Origin lines */ 274 char compr_prog[10][13]; /* Compression program filenames */ 275 char compr_switches[10][20]; /* Compression program switches */ 276 char decompr_prog[10][13]; /* Decompression program filenames */ 277 char decompr_switches[10][20]; /* Decompression program switches */ 278 char oldgroups[26][21]; /* Descriptions of area groups */ 279 byte lockmode; /* See --- Locking method */ 280 char secure_path[53]; /* From which secure PKTs are tossed */ 281 char rcvdmailpath[53]; /* Not used */ 282 char sentmailpath[53]; /* Not used */ 283 char semaphorepath[53]; /* Where FD rescan files are stored */ 284 byte version_major; /* Major GEcho version */ 285 byte version_minor; /* Minor GEcho version */ 286 byte semaphore_mode; /* See --- Semaphore modes */ 287 char badecho_path[53]; /* Where sec. violating and unknown mail is stored */ 288 byte mailer_type; /* See --- Mailer type */ 289 word loglevel; /* See --- Log level */ 290 AKAMATCH akamatch[20]; /* AKA matching table */ 291 char mbulogfile[65]; /* MBUTIL log file */ 292 word maxqqqs; /* Max. number of QQQ info stored in memory */ 293 byte maxqqqopen; /* Not used */ 294 byte maxhandles; /* Max. number of files used by GEcho */ 295 word maxarcsize; /* Max. archive size, 0 = unlimited */ 296 word delfuture; /* Days to delete messages in the future, 0 = disable */ 297 word extraoptions; /* See --- Extra option bits */ 298 byte firstboard; /* Not used */ 299 word reserved1; /* Reserved */ 300 word copy_persmail; /* Not used */ 301 byte oldpersmailboard[USERS]; /* Personal mail board (0 = path) */ 302 dword old_public_groups; /* Public groups (bits 0-25) */ 303 word dupentries; /* Number of duplicate entries in ECHODUPE.GE */ 304 byte oldrcvdboard; /* Where Rcvd netmail is moved to (0 = path) */ 305 byte oldsentboard; /* Where Sent netmail is moved to (0 = path) */ 306 byte oldakaboard[OLDAKAS]; /* Netmail boards for AKAs */ 307 byte olduserboard[USERS]; /* Netmail boards for system users, 255 = use AKA board */ 308 byte reserved2; /* Reserved */ 309 OLDUPLINK uplink[OLDUPLINKS]; /* Not used */ 310 char persmail_path[53]; /* Not used */ 311 char outpkts_path[53]; /* Where outbound packets are temp. stored */ 312 word compr_mem[10]; /* Memory needed for compression programs */ 313 word decompr_mem[10]; /* Memory needed for decompression programs */ 314 dword pwdcrc; /* CRC-32 of access password, -1L = no password */ 315 word default_maxmsgs; /* Maximum number of messages (Purge) */ 316 word default_maxdays; /* Maximum age of non-Rcvd messages (Purge) */ 317 char gus_prog[13]; /* General Unpack Shell program filename */ 318 char gus_switches[20]; /* GUS switches */ 319 word gus_mem; /* Memory needed for GUS */ 320 word default_maxrcvddays; /* Maximum age of Rcvd messages (Purge) */ 321 byte checkname; /* See --- Check user name */ 322 byte maxareacachesize; /* Area cache size, 0 .. 64 KB */ 323 char inpkts_path[53]; /* Where inbound mail packets should be stored */ 324 char pkt_prog[13]; /* Called before each tossed mail packet */ 325 char pkt_switches[20]; /* Command line switches */ 326 word pkt_mem; /* Memory needed */ 327 word maxareas; /* Maximum number of areas */ 328 word maxconnections; /* Maximum number of connections per area */ 329 word maxnodes; /* Maximum number of nodes */ 330 word default_minmsgs; /* Minimum number of messages (Purge) */ 331 byte bbs_type; /* See --- BBS type */ 332 byte decompress_ext; /* 0 = 0-9, 1 = 0-F, 2 = 0-Z */ 333 byte reserved3; /* Reserved */ 334 byte change_tearline; /* See --- Change tear line */ 335 word prog_notavail; /* Bit 0-9, 1 = program not available */ 336 COLORSET gscolor; /* GSETUP color set, See COLORSET structure */ 337 byte reserved4[9]; /* Reserved */ 338 339 GE_ADDRESS aka[AKAS]; /* Main address and AKAs */ 340 word pointnet[AKAS]; /* Pointnets for all addresses */ 341 word akaarea[AKAS]; /* AKA netmail areas */ 342 word userarea[USERS]; /* Netmail areas for system users, 0 = don't import, 65535 = use AKA area */ 343 word persmailarea[USERS]; /* Personal mail area (0 = don't copy) */ 344 word rcvdarea; /* Rcvd netmail area (0 = don't move) */ 345 word sentarea; /* Sent netmail area (0 = don't move) */ 346 word badarea; /* Where bad echomail is stored (0 = path) */ 347 word reserved5; /* Not used */ 348 char jampath[53]; /* JAM message base path */ 349 char userbase[53]; /* User base path */ 350 char dos4gw_exe[65]; /* DOS4GW.EXE protected mode run time file */ 351 GROUPS public_groups; /* Public groups (bits 0-255) */ 352 word maxgroupconnections; /* Maximum number of connections per group */ 353 word maxmsgsize; /* Maximum message size (64-1024 kB) */ 354 word diskspace_threshold; /* Amount of free disk space that causes packing */ 355 byte pktsort; /* 0 = No, 1 = Area, 2 = Area + Date/Time */ 356 char wildcatpath[53]; /* Wildcat! home path */ 357 } 358 SETUP_GE; 359 #define SETUP_GE_SIZE 5762 360 361 /***************************************************************************/ 362 363 /* --- Area option bits */ 364 365 #define IMPORTSB 0x0001 /* Import SEEN-BY lines to message base */ 366 #define SECURITY 0x0002 /* Only accept mail from nodes in connections list */ 367 #define PASSTHRU 0x0004 /* Mail is not imported, only forwarded */ 368 #define VISIBLE 0x0008 /* Area is visible for anyone in AreaMgr's %LIST */ 369 #define REMOVED 0x0010 /* Area should be removed by GSETUP Pack */ 370 #define NOUNLINK 0x0020 /* Do not allow users to unlink this area */ 371 #define TINYSB 0x0040 /* Tiny SEEN-BYs with only nodes in connections list */ 372 #define PVT 0x0080 /* Private bits are preserved and are not stripped */ 373 #define CHECKSB 0x0100 /* Use SEEN-BYs for duplicate prevention */ 374 #define NOPAUSE 0x0200 /* Do not allow users to pause this area */ 375 #define SDM 0x0400 /* Area is stored in *.MSG format */ 376 #define HIDESB 0x0800 /* Hide imported SEEN-BY lines */ 377 #define NOIMPORT 0x1000 /* AreaMgr will set new nodes to Export-Only */ 378 #define DELFUTURE 0x2000 /* Del messages dated in the future */ 379 #define NOTIFIED 0x4000 /* Sysop notified that area was disconnected */ 380 #define UPLDISC 0x8000 /* Disconnected from uplink (only for PT areas) */ 381 382 383 /* --- Extra area option bits */ 384 385 #define NODUPECHK 0x01 /* Don't do duplicate checking for this area */ 386 #define NOLINKING 0x02 /* Don't do reply chain linking for this area */ 387 #define HIDDEN 0x04 /* Area is hidden for everyone */ 388 389 390 /* --- Area type */ 391 392 #define ECHOMAIL 0 393 #define NETMAIL 1 394 #define LOCAL 2 395 #define BADECHO 3 396 #define PERSONAL 4 397 #define NUM_TYPES 5 398 399 400 /* --- Area format */ 401 402 #define FORMAT_PT 0 /* Passthru */ 403 #define FORMAT_HMB 1 /* Hudson Message Base */ 404 #define FORMAT_SDM 2 /* *.MSG base */ 405 #define FORMAT_JAM 3 /* Joaquim-Andrew-Mats message base proposal */ 406 #define FORMAT_PCB 4 /* PCBoard 15.0 */ 407 #define FORMAT_SQUISH 5 /* Squish 2.0 */ 408 #define FORMAT_WC 6 /* Wildcat! 4.0 */ 409 #define NUM_FORMATS 7 410 411 412 /* --- AREAFILE.GE header */ 413 414 typedef struct 415 { 416 word hdrsize; /* sizeof(AREAFILE_HDR) */ 417 word recsize; /* sizeof(AREAFILE_GE) */ 418 word maxconnections; /* Maximum number of entries in connections list */ 419 } 420 AREAFILE_HDR; 421 #define AREAFILE_HDR_SIZE 6 422 423 424 /* --- AREAFILE.GE record */ 425 426 typedef struct 427 { 428 char name[51]; /* Area name must be uppercase, no spaces */ 429 char comment[61]; /* Description of the topics discussed in area */ 430 char path[51]; /* Path where the *.MSG files are stored */ 431 char originline[61]; /* Custom origin line, used if origlinenr = 0 */ 432 word areanumber; /* Area number (1-200 = Hudson) */ 433 byte group; /* Group (0-255) */ 434 word options; /* See --- Area option bits */ 435 byte originlinenr; /* Origin line (1-20, 0 = custom) */ 436 byte pkt_origin; /* Address for the packet/Origin line (0-31) */ 437 dword seenbys; /* Addresses (bits 0-31) to add to the SEEN-BY */ 438 word maxmsgs; /* Maximum number of messages (MBUTIL Purge) */ 439 word maxdays; /* Maximum age of non-Rcvd messages (MBUTIL Purge) */ 440 word maxrcvddays; /* Maximum age of Rcvd messages (MBUTIL Purge) */ 441 byte areatype; /* See --- Area type */ 442 byte areaformat; /* See --- Area format */ 443 byte extraoptions; /* See --- Extra area option bits */ 444 } 445 AREAFILE_GE; 446 #define AREAFILE_GE_SIZE 244 447 448 /* --- Connection entry status bits */ 449 450 #define CONN_NOIMPORT 0x01 /* Don't accept mail from this node */ 451 #define CONN_NOEXPORT 0x02 /* Don't forward mail to this node */ 452 #define CONN_PAUSE 0x04 /* Temporary don't send this area to this node */ 453 #define CONN_NOUNLINK 0x08 /* Don't allow this node to disconnect */ 454 #define CONN_ISUPLINK 0x10 /* Node is uplink for this area */ 455 456 457 /* --- Connections list entry */ 458 459 typedef struct 460 { 461 GE_ADDRESS address; 462 byte status; 463 } 464 CONNECTION; 465 #define CONNECTION_SIZE (GE_ADDRESS_SIZE + 1) 466 467 468 /* --- AREAFILE.GEX record */ 469 470 typedef struct 471 { 472 long crc32; /* CRC-32 on areaname */ 473 word areanumber; /* Area number (1-200 = Hudson) */ 474 long offset; /* File offset of record in AREAFILE.GE */ 475 } 476 AREAFILE_GEX; 477 478 /***************************************************************************/ 479 480 /* --- Group option bits */ 481 482 #define GROUP_REMOVED 0x01 /* Group record has been deleted */ 483 #define GROUP_ALWAYS 0x02 /* Unconditionally forward requests */ 484 485 486 /* --- GRPFILE.GE header */ 487 488 typedef struct 489 { 490 word hdrsize; /* sizeof(GRPFILE_HDR) */ 491 word recsize; /* sizeof(GRPFILE_GE) */ 492 word arearecsize; /* sizeof(AREAFILE_GE) */ 493 word maxconnections; /* Maximum number of entries in connections list */ 494 } 495 GRPFILE_HDR; 496 497 498 /* --- GRPFILE.GE record */ 499 500 typedef struct 501 { 502 byte options; /* See --- Group option bits */ 503 char filename[65]; /* "Forward List" filename */ 504 byte filetype; /* 0 = Random, 1 = "<areaname> <description>" */ 505 } 506 GRPFILE_GE; 507 508 509 /* --- GRPFILE.GEX record */ 510 511 typedef struct 512 { 513 GE_ADDRESS address; /* Address of the uplink */ 514 long offset; /* File offset of record in GRPFILE.GE */ 515 byte group; /* Group (0-255) */ 516 } 517 GRPFILE_GEX; 518 519 /***************************************************************************/ 520 521 /* --- Status: 522 0x0000 = None 523 0x0002 = Crash 524 0x0200 = Hold 525 0xFFFF = Removed entry 526 */ 527 528 529 /* --- Node option bits */ 530 531 #define REMOTEMAINT 0x0001 /* Allow node to use %FROM */ 532 #define GE_ALLOWRESCAN 0x0002 /* Allow node to use %RESCAN */ 533 #define FORWARDREQ 0x0004 /* Allow node to forward AreaMgr requests */ 534 #define MAIL_DIRECT 0x0008 /* Use Direct status for mail archives */ 535 #define NONOTIFY 0x0010 /* Don't send Notify list */ 536 #define PACKNETMAIL 0x0020 /* Pack netmail for this node */ 537 #define CHKPKTPWD 0x0040 /* Check packet password (auto-enabled) */ 538 #define MGR_DIRECT 0x0080 /* Use Direct status for AreaMgr messages */ 539 #define ARCMAIL 0x0100 /* Use ARCmail 0.60 naming for out-of-zone mail */ 540 #define FORWARDPKTS 0x0200 /* Forward packets to this node */ 541 #define DAILY_MAIL 0x0400 /* Create a new mail archive every day */ 542 #define NOPKTPWDCHK 0x0800 /* Disable check packet password */ 543 544 545 /* --- Uplink option bits */ 546 547 #define UPLINK_ADDPLUS 0x04 /* Add '+' prefix */ 548 549 550 /* --- Unknown areas */ 551 552 #define UNKNOWN_BADECHO 0 553 #define UNKNONW_ADDAREA 1 554 #define UNKNOWN_DISCONNECT 2 555 #define UNKNOWN_KILLMSGS 3 556 557 558 /* --- NODEFILE.GE header */ 559 560 typedef struct 561 { 562 word hdrsize; /* sizeof(NODEFILE_HDR) */ 563 word recsize; /* sizeof(NODEFILE_GE) */ 564 } 565 NODEFILE_HDR; 566 567 568 /* --- NODEFILE.GE record */ 569 570 typedef struct 571 { 572 GE_ADDRESS address; /* Address of the node */ 573 char sysop[36]; /* Name of the sysop or point */ 574 char pktpwd[9]; /* Packet (session) password */ 575 char mgrpwd[17]; /* AreaMgr password (inbound) */ 576 dword oldgroups; /* Read/write groups (bits 0-25) */ 577 word options; /* See --- Node option bits */ 578 byte comprtype; /* Compression type (0-9, 10 = PKT) */ 579 word mailstatus; /* Mail archive status. See above */ 580 GE_ADDRESS route_to; /* Address to route mail files to */ 581 dword oldreadgroups; /* Read groups (bits 0-25) */ 582 word mgrstatus; /* AreaMgr message status */ 583 byte compress_ext; /* 0 = 0-9, 1 = 0-F, 2 = 0-Z */ 584 word maxdays; /* Maximum age of mail archive, 0 = Unlimited */ 585 GROUPS groups; /* Read/write groups (bits 0-255) */ 586 GROUPS readgroups; /* Read groups (bits 0-255) */ 587 char areafix[9]; /* AreaFix program */ 588 char outmgrpwd[17]; /* AreaFix password (outbound) */ 589 byte uplinkoptions; /* See --- Uplink option bits */ 590 byte unknownareas; /* See --- Unknown areas */ 591 byte default_group; /* Default group for added areas */ 592 } 593 NODEFILE_GE; 594 595 596 /* --- NODEFILE.GEX index entry */ 597 598 typedef struct 599 { 600 GE_ADDRESS address; /* Address of the node */ 601 long offset; /* File offset of record in NODEFILE.GE */ 602 } 603 NODEFILE_GEX; 604 605 /***************************************************************************/ 606 607 /* --- Routed node status */ 608 609 #define GED_ZONE_ALL 0x01 610 #define GED_NET_ALL 0x02 611 #define GED_NODE_ALL 0x04 612 613 614 /* --- Routed node entry */ 615 616 typedef struct 617 { 618 GE_ADDRESS node; 619 byte status; /* See --- Routed node status */ 620 byte via; /* Via entry for this routed node (0-59) */ 621 } 622 ROUTE; 623 624 625 /* --- PACKFILE.GE structure */ 626 627 typedef struct 628 { 629 GE_ADDRESS via[MAXVIAS]; /* Via nodes */ 630 ROUTE route[MAXROUTES]; /* Routed nodes */ 631 } 632 PACKFILE_GE; 633 634 /***************************************************************************/ 635 636 /* --- ECHODUPE.GE structure */ 637 638 typedef struct 639 { 640 word pointer; /* Next offset */ 641 word entries; /* Number of entries in the database */ 642 /* 643 word crc32_high[entries]; 32 bit CRCs on msg headers, high portions 644 word crc32_low[entries]; 32 bit CRCs on msg headers, low portions 645 */ 646 } 647 ECHODUPE_GE; 648 649 /***************************************************************************/ 650 651 /* --- FTSCPROD.GE record */ 652 653 typedef struct 654 { 655 byte cap; /* Capability: 0 = Type 2.0, 1 = Type 2.1, 2 = Type 2+ */ 656 char name[30]; /* Name of product */ 657 } 658 FTSCPROD_GE; 659 660 /***************************************************************************/ 661 662 /* --- JAM_CONV.GE record */ 663 664 typedef struct 665 { 666 word areanumber; 667 char name[51]; 668 char jambase[51]; 669 } 670 JAMCONV_GE; 671 672 /***************************************************************************/ 673 674 /* --- MBUTIL.RNX record */ 675 676 typedef struct 677 { 678 word old_msgnum; 679 word new_msgnum; 680 } 681 MBUTIL_RNX; 682 683 /***************************************************************************/ 684 685 /* Functions for reading some of these structs */ 686 687 int read_setup_ge (SETUP_GE *Setup, FILE *fp); 688 int read_areafile_hdr(AREAFILE_HDR *Setup, FILE *fp); 689 int read_areafile_ge (AREAFILE_GE *Setup, FILE *fp); 690 691 692 /* end of file "gestruct.h" */ 693