1this is only proposal, so it may be under of date, etc 2do not use this document as manual for fidoconfig 3the proposal keeped only for developers 4 5=============================================================================== 6HUSKY FTN SOFTWARE PROJECT 7Definition of commonly used configuration files 8 9 10Version: 0.16 $Revision$ 11Status: proposal 12 13 14_related documents_ 15 16project description 17multiuser aspects (to do) 18portability aspects (to do) 19ifcico configuration description 20 21 22_Location of configuration files_ 23 24In multiuser enviroment it is possible two mode of running FTN programs: 25system-wide mode and user-separately mode. 26 27System-wide mode characteristics are: 28- run all programs with one (same) effective user ID; 29- one configuration files for all users is placed in system configuration 30 directory. 31 32User-separately mode characteristics are: 33- individual configuration files for each user is placed into user home 34 directory (each user has different FTN station); 35- run programs with real user ID. 36 37The main configuration file should be searched in: 38 39 1. $FIDOCONFIG 40 2. A default path, depending to the used os and used mode of running 41 FTN programs. 42 2.1. System-wide mode 43 GNU/Linux: /etc/fido/config 44 Arch Linux: /usr/local/etc/fido/config 45 FreeBSD, OpenBSD, NetBSD: /usr/local/etc/fido/config 46 SunOS (Solaris): ???? 47 BeOS: ???? 48 OS/2: c:\fido\config 49 WinNT: %systemdrive%\fido\config 50 2.1. User-separately mode 51 GNU/Linux, all BSD, SunOS: ~/fido/config 52 BeOS: ???? 53 OS/2: ???? 54 WinNT: %userprofile%\fido\config 55 56 c/c++ - programs should include a common config.h-file. 57 scripts should evaluate $OSTYPE, $OS or any other environment 58 variable that indicates the os. 59 60 The configfile must be readable to fidoconfig. If you plan to use 61 the autoareacreate feature the writing process must have write-access 62 to the configfile. 63 64All symbols are _not_ case-sensitive. 65 66The primary config-file may include further files. 67 68{<whiteSpace>} at the start of the line will be ignored. 69 70All keywords are evaluated as occurring, the first matching 71keyword found is valid. If there are more then one keywords of the 72same type allowed, the first line matching the situation is valid. 73If no match is found, a default-value will be used. 74 75 76_Comments_ 77 78"#" at the start of a line or <whiteSpace>#<whiteSpace> within the 79line starts a comment. The comment ends with the line. 80 81If the first word in a line is an undefined keyword, the line will 82be ignored. 83 84 85_new lines_ 86 87Each keyword has to start a new line. 88 89 90_Recommended structure of config-files_ 91 92/etc/fido/config: 93{<keyword>} 94include /etc/fido/address # own aka's 95include /etc/fido/path # directories used 96? include /etc/fido/arealink # areafix options 97include /etc/fido/msgbase # list of echo-Areas 98include /etc/fido/filebase # list of file-Areas 99include /etc/fido/rights # access-rights for users, 100 # points, up/downlinks 101include /etc/fido/links # list of users, points, 102 # up/downlinks 103include /etc/fido/packer # packer definitions 104include /etc/fido/nodelist # nodelist definitions 105include /etc/fido/routing # routing rules 106include /etc/fido/mailer1 # mailer configuration, may 107 # be separated for different mailers 108include /etc/fido/misc # other options 109 110 111_Keyword definitions_ 112 113/etc/fido/config: 114 version <integer>.<integer> 115 Name <text> 116 # system's name 117 Location <text> 118 # location of mailer 119 Sysop <Text> 120 # Sysop name 121 [CreateDirs] 122 # try to create nonexistant directories 123 [LongDirNames] 124 # allow long directory names 125 [SplitDirs] 126 # split directories on " ", ".", "_", "/" and "-" 127 { 128 include <file> 129 } 130 # include <file> here 131 132/etc/fido/address: 133 { 134 Address <aka> [Line [unsignedInteger]1* ] 135 } 136 # your own aka's: 137 # Show aka for all lines given. 138 # If no line is given, aka will be shown for all lines. 139 140/etc/fido/path: 141 inbound <path> 142 # inbound path 143 outbound <path> 144 # outbound root path, followed by subdirectories in 145 # binkley-style 146 tempoutbound <path> 147 # if link is busy, then mail holded in this outbound 148 # holded mail will toss to link in next hpt session 149 ticoutbound <path> 150 # TICs are stored here and killed after transmission 151 protinbound <path> 152 # inbound path for protected sessions 153 listinbound <path> 154 # inbound path for listed systems 155 localinbound <path> 156 # inbound path for local generated mails 157 MsgBaseDir <path> 158 # path where autoareacreated msgbases are stored 159 SemaDir <path> 160 # path for semaphores 161 BadFilesDir <path> 162 # path where bad TICs and their associated files are stored 163 Intab <file> 164 # file for recoding incoming characters (used for example in russia) 165 Outtab <file> 166 # file for recoding outgoing characters (used for example in russia) 167 importLog <file> 168 # file which is created by hpt. 169 # it containts the names of the areas which hpt has tossed in 170 echotossLog <file> 171 # file is created by a message editor. 172 # it containts the name of the areas in which have been new messages entered 173 linkWithImportLog <yes|no|kill> 174 # importlog will be used to determine which areas whould be linked. 175 FileAreasLog <file> 176 # list of fileareas with new files 177 FileNewAreasLog <file> 178 # list of autocreated fileareas 179 { 180 public <path> 181 } 182 # path for requestable files 183 # see also -request option for fileEcho 184 logFileDir <path> 185 # path for logfiles 186 DupeHistoryDir <path> 187 # path for dupe history files 188 nodelistDir 189 # path for nodelists 190 # (will be ignored by ifcico) 191? # (see ifcico documentation) 192 magic 193 # path for magic definitions 194? # see ifcico documentation 195 lockfile <file> 196 # if another HPT session will be started and found lockfile 197 # they will be terminated 198 LongNameList <file> 199 # list of arrived files with a long name 200 fileArcList <file> 201 # list of files and TICs to be archived 202 filePassList <file> 203 # list of passthrough-files 204 fileDupeList <file> 205 # dupe database 206 msgidfile <file> 207 # file with the first unused MsgID 208 209/etc/fido/links 210 { 211 link <name> 212 # name of down/uplink 213 # also default for bbs-login, if <handle> is not given 214 Aka [<aka>]1* 215 # links aka 216 ourAka <aka> 217 # our aka which is used for link 218 Password <pwd> 219 # default-Pwd, used for SessionPwd, PktPwd, TicPwd, AreaFixPwd and BBSPwd if 220 # they are not given explicitly 221 [PktPwd <pwd>] 222 # Packet- password 223 [TicPwd <pwd>] 224 # Ticker Password 225 [AreaFixPwd <pwd>] 226 # Areafix password 227 [FileFixPwd <pwd>] 228 # Filefix password 229 [BBSPwd <pwd>] 230 # password for Online user. 231 [SessionPwd <pwd>] 232 # session password used by mailer 233 [handle <name>] 234 [TicGrp {<group>}] 235 # group(s) for ticker 236 [BBSGrp {<group>}] 237 # group(s) 238 [AccessGrp {<groups>}] 239 # this is a list of groups for echo access 240 # (see also PublicGroup and -g <group> in EchoArea options) 241 [OptGrp {<groups>}] 242 # this is personal groups for echo access 243 # Export, Import & Mandatory uses OptGrp areas 244 # or AccessGrp if OptGrp not defined 245 [Export (on|off)] 246 # default on 247 # if Export is off, mail for groups defined in OptGrp not tossed to link 248 # and if OptGrp not defined, then no mail tossed to link at all. 249 [Import (on|off)] 250 # default on 251 # same as Export, but this is for mail from link 252 [Mandatory (on|off)] 253 # default off 254 # do not allow the link to subscribe/unsubscribe areas 255 [Level {<integer>}] 256 # access level. used in echoareas to control read/write access 257 AutoAreaCreate (on|off) 258 # "on" means link is allowed to create an area 259 AutoFileCreate (on|off) 260 # "on" means link is allowed to create an filearea 261 AutoAreaCreateDefaults <string> 262 # Added "string" to "EchoArea ...", when area is autocreated 263 AutoFileCreateDefaults <string> 264 # Added "string" to "FileArea ...", when filearea is autocreated 265 AutoAreaCreateFile <filename> 266 # Created new echoarea in "filename" 267 AutoFileCreateFile <filename> 268 # Created new filearea in "filename" 269 AreaFix (on|off) 270 # "off" means link is not allowed to Areafix (default is on) 271 FileFix (on|off) 272 # "off" means link is not allowed to FileFix (default is on) 273 Packer (zip|tgz|rar|arj|arc....) 274 # packer to use for this Link 275 EchoMailFlavour <flavour> 276 # hold, crash, direct, normal 277 ForwardRequests (on|off) 278 # allow forward requests to this link from other links 279 ForwardRequestFile <file> 280 # file for forward requests & available areas 281 # if not defined then forward requests unconditional 282 RemoteRootName <AreaFix> 283 # Name link's areas robot 284 fRequestFromUpLink (on|off) 285 # allow forward requests from this link to other links 286 Pause 287 # Stop sending arcmail (and fileareas in future) 288 AutoPause <days> 289 # Autostop sending arcmail to this link (automative added Pause token) 290 # over <days> days. (and fileareas in future) 291 } 292 293/etc/fido/msgbase: 294 # List of echo mail-Areas 295 NetmailArea <name> <file> [<msgbase>] {Option} 296 BadArea <name> <file> [<msgbase>] {Option} 297 DupeArea <name> <file> [<msgbase>] {Option} 298 { 299 EchoArea <name> <file> [<msgbase>] {<Option>} \ 300 {<linkAKA> {<LinkOption>}} 301 } 302 # name: area-tag 303 # file: filename(s) for this area without extension; 304 # should be the area-tag (as far as possible) 305 # if file == Passthrough then [<msgBase>] is skipped and msgarea is 306 # set as an passthrough area 307 # msgbase: *.msg is standard. Write Squish for an Squish-msgbase 308 # LinkAKA: aka's of up- and down links 309 310 # -a <aka> 311 # aka to use 312 313 # -g <group> 314 # group for this echoarea 315 316 # Echo Security: 317 # by default everything all allowed. 318 319 [-lr <integer>] 320 # required level for read access (see also "Level" in link options) 321 322 [-lw <integer>] 323 # required level for write access 324 325 [-mandatory] 326 # forbid to subscibe/unsubscribe from this echo 327 328 # AreaLinkOptions defined after each link (if needed) 329 330 [<aka> -r] 331 # this link is read only 332 # aka "Import off" in LinkOptions 333 334 [<aka> -w] 335 # this link is write only 336 # aka "Export off" in LinkOptions 337 338 [<aka> -m] 339 # this link is mandatory subscribed 340 # aka "Mandatory on" in LinkOptions 341 342 # you may also set: "<aka> -r -m" or "<aka> -w -r" and so on... 343 344 # if you don't want to carbon from this echo 345 # -ccoff 346 347 # if a group name is an unsignedInteger, it is 348 # interpreted as level, access rights are 349 # granted for links with equal or higher level 350 # -p <integer> 351 # purge after n days, 352 # -$m <integer> 353 # leave max n messages after purge in area 354 # -h 355 # hide area 356 # -nopause 357 # %PAUSE has no effect to this area 358 # -keepsb 359 # keep seen-by's 360 361 # -DupeCheck off|move|del 362 # toss in dupes, move dupes to dupeArea or delete dupes. 363 # -DupeHistory <unsignedInteger> 364 # size of dupecheck history file in days 365 366 # -manual 367 # disallow remote changes (only manual connect/disconnect) 368 369 # options for further development, e.g.: 370 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 371 # -mandatory {<group>} 372 # area is mandatory for {<group>} 373 # if <group> is an unsignedInteger, this area is mandatory 374 # for levals <= <group> 375 # -tinysb 376 # keep only seen-by's of links listed in {link} 377 # <LinkOption>: 378 # -imp 379 # import only for redundant echomail-supply 380 # -def 381 # default-uplink for redundant echomail-supply 382 383 { 384 domain <zone>[:<net>[/<node>[.<point>]]] <domain> 385 } 386 # default-domains for Zone 387 # regular expressions may be used in <zone> 388 389/etc/fido/arealink: 390 AreaDescription [<file>]1* 391 # search description for area in <file>, 392 # e.g. backbone.na, myareas.local 393 # format of the description files has to be: 394 # { 395 # <areatag> [whiteSpace]1* <description> 396 # } 397 # <areatag> ::= <text> 398 # <description> ::= <text> 399 400/etc/fido/filebase: 401 # list of file areas and file echos 402 { 403 FileEcho <name> <path> {Option} {<linkAKA> {LinkOption}} 404 # ftn File-Echo 405 } 406 # -l <group> 407 # access read/write for group, 408 # -r <group> 409 # access read only for group. 410 # -w <group> 411 # Access write for group. 412 # -noCrc 413 # trun off crc-check 414 # -mandatory {<group>} 415 # area is mandatory for {<group>} 416 # -a <aka> 417 # aka to use 418 # -manual 419 # disallow remote changes (only manual connect/disconnect) 420 # -h 421 # hide area 422 # -nopause 423 # %PAUSE has no effect to this area 424 # -o <path> 425 # move old files to <path> 426 # -Ext {<Ext>} 427 # when replacing files, also look for files with extension <ext> 428 # -a {<group>} 429 # announces in groups {<group>} 430? # -nfh 431? # NewFilesHatch 432 # -touch 433 # touch files 434? # -ztouch 435? # touch files with ZipTouch 436 # -l <date> 437 # date of last NewFilesHatch 438 # -request 439 # allow filerequests 440 # -bbs 441 # file-echo is also file-area for bbs 442 { 443 FileArea <path> 444 # bbs file-area 445 } 446 447/etc/fido/rights: 448 { 449 GroupAutoAreaCreate on|off {<group>} 450 # allow or deny AutoAreaCreate for links, 451 # that are member of group 452 # is no group given, this is default for all groups 453 454 AutoCreateDef 455 # default area options for autocreated areas 456 # example "AutoCreateDef -m 200 -dupecheck move" 457 } 458 { 459 GroupDefault <group> <path> [<msgbase>] {<option>} \ 460 {<linkAKA> {linkoption}} 461 } 462 # defaults for auto created Areas according 463 # to the group of the creator 464 # ! NOT SUPPORTED YET. 465 466 FileFileUMask <octal permission mask> 467 # UMask used for files created by the ticker 468 469 FileDirUMask <octal permission mask> 470 # UMask used for directories created by the ticker 471 472 473/etc/fido/packer: 474 # Packer definitions 475 PackerDef zip|tgz|rar|arc|arj|..... 476 #default packer, (if no packer for aka is given) 477 Unpack <Call> [<offset> <matchcode>]1* 478 # definitions for new unpackers 479 # call: see pack 480 # offset: position of recognition string in packed file. 481 # offset ::= <hexValue> 482 # match code: recognition string for packed file, 483 # ?? can be used as don't care 484 # e.g.: unpack "mypack -e %s" 0e ffff????cefe 485 # files packed by mypack can be recognized by 486 # ffff(hex) at offset 0e(hex) and 487 # cefe(hex) at offset 13(hex) 488 # they can be unpacked by "mypack -e <filename>" 489 pack zip|tgz|rar|arc|arj|..... <call> 490 # Definition for Packer 491 # call: command line call of this packer 492 # $a will be replaced by the archiv file 493 # $f will be replaced by the file which should be packed into the archiv 494 # in <call> 495 496/etc/fido/nodelist: 497 { 498 nodelist <file> (v7|v7plus|ifcico30cm|feddy|...)\ 499 [<defaultAddress>] [3D|4D] 500 } 501 # name and format of nodelist(s) 502 # see 'some remarks about ifcico' 503 504/etc/fido/routing: 505 { 506 route <flavour> [enc|noenc] <target> {<linkWW>} 507 } 508 # <target> ::= <aka>|"host"|"hub"|"boss"|"no-route" 509 # enc: ecnodes msg's 510 { 511 routeFile <flavour> [enc|noenc] <target> {<linkWW>} 512 } 513 # only mails witch attachment 514 { 515 routeMail <flavour> [enc|noenc] <target> {<linkWW>} 516 } 517 # only mails without attachment 518 519/etc/fido/mailer: 520 line <unsignedInteger> <device> 521 # managing lines, e.g. for showing some aka's only 522 # for selected lines 523 # further keywords: 524 # look at ifmail/misc/config 525 526/etc/fido/misc: 527 528 CarbonTo <name> 529 CarbonFrom <name> 530 CarbonKludge <kludge> 531 [CarbonArea] <areatag> 532 533 # Carbon copyes. This is case unsensitive, but you must write full name! 534 # If no CarbonArea specified message goes to BadArea. 535 # Note! Carbon area must be local. 536 537 [CarbonAndQuit] 538 # Each message carbons only one time. 539 540 # Example: 541 542 # CarbonTo Max Levenkov 543 # CarbonArea my.echomail 544 545 # CarbonKludge MSGID: 2:5000/117. 546 # CarbonArea written.by.points 547 548 # CarbonKludge REPLY: 2:5000/117. 549 # CarbonArea written.to.points 550 551 # if reply to All... 552 # CarbonKludge REPLY: 2:5000/117 553 # CarbonArea my.echomail 554 555 [PublicGroup {<groups>}] 556 # this is a list of groups for public echo access 557 # to lazy sysops who don't want write AccessGrp for each link 558 559 [ignoreCapWord] 560 # ignoring Capability Word in pkt files. 561 # if some pkt moved to bad. this may help, but not recommended. 562 # it is better to change old software. 563 564 # 565 # AreaFix Options: 566 # 567 568 [areafixFromPkt] 569 # process areafix requests on the fly. check "areafix", "areamgr" & 570 # "hpt" keywords in toUserName field 571 572 [areafixKillReports] 573 # set kill/sent flag to areafix reports 574 575 [areafixKillRequests] 576 # kill areafix request after procession 577 578 # 579 # FileFix Options: 580 # 581 582 [filefixKillReports] 583 # set kill/sent flag to filefix reports 584 585 [filefixKillRequests] 586 # kill filefix request after procession 587 588/etc/fido/ticker 589 590 [FileSingleDescLine] 591 # use a single, but long, line in files.bbs instead of multiple lines 592 593 [FileCheckDest] 594 # check destination of incoming TICs 595 596 FileDescPos <position> 597 # Indent descriptions in FILES.BBS by <DescPos> characters (not counting 598 # LDescString!). 599 600 FileLDescString <string> 601 # This string is put before long descriptions in FILES.BBS. If it is not 602 # set, it is set to a single space. 603 604 [AddDLC] 605 # add DownLoadCounter to new files in files.bbs 606 607 DLCDigits <num> 608 # number of digits for DownLoadCounter 609 610 FileMaxDupeAge <days> 611 # Entries in dupe database that are older than <MaxDupeAge> days are removed. 612 613 FileLocalPwd <password> 614 # This password is used for TICs directed to yourself (for hatching). 615 616 617_used notation_ 618 619follows EBNF, to enhance readability, I skipped the doubleQuotes 620around strings where possible. 621 622 623Additional to EBNF: 624 625 { 626 "line" 627 } 628 629means: "line" can be repeated _including the new-line-characters_ 630 631 632_list of used Keywords_ 633 634Address AreaFixPwd AutoAreaCreate AutoAreaCreateDefault 635BadArea BBSGrp BBSPwd 636DialDelay domain DupeArea DupeCheck DupeHisory DupeHisoryDir 637EchoArea 638FileArea FileEcho FileFixPwd Flags 639GroupDefault 640inbound include 641Link listinbound Location logFileDir 642magic ModemAfterCall ModemConnect ModemDial ModemError ModemHangup 643ModemOK ModemPort ModemReset 644Name NetmailArea Nodelist nodelistDir 645Options outboand 646pack Packer PackerDef Password Phone PhoneTrans PktPwd protinbound 647public 648Route RouteFile RouteMail 649Speed Sysop 650Handle 651TicGrp TicPwd TimeoutConnect TimeoutReset TossGrp 652Unpack 653version 654 655 656_defined token_ 657 658<file> ::= a valid filename for the used operatin system 659 660<path> ::= a valid pathname for the used operating system 661 662<target> ::= (<aka>|"host"|"hub"|"boss"|"direct") 663 664<defaultAddrerss> ::= <aka> 665 666<linkAka> ::= <aka> 667 668<aka> ::= <zone>:<net>/<node>[.<point>][@<domainName>] 669 # no wildcards allowed in zone,net,node,point 670 671<linkWW> ::= <akaWithWildcards> 672 673<akaWithWildcards> ::= 674[<zone>:[<net>/]]<node>[.<point>][@<domainName>] 675 # * and ? wildcards allowed 676 # in zone,net,node,point 677 678<msgbase> ::= squish|jam|rfc|feddi|... 679 680<name> ::= [<letter>|<digit>|"-"|"_"]1*64 681 682<pwd> ::= [<letter>|<digit>|"-"|"_"]1*8 683 684<offset> ::= <hexValue> 685 686<call> ::= <text>"$a"|"$f"[<text>] 687 # must be a valid command for the used 688 # command processor/shell 689 690<flavour> ::= normal | crash | hold | direct | immediate 691 692<matchcode> ::= [<hexValue>|"??"]1* 693 694<domainName> ::= [<upperCaseLetter>|<digit>|"_"]1*8 695 696<lowerCaseLetter> ::= "a"|"b"|"c"|"d"|"e"|"f"|"g"|"h"|"i"| 697 "j"|"k"|"l"|"m"|"n"|"o"|"p"|"q"|"r"| 698 "s"|"t"|"u"|"v"|"w"|"x"|"y"|"z" 699 700<upperCaseLetter> ::= "A"|"B"|"C"|"D"|"E"|"F"|"G"|"H"|"I"| 701 "J"|"K"|"L"|"M"|"N"|"O"|"P"|"Q"|"R"| 702 "S"|"T"|"U"|"V"|"W"|"X"|"Y"|"Z" 703 704<letter> ::= <upperCaseLetter> | <lowerCaseLetter> 705 706<digit> ::= "0"|"1"|"2"|"3"|"4"|"5"|"6"|"7"|"8"|"9" 707 708<hexDigit> ::= "A"|"B"|"C"|"D"|"E"|"F"|<digit> 709 710<hexValue> ::= <hexDigit> <hexDigit> 711 712<otherSym> ::= ""|"#"|"$"|"%"|"&"|"'"|"("|")"|"*"|"+"|","| 713 "-"|"."|"/"|":"|";"|"<"|"="|">"|"?"|"@"|"["| 714 "\"|"]"|"^"|"_"|"`"|"{"|"|"|"}"|"~" 715 716<whiteSpace> ::= " "|<tab> 717 718<text> ::= [<letter>|<digit>|<whiteSpace>|<oherSym>]1* 719 720<unsignedInteger> ::= <digit> {<digit>} 721 722<integer> ::= ["-"] <unsignedInteger> 723 724<zone> ::= <integer> 725# valid range: 0..32767 726<net> ::= <integer> 727# valid range: -1..32767 728<node> ::= <integer> 729# valid range: -1..32767 730<point> ::= <integer> 731# valid range: 0..32767 732 733 734_EBNF symbols_ 735 736<> Enclose term names 737 738| Separates alternatives (exclusive OR) 739 740[] Term enclosed is optional (not used or used once) 741 742{} Term enclosed is used zero or more times 743 744() Enclose groups of alternative terms 745 746[]n*m Term enclosed is used n to m times 747 748[]n* Term enclosed is used n or more times 749 750 751 752_todo_ 753 754define regular expressions as wildcards in zone,net,nodeNr,point 755check definition of keywords,options 756samples 757sample data structure for C 758sample config-file-parser for C 759 760 761_some remarks about ifcico_ 762 763my definition of: 764 nodelistDir 765 nodelist 766 public 767is not identical to ifcico's. 768