# Binkd sample configuration file for unix-like enviroment
# Copyright (C) 1996-1997 by Dima Maloff, 2:5047/13
# Copyright (C) 2013 by Binkd development team
# $Id$

#
# Path and name for the logfile, loglevel
#
log /var/log/binkd.log
loglevel 6

#
# Your FTN domains:
#   domain <name> <main-outbound> <default-zone> [<root-domain>]
# or
#   domain <new-name> alias-for <name>
# The first variant specifies a domain as a default domain for 3D/4D addresses.
#
domain fidonet /var/spool/binkd/outbound/fidonet 2
#
#  Aliases to support known wrong 5D configurations
domain fido        alias-for fidonet
domain fidorus     alias-for fidonet
domain fido7       alias-for fidonet
#
#  Aliases to support known DNS domain zones
#  (some people mix up the terms "FTN domain" and "DNS internet domain")
domain fidonet.org alias-for fidonet
domain fidonet.net alias-for fidonet

#
# Your addresses, 5D or 4D or 3D:
#   address <addr1> ...
# If the first address is specified as a 3D/4D address, its domain will be
# taken from the domain defined in the first "domain" line. If more addresses
# are specified as 3D/4D ones, their domain will be taken from the first
# address.
#
address -1:-1/-1@fidonet

#
# Hide or present the specified AKAs if remote AKAs match the address mask
#       hide-aka <my-aka> [!]<mask>
#       present-aka <add-aka> [!]<mask>
# Mask is compared to the 5d-form of address string, '*' matches any number
#       of any symbols (so you have to write '2:5020/*' but not '5020/*')
# Use '!' to invert the mask
# These rules apply in the same order as in config, you can present any address
#
#hide-aka 2:5020/999.* !2:*@fidonet      # hide aka from all but fido zone 2
#present-aka 2:5047/999.1 2:5047/*.0*    # present aka to all nodes in 2:5047

#
# The name of your system, its location and your name
#
sysname "Ivan's BBS"
location "Magadan, Russia"
sysop "Ivan Ivanov"

#
# System capabilities
#
nodeinfo 300,TCP,BINKP

#
# Uncomment it if you want binkd log at your console
#
conlog 4

#
# If a log message matches one of these masks, it won't be written to log
# (masks are in shell/glob style, case-insensitive)
#
#nolog "*socket # [0-9]*"
#nolog "*.[bc]sy"

#
# Uncomment if you want T-Mail(FrontDoor)-style binary log
# (Will work and have sense on PCs only?)
#
#binlog binkd.sts
#fdinhist in.his
#fdouthist out.his

#
# TCP settings. Leave this unchanged if not sure.
#
# Suffixes for time intervals are w for weeks, d for days,
# h for hours, m for minutes, s or no suffix for seconds.
# You can mix the suffixes, i.e. 1d12h is the same as 36h.
#
#iport binkp
#oport binkp
#oblksize 4096
#timeout 5m
#connect-timeout 5m
#bindaddr 192.168.0.3
#listen *

#
# Zlib compression parameters (if built with zlib support)
#     zlevel          - compression level (zlib only, bzlib2 uses 100kb always),
#                       set to 0 to use default value of 6
#     zminsize <size> - files smaller than <size> won't be compressed anyway
# Rules:
#     zallow <mask1>[ <mask2>... <maskN>] - allow compression for the masks
#     zdeny  <mask1>[ <mask2>... <maskN>] - deny compression for the masks
# If remote accepts compressed blocks (OPT GZ), its name will be checked
# against these rules before sending each file. If the name matches a zallow
# rule, the file will be sent with compression. If the name matches a zdeny rule,
# it will be sent as-is. The rule matched first is applied. If a file doesn't
# match any rule, zdeny will be assumed.
#
#zminsize 1024
#
#zallow *.pkt
#zdeny *.su? *.mo? *.tu? *.we? *.th? *.fr? *.sa?
#zdeny *.zip *.rar *.arj *.ha *.gz *.tgz *.bz2 *.z[0-9][0-9] *.r[0-9][0-9]
#zallow *

#
# HTTPS or SOCKS settings.
#
# proxy 192.0.2.3:3128                # <- regular http/https proxy (i.e. squid)
# proxy 192.0.2.3:3128/user/password  # <- proxy required username/password
#                                     #    (as in browser)
#
# proxy 192.168.0.3:3128/user/password/your_host/your_domain
#       ^- proxy required NTLM authorization with username/password
#   your_host   -- Windows host name without domain (i.e. MY_HOST)
#   your_domain -- Windows domain name (not FQDN, i.e. DEFAULT_DOMAIN)
#
# socks 192.0.2.3:1080                # <- socks4 proxy
# socks 192.0.2.3:1080/               # <- socks5 proxy without authorization
# socks 192.0.2.3:1080/user/password  # <- socks5 proxy with username/password
#                                     #    (RFC-1929)

