aboutsummaryrefslogtreecommitdiffstats
path: root/roles/znc/templates/znc.conf.j2
blob: a45aa8938d1ff17a9853b05b427802e41f6ff896 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
//
// WARNING
//
// Do NOT edit this file while ZNC is running!
// Use webadmin or *controlpanel instead.
//
// Altering this file by hand will forfeit all support.
//
// But if you feel risky, you might want to read help on:
//     /znc saveconfig
//     /znc rehash.
// Also check http://en.znc.in/wiki/Configuration
//

Version = 1.6.5
HideVersion = true
MaxBufferSize = {{ znc.buffer_size }}
SSLProtocols = +TLSv1.2 -TLSv1.1 -TLSv1 -SSLv3 -SSLv2

// SSL: https://wiki.znc.in/Signed_SSL_certificate
// Everything in a single file, in the order from the most *private* to
// the most *public* entries, except for the root certificate.
// i.e., cat ssl.key ssl.cert dhparam.pem > znc.allinone.pem
SSLCertFile = {{ znc.data_dir }}/znc.allinone.pem

// NOTE: SSLKeyFile & SSLDHParamFile requires version >=1.7
//SSLCertFile = {{ znc.data_dir }}/znc.ssl.crt
//SSLKeyFile = {{ znc.data_dir }}/znc.ssl.key
//SSLDHParamFile = /usr/local/etc/ssl/dhparam4096.pem

// NOTE: DragonFly BSD doesn't allow using "IPV6_V6ONLY=0" to bind on
//       both IPv4 & IPv6, therefore bind them separately.
{% for listener in ["ipv4", "ipv6"] %}
<Listener {{ listener }}>
    AllowIRC = true
    AllowWeb = false
    IPv4 = {% if listener == "ipv4" -%}
        true
    {% else -%}
        false
    {% endif -%}
    IPv6 = {% if listener == "ipv6" -%}
        true
    {% else -%}
        false
    {% endif -%}
    Port = {{ znc.port }}
    SSL = true
</Listener>
{% endfor %}

<User {{ znc.username }}>
    Admin = true
    Pass = {{ znc.password | znc_makepass }}
    Nick = {{ znc.username }}
    AltNick = {{ znc.username }}_
    Ident = {{ znc.username }}
    RealName = {{ znc.realname }}

    Buffer = {{ znc.buffer_size }}
    AutoClearChanBuffer = {{ znc.auto_clear_chan_buffer }}
    AppendTimestamp = false
    PrependTimestamp = true

    StatusPrefix = *
    ChanModes = +stn
    DenyLoadMod = false
    DenySetBindHost = false

    // Save channels to config when user joins and parts
    LoadModule = chansaver
    // Log chat activity to file
    LoadModule = log
    // Allow to add/remove/edit users/settings on the fly via IRC msgs
    LoadModule = controlpanel

    JoinTries = 10
    MaxJoins = 3
    MaxNetworks = 5
    MultiClients = true
    QuitMsg = {{ znc.quit_msg }}

{% for net in znc.networks %}
    <Network {{ net.name }}>
        // Automatically connects to the network
        IRCConnectEnabled = true

        // Automatically set you away on IRC when disconnected
        LoadModule = simple_away
        // Routes back answers to the right client when connected with
        // multiple clients
        LoadModule = route_replies
        // Try to get and keep the primary nick if it is taken
        LoadModule = keepnick
        // Auth with NickServ
        LoadModule = nickserv

        Server = {{ net.server }} {% if net.ssl|default(false) %}+{% endif%}{{ net.port }} {{ net.password|default("") }}
        {% if net.fingerprint is defined -%}
        TrustedServerFingerprint = {{ net.fingerprint }}
        {% endif %}

        {% for ch in net.channels -%}
        <Chan #{{ ch | regex_replace('^#', '') }}>
        </Chan>
        {% endfor %}

    </Network>

{% endfor %}
</User>