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