]> jfr.im git - irc/rqf/shadowircd.git/blobdiff - doc/reference.conf
Added cycle_host_change option.
[irc/rqf/shadowircd.git] / doc / reference.conf
index 4d54480573c3181c60c06c5070dbac2e34b27212..db409ecd4e0e55d1ae2bd957d9115c874e937605 100755 (executable)
@@ -18,6 +18,9 @@
  * that matches a user will be used.  So place spoofs first, then specials,
  * then general access, then restricted.
  *
+ * privset {} blocks MUST be specified before anything that uses them.  That
+ * means they must be defined before operator {}.
+ *
  * Both shell style (#) and C style comments are supported.
  *
  * Files may be included by either:
@@ -41,6 +44,9 @@
  * Charybdis contains several extensions that are not enabled by default.
  * To use them, uncomment the lines below.
  *
+ * Channel mode +-A (admin only)                     -- chm_adminonly.so
+ * Channel mode +-O (oper only)                      -- chm_operonly.so
+ * Channel mode +-S (ssl only)                       -- chm_sslonly.so
  * Emulates channel mode +-O (oper only) (+-iI $o)   -- chm_operonly_compat.so
  * Emulates channel mode +-R (quiet unreg) (+-q $~a) -- chm_quietunreg_compat.so
  * Emulates channel mode +-S (ssl only) (+-b $~z)    -- chm_sslonly_compat.so
@@ -54,7 +60,8 @@
  * Server bans (+b $s:mask)                          -- extb_server.so
  * SSL bans (+b $z)                                  -- extb_ssl.so
  * HURT system                                       -- hurt.so
- * Host mangling (umode +h)                          -- ip_cloaking.so
+ * New host mangling (umode +x)                      -- ip_cloaking_4.0.so
+ * Old host mangling (umode +h)                      -- ip_cloaking.so
  * Find channel forwards                             -- m_findforwards.so
  * /identify support                                 -- m_identify.so
  * Opers cannot be invisible (umode +i)              -- no_oper_invis.so
@@ -63,6 +70,9 @@
  * Remote oper up notices                            -- sno_globaloper.so
  * /whois notifications (snomask +W)                 -- sno_whois.so
  */
+#loadmodule "extensions/chm_adminonly.so";
+#loadmodule "extensions/chm_operonly.so";
+#loadmodule "extensions/chm_sslonly.so";
 #loadmodule "extensions/chm_operonly_compat.so";
 #loadmodule "extensions/chm_quietunreg_compat.so";
 #loadmodule "extensions/chm_sslonly_compat.so";
@@ -76,6 +86,7 @@
 #loadmodule "extensions/extb_server.so";
 #loadmodule "extensions/extb_ssl.so";
 #loadmodule "extensions/hurt.so";
+#loadmodule "extensions/ip_cloaking_4.0.so";
 #loadmodule "extensions/ip_cloaking.so";
 #loadmodule "extensions/m_findforwards.so";
 #loadmodule "extensions/m_identify.so";
@@ -101,7 +112,7 @@ serverinfo {
        /* description: the description of our server.  '[' and ']' may not
         * be used here for compatibility with older servers.
         */
-       description = "charybdis test server";
+       description = "shadowircd test server";
 
        /* network info: the name and description of the network this server
         * is on.  Shown in the 005 reply and used with serverhiding.
@@ -133,8 +144,11 @@ serverinfo {
        /* ssl_dh_params: DH parameters, generate with openssl dhparam -out dh.pem 1024 */
        ssl_dh_params = "etc/dh.pem";
 
-       /* ssld_count: number of ssld processes you want to start, if you have a really busy 
-        * server, using N-1 where N is the number of cpu/cpu cores you have might be useful
+       /* ssld_count: number of ssld processes you want to start, if you
+        * have a really busy server, using N-1 where N is the number of
+        * cpu/cpu cores you have might be useful. A number greater than one
+        * can also be useful in case of bugs in ssld and because ssld needs
+        * two file descriptors per SSL connection.
         */
        ssld_count = 1;
 
@@ -204,19 +218,19 @@ class "users" {
          */
         number_per_ip_global = 5;
 
-       /* cidr_bitlen:  Limits numbers of connections from a subnet size
+       /* cidr_ipv4_bitlen:  Limits numbers of connections from a subnet size
+        */
+       cidr_ipv4_bitlen = 24;
+
+       /* cidr_ipv6_bitlen:  Limits numbers of connections from a subnet size
         * the following example makes the subnet /64 this is useful
         * for IPv6 connections in particular
-        * Also note that the way charybdis is written if you have
-        * compiled support for IPv6, IPv4 cidr bitlens need to be modified
-        * Basically to get the approriate length add 96 to the IPv4 length
-        * For example for a /24 do 96+24 = 120
-        *
         */
-       cidr_bitlen = 64;
+       cidr_ipv6_bitlen = 64;
 
        /* number_per_cidr:  Number of connections to allow from a subnet of the 
-        * size given in cidr_bitlen.  4 seems to be a good default to me.
+        * size given in cidr_ipv4_bitlen/cidr_ipv6_bitlen.
+        * 4 seems to be a good default to me.
         */
        number_per_cidr = 4;
 
@@ -310,6 +324,17 @@ auth {
         */
         spoof = "I.still.hate.packets";
 
+       /* autojoin: Channel (or channels, comma-seperated) to join users
+     * in this auth block to on connect. Note that this won't join
+     * the user through any bans or otherwise restrictive chmodes.
+     */
+    autojoin = "#shadowircd,#test";
+
+       /* autojoin_opers : Channel (or channels, comma-seperated) to join
+     * opers to on oper-up.
+     */
+    autojoin_opers = "#opers,#help";
+
        /* Possible flags in auth:
         * 
         * encrypted                  | password is encrypted with mkpasswd
@@ -326,6 +351,7 @@ auth {
          *                                     USE WITH CAUTION.
         * no_tilde     (old - flag)  | don't prefix ~ to username if no ident
         * need_ident   (old + flag)  | require ident for user in this class
+        * need_ssl                   | require SSL/TLS for user in this class
         * need_sasl                  | require SASL id for user in this class
         */
        flags = kline_exempt, exceed_limit;
@@ -355,10 +381,57 @@ auth {
        flags = need_ident;
 };
 
-/* operator {}: defines ircd operators. (OLD O:)
- * charybdis no longer supports local operators, privileges are
- * controlled via flags.
- */
+/* privset{}: defines operator privilege sets. */
+privset "local_op" {
+       /* privs: controls the activities and commands an oper is
+        * allowed to do on the server
+        *
+        * Available options:
+        *
+        * oper:local_kill:      allows local users to be /KILL'd
+        * oper:global_kill:     allows local and remote users to be /KILL'd
+        * oper:routing:         allows remote SQUIT and CONNECT
+        * oper:kline:           allows KLINE and DLINE
+        * oper:unkline:         allows UNKLINE and UNDLINE
+        * snomask:nick_changes: allows oper to see nickchanges via snomask +n
+        * oper:rehash:          allows oper to REHASH config
+        * oper:die:             allows DIE and RESTART
+        * oper:admin:           gives admin privileges.  admins
+        *                       may (un)load modules and see various
+        *                       additional information.
+        * oper:hidden_admin:    gives admin privileges except
+        *                       will not have the admin lines in
+        *                       whois.
+        * oper:xline:           allows use of /quote xline/unxline
+        * oper:resv:            allows /quote resv/unresv and cmode +LP
+        * oper:operwall:        allows the oper to send/receive operwalls
+        * oper:spy:             allows 'operspy' features to see through +s
+        *                       channels etc. see /quote help operspy
+        * oper:hidden:          hides the oper from /stats p
+        * oper:remoteban:       allows remote kline etc
+        * oper:mass_notice:     allows sending wallops and mass notices
+        */
+       privs = oper:local_kill, oper:operwall;
+};
+
+privset "server_bot" {
+       /* extends: a privset to inherit in this privset */
+       extends = "local_op";
+       privs = oper:kline, oper:remoteban, snomask:nick_changes;
+};
+
+privset "global_op" {
+       extends = "local_op";
+       privs = oper:global_kill, oper:routing, oper:kline, oper:unkline, oper:xline,
+               oper:resv, oper:mass_notice, oper:remoteban;
+};
+
+privset "admin" {
+       extends = "global_op";
+       privs = oper:admin, oper:die, oper:rehash, oper:spy;
+};
+
+/* operator {}: defines ircd operators. (OLD O:) */
 operator "god" {
        /* name: the name of the oper must go above */
 
@@ -381,6 +454,12 @@ operator "god" {
         */
        #rsa_public_key_file = "/usr/local/ircd/etc/oper.pub";
 
+       /* fingerprint: if specified, the oper's client certificate
+        * fingerprint will be checked against the specified fingerprint
+        * below.
+        */
+       #fingerprint = "c77106576abf7f9f90cca0f63874a60f2e40a64b";
+
        /* umodes: the specific umodes this oper gets when they oper.
         * If this is specified an oper will not be given oper_umodes
         * These are described above oper_only_umodes in general {};
@@ -392,42 +471,20 @@ operator "god" {
         */
        snomask = "+Zbfkrsuy";
 
-       /* privileges: controls the activities and commands an oper is
-        * allowed to do on the server.  You may prefix an option with ~ to
-        * disable it, ie ~operwall
+       /* flags: misc options for the operator.  You may prefix an option
+        * with ~ to disable it, e.g. ~encrypted.
         *
-        * Default flags are operwall, remoteban and encrypted.
+        * Default flags are encrypted.
         *
         * Available options:
         *
         * encrypted:    the password above is encrypted [DEFAULT]
-        * local_kill:   allows local users to be /KILL'd
-        * global_kill:  allows local and remote users to be 
-        *               /KILL'd                           (OLD 'O' flag)
-        * remote:       allows remote SQUIT and CONNECT   (OLD 'R' flag)
-        * kline:        allows KLINE and DLINE            (OLD 'K' flag)
-        * unkline:      allows UNKLINE and UNDLINE        (OLD 'U' flag)
-        * nick_changes: allows oper to see nickchanges    (OLD 'N' flag)
-        *               via snomask +n
-        * rehash:       allows oper to REHASH config      (OLD 'H' flag)
-        * die:          allows DIE and RESTART            (OLD 'D' flag)
-        * admin:        gives admin privileges.  admins
-        *               may (un)load modules and see the
-        *               real IPs of servers.
-        * hidden_admin: gives admin privileges except
-        *               will not have the admin lines in
-        *               stats p and whois.
-        * xline:        allows use of /quote xline/unxline
-        * resv:         allows /quote resv/unresv and cmode +LP [DEFAULT]
-        * operwall:     allows the oper to send/receive operwalls [DEFAULT]
-        * oper_spy:     allows 'operspy' features to see through +s
-        *               channels etc. see /quote help operspy
-        * hidden_oper:  hides the oper from /stats p    (OLD UMODE +p) 
-        * remoteban:    allows remote kline etc [DEFAULT]
-        * mass_notice:  allows sending wallops and mass notices [DEFAULT]
+        * need_ssl:     must be using SSL/TLS to oper up
          */
-       flags = global_kill, remote, kline, unkline,
-               die, rehash, admin, xline, operwall;
+       flags = encrypted;
+
+       /* privset: privileges set to grant */
+       privset = "admin";
 };
 
 /* connect {}: controls servers we connect to (OLD C:, N:, H:, L:) */
@@ -698,6 +755,23 @@ channel {
         * ratbox-services does.
         */
        kick_on_split_riding = no;
+
+       /* only ascii channels: disable local users joining channels
+        * containing characters outside the range 33-126 (non-printable
+        * or non-ASCII).
+        */
+       only_ascii_channels = no;
+
+       /* cycle_host_change: Should a user be cycled in the channels
+        * they're in when their host changes. If set to no, this may
+        * cause client desyncs.
+        */
+       cycle_host_change = yes;
+       /* resv_forcepart: force any local users to part a channel
+        * when a RESV is issued.
+        */
+       resv_forcepart = yes;
 };
 
 
@@ -727,7 +801,7 @@ serverhide {
 
 /* These are the blacklist settings.
  * You can have multiple combinations of host and rejection reasons.
- * They are used in pairs of one host/rejection reason, or multiple hosts/rejection reason.
+ * They are used in pairs of one host/rejection reason.
  *
  * These settings should be adequate for most networks, and are (presently)
  * required for use on AthemeNet.
@@ -829,7 +903,7 @@ general {
 
        /* default umodes: umodes to set upon connection
         * If you have enabled the ip_cloaking extension, and you wish for
-        * incoming clients to be set +h upon connection, add +h to the umode
+        * incoming clients to be set +h or +x upon connection, add +h or +x to the umode
         * string below.
         */
        default_umodes = "+i";
@@ -1100,13 +1174,6 @@ general {
         * provided they have umode +s set */
        oper_snomask = "+s";
 
-       /* servlink path: path to 'servlink' program used by ircd to handle
-        * encrypted/compressed server <-> server links.
-        *
-        * only define if servlink is not in same directory as ircd itself.
-        */
-       #servlink_path = "/usr/local/ircd/bin/servlink";
-
        /* use egd: if your system does not have *random devices yet you
         * want to use OpenSSL and encrypted links, enable this.  Beware -
         * EGD is *very* CPU intensive when gathering data for its pool
@@ -1153,10 +1220,14 @@ general {
        /* reject duration: the amount of time to cache the rejection */
        reject_duration = 5 minutes;
 
-       /* max_unknown_ip: maximum number of pending connections to the server
-         * that are allowed per IP address
+       /* throttle_duration: Amount of time that throttling will be applied to an IP
+        * address.
         */
-       max_unknown_ip = 2;
+       throttle_duration = 60;
+
+       /* throttle_count: Number of connections within throttle_duration that it takes
+        * for throttling to take effect */
+       throttle_count = 4;
 };
 
 modules {