---

argument_specs:

  main:
    version_added: "0.0.1"
    short_description: Install and configure InspIRCd.
    description:
      - "Install and configure the L(InspIRCd,https://www.inspircd.org/) IRC daemon."
      - "Execution of this role can be limited using the following tags:"
      - "C(role::inspircd:install): Install InspIRCd from distribution packages."
      - "C(role::inspircd:config): Render the InspIRCd configuration."
      - "C(role::inspircd): Apply all of the above."
    author: s3lph
    options:
      inspircd_modules:
        description:
          - Modules to load.
        type: list
        elements: str
        default:
          - argon2
          - bcrypt
          - botmode
          - cap
          - connflood
          - ircv3
          - ircv3_batch
          - ircv3_capnotify
          - ircv3_ctctags
          - ircv3_labeledresponse
          - ircv3_msgid
          - ircv3_servertime
          - messageflood
          - password_hash
          - pbkdf2
          - sha256
          - showfile
          - sslmodes
          - sslrehashsignal
          - ssl_gnutls
          - spanningtree
          - userip
          - watch
      inspircd_modules_additional:
        description:
          - Additional modules to load.
        type: list
        elements: str
        default: []
      inspircd_server_hostname:
        description:
          - The hostname of the local server.
        type: str
        default: "{{ inventory_hostname }}"
      inspircd_server_description:
        description:
          - A description of the local server.
        type: str
        default: "{{ inventory_hostname }}"
      inspircd_server_network:
        description:
          - The name of the IRC network the local server is attached to.
        type: str
        default: "{{ inventory_hostname }}"
      inspircd_options_casemapping:
        description:
          - The casemapping to use when comparing channel and nicknames insensitively.
        type: str
        default: ascii
      inspircd_admin_nick:
        description:
          - The nickname of the server operator.
        type: str
        default: admin
      inspircd_admin_email:
        description:
          - The email address of the server operator.
        type: str
        default: noreply@example.com
      inspircd_motd:
        description:
          - Message of the day, ie. shown to users when they connect or use the /MOTD command.
        type: str
        default: |2
           CCCC  H   H    A    N   N   GGGG  EEEEE  M   M  EEEEE
          C      H   H   A A   NN  N  G      E      MM MM  E
          C      HHHHH  A   A  N N N  G  GG  EEE    M M M  EEE
          C      H   H  AAAAA  N  NN  G   G  E      M   M  E
           CCCC  H   H  A   A  N   N   GGGG  EEEEE  M   M  EEEEE
      inspircd_log_method:
        description:
          - The method to use for storing logs.
        type: str
        default: file
      inspircd_log_types:
        description:
          - List of types of message to log.
        type: list
        elements: str
        default:
          - CHANNELS
          - COMMAND
          - MODE
          - MODULE
          - SOCKET
          - STARTUP
          - core_channel
          - core_oper
          - core_reloadmodule
          - m_sasl
          - m_spanningtree
          - m_ssl_gnutls
          - m_sslinfo
          - m_topiclock
      inspircd_log_level:
        description:
          - The level of messages to log.
        type: str
        default: default
      inspircd_log_target:
        description:
          - The location to write the log to.
        type: str
        default: inspircd.log
      inspircd_log_flush:
        description:
          - After how many lines to flush the log to disk.
        type: int
        default: 20
      inspircd_gnutls_profiles:
        description:
          - This MUST be set to the name of a GnuTLS TLS (SSL) profile to listen for secure connections with GnuTLS.
        type: dict
        default: {}
      inspircd_bind:
        description:
          - Endpoints to listen for connections on.
        type: list
        elements: dict
        default:
          - address: "::1"
            port: 6667
      inspircd_autoconnect:
        description:
          - One or more servers to attempt to connect to.
        type: list
        elements: dict
        default: []
      inspircd_links:
        description:
          - Defines servers to link with.
        type: dict
        default: {}
      inspircd_ulines:
        description:
          - Defines one or more services servers.
        type: list
        elements: dict
        default: []
      inspircd_sasl_requiressl:
        description:
          - Whether TLS (SSL) is required to use SASL.
        type: bool
        default: true
      inspircd_oper_classes:
        description:
          - If defined then a connect class to assign users who log into this server operator account to.
        type: dict
      inspircd_oper_types:
        description:
          - Types of server operators.
        type: dict
      inspircd_opers:
        description:
          - Server operator accounts.
        type: dict
        default: {}
      inspircd_additional_config:
        description:
          - Wildcard option to append arbitrary additional configuration.
        type: str
        default: ""