# matrix-sms-bridge is a Matrix <-> SMS bridge
# See: https://github.com/benkuly/matrix-sms-bridge

matrix_sms_bridge_enabled: true

matrix_sms_bridge_docker_image: "folivonet/matrix-sms-bridge:latest"
matrix_sms_bridge_docker_image_force_pull: "{{ matrix_sms_bridge_docker_image.endswith(':latest') }}"
matrix_sms_bridge_database_docker_image: "neo4j:latest"
matrix_sms_bridge_database_docker_image_force_pull: "{{ matrix_sms_bridge_docker_image.endswith(':latest') }}"

matrix_sms_bridge_base_path: "{{ matrix_base_data_path }}/matrix-sms-bridge"
matrix_sms_bridge_config_path: "{{ matrix_base_data_path }}/matrix-sms-bridge/config"
matrix_sms_bridge_data_path: "{{ matrix_base_data_path }}/matrix-sms-bridge/data"
matrix_sms_bridge_data_log_path: "{{ matrix_base_data_path }}/matrix-sms-bridge/data/log"
matrix_sms_bridge_data_spool_path: "{{ matrix_base_data_path }}/matrix-sms-bridge/data/spool"
matrix_sms_bridge_data_spool_inbox_path: "{{ matrix_base_data_path }}/matrix-sms-bridge/data/spool/inbox"
matrix_sms_bridge_data_spool_inbox_processed_path: "{{ matrix_base_data_path }}/matrix-sms-bridge/data/spool/inbox_processed"
matrix_sms_bridge_data_spool_outbox_path: "{{ matrix_base_data_path }}/matrix-sms-bridge/data/spool/outbox"
matrix_sms_bridge_data_spool_sent_path: "{{ matrix_base_data_path }}/matrix-sms-bridge/data/spool/sent"
matrix_sms_bridge_data_spool_error_path: "{{ matrix_base_data_path }}/matrix-sms-bridge/data/spool/error"
matrix_sms_bridge_database_path: "{{ matrix_base_data_path }}/matrix-sms-bridge/database"

matrix_sms_bridge_appservice_token: ''
matrix_sms_bridge_homeserver_token: ''

matrix_sms_bridge_database_username: 'neo4j'
matrix_sms_bridge_database_password: ''

matrix_sms_bridge_container_http_host_bind_port: ''

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

# List of systemd services that service depends on.
matrix_sms_bridge_systemd_required_services_list: ['docker.service','matrix-sms-bridge-database.service']
matrix_sms_bridge_database_systemd_required_services_list: ['docker.service']

# List of systemd services that service wants
matrix_sms_bridge_systemd_wanted_services_list: []
matrix_sms_bridge_database_systemd_wanted_services_list: []

matrix_sms_bridge_appservice_url: 'http://matrix-sms-bridge:8080'
matrix_sms_bridge_database_url: 'bolt://matrix-sms-bridge-database:7687'
matrix_sms_bridge_homeserver_hostname: 'matrix-synapse'
matrix_sms_bridge_homeserver_port: '8008'

matrix_sms_bridge_homserver_domain: "{{ matrix_domain }}"
matrix_sms_bridge_default_room: ''

matrix_sms_bridge_gammu_modem: ''
matrix_sms_bridge_modem_group: 'dialout'
matrix_sms_bridge_gammu_reset_frequency: 0


matrix_sms_bridge_configuration_yaml: |
  #jinja2: lstrip_blocks: "True"

  # Database connection
  org:
    neo4j:
      driver:
        uri: {{ matrix_sms_bridge_database_url }}
        authentication:
          username: {{ matrix_sms_bridge_database_username }}
          password: {{ matrix_sms_bridge_database_password }}

  matrix:
    bridge:
      sms:
        # (optional) SMS messages without a valid token a routed to this room.
        # Note that you must invite @smsbot:yourHomeServer to this room.
        defaultRoomId: "{{ matrix_sms_bridge_default_room }}"
        provider:
          gammu:
            # (optional) default is disabled
            enabled: true
            # (optional) Path to the Gammu-Inbox directory.
            inboxPath: /data/spool/inbox
            # (optional) Path to the directory, where to put processed messages.
            inboxProcessedPath: /data/spool/inbox_processed
    bot:
      # The domain-part of matrix-ids. E. g. example.org when your userIds look like @unicorn:example.org
      serverName: {{ matrix_sms_bridge_homserver_domain }}
    client:
      homeServer:
        # The hostname of your Homeserver.
        hostname: {{ matrix_sms_bridge_homeserver_hostname }}
        # (optional) The port of your Homeserver. Default is 443.
        port: {{ matrix_sms_bridge_homeserver_port }}
        # (optional) Use http or https. Default is true (so uses https).
        secure: false
      # The token to authenticate against the Homeserver.
      token: {{ matrix_sms_bridge_appservice_token }}
    appservice:
      # A unique token for Homeservers to use to authenticate requests to this application service.
      hsToken: {{ matrix_sms_bridge_homeserver_token }}

matrix_sms_bridge_configuration_extension_yaml: |
  # Your custom YAML configuration goes here.
  # This configuration extends the default starting configuration (`matrix_sms_bridge_configuration_yaml`).
  #
  # You can override individual variables from the default configuration, or introduce new ones.
  #
  # If you need something more special, you can take full control by
  # completely redefining `matrix_sms_bridge_configuration_yaml`.

matrix_sms_bridge_configuration_extension: "{{ matrix_sms_bridge_configuration_extension_yaml|from_yaml if matrix_sms_bridge_configuration_extension_yaml|from_yaml is mapping else {} }}"

matrix_sms_bridge_configuration: "{{ matrix_sms_bridge_configuration_yaml|from_yaml|combine(matrix_sms_bridge_configuration_extension, recursive=True) }}"

matrix_sms_bridge_gammu_configuration: |
  [gammu]
  Device = {{ matrix_sms_bridge_gammu_modem }}
  LogFile = /data/log/gammu.log
  debugLevel = 1

  [smsd]
  Service = files
  LoopSleep = 2
  InboxPath = /data/spool/inbox/
  OutboxPath = /data/spool/outbox/
  SentSMSPath = /data/spool/sent/
  ErrorSMSPath = /data/spool/error/
  InboxFormat = detail
  OutboxFormat = detail
  TransmitFormat = auto
  ResetFrequency = {{ matrix_sms_bridge_gammu_reset_frequency }}
  debugLevel = 1
  LogFile = /data/log/smsd.log
  DeliveryReport = no
  HangupCalls = 1
  CheckBattery = 0


matrix_sms_bridge_registration_yaml: |
  id: sms
  as_token: "{{ matrix_sms_bridge_appservice_token }}"
  hs_token: "{{ matrix_sms_bridge_homeserver_token }}"
  namespaces:
      users:
      - exclusive: true
        regex: '^@sms_.+:{{ matrix_sms_bridge_homserver_domain|regex_escape }}$'
  url: {{ matrix_sms_bridge_appservice_url }}
  sender_localpart: smsbot
  rate_limited: false

matrix_sms_bridge_registration: "{{ matrix_sms_bridge_registration_yaml|from_yaml }}"