{{ ansible_managed | comment }}

module(load="mmrm1stspace")

{%
    set input_modules = {
        "relp": "imrelp",
        "udp": "imudp",
    }
%}

{%
    for module in rsyslog_inputs
        | map(attribute="proto")
        | map("extract", input_modules)
        | list
        | unique
%}
module(load="{{ module }}")
{% endfor %}

template(name="incomingFilename" type="list") {
    constant(value="{{ rsyslog_collector_base_dir }}/")
    property(name="fromhost-ip")
    constant(value="/")
    property(name="timegenerated" dateFormat="year")
    constant(value="-")
    property(name="timegenerated" dateFormat="month")
    constant(value="-")
    property(name="timegenerated" dateFormat="day")
    constant(value=".log")
}

ruleset(name="handleIncomingLogs") {
    action(type="mmrm1stspace")
    action(
        type="omfile"
        dynaFile="incomingFilename"
        template="RSYSLOG_FileFormat"
    )
    call sendLogsToRemote
}

# TODO: add protocol-specific options (eg. TLS)
{% for input in rsyslog_inputs %}
input(
    type="{{ input_modules[input.proto] }}"
{% if "address" in input %}
    address="{{ input.address }}"
{% endif %}
    port="{{ input.port }}"
    ruleset="handleIncomingLogs"
)
{% endfor %}

# Store local logs too
call handleIncomingLogs