kind: ConfigMap
apiVersion: v1
metadata:
  name: {{ include "kanidm.fullname" . }}-config
  labels:
    {{- include "kanidm.labels" . | nindent 4 }}
data: 
  server.toml: |
    #   The webserver bind address. Requires TLS certificates.
    #   If the port is set to 443 you may require the
    #   NET_BIND_SERVICE capability.
    #   Defaults to "127.0.0.1:8443"
    bindaddress = "{{ tpl .Values.kanidm.bindaddress $ }}"
    #
    {{- if .Values.kanidmLdap.enabled }}
    #   The read-only ldap server bind address. Requires
    #   TLS certificates. If set to 636 you may require
    #   the NET_BIND_SERVICE capability.
    #   Defaults to "" (disabled)
    dapbindaddress = "{{ .Values.kanidmLdap.dapbindaddress }}"
    {{- else }}
    # ldapbindaddress = "[::]:3636"
    {{- end }}
    #
    #   HTTPS requests can be reverse proxied by a loadbalancer.
    #   To preserve the original IP of the caller, these systems
    #   will often add a header such as "Forwarded" or
    #   "X-Forwarded-For". If set to true, then this header is
    #   respected as the "authoritative" source of the IP of the
    #   connected client. If you are not using a load balancer
    #   then you should leave this value as default.
    #   Defaults to false
    trust_x_forward_for = {{ .Values.kanidm.trust_x_forward_for }}
    #
    #   The path to the kanidm database.
    db_path = "{{ .Values.kanidm.db_path }}"
    #
    #   If you have a known filesystem, kanidm can tune the
    #   database page size to match. Valid choices are:
    #   [zfs, other]
    #   If you are unsure about this leave it as the default
    #   (other). After changing this
    #   value you must run a vacuum task.
    #   - zfs:
    #     * sets database pagesize to 64k. You must set
    #       recordsize=64k on the zfs filesystem.
    #   - other:
    #     * sets database pagesize to 4k, matching most
    #       filesystems block sizes.
    {{- if .Values.kanidm.db_fs_type }}
    db_fs_type = "{{ .Values.kanidm.db_fs_type }}"
    {{- else }}
    # db_fs_type = "zfs"
    {{- end }}
    #
    #   The number of entries to store in the in-memory cache.
    #   Minimum value is 256. If unset
    #   an automatic heuristic is used to scale this.
    #   You should only adjust this value if you experience
    #   memory pressure on your system.
    {{- if .Values.kanidm.db_arc_size }}
    db_arc_size = {{ .Values.kanidm.db_arc_size }}
    {{- else }}
    # db_arc_size = 2048
    {{- end }}
    #
    #   TLS chain and key in pem format. Both must be present.
    #   If the server receives a SIGHUP, these files will be
    #   re-read and reloaded if their content is valid.
    tls_chain = "{{ .Values.kanidm.tls_chain }}"
    tls_key = "{{ .Values.kanidm.tls_key }}"
    #
    #   The log level of the server. May be one of info, debug, trace
    #
    #   NOTE: this can be overridden by the environment variable
    #   `KANIDM_LOG_LEVEL` at runtime
    #   Defaults to "info"
    log_level = "{{ .Values.kanidm.log_level }}"
    #
    #   The DNS domain name of the server. This is used in a
    #   number of security-critical contexts
    #   such as webauthn, so it *must* match your DNS
    #   hostname. It is used to create
    #   security principal names such as `william@idm.example.com`
    #   so that in a (future) trust configuration it is possible
    #   to have unique Security Principal Names (spns) throughout
    #   the topology.
    #
    #   ⚠️  WARNING ⚠️
    #
    #   Changing this value WILL break many types of registered
    #   credentials for accounts including but not limited to
    #   webauthn, oauth tokens, and more.
    #   If you change this value you *must* run
    #   `kanidmd domain rename` immediately after.
    domain = "{{ tpl .Values.kanidm.domain $ }}"
    #
    #   The origin for webauthn. This is the url to the server,
    #   with the port included if it is non-standard (any port
    #   except 443). This must match or be a descendent of the
    #   domain name you configure above. If these two items are
    #   not consistent, the server WILL refuse to start!
    #   origin = "https://idm.example.com"
    origin = "https://{{ tpl .Values.kanidm.domain $ }}:{{ .Values.service.port }}"
    #
    {{- if .Values.kanidmOnlineBackup.enabled }}
    [online_backup]
    #   The path to the output folder for online backups
    path = "{{ .Values.kanidmOnlineBackup.path }}"
    #   The schedule to run online backups (see https://crontab.guru/)
    #   every day at 22:00 UTC (default)
    schedule = "{{ .Values.kanidmOnlineBackup.schedule }}"
    #    four times a day at 3 minutes past the hour, every 6th hours
    # schedule = "03 */6 * * *"
    #   We also support non standard cron syntax, with the following format:
    #   sec  min   hour   day of month   month   day of week   year
    #   (it's very similar to the standard cron syntax, it just allows to specify the seconds
    #   at the beginning and the year at the end)
    #   Number of backups to keep (default 7)
    versions = {{ .Values.kanidmOnlineBackup.versions }}
    {{- end }}