# Values formatted like "_env:ENV_VAR_NAME:default_value" can be overridden by the specified environment variable.
# See https://github.com/yesodweb/yesod/wiki/Configuration#overriding-configuration-values-with-environment-variables
# NB: If you need a numeric value (e.g. 123) to parse as a String, wrap it in single quotes (e.g. "_env:PGPASS:'123'")
# See https://github.com/yesodweb/yesod/wiki/Configuration#parsing-numeric-values-as-strings

static-dir:     "_env:STATIC_DIR:static"
well-known-dir: "_env:WELL_KNOWN_DIR:well-known"
well-known-link-file: "html_code.html"

webpack-manifest: "_env:WEBPACK_MANIFEST:config/webpack.yml"
host:           "_env:HOST:*4" # any IPv4 host
port:           "_env:PORT:3000"
ip-from-header: "_env:IP_FROM_HEADER:false"
approot:        "_env:APPROOT:http://localhost:3000"
mail-from:
  name:         "_env:MAILFROM_NAME:Uni2work"
  email:        "_env:MAILFROM_EMAIL:uniworx@localhost"
mail-object-domain: "_env:MAILOBJECT_DOMAIN:localhost"
mail-verp:
  separator:    "_env:VERP_SEPARATOR:+"
  at-replacement: "_env:VERP_AT_REPLACEMENT:="
mail-support:
  name:         "_env:MAILSUPPORT_NAME:"
  email:        "_env:MAILSUPPORT:uni2work@ifi.lmu.de"

job-workers:        "_env:JOB_WORKERS:10"
job-flush-interval: "_env:JOB_FLUSH:30"
job-cron-interval:  "_env:CRON_INTERVAL:60"
job-stale-threshold: 300
notification-rate-limit: 3600
notification-collate-delay: 7200
notification-expiration: 259200
session-timeout: 7200
jwt-expiration: 604800
jwt-encoding: HS256
maximum-content-length: "_env:MAX_UPLOAD_SIZE:134217728"
session-files-expire: 3600
prune-unreferenced-files: 86400
health-check-interval:
  matching-cluster-config: "_env:HEALTHCHECK_INTERVAL_MATCHING_CLUSTER_CONFIG:600"
  http-reachable: "_env:HEALTHCHECK_INTERVAL_HTTP_REACHABLE:600"
  ldap-admins: "_env:HEALTHCHECK_INTERVAL_LDAP_ADMINS:600"
  smtp-connect: "_env:HEALTHCHECK_INTERVAL_SMTP_CONNECT:600"
  widget-memcached: "_env:HEALTHCHECK_INTERVAL_WIDGET_MEMCACHED:600"
  active-job-executors: "_env:HEALTHCHECK_INTERVAL_ACTIVE_JOB_EXECUTORS:60"
health-check-delay-notify: "_env:HEALTHCHECK_DELAY_NOTIFY:true"
health-check-http: "_env:HEALTHCHECK_HTTP:true" # Can we assume, that we can reach ourselves under APPROOT via HTTP (reverse proxies or firewalls might prevent this)?

health-check-active-job-executors-timeout: "_env:HEALTHCHECK_ACTIVE_JOB_EXECUTORS_TIMEOUT:5"
health-check-active-widget-memcached-timeout: "_env:HEALTHCHECK_ACTIVE_WIDGET_MEMCACHED_TIMEOUT:2"
health-check-smtp-connect-timeout: "_env:HEALTHCHECK_SMTP_CONNECT_TIMEOUT:5"
health-check-ldap-admins-timeout: "_env:HEALTHCHECK_LDAP_ADMINS_TIMEOUT:60"
health-check-http-reachable-timeout: "_env:HEALTHCHECK_HTTP_REACHABLE_TIMEOUT:2"
health-check-matching-cluster-config-timeout: "_env:HEALTHCHECK_MATCHING_CLUSTER_CONFIG_TIMEOUT:2"

synchronise-ldap-users-within: "_env:SYNCHRONISE_LDAP_WITHIN:1209600"
synchronise-ldap-users-interval: "_env:SYNCHRONISE_LDAP_INTERVAL:3600"

log-settings:
  detailed:      "_env:DETAILED_LOGGING:false"
  all:           "_env:LOG_ALL:false"
  minimum-level: "_env:LOGLEVEL:warn"
  destination:   "_env:LOGDEST:stderr"

ip-retention-time: 1209600

# Debugging
auth-dummy-login:  "_env:DUMMY_LOGIN:false"
allow-deprecated:  "_env:ALLOW_DEPRECATED:false"

auth-pw-hash:
  algorithm: "pbkdf2"
  strength: 14

# Optional values with the following production defaults.
# In development, they default to the opposite.
# reload-templates: false
# mutable-static: false
# skip-combining: false
# encrypt-errors: true

database:
  user:     "_env:PGUSER:uniworx"
  password: "_env:PGPASS:uniworx"
  host:     "_env:PGHOST:127.0.0.1"
  port:     "_env:PGPORT:5432"
  # See config/test-settings.yml for an override during tests
  database: "_env:PGDATABASE:uniworx"
  poolsize: "_env:PGPOOLSIZE:10"

auto-db-migrate: '_env:AUTO_DB_MIGRATE:true'

ldap:
  host:    "_env:LDAPHOST:"
  tls:     "_env:LDAPTLS:"
  port:    "_env:LDAPPORT:389"
  user:    "_env:LDAPUSER:"
  pass:    "_env:LDAPPASS:"
  baseDN:  "_env:LDAPBASE:"
  scope:   "_env:LDAPSCOPE:WholeSubtree"
  timeout: "_env:LDAPTIMEOUT:5"
  search-timeout: "_env:LDAPSEARCHTIME:5"
  pool:
    stripes: "_env:LDAPSTRIPES:1"
    timeout: "_env:LDAPTIMEOUT:20"
    limit:   "_env:LDAPLIMIT:10"

smtp:
  host:    "_env:SMTPHOST:"
  port:    "_env:SMTPPORT:25"
  ssl:     "_env:SMTPSSL:starttls"
  auth:
    type:  "login"
    user:  "_env:SMTPUSER:"
    pass:  "_env:SMTPPASS:"
  pool:
    stripes: "_env:SMTPSTRIPES:1"
    timeout: "_env:SMTPTIMEOUT:20"
    limit:   "_env:SMTPLIMIT:10"

widget-memcached:
  host:       "_env:MEMCACHEDHOST:"
  port:       "_env:MEMCACHEDPORT:11211"
  auth:       []
  limit:      "_env:MEMCACHEDLIMIT:10"
  timeout:    "_env:MEMCACHEDTIMEOUT:20"
  base-url:   "_env:MEMCACHEDROOT:"
  expiration: "_env:MEMCACHEDEXPIRATION:3600"

user-defaults:
  max-favourites:      12
  max-favourite-terms: 2
  theme:               Default
  date-time-format:    "%a %d %b %Y %R"
  date-format:         "%d.%m.%Y"
  time-format:         "%R"
  download-files:      false
  warning-days:        1209600
  show-sex:            false

# During central allocations lecturer-given ratings of applications (as
# ExamGrades) are combined with a central priority.
# This encodes the weight of the lecturer ratings on the same scale as the
# centrally supplied priorities.
allocation-grade-scale: 25
# This encodes how many ordinal places lecturer ratings may move students up or
# down when central priorities are supplied as ordered list.
allocation-grade-ordinal-places: 3

instance-id: "_env:INSTANCE_ID:instance"
ribbon: "_env:RIBBON:"
