# SPDX-FileCopyrightText: 2022 - 2025 Nikita Chernyi
# SPDX-FileCopyrightText: 2022 - 2025 Slavi Pantaleev
# SPDX-FileCopyrightText: 2022 MDAD project contributors
# SPDX-FileCopyrightText: 2022 Marko Weltzer
# SPDX-FileCopyrightText: 2023 Samuel Meenzen
# SPDX-FileCopyrightText: 2024 Suguru Hirahara
#
# SPDX-License-Identifier: AGPL-3.0-or-later

---
# Honoroit is a helpdesk bot
# Project source code URL: https://github.com/etkecc/honoroit

matrix_bot_honoroit_enabled: true

# The hostname at which Honoroit is served.
matrix_bot_honoroit_hostname: ''

# The path at which Honoroit is exposed.
# This value must either be `/` or not end with a slash (e.g. `/honoroit`).
matrix_bot_honoroit_path_prefix: /

# The path at which Honoroit will expose metrics
# This value must either be `/` or not end with a slash (e.g. `/metrics`).
matrix_bot_honoroit_metrics_path: /metrics

matrix_bot_honoroit_container_image_self_build: false
matrix_bot_honoroit_docker_repo: "https://github.com/etkecc/honoroit.git"
matrix_bot_honoroit_docker_repo_version: "{{ matrix_bot_honoroit_version }}"
matrix_bot_honoroit_docker_src_files_path: "{{ matrix_base_data_path }}/honoroit/docker-src"

# renovate: datasource=docker depName=ghcr.io/etkecc/honoroit
matrix_bot_honoroit_version: v0.9.29
matrix_bot_honoroit_docker_image: "{{ matrix_bot_honoroit_docker_image_registry_prefix }}etkecc/honoroit:{{ matrix_bot_honoroit_version }}"
matrix_bot_honoroit_docker_image_registry_prefix: "{{ 'localhost/' if matrix_bot_honoroit_container_image_self_build else matrix_bot_honoroit_docker_image_registry_prefix_upstream }}"
matrix_bot_honoroit_docker_image_registry_prefix_upstream: "{{ matrix_bot_honoroit_docker_image_registry_prefix_upstream_default }}"
matrix_bot_honoroit_docker_image_registry_prefix_upstream_default: "ghcr.io/"
matrix_bot_honoroit_docker_image_force_pull: "{{ matrix_bot_honoroit_docker_image.endswith(':latest') }}"

matrix_bot_honoroit_base_path: "{{ matrix_base_data_path }}/honoroit"
matrix_bot_honoroit_config_path: "{{ matrix_bot_honoroit_base_path }}/config"
matrix_bot_honoroit_data_path: "{{ matrix_bot_honoroit_base_path }}/data"
matrix_bot_honoroit_data_store_path: "{{ matrix_bot_honoroit_data_path }}/store"

# The base container network. It will be auto-created by this role if it doesn't exist already.
matrix_bot_honoroit_container_network: ""

# A list of additional container networks that the container would be connected to.
# The role does not create these networks, so make sure they already exist.
# Use this to expose this container to another reverse proxy, which runs in a different container network.
matrix_bot_honoroit_container_additional_networks: []