#
# Delay of calls and outbound rescans in seconds
#
#call-delay 1m
#rescan-delay 1m

#
# Max. number of inbound/outbound connections
#
#maxservers 2
#maxclients 2

#
# Binkd will try to call a node N times. If failed, it will
# hold the node for S seconds. The feature is off by default.
#
try 10
hold 10m

#
# Binkd will remove .try files after successful session.
# The feature is off by default.
#
#remove-try-files

#
# hold-skipped <S>
# Binkd will hold for S seconds all mail skipped by a node. (Def. -- 1h)
#
#hold-skipped 1h

#
# Don't send (only receive) files if no password for an inbound session
#
send-if-pwd

# Tzoff corrects UTC time returned by time() under DOS-derived OS
# Using system TZ variable or tzselect(8) is preferred.
#tzoff 3h

#
# Use syslog (Only if made with -DHAVE_VSYSLOG and -DHAVE_FACILITYNAMES)
#
#syslog local0

#
# Print percents while sending or receiving
#
percents

#
# List queue after rescans
#
printq

#
# Perform reverse resolving (for logging only)
#
backresolv

#
# Log pid:
#
pid-file /var/run/binkd/binkd.pid

#
# Map paths in flo's:
#   ftrans <old-string> <new-string>
# Use as many ftrans's as you want.
#
#ftrans "D:\\fido\\outbound" ~/ftn/outbound
#ftrans "\\" "/" # this replaces all slashes in a path

#
# Inbound directories for secure and non-secure links
#
inbound /var/spool/binkd/inbound-secure
inbound-nonsecure /var/spool/binkd/inbound-unsecure

#
# Directory for incomplete receiving files (.hr and .dt),
# default to inbound for the node
#
temp-inbound /var/spool/binkd/inbound-temp

#
# Binkd will skip all files from a node if
# size_of_the_next_file_for_us_there + minfree < free_space_in_inbound
# The zero value and the value 4294967295 (2**32-1) are equivalent to infinity.
#
minfree 2048
minfree-nonsecure 2048

#
# When trying to receive a new file: remove partial files with this
# name but different size or time from inbound. (If commented out, binkd
# will left old parts as .dt and .hr in the inbound directory).
#
kill-dup-partial-files

#
# Remove all old partial files from inbound. (OFF if commented out)
#   kill-old-partial-files <max-age-in-seconds>
#
kill-old-partial-files 1d

#
# Remove old .bsy/.csy files (If some are left after a system crash). It would
# be wise to set this to 12h on almost any system. (Note that binkd always
# touches .bsy's/.csy's for active sessions)
#
# kill-old-bsy is OFF by default.
#
kill-old-bsy 12h

#
# Create a flag file after receiving a file
#
#flag toss!.now *.pkt
#flag toss!.now *.su? *.mo? *.tu? *.we? *.th? *.fr? *.sa?

#
# Run an external program.
# The "*S" macro in command line substed with S.R.I.F., see !SRIF.TXT
# The "!" before program pathname means immediate program execution
#   after receiving the file.
# *** win32 only:
# The "@" before program pathname means execute program in separate console
# The "@@" before program pathname means execute program in hidden console
# ***
# Macros: *F - complete name of received file,
#         *A0..*A9 - first 10 AKA of remote system,
#         *A*, *A@ - list of all remote AKA separated by spaces
#         *P - password protected [0|1],
#         *L - listed system [0|1]
#         *H - remote hostname or IP,
#         *N - short file name (win32 only).
#
#exec "!my-freq-processor /options *S" *.req
#exec "!~/ftn/binkd/srifreq *S" *.req
#exec "my-pkt-unpacker /options *P *A* *F" *.[pP][kK][tT]
#exec "my-tosser /options" /opt/ftn/inbound-secure/*.[STFWMstfwm][ouaherOUAHER][0-9A-Za-z]
#exec "nice -n 19 /usr/bin/hpt toss link" ~/ftn/inbound-secure/*.[STFWMstfwm][ouaherOUAHER][0-9A-Za-z] *.[pP][kK][tT]

#
# Include a file
#
#include /opt/ftn/binkd.inc

#
# Overrides root domain for DNS lookups, see 'node' below.
#
#root-domain binkp.net

#
# Perl hooks file (if built with Perl)
#
#perl-hooks ~/ftn/binkd/nodelist.pl

#
# Perl DLL file (only matters if compiled with PERLDL=1 for Win32)
#
#perl-dll perl56.dll

#
# binkd will refuse to start if perl-hooks script has compilation errors.
#      Note, that run-time errors still can occur.
#
#perl-strict

#
# This variables can be used in perl hooks as $cfg{"name"}
#  Syntax: perl-var <name> <value>
#
#perl-var nodelist ~/ftn/nodelist/nodelist.[0-9][0-9][0-9]
#perl-var magichost *

