playbook/ircd.j2

296 lines
6.5 KiB
Django/Jinja

/* Extensions */
loadmodule "extensions/chm_nonotice";
loadmodule "extensions/chm_operpeace";
loadmodule "extensions/chm_operonly";
#loadmodule "extensions/chm_regmsg"; # seems to force registration on plaintext users even if +R not set
loadmodule "extensions/chm_sslonly";
loadmodule "extensions/extb_account";
loadmodule "extensions/extb_canjoin";
loadmodule "extensions/extb_channel";
loadmodule "extensions/extb_combi";
loadmodule "extensions/extb_extgecos";
loadmodule "extensions/extb_hostmask";
loadmodule "extensions/extb_oper";
loadmodule "extensions/extb_realname";
loadmodule "extensions/extb_server";
loadmodule "extensions/extb_ssl";
loadmodule "extensions/extb_usermode";
loadmodule "extensions/helpops";
loadmodule "extensions/hurt";
loadmodule "extensions/m_extendchans";
loadmodule "extensions/m_findforwards";
loadmodule "extensions/m_sendbans";
loadmodule "extensions/m_identify";
loadmodule "extensions/m_locops";
loadmodule "extensions/invex_regonly"; # remove if solanum#207 is resolved
loadmodule "extensions/sno_farconnect";
loadmodule "extensions/sno_globalnickchange";
loadmodule "extensions/sno_globaloper";
loadmodule "extensions/override";
loadmodule "extensions/override_kick_immunity";
loadmodule "extensions/sasl_usercloak";
loadmodule "extensions/hide_uncommon_channels";
loadmodule "extensions/cap_oper";
loadmodule "extensions/cap_realhost";
serverinfo {
name = "{{ inventory_hostname }}";
sid = "{{ sid }}";
description = "{% if description is defined %}{{ description }}{% else %}solanum fox server{% endif %}";
network_name = "vulpineawoo";
{% if ssl_exists.stat.exists %}
ssl_cert = "etc/ssl.pem";
ssl_private_key = "etc/ssl.key";
ssl_dh_params = "etc/dh.pem";
ssld_count = 1;
{% endif %}
default_max_clients = 1024;
nicklen = 30;
};
admin {
name = "xfnw";
description = "friendly vulpine, requires payment in hugs.";
email = "services@owen.bellz.org";
};
{% include 'class.j2' %}
listen {
defer_accept = yes;
port = 6667;
{% if ssl_exists.stat.exists %}
sslport = 6697;
wsock = yes;
sslport = 7001;
{% endif %}
};
{% include 'auth.j2' %}
privset "wombat" {
privs = oper:general, oper:kline, oper:unkline, oper:xline, oper:kill, oper:testline,
oper:privs, oper:resv, oper:cmodes, oper:rehash, oper:remoteban, usermode:helpops,
oper:message, oper:operwall, auspex:oper, auspex:hostname, auspex:umodes,
auspex:cmodes, oper:receive_immunity;
};
privset "feesh" {
extends = "wombat";
privs = oper:mass_notice, oper:wallops;
};
privset "dingo" {
extends = "feesh";
privs = oper:override, oper:ojoin,
oper:dehelper, usermode:servnotice;
};
privset "shark" {
extends = "dingo";
privs = snomask:nick_changes;
};
privset "bandicoot" {
extends = "dingo";
privs = oper:routing;
};
privset "jellyfish" {
extends = "bandicoot";
privs = oper:admin, oper:die, oper:spy, oper:grant;
};
{% include 'operator.j2' %}
{% include 'connect.j2' %}
service {
name = "services.";
};
cluster {
name = "*";
flags = kline, tkline, unkline, xline, txline, unxline, resv, tresv, unresv, all;
};
channel {
use_invex = yes;
use_except = yes;
use_forward = yes;
use_knock = yes;
knock_delay = 5 minutes;
knock_delay_channel = 1 minute;
max_chans_per_user = 200;
max_chans_per_user_large = 500;
max_bans = 100;
max_bans_large = 500;
default_split_user_count = 0;
default_split_server_count = 0;
no_create_on_split = no;
no_join_on_split = no;
burst_topicwho = yes;
kick_on_split_riding = no;
only_ascii_channels = no;
resv_forcepart = yes;
channel_target_change = yes;
disable_local_channels = yes;
autochanmodes = "+ntC";
displayed_usercount = 3;
strip_topic_colors = no;
opmod_send_statusmsg = no;
};
serverhide {
flatten_links = yes;
links_delay = 5 minutes;
hidden = no;
disable_hidden = no;
};
{% include 'dnsbl.j2' %}
alias "NickServ" {
target = "NickServ";
};
alias "ChanServ" {
target = "ChanServ";
};
alias "OperServ" {
target = "OperServ";
};
alias "HostServ" {
target = "HostServ";
};
alias "MemoServ" {
target = "MemoServ";
};
alias "BotServ" {
target = "BotServ";
};
alias "CatServ" {
target = "CatServ";
};
alias "ALIS" {
target = "ALIS";
};
alias "NS" {
target = "NickServ";
};
alias "CS" {
target = "ChanServ";
};
alias "OS" {
target = "OperServ";
};
alias "HS" {
target = "HostServ";
};
alias "MS" {
target = "MemoServ";
};
alias "BS" {
target = "BotServ";
};
general {
hide_error_messages = opers;
hide_spoof_ips = yes;
default_umodes = "+i";
default_operstring = "is an IRC Operator";
default_adminstring = "is a Server Administrator";
servicestring = "is a Network Service";
sasl_service = "SaslServ";
disable_fake_channels = no;
tkline_expire_notices = no;
default_floodcount = 10;
failed_oper_notice = yes;
dots_in_ident = 2;
min_nonwildcard = 4;
min_nonwildcard_simple = 3;
max_accept = 100;
max_monitor = 100;
anti_nick_flood = yes;
max_nick_time = 20 seconds;
max_nick_changes = 5;
anti_spam_exit_message_time = 5 minutes;
ts_warn_delta = 30 seconds;
ts_max_delta = 5 minutes;
client_exit = yes;
collision_fnc = yes;
resv_fnc = yes;
global_snotices = yes;
dline_with_reason = yes;
kline_with_reason = yes;
hide_tkdline_duration = no;
kline_reason = "K-Lined";
identify_service = "NickServ@services.";
identify_command = "IDENTIFY";
non_redundant_klines = yes;
warn_no_nline = yes;
use_propagated_bans = yes;
stats_e_disabled = no;
stats_c_oper_only = no;
stats_y_oper_only = no;
stats_o_oper_only = yes;
stats_P_oper_only = no;
stats_i_oper_only = masked;
stats_k_oper_only = masked;
map_oper_only = no;
operspy_admin_only = no;
operspy_dont_care_user_info = no;
caller_id_wait = 1 minute;
pace_wait_simple = 1 second;
pace_wait = 10 seconds;
short_motd = no;
ping_cookie = no;
connect_timeout = 30 seconds;
default_ident_timeout = 5;
disable_auth = no;
no_oper_flood = yes;
max_targets = 4;
client_flood_max_lines = 15;
post_registration_delay = 0 seconds;
use_whois_actually = no;
oper_only_umodes = operwall, locops, servnotice;
oper_umodes = locops, servnotice, operwall, wallop;
oper_snomask = "+s";
burst_away = yes;
nick_delay = 0 seconds; # 15 minutes if you want to enable this
reject_ban_time = 10 minutes;
reject_after_count = 2;
reject_duration = 60 minutes;
throttle_duration = 60;
throttle_count = 4;
max_ratelimit_tokens = 30;
away_interval = 30;
certfp_method = sha512;
hide_opers_in_whois = no;
tls_ciphers_oper_only = no;
oper_secure_only = {% if ssl_exists.stat.exists %}yes{% else %}no{% endif %};
};
modules {
path = "modules";
path = "modules/autoload";
};