# matrix_bot_honoroit_container_labels_traefik_enabled controls whether labels to assist a Traefik reverse-proxy will be attached to the container.
# See `../templates/labels.j2` for details.
#
# To inject your own other container labels, see `matrix_bot_honoroit_container_labels_additional_labels`.
matrix_bot_honoroit_container_labels_traefik_enabled: true
matrix_bot_honoroit_container_labels_traefik_docker_network: "{{ matrix_bot_honoroit_container_network }}"
matrix_bot_honoroit_container_labels_traefik_hostname: "{{ matrix_bot_honoroit_hostname }}"
# The path prefix must either be `/` or not end with a slash (e.g. `/honoroit`).
matrix_bot_honoroit_container_labels_traefik_path_prefix: "{{ matrix_bot_honoroit_path_prefix }}"
matrix_bot_honoroit_container_labels_traefik_metrics_path: "{{ '' if matrix_bot_honoroit_path_prefix == '/' else matrix_bot_honoroit_path_prefix }}{{ matrix_bot_honoroit_metrics_path }}"
matrix_bot_honoroit_container_labels_traefik_metrics_rule: "Host(`{{ matrix_bot_honoroit_container_labels_traefik_hostname }}`) && Path(`{{ matrix_bot_honoroit_container_labels_traefik_metrics_path }}`)"
matrix_bot_honoroit_container_labels_traefik_priority: 0
matrix_bot_honoroit_container_labels_traefik_entrypoints: web-secure
matrix_bot_honoroit_container_labels_traefik_tls: "{{ matrix_bot_honoroit_container_labels_traefik_entrypoints != 'web' }}"
matrix_bot_honoroit_container_labels_traefik_tls_certResolver: default  # noqa var-naming

# Controls which additional headers to attach to all HTTP responses.
# To add your own headers, use `matrix_bot_honoroit_container_labels_traefik_additional_response_headers_custom`
matrix_bot_honoroit_container_labels_traefik_additional_response_headers: "{{ matrix_bot_honoroit_container_labels_traefik_additional_response_headers_auto | combine(matrix_bot_honoroit_container_labels_traefik_additional_response_headers_custom) }}"
matrix_bot_honoroit_container_labels_traefik_additional_response_headers_auto: {}
matrix_bot_honoroit_container_labels_traefik_additional_response_headers_custom: {}

# matrix_bot_honoroit_container_labels_additional_labels contains a multiline string with additional labels to add to the container label file.
# See `../templates/labels.j2` for details.
#
# Example:
# matrix_bot_honoroit_container_labels_additional_labels: |
#   my.label=1
#   another.label="here"
matrix_bot_honoroit_container_labels_additional_labels: ''

# A list of extra arguments to pass to the container
matrix_bot_honoroit_container_extra_arguments: []

# List of systemd services that matrix-bot-honoroit.service depends on
matrix_bot_honoroit_systemd_required_services_list: "{{ matrix_bot_honoroit_systemd_required_services_list_default + matrix_bot_honoroit_systemd_required_services_list_auto + matrix_bot_honoroit_systemd_required_services_list_custom }}"
matrix_bot_honoroit_systemd_required_services_list_default: "{{ [devture_systemd_docker_base_docker_service_name] if devture_systemd_docker_base_docker_service_name else [] }}"
matrix_bot_honoroit_systemd_required_services_list_auto: []
matrix_bot_honoroit_systemd_required_services_list_custom: []

# List of systemd services that matrix-bot-honoroit.service wants
matrix_bot_honoroit_systemd_wanted_services_list: []


# Database-related configuration fields.
#
# To use SQLite, stick to these defaults.
#
# To use Postgres:
# - change the engine (`matrix_bot_honoroit_database_engine: 'postgres'`)
# - adjust your database credentials via the `matrix_bot_honoroit_database_*` variables
matrix_bot_honoroit_database_engine: 'sqlite'

matrix_bot_honoroit_sqlite_database_path_local: "{{ matrix_bot_honoroit_data_path }}/bot.db"
matrix_bot_honoroit_sqlite_database_path_in_container: "/data/bot.db"

matrix_bot_honoroit_database_username: 'honoroit'
matrix_bot_honoroit_database_password: 'some-password'
matrix_bot_honoroit_database_hostname: ''
matrix_bot_honoroit_database_port: 5432
matrix_bot_honoroit_database_name: 'honoroit'
matrix_bot_honoroit_database_sslmode: disable

matrix_bot_honoroit_database_connection_string: 'postgres://{{ matrix_bot_honoroit_database_username }}:{{ matrix_bot_honoroit_database_password }}@{{ matrix_bot_honoroit_database_hostname }}:{{ matrix_bot_honoroit_database_port }}/{{ matrix_bot_honoroit_database_name }}?sslmode={{ matrix_bot_honoroit_database_sslmode }}'