#
# Scan T-Mail boxes (short and long) in CIFS-mounted directory
#
#filebox   /mnt/fido/t-mail/boxes

#
# Scan theBrake! long boxes
#
#brakebox  ~/ftn/longbox

#
# Should binkd delete empty boxes?
# Uncomment the following line if yes
#
#deletebox

#
# Scan node outbound while connecting and send mail size to remote
#
prescan

# t-mail or ifcico (qico) password file.
# Format of the password file:
#   [password] <FTN address> <inpwd>[,[<pktpwd>][,<outpwd>]]
# where:
#   [password]               optional "password" token;
#   <FTN address>            address of a link in the form 1:2/3.4@domain
#                            or 1:2/3@domain or 1:2/3 or 1:2/3.4;
#   <inpwd>                  password for incoming sessions;
#   <pktpwd>                 packet password, used when "share" token
#                            is handled;
#   <outpwd>                 password for outgoing sessions.
# Any password is one word without spaces or tabs. If <pktpwd> or <outpwd>
# is omitted, it will be assumed equal to <inpwd>. If a password is defined for
# a node by the "node" token, then the passwords for the node in the password
# file will be ignored.
#
#passwords ~/ftn/binkd/passwords

#
# Skip files:
#    skip [all|listed|unlisted|secure|unsecure] [!]<sizeKb>|- <mask>...
#
#       'all'    applies to all sessions (default)
#       'listed' applies to sessions with the nodes defined by 'node' keyword
#       'secure' applies to password-protected sessions
#
# Use '!' before size for destructive skip, default is non-destructive one.
# If <size> > 0, then only files larger than <size> in kilobytes will be skipped;
#       zero <size> applies to all files;
#       if the <size> is set to '-', then the rule will allow 
#       any file matching the <mask>.
#
# <mask> is a shell-style mask, case-insensitive (except for symbols in []),
#       multiple masks for a rule are permitted.
#
# Policy for rule processing is first-match
#
#skip all 0 *.mp3 *.avi
#skip unsecure 256 *.pkt
#skip unsecure !0 *

#
# Overwrite the existing file by the new received,
# do not save with the changed extension
#
#overwrite net_*.*

#
# Inbound filename case:
#    inboundcase [save(default)|upper|lower|mixed]
#
#   'save'  don't change filename case (default)
#   'upper' uppercase filename (FILE-NAME.EXT)
#   'lower' lowercase filename (file-name.ext)
#   'mixed' make filename pretty (File-Name.Ext)
#
# * tested only with english filenames
#
#inboundcase save

#
# Rename style if file with the same name already exists in inbound
#    rename-style [postix|extension]
#
#   'postfix'   append number at the end of filename, after dot (default)
#               example: file.ext -> file.ext.1
#   'extension' change filename extension
#               example: file.ext -> file.ex0
#
# Not applied to *.pkt, arcmail, *.tic, *.req - only filename is changed
# for these file types.
#
#rename-style postfix

#
# Should binkd send empty files?
#    dont-send-empty [no(default)|arcmail|yes]
#
#   'no'      inhibit only sending *.?ut (netmail) with size <=60 bytes
#   'arcmail' do not send zero-size arcmail and pkt <= 60 bytes
#   'yes'     do not send all zero-size files and pkt <= 60 bytes
#
#dont-send-empty no

#
# Should binkd delete empty point dirs in BSO?
# Uncomment the following line if yes
#
#deletedirs

#
# Use Amiga Style Outbound (ASO)
#
#aso

#
# Limit bandwidth (rate):
#    limit-rate [all|listed|unlisted|secure|unsecure] <rate>[kM%]|- <mask>...
#
#    <rate> is a max allowed rate in bytes-per-second (k=kbytes, M=Mbytes).
#           If '%' is specified, the node -bw rate will be multiplied by this value
#           in percents, if '-' is specified, then rate will be unlimited.
#    <mask> is a filename mask to apply this rule to.
#
#    limit-rate rules are checked in the order they appear in config, first
#    matching rule is applied.
#
#    IMPORTANT! If a node has no explicitly defined bandwidth limit, the
#    defnode's limit will be used. If defnode has no limit, rate will be unlimited.
#
#limit-rate unsecure -  *.pkt
#limit-rate unsecure 2k *

# Define shared aka
#     Add a shared-address as aka for any node from this list, so that 
#     uncompessed netmail for shared aka will be sent in the first session with
#     any node listed in shares; packet header will be updated to match this
#     node's main aka and pkt password
# share <shared-address> <node1> [<node2> ...]
# example:
#share 2:999/999 2:5020/52 2:5020/238

