/* 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"; };