matrix_bot_honoroit_storage_database: "{{
	{
		'sqlite': matrix_bot_honoroit_sqlite_database_path_in_container,
		'postgres': matrix_bot_honoroit_database_connection_string,
	}[matrix_bot_honoroit_database_engine]
}}"

matrix_bot_honoroit_database_dialect: "{{
  {
    'sqlite': 'sqlite3',
    'postgres': 'postgres',
  }[matrix_bot_honoroit_database_engine]
}}"


# The bot's username. This user needs to be created manually beforehand.
# Also see `matrix_bot_honoroit_password`.
matrix_bot_honoroit_login: "honoroit"

# The password that the bot uses to authenticate.
matrix_bot_honoroit_password: ''

matrix_bot_honoroit_homeserver: ""

# The room ID where bot will create threads
matrix_bot_honoroit_roomid: ''

# Command prefix
matrix_bot_honoroit_prefix: ''

# Sentry DSN
matrix_bot_honoroit_sentry: ''

# Log level
matrix_bot_honoroit_loglevel: ''

# /metrics basic auth login
matrix_bot_honoroit_auth_metrics_login: ''
# /metrics basic auth password
matrix_bot_honoroit_auth_metrics_password: ''
# /metrics basic auth allowed IPs
matrix_bot_honoroit_auth_metrics_ips: []

# Optional healthchecks.io integration
matrix_bot_honoroit_healthchecks_url: 'https://hc-ping.com'
matrix_bot_honoroit_healthchecks_uuid: ''
matrix_bot_honoroit_healthchecks_duration: 60  # in seconds

# Optional Redmine integration
matrix_bot_honoroit_redmine_host: ''  # e.g. https://redmine.example.com
matrix_bot_honoroit_redmine_apikey: ''
matrix_bot_honoroit_redmine_project: ''  # project identifier (e.g. 'myproject')
matrix_bot_honoroit_redmine_tracker_id: ''  # tracker ID (e.g. 1)
matrix_bot_honoroit_redmine_new_status_id: ''  # new status ID (e.g. 1)
matrix_bot_honoroit_redmine_in_progress_status_id: ''  # in progress status ID (e.g. 2)
matrix_bot_honoroit_redmine_done_status_id: ''  # done status ID (e.g. 3)

# A list of whitelisted users allowed to use/invite a Honoroit bot
# If not defined, everyone is allowed.
# Example set of rules:
# matrix_bot_honoroit_allowedusers:
# - @alice:example.com
# - @bob:example.com
# - @bot.*:example.com
# - @*:example.net
matrix_bot_honoroit_allowedusers:
  - "@*:*"

# Max items in cache
matrix_bot_honoroit_cachesize: ''

# List of ignored room IDs
matrix_bot_honoroit_ignoredrooms: []

# If enabled, the bot will not send a warning message in an encrypted room
matrix_bot_honoroit_no_encryption_warning: false

# Ignore messages outside of threads
matrix_bot_honoroit_ignorenothread: false

# Text prefix: open
matrix_bot_honoroit_text_prefix_open: ''

# Text prefix: done
matrix_bot_honoroit_text_prefix_done: ''

# Text: no encryption
matrix_bot_honoroit_text_noencryption: ''

# Text: greetings
matrix_bot_honoroit_text_greetings: ''

# Text: invite
matrix_bot_honoroit_text_invite: ''

# Text: join
matrix_bot_honoroit_text_join: ''

# Text: leave
matrix_bot_honoroit_text_leave: ''

# Text: error
matrix_bot_honoroit_text_error: ''

# Text: empty room
matrix_bot_honoroit_text_emptyroom: ''

# Text: done
matrix_bot_honoroit_text_done: ''

# Additional environment variables to pass to the Honoroit container
#
# Example:
# matrix_bot_honoroit_environment_variables_extension: |
#   HONOROIT_TEXT_DONE=Done
matrix_bot_honoroit_environment_variables_extension: ''