#
# Check the sender's address in incoming pkt's, change the file extension
# to <ext> if the check failed.
#      check-pkthdr [all|secure|unsecure|listed|unlisted] <ext>
#
#       'all'    applies to all nodes;
#       'listed' will be applied if at least one aka is defined by 'node' keyword;
#       'secure' will be applied if at least one aka is password-protected.
#
# It's ok to specify .<ext> as well as <ext> - the dot before ext is ignored.
# The policy set by check-pkthdr may be overridden by -hc or -nohc flags
# in a 'node' definition (see below).
# Flag order: -nohc (for any aka), -hc (for any aka), check-pkthdr flag
#
#check-pkthdr secure .sec

#
# Define a link:
#       node [[z:]n/]n[.p][@domain] [-nr|-nd] [-md] [-hc|-nohc] [-ip|-sip] [-bw <send_rate>[/<recv_rate>]] [-pipe <cmd>] [-4|-6] [{hosts|-} [{<inpwd>[,[<pktpwd>][,<outpwd>]]|-} [flavour [{obox|-} [{ibox|-}]]]]]
#
# * All non-"-" fields will redefine the values specified for the same node
#   earlier in config.
# * The meaning of <inpwd>, <pktpwd> and <outpwd> is the same as in
#   the description of the "passwords" token. Any password is one word
#   without spaces or tabs. If <pktpwd> or <outpwd> is omitted, it will be
#   assumed equal to <inpwd>.
# * Flavour is one of i, c, d, -, h and is the flavour for the outbound
#   filebox ("obox").
# * Binkd sends from obox all non-dir entries NOT matching ".*" wildcard.
#   EVERY TIME YOU PUT A FILE INTO OBOX, CHECK IF BINKD IS ABLE TO
#   UNLINK IT. Otherwise, the session will never end.
# * Default for ibox is inbound or inbound-nosecure depending on the pwd field.
# * Default for port is oport.
# * '-nr' stands for 'Not Reliable Link', this works only on outbound calls
#   with another binkp/1.1 mailer. The option solves the only problem with
#   binkd having not enough time to start receiving a file from
#   non-zero offset before IP link's down, so don't use it unless you
#   have this problem -- really not effective
# * '-nd' means "No Dupe Mode", this works only on outbound calls with
#   another binkd 0.9.3 or higher. The option solves the problem with
#   duplicating files when connection is lost but link is a bit slower
#   than it is with "-nr" option.
# * '-md' means "Must have CRAM-MD5". This works only with the nodes using
#       versions of binkd or argus supporting this method. Do not set it if
#       your link can use an old version of binkd.
# * '-nomd' - do not use CRAM-MD5 for this node (send plain text password)
# * '-hc' enables check of sender address in pkt header for this node/aka
#       (overrides the setting of the 'check-pkthdr' statement)
# * '-nohc' disables check of sender address in pkt header for this node/aka
#       (overrides the setting of the 'check-pkthdr' statement)
# * '-ip' means "Remote IP check". In this case the node will be
#       rejected if it comes not from one of its IP-addresses.
#       Remote AKAs with bad IP-address will be dropped on outgoing calls.
# * '-sip' means "Strict remote IP check". Like "-ip", but node will be
#       rejected if no IP-addresses are allowed ("-" or not resolved).
#       Remote AKAs with bad IP-address will be dropped on outgoing calls.
# * '-bw' specifies bandwidth (rate) limit for this node.
#       If one value is specified, it will be used as both send and recv limit.
#       If two values are specified, the first one will be for send and the
#       second one for recv.
#       The rate values are expected to be in the format '<rate>[kM%]|-'
#       (see limit-rate keyword for detailed description).
# * '-noproxy' disables usage of proxy/socks server when calling this node
#       (the node is expected to be inside local network).
# * '-pipe' means "run an external command for building a tunnel to the node".
#       '*H' macro is substituted by host and '*I' by port number.
# * '-4' only connect via IPv4
# * '-6' only connect via IPv6
# * '-64' binkd will first try to connect over IPv6, and in case of failure,
#       it will try again over IPv4. Attention! To use the option, you need
#       to compile binkd with the "--with-af-force" option.
# * '-46' binkd will first try to connect over IPv4, and in case of failure,
#       it will try again over IPv6. Attention! To use the option, you need
#       to compile binkd with the "--with-af-force" option.
# * Hosts is a list in form
#       host1[:port1][;host2[:port2]] ...
# * Asterisk ('*') in the host list forces Binkd to perform
#       1:2/3.4 --> p4.f3.n2.z1.binkp.net translation for a node's
#       Fido-address and IP lookup for the resulting FQDN in DNS.
#       Root domain part ("binkp.net") can be changed with root-domain
#       keyword.
#
#node 5047/888 - password
#node 5047/999 -md hostname;* password i ~/ftn/personalboxes/to999 ~/ftn/personalboxes/from999

#
# Default node flags. Binkd will call an unlisted node if "defnode" is defined.
#
defnode -nd *
