this is only proposal, so it may be under of date, etc do not use this document as manual for fidoconfig the proposal keeped only for developers =============================================================================== LINUX FIDOSOFT PROJECT Definition of commonly used configuration files Version: 0.15 (990121) Status: proposal _related documents_ project description multiuser aspects (to do) portability aspects (to do) ifcico configuration description _Location of configuration files_ the main configuration file should be searched in: 1. $FIDOCONFIG 2. a default path, depending to the used os. e.g. linux: /etc/fido/config freeBSD: /usr/local/etc/fido/config solaris: ???? BeOS: ???? OS/2: c:\fido\config WinNT: c:\fido\config c/c++ - programs should include a common config.h-file. scripts should evaluate $OSTYPE, $OS or any other environment variable that indicates the os. The configfile must be readable to fidoconfig. If you plan to use the autoareacreate feature the writing process must have write-access to the configfile. All symbols are _not_ case-sensitiv. The primary config-file may include further files. {<whiteSpace>} at the start of the line will be ignored. All keywords are evaluated as occurring, the first matching keyword found is valid. If there are more then one keywords of the same type allowed, the first line matching the situation is valid. If no match is found, a default-value will be used. _Escape-sequences_ "\" is used as escape-sequence. "\" has to be written as "\\". non-printable characters can be expressed as \<hexValue> _Comments_ "#" at the start of a line or <whiteSpace>#<whiteSpace> within the line starts a comment. The comment ends with the line. If the first word in a line is an undefined keyword, the line will be ignored. _new lines_ Each keyword has to start a new line. "\" at end of line means that "\" and the following new-line- character(s) will be ignored. (concatenating lines) _Recommended structure of config-files_ /etc/fido/config: {<keyword>} include /etc/fido/address # own aka's include /etc/fido/path # directories used ? include /etc/fido/arealink # areafix options include /etc/fido/msgbase # list of mail-Areas include /etc/fido/filebase # list of file-Areas include /etc/fido/links # list of users, points, # up/downlinks include /etc/fido/rights # access-rights for users, # points, up/downlinks include /etc/fido/packer # packer definitions include /etc/fido/nodelist # nodelist definitions include /etc/fido/routing # routing rules include /etc/fido/mailer # see ifcico-cm3.0 include /etc/fido/misc # other options _Keyword definitions_ /etc/fido/config: version <integer>.<integer> Name <text> # system's name Location <text> # location of mailer Sysop <Text> # Sysop name [CreateDirs] # try to create nonexistant directories [LongDirNames] # allow long directory names [SplitDirs] # split directories on " ", ".", "_", "/" and "-" { include <file> } # include <file> here /etc/fido/address: { Address <aka> [Line [unsignedInteger]1* ] } # your own aka's: # Show aka for all lines given. # If no line is given, aka will be shown for all lines. /etc/fido/path: inbound <path> # inbound path outbound <path> # outbound root path, followed by subdirectories in # binkley-style tempoutbound <path> # if link is busy, then mail holded in this outbound # holded mail will toss to link in next hpt session ticoutbound <path> # TICs are stored here and killed after transmission protinbound <path> # inbound path for protected sessions listinbound <path> # inbound path for listed systems localinbound <path> # inbound path for local generated mails MsgBaseDir <path> # path where autoareacreated msgbases are stored SemaDir <path> # path for semaphores BadFilesDir <path> # path where bad TICs and their associated files are stored Intab <file> # file for recoding incoming characters (used for example in russia) Outtab <file> # file for recoding outgoing characters (used for example in russia) importLog <file> # file which is created by hpt. # it containts the names of the areas which hpt has tossed in echotossLog <file> # file is created by a message editor. # it containts the name of the areas in which have been new messages entered linkWithImportLog <yes|no|kill> # importlog will be used to determine which areas whould be linked. FileAreasLog <file> # list of fileareas with new files FileNewAreasLog <file> # list of autocreated fileareas { public <path> } # path for requestable files # see also -request option for fileEcho logFileDir <path> # path for logfiles DupeHistoryDir <path> # path for dupe history files nodelistDir # path for nodelists # (will be ignored by ifcico) ? # (see ifcico documentation) magic # path for magic definitions ? # see ifcico documentation lockfile <file> # if another HPT session will be started and found lockfile # they will be terminated LongNameList <file> # list of arrived files with a long name fileArcList <file> # list of files and TICs to be archived filePassList <file> # list of passthrough-files fileDupeList <file> # dupe database msgidfile <file> # file with the first unused MsgID /etc/fido/links { link <name> # name of down/uplink # also default for bbs-login, if <handle> is not given Aka [<aka>]1* # links aka ourAka <aka> # our aka which is used for link Password <pwd> # default-Pwd, used for SessionPwd, PktPwd, TicPwd, AreaFixPwd and BBSPwd if # they are not given explicitly [PktPwd <pwd>] # Packet- password [TicPwd <pwd>] # Ticker Password [AreaFixPwd <pwd>] # Areafix password [FileFixPwd <pwd>] # Filefix password [BBSPwd <pwd>] # password for Online user. [SessionPwd <pwd>] # session password used by mailer [handle <name>] [TicGrp {<group>}] # group(s) for ticker [BBSGrp {<group>}] # group(s) [AccessGrp {<groups>}] # this is a list of groups for echo access # (see also PublicGroup and -g <group> in EchoArea options) [OptGrp {<groups>}] # this is personal groups for echo access # Export, Import & Mandatory uses OptGrp areas # or AccessGrp if OptGrp not defined [Export (on|off)] # default on # if Export is off, mail for groups defined in OptGrp not tossed to link # and if OptGrp not defined, then no mail tossed to link at all. [Import (on|off)] # default on # same as Export, but this is for mail from link [Mandatory (on|off)] # default off # do not allow the link to subscribe/unsubscribe areas [Level {<integer>}] # access level. used in echoareas to control read/write access AutoAreaCreate (on|off) # "on" means link is allowed to create an area AutoFileCreate (on|off) # "on" means link is allowed to create an filearea AutoAreaCreateDefaults <string> # Added "string" to "EchoArea ...", when area is autocreated AutoFileCreateDefaults <string> # Added "string" to "FileArea ...", when filearea is autocreated AutoAreaCreateFile <filename> # Created new echoarea in "filename" AutoFileCreateFile <filename> # Created new filearea in "filename" AreaFix (on|off) # "off" means link is not allowed to Areafix (default is on) FileFix (on|off) # "off" means link is not allowed to FileFix (default is on) Packer (zip|tgz|rar|arj|arc....) # packer to use for this Link EchoMailFlavour <flavour> # hold, crash, direct, normal ForwardRequests (on|off) # allow forward requests to this link from other links ForwardRequestFile <file> # file for forward requests & available areas # if not defined then forward requests unconditional RemoteRootName <AreaFix> # Name link's areas robot fRequestFromUpLink (on|off) # allow forward requests from this link to other links Pause # Stop sending arcmail (and fileareas in future) AutoPause <days> # Autostop sending arcmail to this link (automative added Pause token) # over <days> days. (and fileareas in future) } /etc/fido/msgbase: # List of echo mail-Areas NetmailArea <name> <file> [<msgbase>] {Option} BadArea <name> <file> [<msgbase>] {Option} DupeArea <name> <file> [<msgbase>] {Option} { EchoArea <name> <file> [<msgbase>] {<Option>} \ {<linkAKA> {<LinkOption>}} } # name: area-tag # file: filename(s) for this area without extension; # should be the area-tag (as far as possible) # if file == Passthrough then [<msgBase>] is skipped and msgarea is # set as an passthrough area # msgbase: *.msg is standard. Write Squish for an Squish-msgbase # LinkAKA: aka's of up- and down links # -a <aka> # aka to use # -g <group> # group for this echoarea # Echo Security: # by default everything all allowed. [-lr <integer>] # required level for read access (see also "Level" in link options) [-lw <integer>] # required level for write access [-mandatory] # forbid to subscibe/unsubscribe from this echo # AreaLinkOptions defined after each link (if needed) [<aka> -r] # this link is read only # aka "Import off" in LinkOptions [<aka> -w] # this link is write only # aka "Export off" in LinkOptions [<aka> -m] # this link is mandatory subscribed # aka "Mandatory on" in LinkOptions # you may also set: "<aka> -r -m" or "<aka> -w -r" and so on... # if you don't want to carbon from this echo # -ccoff # if a group name is an unsignedInteger, it is # interpreted as level, access rights are # granted for links with equal or higher level # -p <integer> # purge after n days, # -$m <integer> # leave max n messages after purge in area # -h # hide area # -nopause # %PAUSE has no effect to this area # -keepsb # keep seen-by's # -DupeCheck off|move|del # toss in dupes, move dupes to dupeArea or delete dupes. # -DupeHistory <unsignedInteger> # size of dupecheck history file in days # -manual # disallow remote changes (only manual connect/disconnect) # options for further development, e.g.: # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # -mandatory {<group>} # area is mandatory for {<group>} # if <group> is an unsignedInteger, this area is mandatory # for levals <= <group> # -tinysb # keep only seen-by's of links listed in {link} # <LinkOption>: # -imp # import only for redundant echomail-supply # -def # default-uplink for redundant echomail-supply { domain <zone>[:<net>[/<node>[.<point>]]] <domain> } # default-domains for Zone # regular expressions may be used in <zone> /etc/fido/arealink: AreaDescription [<file>]1* # search description for area in <file>, # e.g. backbone.na, myareas.local # format of the description files has to be: # { # <areatag> [whiteSpace]1* <description> # } # <areatag> ::= <text> # <description> ::= <text> /etc/fido/filebase: # list of file areas and file echos { FileEcho <name> <path> {Option} {<linkAKA> {LinkOption}} # ftn File-Echo } # -l <group> # access read/write for group, # -r <group> # access read only for group. # -w <group> # Access write for group. # -noCrc # trun off crc-check # -mandatory {<group>} # area is mandatory for {<group>} # -a <aka> # aka to use # -manual # disallow remote changes (only manual connect/disconnect) # -h # hide area # -nopause # %PAUSE has no effect to this area # -o <path> # move old files to <path> # -Ext {<Ext>} # when replacing files, also look for files with extension <ext> # -a {<group>} # announces in groups {<group>} ? # -nfh ? # NewFilesHatch # -touch # touch files ? # -ztouch ? # touch files with ZipTouch # -l <date> # date of last NewFilesHatch # -request # allow filerequests # -bbs # file-echo is also file-area for bbs { FileArea <path> # bbs file-area } /etc/fido/rights: { GroupAutoAreaCreate on|off {<group>} # allow or deny AutoAreaCreate for links, # that are member of group # is no group given, this is default for all groups AutoCreateDef # default area options for autocreated areas # example "AutoCreateDef -m 200 -dupecheck move" } { GroupDefault <group> <path> [<msgbase>] {<option>} \ {<linkAKA> {linkoption}} } # defaults for auto created Areas according # to the group of the creator # ! NOT SUPPORTED YET. FileFileUMask <octal permission mask> # UMask used for files created by the ticker FileDirUMask <octal permission mask> # UMask used for directories created by the ticker /etc/fido/packer: # Packer definitions PackerDef zip|tgz|rar|arc|arj|..... #default packer, (if no packer for aka is given) Unpack <Call> [<offset> <matchcode>]1* # definitions for new unpackers # call: see pack # offset: position of recognition string in packed file. # offset ::= <hexValue> # match code: recognition string for packed file, # ?? can be used as don't care # e.g.: unpack "mypack -e %s" 0e ffff????cefe # files packed by mypack can be recognized by # ffff(hex) at offset 0e(hex) and # cefe(hex) at offset 13(hex) # they can be unpacked by "mypack -e <filename>" pack zip|tgz|rar|arc|arj|..... <call> # Definition for Packer # call: command line call of this packer # $a will be replaced by the archiv file # $f will be replaced by the file which should be packed into the archiv # in <call> /etc/fido/nodelist: { nodelist <file> (v7|v7plus|ifcico30cm|feddy|...)\ [<defaultAddress>] [3D|4D] } # name and format of nodelist(s) # see 'some remarks about ifcico' /etc/fido/routing: { route <flavour> [enc|noenc] <target> {<linkWW>} } # <target> ::= <aka>|"host"|"hub"|"boss"|"no-route" # enc: ecnodes msg's { routeFile <flavour> [enc|noenc] <target> {<linkWW>} } # only mails witch attachment { routeMail <flavour> [enc|noenc] <target> {<linkWW>} } # only mails without attachment /etc/fido/mailer: line <unsignedInteger> <device> # managing lines, e.g. for showing some aka's only # for selected lines # further keywords: # look at ifmail/misc/config /etc/fido/misc: CarbonTo <name> CarbonFrom <name> CarbonKludge <kludge> [CarbonArea] <areatag> # Carbon copyes. This is case unsensitive, but you must write full name! # If no CarbonArea specified message goes to BadArea. # Note! Carbon area must be local. [CarbonAndQuit] # Each message carbons only one time. # Example: # CarbonTo Max Levenkov # CarbonArea my.echomail # CarbonKludge MSGID: 2:5000/117. # CarbonArea written.by.points # CarbonKludge REPLY: 2:5000/117. # CarbonArea written.to.points # if reply to All... # CarbonKludge REPLY: 2:5000/117 # CarbonArea my.echomail [PublicGroup {<groups>}] # this is a list of groups for public echo access # to lazy sysops who don't want write AccessGrp for each link [ignoreCapWord] # ignoring Capability Word in pkt files. # if some pkt moved to bad. this may help, but not recommended. # it is better to change old software. # # AreaFix Options: # [areafixFromPkt] # process areafix requests on the fly. check "areafix", "areamgr" & # "hpt" keywords in toUserName field [areafixKillReports] # set kill/sent flag to areafix reports [areafixKillRequests] # kill areafix request after procession # # FileFix Options: # [filefixKillReports] # set kill/sent flag to filefix reports [filefixKillRequests] # kill filefix request after procession /etc/fido/ticker [FileSingleDescLine] # use a single, but long, line in files.bbs instead of multiple lines [FileCheckDest] # check destination of incoming TICs FileDescPos <position> # Indent descriptions in FILES.BBS by <DescPos> characters (not counting # LDescString!). FileLDescString <string> # This string is put before long descriptions in FILES.BBS. If it is not # set, it is set to a single space. [AddDLC] # add DownLoadCounter to new files in files.bbs DLCDigits <num> # number of digits for DownLoadCounter FileMaxDupeAge <days> # Entries in dupe database that are older than <MaxDupeAge> days are removed. FileLocalPwd <password> # This password is used for TICs directed to yourself (for hatching). _used notation_ follows EBNF, to enhance readability, I skipped the doubleQuotes around strings where possible. Additional to EBNF: { "line" } means: "line" can be repeated _including the new-line-characters_ _list of used Keywords_ Address AreaFixPwd AutoAreaCreate AutoAreaCreateDefault BadArea BBSGrp BBSPwd DialDelay domain DupeArea DupeCheck DupeHisory DupeHisoryDir EchoArea FileArea FileEcho FileFixPwd Flags GroupDefault inbound include Link listinbound Location logFileDir magic ModemAfterCall ModemConnect ModemDial ModemError ModemHangup ModemOK ModemPort ModemReset Name NetmailArea Nodelist nodelistDir Options outboand pack Packer PackerDef Password Phone PhoneTrans PktPwd protinbound public Route RouteFile RouteMail Speed Sysop Handle TicGrp TicPwd TimeoutConnect TimeoutReset TossGrp Unpack version _defined token_ <file> ::= a valid filename for the used operatin system <path> ::= a valid pathname for the used operating system <target> ::= (<aka>|"host"|"hub"|"boss"|"direct") <defaultAddrerss> ::= <aka> <linkAka> ::= <aka> <aka> ::= <zone>:<net>/<node>[.<point>][@<domainName>] # no wildcards allowed in zone,net,node,point <linkWW> ::= <akaWithWildcards> <akaWithWildcards> ::= [<zone>:[<net>/]]<node>[.<point>][@<domainName>] # * and ? wildcards allowed # in zone,net,node,point <msgbase> ::= squish|jam|rfc|feddi|... <name> ::= [<letter>|<digit>|"-"|"_"]1*64 <pwd> ::= [<letter>|<digit>|"-"|"_"]1*8 <offset> ::= <hexValue> <call> ::= <text>"$a"|"$f"[<text>] # must be a valid command for the used # command processor/shell <flavour> ::= normal | crash | hold | direct | immediate <matchcode> ::= [<hexValue>|"??"]1* <domainName> ::= [<upperCaseLetter>|<digit>|"_"]1*8 <lowerCaseLetter> ::= "a"|"b"|"c"|"d"|"e"|"f"|"g"|"h"|"i"| "j"|"k"|"l"|"m"|"n"|"o"|"p"|"q"|"r"| "s"|"t"|"u"|"v"|"w"|"x"|"y"|"z" <upperCaseLetter> ::= "A"|"B"|"C"|"D"|"E"|"F"|"G"|"H"|"I"| "J"|"K"|"L"|"M"|"N"|"O"|"P"|"Q"|"R"| "S"|"T"|"U"|"V"|"W"|"X"|"Y"|"Z" <letter> ::= <upperCaseLetter> | <lowerCaseLetter> <digit> ::= "0"|"1"|"2"|"3"|"4"|"5"|"6"|"7"|"8"|"9" <hexDigit> ::= "A"|"B"|"C"|"D"|"E"|"F"|<digit> <hexValue> ::= <hexDigit> <hexDigit> <otherSym> ::= ""|"#"|"$"|"%"|"&"|"'"|"("|")"|"*"|"+"|","| "-"|"."|"/"|":"|";"|"<"|"="|">"|"?"|"@"|"["| "\"|"]"|"^"|"_"|"`"|"{"|"|"|"}"|"~" <whiteSpace> ::= " "|<tab> <text> ::= [<letter>|<digit>|<whiteSpace>|<oherSym>]1* <unsignedInteger> ::= <digit> {<digit>} <integer> ::= ["-"] <unsignedInteger> <zone> ::= <integer> # valid range: 0..32767 <net> ::= <integer> # valid range: -1..32767 <node> ::= <integer> # valid range: -1..32767 <point> ::= <integer> # valid range: 0..32767 _EBNF symbols_ <> Enclose term names | Separates alternatives (exclusive OR) [] Term enclosed is optional (not used or used once) {} Term enclosed is used zero or more times () Enclose groups of alternative terms []n*m Term enclosed is used n to m times []n* Term enclosed is used n or more times _todo_ define regular expressions as wildcards in zone,net,nodeNr,point check definition of keywords,options samples sample data structure for C sample config-file-parser for C _some remarks about ifcico_ my definition of: nodelistDir nodelist public is not identical to ifcico's.