# For reference only. this file is not copied to the dockerfile (we use `sed` to modify the existing dockerfile).
#
# opentracker config file

# I)   Address opentracker will listen on, using both, tcp AND udp family
#      (note, that port 6969 is implicit if omitted).
#
#      If no listen option is given (here or on the command line), opentracker
#      listens on 0.0.0.0:6969 tcp and udp.
#
#      The next variable determines if udp sockets are handled in the event
#      loop (set it to 0, the default) or are handled in blocking reads in
#      dedicated worker threads. You have to set this value before the
#      listen.tcp_udp or listen.udp statements before it takes effect, but you
#      can re-set it for each listen statement. Normally you should keep it at
#      the top of the config file.
#
# listen.udp.workers 4
#
listen.tcp_udp 0.0.0.0
# listen.tcp_udp 192.168.0.1:80
# listen.tcp_udp 10.0.0.5:6969
#
#      To only listen on tcp or udp family ports, list them this way:
#
# listen.tcp 0.0.0.0
# listen.udp 192.168.0.1:6969
# listen.tcp 127.0.0.1
# listen.udp 127.0.0.1:6969
#
#      Note, that using 0.0.0.0 for udp sockets may yield surprising results.
#      An answer packet sent on that socket will not necessarily have the
#      source address that the requesting client may expect, but any address
#      on that interface.
#

# II)  If opentracker runs in a non-open mode, point it to files containing
#      all torrent hashes that it will serve (shell option -w)
#
access.whitelist /etc/opentracker/whitelist
#
#      or, if opentracker was compiled to allow blacklisting (shell option -b)
#
# access.blacklist ./blacklist
#
#      It is pointless and hence not possible to compile black AND white
#      listing, so choose one of those options at compile time. File format
#      is straight forward: "<hex info hash>\n<hex info hash>\n..."
#
# IIa) You can enable dynamic changesets to accesslists by enabling
#      WANT_DYNAMIC_ACCESSLIST.
#
#      The suggested way to work with dynamic changeset lists is to keep a
#      main accesslist file that is loaded when opentracker (re)starts and
#      reloaded infrequently (hourly or daily).
#
#      All changes to the accesslist (e.g. from a web frontend) should be
#      both appended to or removed from that file and sent to opentracker. By
#      keeping dynamic changeset lists, you can avoid reloading huge
#      accesslists whenever just a single entry is added or removed.
#
#      Any info_hash (format see above) written to the fifo_add file will be
#      kept on a dynamic add-changeset, removed from the dynamic
#      delete-changeset and treated as if it was in the main accesslist file.
#      The semantic of the respective dynamic changeset depends on whether
#      WANT_ACCESSLIST_WHITE or WANT_ACCESSLIST_BLACK is enabled.
#
access.fifo_add /etc/opentracker/adder.fifo
#
#      Any info_hash (format see above) written to the fifo_delete file will
#      be kept on a dynamic delete-changeset, removed from the dynamic
#      add-changeset and treated as if it was not in the main accesslist
#      file.
#
# access.fifo_delete /var/run/opentracker/deleter.fifo
#
#      If you reload the accesslist by sending SIGHUP to the tracker process,
#      the dynamic lists are flushed, as opentracker assumes thoses lists are
#      merged into the main accesslist.
#
#      NOTE: While you can have multiple writers sending lines to the fifos,
#      any writes larger than PIPE_BUF (see your limits.h, minimally 512
#      bytes but usually 4096) may be interleaved with data sent by other
#      writers. This can lead to unparsable lines of info_hashes.
#
# IIb)
#      If you do not want to grant anyone access to your stats, enable the
#      WANT_RESTRICT_STATS option in Makefile and bless the ip addresses
#      or network allowed to fetch stats here.
#
# access.stats 192.168.0.23
# access.stats 10.1.1.23
#
#      There is another way of hiding your stats. You can obfuscate the path
#      to them. Normally it is located at /stats but you can configure it to
#      appear anywhere on your tracker.
#
# access.stats_path stats
#
# II
#      If opentracker lives behind one or multiple reverse proxies,
#      every http connection appears to come from these proxies. In order to
#      take the X-Forwarded-For address instead, compile opentracker with the
#      WANT_IP_FROM_PROXY option and set your proxy addresses or networkss here.
#
# access.proxy 10.0.1.23
# access.proxy 192.0.0.0/8
#

# III) Live sync uses udp multicast packets to keep a cluster of opentrackers
#      synchronized. This option tells opentracker which port to listen for
#      incoming live sync packets. The ip address tells opentracker, on which
#      interface to join the multicast group, those packets will arrive.
#      (shell option -i 192.168.0.1 -s 9696), port 9696 is default.
#
# livesync.cluster.listen 192.168.0.1:9696
#
#      Note that two udp sockets will be opened. One on ip address 0.0.0.0
#      port 9696, that will join the multicast group 224.0.42.23 for incoming
#      udp packets and one on ip address 192.168.0.1 port 9696 for outgoing
#      udp packets.
#
#      As of now one and only one ip address must be given, if opentracker
#      was built with the WANT_SYNC_LIVE feature.
#

# IV)  Sync between trackers running in a cluster is restricted to packets
#      coming from trusted ip addresses. While source ip verification is far
#      from perfect, the authors of opentracker trust in the correct
#      application of tunnels, filters and LAN setups (shell option -A).
#
# livesync.cluster.node_ip 192.168.0.4
# livesync.cluster.node_ip 192.168.0.5
# livesync.cluster.node_ip 192.168.0.6
#
#      This is the admin ip address for old style (HTTP based) asynchronus
#      tracker syncing.
#
# batchsync.cluster.admin_ip 10.1.1.1
#

# V)   Control privilege drop behaviour.
#      Put in the directory opentracker will chroot/chdir to. All black/white
#      list files must be put in that directory (shell option -d).
#
#
# tracker.rootdir /usr/local/etc/opentracker
#
#      Tell opentracker which user to setuid to.
#
tracker.user farmhand
#

# VI)  opentracker can be told to answer to a "GET / HTTP"-request with a
#      redirect to another location (shell option -r).
#
# tracker.redirect_url https://your.tracker.local/