# The full URI to the database. SQLite and Postgres are fully supported.
# Other DBMSes supported by SQLAlchemy may or may not work.
# Format examples:
#   SQLite:   sqlite:///filename.db
#   Postgres: postgres://username:password@hostname/dbname
database: sqlite:////data/maubot.db

# Database for encryption data.
crypto_database:
    # Type of database. Either "default", "pickle" or "postgres".
    # When set to default, using SQLite as the main database will use pickle as the crypto database
    # and using Postgres as the main database will use the same one as the crypto database.
    #
    # When using pickle, individual crypto databases are stored in the pickle_dir directory.
    # When using non-default postgres, postgres_uri is used to connect to postgres.
    type: default
    postgres_uri: postgres://username:password@hostname/dbname
    pickle_dir: /data/crypto

plugin_directories:
    # The directory where uploaded new plugins should be stored.
    upload: /data/plugins
    # The directories from which plugins should be loaded.
    # Duplicate plugin IDs will be moved to the trash.
    load:
    - /data/plugins
    # The directory where old plugin versions and conflicting plugins should be moved.
    # Set to "delete" to delete files immediately.
    trash: /data/trash
    # The directory where plugin databases should be stored.
    db: /data/plugins

server:
    # The IP and port to listen to.
    hostname: 0.0.0.0
    port: 29316
    # Public base URL where the server is visible.
    public_url: https://example.com
    # The base management API path.
    base_path: /_matrix/maubot/v1
    # The base path for the UI.
    ui_base_path: /_matrix/maubot
    # The base path for plugin endpoints. The instance ID will be appended directly.
    plugin_base_path: /_matrix/maubot/plugin/
    # Override path from where to load UI resources.
    # Set to false to using pkg_resources to find the path.
    override_resource_path: /opt/maubot/frontend
    # The base appservice API path. Use / for legacy appservice API and /_matrix/app/v1 for v1.
    appservice_base_path: /_matrix/app/v1
    # The shared secret to sign API access tokens.
    # Set to "generate" to generate and save a new token at startup.
    unshared_secret: generate

# Shared registration secrets to allow registering new users from the management UI
registration_secrets:
    example.com:
        # Client-server API URL
        url: https://example.com
        # registration_shared_secret from synapse config
        secret: synapse_shared_registration_secret

# List of administrator users. Plaintext passwords will be bcrypted on startup. Set empty password
# to prevent normal login. Root is a special user that can't have a password and will always exist.
admins:
    root: ""

# API feature switches.
api_features:
    login: true
    plugin: true
    plugin_upload: true
    instance: true
    instance_database: true
    client: true
    client_proxy: true
    client_auth: true
    dev_open: true
    log: true

# Python logging configuration.
#
# See section 16.7.2 of the Python documentation for more info:
# https://docs.python.org/3.6/library/logging.config.html#configuration-dictionary-schema
logging:
    version: 1
    formatters:
        precise:
            format: "[%(asctime)s] [%(levelname)s@%(name)s] %(message)s"
    handlers:
        file:
            class: logging.handlers.RotatingFileHandler
            formatter: precise
            filename: /var/log/maubot.log
            maxBytes: 10485760
            backupCount: 10
        console:
            class: logging.StreamHandler
            formatter: precise
    loggers:
        maubot:
            level: DEBUG
        mautrix:
            level: DEBUG
        aiohttp:
            level: INFO
    root:
        level: DEBUG
        handlers: [file, console]
