summaryrefslogtreecommitdiff
path: root/data
diff options
context:
space:
mode:
Diffstat (limited to 'data')
-rw-r--r--data/CMakeLists.txt6
-rw-r--r--data/anope.example.conf (renamed from data/example.conf)274
-rw-r--r--data/ascii.conf157
-rw-r--r--data/bahamut.example.conf170
-rw-r--r--data/botserv.example.conf56
-rw-r--r--data/chanserv.example.conf136
-rw-r--r--data/chanstats.example.conf2
-rw-r--r--data/example.chk8
-rw-r--r--data/global.example.conf15
-rw-r--r--data/hostserv.example.conf39
-rw-r--r--data/hybrid.example.conf231
-rw-r--r--data/inspircd20.example.conf547
-rw-r--r--data/memoserv.example.conf61
-rw-r--r--data/modules.example.conf228
-rw-r--r--data/ngircd.example.conf234
-rw-r--r--data/nickserv.example.conf109
-rw-r--r--data/operserv.example.conf135
-rw-r--r--data/plexus.example.conf294
-rw-r--r--data/ratbox.example.conf174
-rw-r--r--data/rfc1459.conf24
-rw-r--r--data/stats.standalone.example.conf513
-rw-r--r--data/unreal.example.conf449
22 files changed, 2709 insertions, 1153 deletions
diff --git a/data/CMakeLists.txt b/data/CMakeLists.txt
index 8bb635dcf..2515bc082 100644
--- a/data/CMakeLists.txt
+++ b/data/CMakeLists.txt
@@ -1,6 +1,4 @@
-# Only install example.chk and example.conf from this directory
-# NOTE: I would've had this just find all files in the directory, but that would include files not needed (like this file)
-set(DATA example.chk botserv.example.conf example.conf hostserv.example.conf modules.example.conf operserv.example.conf chanserv.example.conf global.example.conf memoserv.example.conf nickserv.example.conf chanstats.example.conf irc2sql.example.conf stats.standalone.example.conf)
-install(FILES ${DATA}
+file(GLOB DATA_EXAMPLECONFS RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "*.conf")
+install(FILES example.chk ${DATA_EXAMPLECONFS}
DESTINATION ${CONF_DIR}
)
diff --git a/data/example.conf b/data/anope.example.conf
index 763eed4c7..2391f19ec 100644
--- a/data/example.conf
+++ b/data/anope.example.conf
@@ -1,8 +1,8 @@
/*
- * Example configuration file for Services. After making the appropriate
- * changes to this file, place it in the Services conf directory (as
- * specified in the "configure" script, default /home/username/services/conf)
- * under the name "services.conf".
+ * Example configuration file for Anope. After making the appropriate
+ * changes to this file, place it in the Anope conf directory (as
+ * specified in the "configure" script, default /home/username/anope/conf)
+ * under the name "anope.conf".
*
* The format of this file is fairly simple: three types of comments are supported:
* - All text after a '#' on a line is ignored, as in shell scripting
@@ -53,7 +53,7 @@
* included to indicate whether an option is required:
*
* [REQUIRED]
- * Indicates a directive which must be given. Without it, Services will
+ * Indicates a directive which must be given. Without it, Anope will
* not start.
*
* [RECOMMENDED]
@@ -71,7 +71,7 @@
*
* [DEPRECATED]
* Indicates a directive which will disappear in a future version of
- * Services, usually because its functionality has been either
+ * Anope, usually because its functionality has been either
* superseded by that of other directives or incorporated into the main
* program.
*/
@@ -110,7 +110,7 @@ define
#include
{
type = "executable"
- name = "/usr/bin/wget -q -O - http://some.misconfigured.network.com/services.conf"
+ name = "/usr/bin/wget -q -O - http://some.misconfigured.network.com/anope.conf"
}
/*
@@ -120,7 +120,7 @@ define
* This section can be included multiple times, and Anope will attempt to
* connect to each server until it finally connects.
*
- * Each uplink IRCd should have a corresponding configuration to allow Services
+ * Each uplink IRCd should have a corresponding configuration to allow services
* to link to it.
*
* An example configuration for InspIRCd that is compatible with the below uplink
@@ -154,20 +154,20 @@ define
uplink
{
/*
- * The IP or hostname of the IRC server you wish to connect Services to.
- * Usually, you will want to connect Services over 127.0.0.1 (aka localhost).
+ * The IP or hostname of the IRC server you wish to connect Anope to.
+ * Usually, you will want to connect over 127.0.0.1 (aka localhost).
*
* NOTE: On some shell providers, this will not be an option.
*/
host = "127.0.0.1"
/*
- * Enable if Services should connect using IPv6.
+ * Enable if Anope should connect using IPv6.
*/
ipv6 = no
/*
- * Enable if Services should connect using SSL.
+ * Enable if Anope should connect using SSL.
* You must have an SSL module loaded for this to work.
*/
ssl = no
@@ -193,12 +193,12 @@ uplink
/*
* [REQUIRED] Server Information
*
- * This section contains information about the Services server.
+ * This section contains information about the services server.
*/
serverinfo
{
/*
- * The hostname that Services will be seen as, it must have no conflicts with any
+ * The hostname that services will be seen as, it must have no conflicts with any
* other server names on the rest of your IRC network. Note that it does not have
* to be an existing hostname, just one that isn't on your network already.
*/
@@ -208,11 +208,11 @@ serverinfo
* The text which should appear as the server's information in /whois and similar
* queries.
*/
- description = "Services for IRC Networks"
+ description = "Anope IRC Services"
/*
- * The local address that Services will bind to before connecting to the remote
- * server. This may be useful for multihomed hosts. If omitted, Services will let
+ * The local address that services will bind to before connecting to the remote
+ * server. This may be useful for multihomed hosts. If omitted, services will let
* the Operating System choose the local address. This directive is optional.
*
* If you don't know what this means or don't need to use it, just leave this
@@ -228,86 +228,69 @@ serverinfo
#id = "00A"
/*
- * The filename containing the Services process ID. The path is relative to the
+ * The filename containing the Anope process ID. The path is relative to the
* services root directory.
*/
- pid = "data/services.pid"
+ pid = "data/anope.pid"
/*
* The filename containing the Message of the Day. The path is relative to the
* services root directory.
*/
- motd = "conf/services.motd"
+ motd = "conf/motd.txt"
}
/*
- * [REQUIRED] Protocol module
+ * [REQUIRED] Protocol configuration.
*
* This directive tells Anope which IRCd Protocol to speak when connecting.
- * You MUST modify this to match the IRCd you run.
+ * You MUST modify this to match the IRCd you run. You may want to modify
+ * the protocol configuration file to tune protocol specific features.
*
* Supported:
* - bahamut
* - charybdis
* - hybrid
- * - inspircd12
* - inspircd20
* - ngircd
* - plexus
* - ratbox
- * - unreal (for 3.2.x)
- * - unreal4
+ * - unreal
*/
-module
+include
{
- name = "inspircd20"
-
- /*
- * Some protocol modules can enforce mode locks server-side. This reduces the spam caused by
- * services immediately reversing mode changes for locked modes.
- *
- * If the protocol module you have loaded does not support this, this setting will have no effect.
- */
- use_server_side_mlock = yes
-
- /*
- * Some protocol modules can enforce topic locks server-side. This reduces the spam caused by
- * services immediately reversing topic changes.
- *
- * If the protocol module you have loaded does not support this, this setting will have no effect.
- */
- use_server_side_topiclock = yes
+ name = "inspircd20.example.conf"
}
/*
* [REQUIRED] Network Information
*
- * This section contains information about the IRC network that Services will be
+ * This section contains information about the IRC network that Anope will be
* connecting to.
*/
networkinfo
{
/*
- * This is the name of the network that Services will be running on.
+ * This is the name of the network that Anope will be running on.
*/
networkname = "LocalNet"
/*
* Set this to the maximum allowed nick length on your network.
* Be sure to set this correctly, as setting this wrong can result in
- * Services being disconnected from the network.
+ * services being disconnected from the network.
*/
nicklen = 31
/* Set this to the maximum allowed ident length on your network.
* Be sure to set this correctly, as setting this wrong can result in
- * Services being disconnected from the network.
+ * services being disconnected from the network.
*/
userlen = 10
/* Set this to the maximum allowed hostname length on your network.
* Be sure to set this correctly, as setting this wrong can result in
- * Services being disconnected from the network.
+ * services being disconnected from the network.
*/
hostlen = 64
@@ -323,7 +306,7 @@ networkinfo
/*
* Characters allowed in nicknames. This always includes the characters described
* in RFC1459, and so does not need to be set for normal behavior. Changing this to
- * include characters your IRCd doesn't support will cause your IRCd and/or Services
+ * include characters your IRCd doesn't support will cause your IRCd and/or services
* to break. Multibyte characters are not supported, nor are escape sequences.
*
* It is recommended you DON'T change this.
@@ -335,7 +318,7 @@ networkinfo
* to services, such as BotServ bot hostnames and user vhosts. Changing this is not
* recommended unless you know for sure your IRCd supports whatever characters you are
* wanting to use. Telling services to set a vHost containing characters your IRCd
- * disallows could potentially break the IRCd and/or Services.
+ * disallows could potentially break the IRCd and/or services.
*
* It is recommended you DON'T change this.
*/
@@ -360,32 +343,43 @@ networkinfo
}
/*
- * [REQUIRED] Services Options
+ * [REQUIRED] Anope Options
*
- * This section contains various options which determine how Services will operate.
+ * This section contains various options which determine how Anope will operate.
*/
options
{
/*
* On Linux/UNIX systems Anope can setuid and setgid to this user and group
- * after starting up. This is useful if Anope has to bind to privileged ports
+ * after starting up. This is useful if Anope has to bind to privileged ports.
*/
#user = "anope"
#group = "anope"
/*
- * The case mapping used by services. This must be set to a valid locale name
- * installed on your machine. Services use this case map to compare, with
- * case insensitivity, things such as nick names, channel names, etc.
+ * Chooses the configuration file used to configure casemaps for Anope.
+ * Anope uses this case map to compare, with case insensitivity,
+ * nick names and channel names.
+ *
+ * Two casemaps shipped with Anope are ascii and rfc1459.
+ *
+ * You may create your own instead by defining casemapping directives
+ * similar to how ascii.conf and rfc1459.conf do. However, they are
+ * limited to single byte characters only.
*
- * We provide two special casemaps shipped with Anope, ascii and rfc1459.
+ * Alternatively, if you have Boost.Locale installed, instead of configuring
+ * a casemapping configuration file, you may configure a locale name. This
+ * can support variable-length character encodings like utf-8.
*
- * This value should be set to what your IRCd uses, which is probably rfc1459,
- * however Anope has always used ascii for comparison, so the default is ascii.
+ * The casemapping you use should be set to what your IRCd uses, which is
+ * probably rfc1459. However, Anope has always used ascii for comparison,
+ * so the default is ascii.
*
* Changing this value once set is not recommended.
*/
casemap = "ascii"
+ #casemap = "rfc1459"
+ #locale = "utf-8"
/*
* This key is used to initiate the random number generator. This number
@@ -401,10 +395,10 @@ options
#seed = 9866235
/*
- * If set, Services will perform more stringent checks on passwords. If this
- * isn't set, Services will only disallow a password if it is the same as the
+ * If set, services will perform more stringent checks on passwords. If this
+ * isn't set, services will only disallow a password if it is the same as the
* entity (nickname name) with which it is associated. When set, however,
- * Services will also check that the password is at least five
+ * services will also check that the password is at least five
* characters long, and in the future will probably check other things
* as well.
*
@@ -413,11 +407,11 @@ options
strictpasswords = yes
/*
- * Sets the number of invalid password tries before Services removes a user
+ * Sets the number of invalid password tries before services removes a user
* from the network. If a user enters a number of invalid passwords equal to
- * the given amount for any Services function or combination of functions
- * during a single IRC session (subject to badpasstimeout, below), Services
- * will issues a /KILL for the user. If not given, Services will ignore
+ * the given amount for any services function or combination of functions
+ * during a single IRC session (subject to badpasstimeout, below), services
+ * will issues a /KILL for the user. If not given, services will ignore
* failed password attempts (though they will be logged in any case).
*
* This directive is optional, but recommended.
@@ -459,7 +453,7 @@ options
/*
* Sets the (maximum) frequency at which the timeout list is checked. This,
* combined with readtimeout above, determines how accurately timed events,
- * such as nick kills, occur; it also determines how much CPU time Services
+ * such as nick kills, occur; it also determines how much CPU time services
* will use doing this. Higher values will cause less accurate timing but
* less CPU usage.
*
@@ -472,7 +466,7 @@ options
timeoutcheck = 3s
/*
- * If set, this will allow users to let Services send PRIVMSGs to them
+ * If set, this will allow users to let services send PRIVMSGs to them
* instead of NOTICEs. Also see the "msg" option of nickserv:defaults,
* which also toggles the default communication (PRIVMSG or NOTICE) to
* use for unregistered users.
@@ -485,7 +479,7 @@ options
#useprivmsg = yes
/*
- * If set, will force Services to only respond to PRIVMSGs addresses to
+ * If set, will force services to only respond to PRIVMSGs addresses to
* Nick@ServerName - e.g. NickServ@localhost.net. This should be used in
* conjunction with IRCd aliases. This directive is optional.
*
@@ -494,14 +488,14 @@ options
#usestrictprivmsg = yes
/*
- * If set, Services will only show /stats o to IRC Operators. This directive
+ * If set, services will only show /stats o to IRC Operators. This directive
* is optional.
*/
#hidestatso = yes
/*
* A space-separated list of ulined servers on your network, it is assumed that
- * the servers in this list are allowed to set channel modes and Services will
+ * the servers in this list are allowed to set channel modes and services will
* not attempt to reverse their mode changes.
*
* WARNING: Do NOT put your normal IRC user servers in this directive.
@@ -516,23 +510,23 @@ options
retrywait = 60s
/*
- * If set, Services will hide commands that users don't have the privilege to execute
+ * If set, services will hide commands that users don't have the privilege to execute
* from HELP output.
*/
hideprivilegedcommands = yes
/*
- * If set, Services will hide commands that users can't execute because they are not
+ * If set, services will hide commands that users can't execute because they are not
* logged in from HELP output.
*/
hideregisteredcommands = yes
- /* The regex engine to use, as provided by the regex modules.
- * Leave commented to disable regex matching.
+ /*
+ * The grammar regular expressions should use. Options are "ecmascript", "basic", "extended", "awk", "grep", and "egrep".
*
- * Note for this to work the regex module providing the regex engine must be loaded.
+ * This directive is optional.
*/
- regexengine = "regex/pcre"
+ regexengine = "ecmascript"
/*
* A list of languages to load on startup that will be available in /nickserv set language.
@@ -737,7 +731,7 @@ log
log
{
target = "globops"
- admin = "global/* operserv/chankill operserv/mode operserv/kick operserv/akill operserv/s*line operserv/noop operserv/jupe operserv/oline operserv/set operserv/svsnick operserv/svsjoin operserv/svspart nickserv/getpass */drop"
+ admin = "global/* operserv/chankill operserv/mode operserv/kick operserv/akill operserv/s*line operserv/noop operserv/jupe operserv/oline operserv/set operserv/svsnick operserv/svsjoin operserv/svspart */drop"
servers = "squit"
users = "oper"
other = "expire/* bados akill/*"
@@ -775,7 +769,7 @@ log
* nickserv/drop - Can drop other users nicks
* operserv/config - Can modify services's configuration
* operserv/oper/modify - Can add and remove operators with at most the same privileges
- * protected - Can not be kicked from channels by Services
+ * protected - Can not be kicked from channels by services
*
* Available commands:
* botserv/bot/del botserv/bot/add botserv/bot/change botserv/set/private
@@ -793,8 +787,7 @@ log
*
* memoserv/sendall memoserv/staff
*
- * nickserv/getpass nickserv/getemail nickserv/suspend nickserv/ajoin
- * nickserv/list
+ * nickserv/getemail nickserv/suspend nickserv/ajoin nickserv/list
*
* nickserv/saset/autoop nickserv/saset/email nickserv/saset/greet nickserv/saset/password
* nickserv/saset/display nickserv/saset/kill nickserv/saset/language nickserv/saset/message
@@ -880,10 +873,10 @@ opertype
* After defining different types of operators in the above opertype section, we now define who is in these groups
* through 'oper' blocks, similar to ircd access.
*
- * The default is to comment these out (so NOBODY will have Services access).
+ * The default is to comment these out (so NOBODY will have access).
* You probably want to add yourself and a few other people at minimum.
*
- * As with all permissions, make sure to only give trustworthy people access to Services.
+ * As with all permissions, make sure to only give trustworthy people access.
*/
#oper
@@ -894,7 +887,7 @@ opertype
/* The opertype this person will have */
type = "Services Root"
- /* If set, the user must be an oper on the IRCd to gain their Services
+ /* If set, the user must be an oper on the IRCd to gain their
* oper privileges.
*/
require_oper = yes
@@ -929,7 +922,7 @@ opertype
/*
* [OPTIONAL] Mail Config
*
- * This section contains settings related to the use of e-mail from Services.
+ * This section contains settings related to the use of e-mail from services.
* If the usemail directive is set to yes, unless specified otherwise, all other
* directives are required.
*
@@ -940,7 +933,7 @@ opertype
mail
{
/*
- * If set, this option enables the mail commands in Services. You may choose
+ * If set, this option enables the mail commands in Anope. You may choose
* to disable it if you have no Sendmail-compatible mailer installed. Whilst
* this directive (and entire block) is optional, it is required if
* nickserv:registration is set to yes.
@@ -971,7 +964,7 @@ mail
* another e-mail after they have sent one. It also controls the minimum time
* a user must wait before they can receive another e-mail.
*
- * This feature prevents users from being mail bombed using Services and
+ * This feature prevents users from being mail bombed using services and
* it is highly recommended that it be used.
*
* This directive is optional, but highly recommended.
@@ -979,7 +972,7 @@ mail
delay = 5m
/*
- * If set, Services will not attempt to put quotes around the TO: fields
+ * If set, Anope will not put quotes around the TO: fields
* in e-mails.
*
* This directive is optional, and as far as we know, it's only needed
@@ -1057,7 +1050,7 @@ mail
*/
#module
{
- name = "db_old"
+ name = "database/old"
/*
* This is the encryption type used by the databases. This must be set correctly or
@@ -1075,7 +1068,7 @@ mail
*/
module
{
- name = "db_flatfile"
+ name = "database/flatfile"
/*
* The database name db_flatfile should use
@@ -1084,18 +1077,18 @@ module
/*
* Sets the number of days backups of databases are kept. If you don't give it,
- * or if you set it to 0, Services won't backup the databases.
+ * or if you set it to 0, Anope won't backup the databases.
*
- * NOTE: Services must run 24 hours a day for this feature to work.
+ * NOTE: Anope must run 24 hours a day for this feature to work.
*
* This directive is optional, but recommended.
*/
keepbackups = 3
/*
- * Allows Services to continue file write operations (i.e. database saving)
+ * Allows Anope to continue file write operations (i.e. database saving)
* even if the original file cannot be backed up. Enabling this option may
- * allow Services to continue operation under conditions where it might
+ * allow Anope to continue operation under conditions where it might
* otherwise fail, such as a nearly-full disk.
*
* NOTE: Enabling this option can cause irrecoverable data loss under some
@@ -1104,83 +1097,44 @@ module
* This directive is optional, and you are discouraged against enabling it.
*/
#nobackupokay = yes
-
- /*
- * If enabled, services will fork a child process to save databases.
- *
- * This is only useful with very large databases, with hundreds
- * of thousands of objects, that have a noticeable delay from
- * writing databases.
- *
- * If your database is large enough cause a noticeable delay when
- * saving you should consider a more powerful alternative such
- * as db_sql or db_redis, which incrementally update their
- * databases asynchronously in real time.
- */
- fork = no
}
/*
- * db_sql and db_sql_live
+ * db_sql
*
- * db_sql module allows saving and loading databases using one of the SQL engines.
- * This module loads the databases once on startup, then incrementally updates
- * objects in the database as they are changed within Anope in real time. Changes
- * to the SQL tables not done by Anope will have no effect and will be overwritten.
- *
- * db_sql_live module allows saving and loading databases using one of the SQL engines.
+ * db_sql allows saving and loading databases using one of the SQL engines.
* This module reads and writes to SQL in real time. Changes to the SQL tables
- * will be immediately reflected into Anope. This module should not be loaded
- * in conjunction with db_sql.
+ * will be immediately reflected into Anope.
*
*/
#module
{
- name = "db_sql"
- #name = "db_sql_live"
+ name = "database/sql"
/*
- * The SQL service db_sql(_live) should use, these are configured in modules.conf.
+ * The SQL service database/sql should use, these are configured in modules.conf.
* For MySQL, this should probably be mysql/main.
*/
engine = "sqlite/main"
/*
* An optional prefix to prepended to the name of each created table.
- * Do not use the same prefix for other programs.
*/
#prefix = "anope_db_"
-
- /* Whether or not to import data from another database module in to SQL on startup.
- * If you enable this, be sure that the database services is configured to use is
- * empty and that another database module to import from is loaded before db_sql.
- * After you enable this and do a database import you should disable it for
- * subsequent restarts.
- *
- * Note that you can not import databases using db_sql_live. If you want to import
- * databases and use db_sql_live you should import them using db_sql, then shut down
- * and start services with db_sql_live.
- */
- import = false
}
/*
* db_redis.
*
* This module allows using Redis (http://redis.io) as a database backend.
- * This module requires that m_redis is loaded and configured properly.
- *
- * Redis 2.8 supports keyspace notifications which allows Redis to push notifications
- * to Anope about outside modifications to the database. This module supports this and
- * will internally reflect any changes made to the database immediately once notified.
- * See docs/REDIS for more information regarding this.
+ * This module requires the module redis to be loaded and configured properly.
*/
#module
{
- name = "db_redis"
+ name = "database/redis"
/*
- * Redis database to use. This must be configured with m_redis.
+ * Redis database to use. This must be configured with the module redis.
*/
engine = "redis/main"
}
@@ -1194,9 +1148,9 @@ module
*
* Without any encryption modules loaded users will not be able to authenticate unless
* there is another module loaded that provides authentication checking, such as
- * m_ldap_authentication or m_sql_authentication.
+ * ldap_authentication or sql_authentication.
*
- * With enc_none, passwords will be stored in plain text, allowing for passwords
+ * With encryption/none, passwords will be stored in plain text, allowing for passwords
* to be recovered later but it isn't secure and therefore is not recommended.
*
* The other encryption modules use one-way encryption, so the passwords can not
@@ -1206,36 +1160,20 @@ module
* encrypted by this module. Old passwords stored in another encryption method are
* automatically re-encrypted by the primary encryption module on next identify.
*
- * NOTE: enc_old is Anope's previous (broken) MD5 implementation which is present in
- * versions prior to Anope 1.7.17. If your databases were made using that module,
- * use this and not enc_md5.
- *
- * NOTE: enc_sha1 relies on how the OS stores 2+ byte data internally, and is
- * potentially broken when moving between 2 different OSes, such as moving from
- * Linux to Windows. It is recommended that you use enc_sha256 instead if you want
- * to use an SHA-based encryption. If you choose to do so, it is also recommended
- * that you first try to get everyone's passwords converted to enc_sha256 before
- * switching OSes by placing enc_sha256 at the beginning of the list.
- *
*/
-#module { name = "enc_bcrypt" }
-module { name = "enc_sha256" }
-#module { name = "enc_md5" }
-#module { name = "enc_sha1" }
-
-/*
- * When using enc_none, passwords will be stored without encryption. This isn't secure
- * therefore it is not recommended.
- */
-#module { name = "enc_none" }
+#module { name = "encryption/bcrypt" }
+module { name = "encryption/sha256" }
/*
- * enc_old is Anope's previous (broken) MD5 implementation used from 1.4.x to 1.7.16.
- * If your databases were made using that module, load it here to allow conversion to the primary
- * encryption method.
+ * [DEPRECATED] Deprecated encryption modules. You can only use these for compatibility with
+ * old databases and will need to load one of the above modules as your primary encryption
+ * module.
*/
-#module { name = "enc_old" }
+#module { name = "encryption/md5" }
+#module { name = "encryption/sha1" }
+#module { name = "encryption/old" }
+#module { name = "encryption/none" }
/* Extra (optional) modules. */
diff --git a/data/ascii.conf b/data/ascii.conf
new file mode 100644
index 000000000..1bfcb33f0
--- /dev/null
+++ b/data/ascii.conf
@@ -0,0 +1,157 @@
+
+casemap
+{
+ lower = "a"
+ upper = "A"
+}
+
+casemap
+{
+ lower = "b"
+ upper = "B"
+}
+
+casemap
+{
+ lower = "c"
+ upper = "C"
+}
+
+casemap
+{
+ lower = "d"
+ upper = "D"
+}
+
+casemap
+{
+ lower = "e"
+ upper = "E"
+}
+
+casemap
+{
+ lower = "f"
+ upper = "F"
+}
+
+casemap
+{
+ lower = "g"
+ upper = "G"
+}
+
+casemap
+{
+ lower = "h"
+ upper = "H"
+}
+
+casemap
+{
+ lower = "i"
+ upper = "I"
+}
+
+casemap
+{
+ lower = "j"
+ upper = "J"
+}
+
+casemap
+{
+ lower = "k"
+ upper = "K"
+}
+
+casemap
+{
+ lower = "l"
+ upper = "L"
+}
+
+casemap
+{
+ lower = "m"
+ upper = "M"
+}
+
+casemap
+{
+ lower = "n"
+ upper = "N"
+}
+
+casemap
+{
+ lower = "o"
+ upper = "O"
+}
+
+casemap
+{
+ lower = "p"
+ upper = "P"
+}
+
+casemap
+{
+ lower = "q"
+ upper = "Q"
+}
+
+casemap
+{
+ lower = "r"
+ upper = "R"
+}
+
+casemap
+{
+ lower = "s"
+ upper = "S"
+}
+
+casemap
+{
+ lower = "t"
+ upper = "T"
+}
+
+casemap
+{
+ lower = "u"
+ upper = "U"
+}
+
+casemap
+{
+ lower = "v"
+ upper = "V"
+}
+
+casemap
+{
+ lower = "w"
+ upper = "W"
+}
+
+casemap
+{
+ lower = "x"
+ upper = "X"
+}
+
+casemap
+{
+ lower = "y"
+ upper = "Y"
+}
+
+casemap
+{
+ lower = "z"
+ upper = "Z"
+}
+
diff --git a/data/bahamut.example.conf b/data/bahamut.example.conf
new file mode 100644
index 000000000..894d03411
--- /dev/null
+++ b/data/bahamut.example.conf
@@ -0,0 +1,170 @@
+
+module
+{
+ name = "protocol/bahamut"
+}
+
+usermode
+{
+ name = "SERV_ADMIN"
+ character = "A"
+ oper_only = yes
+}
+
+usermode
+{
+ name = "REGPRIF"
+ character = "R"
+}
+
+usermode
+{
+ name = "INVIS"
+ character = "i"
+}
+
+usermode
+{
+ name = "OPER"
+ character = "o"
+ oper_only = yes
+}
+
+usermode
+{
+ name = "REGISTERED"
+ character = "r"
+ setable = no
+}
+
+usermode
+{
+ name = "SNOMASK"
+ character = "s"
+}
+
+usermode
+{
+ name = "WALLOPS"
+ character = "w"
+}
+
+usermode
+{
+ name = "DEAF"
+ character = "d"
+}
+
+channelmode
+{
+ name = "BAN"
+ character = "b"
+ list = yes
+}
+
+channelmode
+{
+ name = "VOICE"
+ character = "v"
+ status = "+"
+ level = 1
+}
+
+channelmode
+{
+ name = "OP"
+ character = "o"
+ status = "@"
+ level = 2
+}
+
+channelmode
+{
+ name = "BLOCKCOLOR"
+ character = "c"
+}
+
+channelmode
+{
+ name = "INVITE"
+ character = "i"
+}
+
+channelmode
+{
+ name = "FLOOD"
+ character = "f"
+ param_regex = "\*?\d+:\d+"
+}
+
+channelmode
+{
+ name = "KEY"
+ character = "k"
+ param_regex = "[^:,]+"
+}
+
+channelmode
+{
+ name = "LIMIT"
+ character = "l"
+ param_regex = "\d+"
+ param_unset = no
+}
+
+channelmode
+{
+ name = "MODERATED"
+ character = "m"
+}
+
+channelmode
+{
+ name = "NOEXTERNAL"
+ character = "n"
+}
+
+channelmode
+{
+ name = "PRIVATE"
+ character = "p"
+}
+
+channelmode
+{
+ name = "REGISTERED"
+ character = "r"
+ setable = no
+}
+
+channelmode
+{
+ name = "SECRET"
+ character = "s"
+}
+
+channelmode
+{
+ name = "TOPIC"
+ character = "t"
+}
+
+channelmode
+{
+ name = "REGMODERATED"
+ character = "M"
+}
+
+channelmode
+{
+ name = "OPERONLY"
+ character = "O"
+ oper_only = yes
+}
+
+channelmode
+{
+ name = "REGISTEREDONLY"
+ character = "R"
+}
+
diff --git a/data/botserv.example.conf b/data/botserv.example.conf
index fbb8f166d..817188bc8 100644
--- a/data/botserv.example.conf
+++ b/data/botserv.example.conf
@@ -52,13 +52,21 @@ service
#modes = "+o"
/*
- * An optional comma separated list of channels this service should join. Outside
- * of log channels this is not very useful, as the service will just idle in the
- * specified channels, and will not accept any types of commands.
+ * Channels this service should join. Outside of log channels this is not very useful,
+ * as the service will just idle in the specified channels, and will not accept any types of commands.
*
- * Prefixes may be given to the channels in the form of mode characters or prefix symbols.
+ * Status modes mave be given for the channel in the form of mode characters or prefix symbols.
*/
- #channels = "@#services,#mychan"
+ channel
+ {
+ modes = "o"
+ name = "#services"
+ }
+
+ channel
+ {
+ name = "#mychan"
+ }
}
/*
@@ -68,7 +76,7 @@ service
*/
module
{
- name = "botserv"
+ name = "botserv/main"
/*
* The name of the client that should be BotServ.
@@ -140,7 +148,7 @@ module
command { service = "BotServ"; name = "HELP"; command = "generic/help"; }
/*
- * bs_assign
+ * botserv/gassign
*
* Provides the commands:
* botserv/assign - Used to assign BotServ bots to channels
@@ -149,19 +157,19 @@ command { service = "BotServ"; name = "HELP"; command = "generic/help"; }
*
* Used for assigning and unassigning bots to channels.
*/
-module { name = "bs_assign" }
+module { name = "botserv/assign" }
command { service = "BotServ"; name = "ASSIGN"; command = "botserv/assign"; }
command { service = "BotServ"; name = "UNASSIGN"; command = "botserv/unassign"; }
command { service = "BotServ"; name = "SET NOBOT"; command = "botserv/set/nobot"; permission = "botserv/set/nobot"; }
/*
- * bs_autoassign
+ * botserv/gautoassign
*
* Allows service bots to be automatically assigned to channels upon registration.
*/
#module
{
- name = "bs_autoassign"
+ name = "botserv/autoassign"
/*
* Automatically assign ChanServ to channels upon registration.
@@ -170,7 +178,7 @@ command { service = "BotServ"; name = "SET NOBOT"; command = "botserv/set/nobot"
}
/*
- * bs_badwords
+ * botserv/gbadwords
*
* Provides the command botserv/badwords.
*
@@ -178,7 +186,7 @@ command { service = "BotServ"; name = "SET NOBOT"; command = "botserv/set/nobot"
*/
module
{
- name = "bs_badwords"
+ name = "botserv/badwords"
/*
* The maximum number of entries a single bad words list can have.
@@ -195,48 +203,48 @@ module
command { service = "BotServ"; name = "BADWORDS"; command = "botserv/badwords"; }
/*
- * bs_bot
+ * botserv/gbot
*
* Provides the command botserv/bot.
*
* Used for administrating BotServ bots.
*/
-module { name = "bs_bot" }
+module { name = "botserv/gbot" }
command { service = "BotServ"; name = "BOT"; command = "botserv/bot"; permission = "botserv/bot"; }
/*
- * bs_botlist
+ * botserv/gbotlist
*
* Provides the command botserv/botlist.
*
* Used for listing all available bots.
*/
-module { name = "bs_botlist" }
+module { name = "botserv/gbotlist" }
command { service = "BotServ"; name = "BOTLIST"; command = "botserv/botlist"; }
/*
- * bs_control
+ * botserv/gcontrol
*
* Provides the commands botserv/act and botserv/say.
*
* Used for making the bot message a channel.
*/
-module { name = "bs_control" }
+module { name = "botserv/gcontrol" }
command { service = "BotServ"; name = "ACT"; command = "botserv/act"; }
command { service = "BotServ"; name = "SAY"; command = "botserv/say"; }
/*
- * bs_info
+ * botserv/ginfo
*
* Provides the command botserv/info.
*
* Used for getting information on bots or channels.
*/
-module { name = "bs_info" }
+module { name = "botserv/ginfo" }
command { service = "BotServ"; name = "INFO"; command = "botserv/info"; }
/*
- * bs_kick
+ * botserv/gkick
*
* Provides the commands:
* botserv/kick - Dummy help wrapper for the KICK command.
@@ -257,7 +265,7 @@ command { service = "BotServ"; name = "INFO"; command = "botserv/info"; }
*/
module
{
- name = "bs_kick"
+ name = "botserv/gkick"
/*
* The amount of time that data for a user is valid in BotServ. If the data exceeds this time,
@@ -291,12 +299,12 @@ command { service = "BotServ"; name = "SET DONTKICKVOICES"; command = "botserv/s
/*
- * bs_set
+ * botserv/gset
*
* Provides the commands:
* botserv/set/private - Used to prohibit specific BotServ bots from being assigned to channels.
*/
-module { name = "bs_set" }
+module { name = "botserv/gset" }
command { service = "BotServ"; name = "SET"; command = "botserv/set"; }
command { service = "BotServ"; name = "SET BANEXPIRE"; command = "botserv/set/banexpire"; }
command { service = "BotServ"; name = "SET PRIVATE"; command = "botserv/set/private"; permission = "botserv/set/private"; }
diff --git a/data/chanserv.example.conf b/data/chanserv.example.conf
index 78062d3fb..4c64a8ac3 100644
--- a/data/chanserv.example.conf
+++ b/data/chanserv.example.conf
@@ -40,15 +40,6 @@ service
* unable to do certain things if this option is enabled.
*/
#modes = "+o"
-
- /*
- * An optional comma separated list of channels this service should join. Outside
- * of log channels this is not very useful, as the service will just idle in the
- * specified channels, and will not accept any types of commands.
- *
- * Prefixes may be given to the channels in the form of mode characters or prefix symbols.
- */
- #channels = "@#services,#mychan"
}
/*
@@ -58,7 +49,7 @@ service
*/
module
{
- name = "chanserv"
+ name = "chanserv/main"
/*
* The name of the client that should be ChanServ.
@@ -91,7 +82,7 @@ module
* not in use.
* - none: No defaults
*
- * This directive is optional, if left blank, the options will default to keeptopic, cs_secure, securefounder,
+ * This directive is optional, if left blank, the options will default to keeptopic, chanserv/secure, securefounder,
* and signkick. If you really want no defaults, use "none" by itself as the option.
*/
defaults = "keeptopic peace cs_secure securefounder signkick"
@@ -164,11 +155,6 @@ module
disallow_hostmask_access = false
/*
- * If set, prevents channels from being on access lists.
- */
- disallow_channel_access = false
-
- /*
* If set, ChanServ will always lower the timestamp of registered channels to their registration date.
* This prevents several race conditions where unauthorized users can join empty registered channels and set
* modes etc. prior to services deopping them.
@@ -184,14 +170,14 @@ module
* determine how powerful privileges are relative to other privileges, which is used by Anope to determine
* who has greater access in a channel.
*
- * If you load cs_access, you may define a level for the privilege, which is used by chanserv/access and chanserv/levels.
+ * If you load chanserv/access, you may define a level for the privilege, which is used by chanserv/access and chanserv/levels.
* The levels defined will be used as the default levels for newly registered channels.
* The level "founder" is a special level which means anyone with the privilege FOUNDER on the channel
* has that permission. Additionally, the level "disabled" means that no one can use the privilege, including founders.
*
- * If you load cs_flags, you may define a flag associated with that privilege for use in chanserv/flags.
+ * If you load chanserv/flags, you may define a flag associated with that privilege for use in chanserv/flags.
*
- * If you load cs_xop, you may define a XOP command to associate the privilege with.
+ * If you load chanserv/xop, you may define a XOP command to associate the privilege with.
*
* The name of privileges are uesd to associate them with channel modes. If you are using an IRCd that allows you to define additional
* channel status modes, such as InspIRCd, you can associate privileges (and thus access levels, flags, xop) with the mode by naming
@@ -831,7 +817,7 @@ command_group
command { service = "ChanServ"; name = "HELP"; command = "generic/help"; }
/*
- * cs_access
+ * chanserv/access
*
* Provides commands chanserv/access and chanserv/levels.
* Provides the access system "levels".
@@ -840,15 +826,15 @@ command { service = "ChanServ"; name = "HELP"; command = "generic/help"; }
* are representated by given level on a per channel basis.
*
* The "LIST" subcommand of chanserv/access will show every access entry on the channel, including access
- * entries not added by cs_access. The "level" of these entries will be the representation of the access
+ * entries not added by chanserv/access. The "level" of these entries will be the representation of the access
* entry by the other access system, which could be an XOP command name, or a set of flags.
*/
-module { name = "cs_access" }
+module { name = "chanserv/access" }
command { service = "ChanServ"; name = "ACCESS"; command = "chanserv/access"; group = "chanserv/access"; }
command { service = "ChanServ"; name = "LEVELS"; command = "chanserv/levels"; group = "chanserv/access"; }
/*
- * cs_akick
+ * chanserv/akick
*
* Provides the command chanserv/akick.
*
@@ -856,7 +842,7 @@ command { service = "ChanServ"; name = "LEVELS"; command = "chanserv/levels"; gr
*/
module
{
- name = "cs_akick"
+ name = "chanserv/akick"
/*
* The maximum number of entries on a channel's autokick list.
@@ -871,7 +857,7 @@ module
command { service = "ChanServ"; name = "AKICK"; command = "chanserv/akick"; group = "chanserv/management"; }
/*
- * cs_ban
+ * chanserv/ban
*
* Provides the command chanserv/ban.
*
@@ -883,41 +869,41 @@ command { service = "ChanServ"; name = "AKICK"; command = "chanserv/akick"; grou
*
* Used for banning users from channels.
*/
-module { name = "cs_ban" }
+module { name = "chanserv/ban" }
command { service = "ChanServ"; name = "BAN"; command = "chanserv/ban"; }
/*
- * cs_clone
+ * chanserv/clone
*
* Provides the command chanserv/clone.
*
* Used for copying channel settings from one channel to another.
*/
-module { name = "cs_clone" }
+module { name = "chanserv/clone" }
command { service = "ChanServ"; name = "CLONE"; command = "chanserv/clone"; group = "chanserv/management"; }
/*
- * cs_drop
+ * chanserv/drop
*
* Provides the command chanserv/drop.
*
* Used for unregistering channels.
*/
-module { name = "cs_drop" }
+module { name = "chanserv/drop" }
command { service = "ChanServ"; name = "DROP"; command = "chanserv/drop"; }
/*
- * cs_enforce
+ * chanserv/enforce
*
* Provides the command chanserv/enforce.
*
* Used to enforce various channel settings such as secureops and restricted.
*/
-module { name = "cs_enforce" }
+module { name = "chanserv/enforce" }
command { service = "ChanServ"; name = "ENFORCE"; command = "chanserv/enforce"; group = "chanserv/management"; }
/*
- * cs_entrymsg
+ * chanserv/entrymsg
*
* Provides the command chanserv/entrymsg.
*
@@ -925,7 +911,7 @@ command { service = "ChanServ"; name = "ENFORCE"; command = "chanserv/enforce";
*/
module
{
- name = "cs_entrymsg"
+ name = "chanserv/entrymsg"
/* The maximum number of entrymsgs allowed per channel. If not set, defaults to 5. */
maxentries = 5
@@ -933,7 +919,7 @@ module
command { service = "ChanServ"; name = "ENTRYMSG"; command = "chanserv/entrymsg"; group = "chanserv/management"; }
/*
- * cs_flags
+ * chanserv/flags
*
* Provides the command chanserv/flags.
* Provides the access system "flags".
@@ -941,54 +927,54 @@ command { service = "ChanServ"; name = "ENTRYMSG"; command = "chanserv/entrymsg"
* Used for giving users access in channels.
*
* The "LIST" subcommand of chanserv/flags will show every access entry on the channel, including access
- * entries not added by cs_flags. The "Flags" of these entries will be the flags representation of the
+ * entries not added by chanserv/flags. The "Flags" of these entries will be the flags representation of the
* privilege set granted by the access entry.
*/
-module { name = "cs_flags" }
+module { name = "chanserv/flags" }
command { service = "ChanServ"; name = "FLAGS"; command = "chanserv/flags"; group = "chanserv/access"; }
/*
- * cs_getkey
+ * chanserv/getkey
*
* Provides the command chanserv/getkey.
*
* Used for getting the key for channels.
*/
-module { name = "cs_getkey" }
+module { name = "chanserv/getkey" }
command { service = "ChanServ"; name = "GETKEY"; command = "chanserv/getkey"; }
/*
- * cs_info
+ * chanserv/info
*
* Provides the command chanserv/info.
*
* Used for getting information about channels.
*/
-module { name = "cs_info" }
+module { name = "chanserv/info" }
command { service = "ChanServ"; name = "INFO"; command = "chanserv/info"; }
/*
- * cs_invite
+ * chanserv/invite
*
* Provides the command chanserv/invite.
*
* Used for inviting yourself in to channels.
*/
-module { name = "cs_invite" }
+module { name = "chanserv/invite" }
command { service = "ChanServ"; name = "INVITE"; command = "chanserv/invite"; }
/*
- * cs_kick
+ * chanserv/kick
*
* Provides the command chanserv/kick.
*
* Used for kicking users from channels.
*/
-module { name = "cs_kick" }
+module { name = "chanserv/kick" }
command { service = "ChanServ"; name = "KICK"; command = "chanserv/kick"; }
/*
- * cs_list
+ * chanserv/list
*
* Provides the commands:
* chanserv/list - Used for retrieving and searching the registered channel list.
@@ -996,7 +982,7 @@ command { service = "ChanServ"; name = "KICK"; command = "chanserv/kick"; }
*/
module
{
- name = "cs_list"
+ name = "chanserv/list"
/*
* The maximum number of channels to be returned for a ChanServ LIST command.
@@ -1009,7 +995,7 @@ command { service = "ChanServ"; name = "SET PRIVATE"; command = "chanserv/set/pr
/*
- * cs_log
+ * chanserv/log
*
* Provides the command chanserv/log.
*
@@ -1017,7 +1003,7 @@ command { service = "ChanServ"; name = "SET PRIVATE"; command = "chanserv/set/pr
*/
module
{
- name = "cs_log"
+ name = "chanserv/log"
/* Default log settings for newly registered channels */
@@ -1050,7 +1036,7 @@ module
command { service = "ChanServ"; name = "LOG"; command = "chanserv/log"; group = "chanserv/management"; }
/*
- * cs_mode
+ * chanserv/mode
*
* Provides the command chanserv/mode and chanserv/modes.
*
@@ -1060,7 +1046,7 @@ command { service = "ChanServ"; name = "LOG"; command = "chanserv/log"; group =
*/
module
{
- name = "cs_mode"
+ name = "chanserv/mode"
/*
* Default modes for mode lock, these are set on newly registered channels.
@@ -1095,17 +1081,17 @@ command { service = "ChanServ"; name = "DEVOICE"; command = "chanserv/modes"; gr
/*
- * cs_register
+ * chanserv/register
*
* Provides the commands chanserv/register.
*
* Used for registering channels.
*/
-module { name = "cs_register" }
+module { name = "chanserv/register" }
command { service = "ChanServ"; name = "REGISTER"; command = "chanserv/register"; }
/*
- * cs_seen
+ * chanserv/seen
*
* Provides the commands chanserv/seen and operserv/seen.
*
@@ -1114,7 +1100,7 @@ command { service = "ChanServ"; name = "REGISTER"; command = "chanserv/register"
*/
module
{
- name = "cs_seen"
+ name = "chanserv/seen"
/* If set, uses the older 1.8 style seen, which is less resource intensive */
simple = false
@@ -1128,7 +1114,7 @@ module
command { service = "OperServ"; name = "SEEN"; command = "operserv/seen"; permission = "operserv/seen"; }
/*
- * cs_set
+ * chanserv/set
*
* Provides the commands:
* chanserv/set and chanserv/saset - Dummy help wrappers for the SET commands.
@@ -1151,7 +1137,7 @@ command { service = "OperServ"; name = "SEEN"; command = "operserv/seen"; permis
*/
module
{
- name = "cs_set"
+ name = "chanserv/set"
/*
* The default ban type for newly registered channels.
@@ -1189,30 +1175,30 @@ command { service = "ChanServ"; name = "SET SUCCESSOR"; command = "chanserv/set/
command { service = "ChanServ"; name = "SET NOEXPIRE"; command = "chanserv/saset/noexpire"; permission = "chanserv/saset/noexpire"; }
/*
- * cs_set_misc
+ * chanserv/set_misc
*
* Provides the command chanserv/set/misc.
*
* Allows you to create arbitrary commands to set data, and have that data show up in chanserv/info.
* A field named misc_description may be given for use with help output.
*/
-module { name = "cs_set_misc" }
+module { name = "chanserv/set_misc" }
command { service = "ChanServ"; name = "SET URL"; command = "chanserv/set/misc"; misc_description = _("Associate a URL with the channel"); }
command { service = "ChanServ"; name = "SET EMAIL"; command = "chanserv/set/misc"; misc_description = _("Associate an E-mail address with the channel"); }
/*
- * cs_status
+ * chanserv/status
*
* Provides the command chanserv/status.
*
* Used for determining a user's access on a channel and whether
* or not they match any autokick entries.
*/
-module { name = "cs_status" }
+module { name = "chanserv/status" }
command { service = "ChanServ"; name = "STATUS"; command = "chanserv/status"; }
/*
- * cs_suspend
+ * chanserv/suspend
*
* Provides the commands chanserv/suspend and chanserv/unsuspend.
*
@@ -1220,7 +1206,7 @@ command { service = "ChanServ"; name = "STATUS"; command = "chanserv/status"; }
*/
module
{
- name = "cs_suspend"
+ name = "chanserv/suspend"
/*
* The length of time before a suspended channel expires.
@@ -1241,50 +1227,50 @@ command { service = "ChanServ"; name = "SUSPEND"; command = "chanserv/suspend";
command { service = "ChanServ"; name = "UNSUSPEND"; command = "chanserv/unsuspend"; permission = "chanserv/suspend"; group = "chanserv/admin"; }
/*
- * cs_sync
+ * chanserv/sync
*
* Provides the command chanserv/sync.
*
* Used to sync users channel status modes with what access they have.
*/
-module { name = "cs_sync" }
+module { name = "chanserv/sync" }
command { service = "ChanServ"; name = "SYNC"; command = "chanserv/sync"; group = "chanserv/management"; }
/*
- * cs_topic
+ * chanserv/topic
*
* Provides the commands:
* chanserv/topic - Used for changing the channel topic. Useful in conjunction with chanserv/set/topiclock.
* chanserv/set/keeptopic - Used for configuring if ChanServ is to restore the channel topic when a channel is created.
*
*/
-module { name = "cs_topic" }
+module { name = "chanserv/topic" }
command { service = "ChanServ"; name = "TOPIC"; command = "chanserv/topic"; group = "chanserv/management"; }
command { service = "ChanServ"; name = "SET KEEPTOPIC"; command = "chanserv/set/keeptopic"; }
/*
- * cs_unban
+ * chanserv/unban
*
* Provides the command chanserv/unban.
*
* Used for unbanning users from channels.
*/
-module { name = "cs_unban" }
+module { name = "chanserv/unban" }
command { service = "ChanServ"; name = "UNBAN"; command = "chanserv/unban"; }
/*
- * cs_updown
+ * chanserv/updown
*
* Provides the commands chanserv/up and chanserv/down.
*
* Used for setting or removing your status modes on a channel.
*/
-module { name = "cs_updown" }
+module { name = "chanserv/updown" }
command { service = "ChanServ"; name = "DOWN"; command = "chanserv/down"; group = "chanserv/status"; }
command { service = "ChanServ"; name = "UP"; command = "chanserv/up"; group = "chanserv/status"; }
/*
- * cs_xop
+ * chanserv/xop
*
* Provides the command chanserv/xop.
* Provides the access system "XOP".
@@ -1297,7 +1283,7 @@ command { service = "ChanServ"; name = "UP"; command = "chanserv/up"; group = "c
* The "LIST" subcommand of chanserv/xop will show only XOP access entries of the given XOP type. You
* can not view the entire access list at once, and instead should use another access system to do that.
*/
-module { name = "cs_xop" }
+module { name = "chanserv/xop" }
command { service = "ChanServ"; name = "QOP"; command = "chanserv/xop"; group = "chanserv/access"; }
command { service = "ChanServ"; name = "SOP"; command = "chanserv/xop"; group = "chanserv/access"; }
command { service = "ChanServ"; name = "AOP"; command = "chanserv/xop"; group = "chanserv/access"; }
@@ -1310,9 +1296,9 @@ command { service = "ChanServ"; name = "VOP"; command = "chanserv/xop"; group =
*/
/*
- * cs_statusupdate
+ * chanserv/statusupdate
*
* This module automatically updates users status on channels when the
* channel's access list is modified.
*/
-module { name = "cs_statusupdate" }
+module { name = "chanserv/statusupdate" }
diff --git a/data/chanstats.example.conf b/data/chanstats.example.conf
index 64f57da30..df19374a2 100644
--- a/data/chanstats.example.conf
+++ b/data/chanstats.example.conf
@@ -5,7 +5,7 @@
module
{
- name = "m_chanstats"
+ name = "chanstats"
/*
* The name of this engine.
diff --git a/data/example.chk b/data/example.chk
index 119b1ca99..e71928f1c 100644
--- a/data/example.chk
+++ b/data/example.chk
@@ -9,16 +9,16 @@
###############################################################
# Anope binary directory
-ANOPATH=/home/ircd/services/bin
+ANOPATH=/home/ircd/anope/bin
# Anope data directory
-ANODATA=/home/ircd/services/data
+ANODATA=/home/ircd/anope/data
# Name of the pid file
-ANOPIDF=services.pid
+ANOPIDF=anope.pid
# Name of the executable
-ANOPROG=services
+ANOPROG=anope
# Parameters to pass to the executable
ANOARGS=""
diff --git a/data/global.example.conf b/data/global.example.conf
index 09534dae7..d6c856aea 100644
--- a/data/global.example.conf
+++ b/data/global.example.conf
@@ -40,15 +40,6 @@ service
* unable to do certain things if this option is enabled.
*/
#modes = "+o"
-
- /*
- * An optional comma separated list of channels this service should join. Outside
- * of log channels this is not very useful, as the service will just idle in the
- * specified channels, and will not accept any types of commands.
- *
- * Prefixes may be given to the channels in the form of mode characters or prefix symbols.
- */
- #channels = "@#services,#mychan"
}
/*
@@ -58,7 +49,7 @@ service
*/
module
{
- name = "global"
+ name = "global/main"
/*
* The name of the client that should be Global.
@@ -105,11 +96,11 @@ module
command { service = "Global"; name = "HELP"; command = "generic/help"; }
/*
- * gl_global
+ * global/global
*
* Provides the command global/global.
*
* Used for sending a message to every online user.
*/
-module { name = "gl_global" }
+module { name = "global/global" }
command { service = "Global"; name = "GLOBAL"; command = "global/global"; permission = "global/global"; }
diff --git a/data/hostserv.example.conf b/data/hostserv.example.conf
index e13e8fdd1..685eb9722 100644
--- a/data/hostserv.example.conf
+++ b/data/hostserv.example.conf
@@ -40,15 +40,6 @@ service
* unable to do certain things if this option is enabled.
*/
#modes = "+o"
-
- /*
- * An optional comma separated list of channels this service should join. Outside
- * of log channels this is not very useful, as the service will just idle in the
- * specified channels, and will not accept any types of commands.
- *
- * Prefixes may be given to the channels in the form of mode characters or prefix symbols.
- */
- #channels = "@#services,#mychan"
}
/*
@@ -58,7 +49,7 @@ service
*/
module
{
- name = "hostserv"
+ name = "hostserv/main"
/*
* The name of the client that should be HostServ.
@@ -86,18 +77,18 @@ module
command { service = "HostServ"; name = "HELP"; command = "generic/help"; }
/*
- * hs_del
+ * hostserv/del
*
* Provides the commands hostserv/del and hostserv/delall.
*
* Used for removing users' vHosts.
*/
-module { name = "hs_del" }
+module { name = "hostserv/del" }
command { service = "HostServ"; name = "DEL"; command = "hostserv/del"; permission = "hostserv/del"; }
command { service = "HostServ"; name = "DELALL"; command = "hostserv/delall"; permission = "hostserv/del"; }
/*
- * hs_group
+ * hostserv/group
*
* Provides the command hostserv/group.
*
@@ -105,7 +96,7 @@ command { service = "HostServ"; name = "DELALL"; command = "hostserv/delall"; pe
*/
module
{
- name = "hs_group"
+ name = "hostserv/group"
/*
* Upon nickserv/group, this option syncs the nick's main vHost to the grouped nick.
@@ -120,37 +111,37 @@ module
command { service = "HostServ"; name = "GROUP"; command = "hostserv/group"; }
/*
- * hs_list
+ * hostserv/list
*
* Provides the command hostserv/list.
*
* Used for listing actively set vHosts.
*/
-module { name = "hs_list" }
+module { name = "hostserv/list" }
command { service = "HostServ"; name = "LIST"; command = "hostserv/list"; permission = "hostserv/list"; }
/*
- * hs_off
+ * hostserv/off
*
* Provides the command hostserv/off.
*
* Used for turning off your vHost.
*/
-module { name = "hs_off" }
+module { name = "hostserv/off" }
command { service = "HostServ"; name = "OFF"; command = "hostserv/off"; }
/*
- * hs_on
+ * hostserv/on
*
* Provides the command hostserv/on.
*
* Used for turning on your vHost.
*/
-module { name = "hs_on" }
+module { name = "hostserv/on" }
command { service = "HostServ"; name = "ON"; command = "hostserv/on"; }
/*
- * hs_request
+ * hostserv/request
*
* Provides the commands hostserv/request, hostserv/activate, hostserv/reject, and hostserv/waiting.
*
@@ -158,7 +149,7 @@ command { service = "HostServ"; name = "ON"; command = "hostserv/on"; }
*/
module
{
- name = "hs_request"
+ name = "hostserv/request"
/*
* If set, Services will send a memo to the user requesting a vHost when it's been
@@ -177,12 +168,12 @@ command { service = "HostServ"; name = "REJECT"; command = "hostserv/reject"; pe
command { service = "HostServ"; name = "WAITING"; command = "hostserv/waiting"; permission = "hostserv/set"; }
/*
- * hs_set
+ * hostserv/set
*
* Provides the commands hostserv/set and hostserv/setall.
*
* Used for setting users' vHosts.
*/
-module { name = "hs_set" }
+module { name = "hostserv/set" }
command { service = "HostServ"; name = "SET"; command = "hostserv/set"; permission = "hostserv/set"; }
command { service = "HostServ"; name = "SETALL"; command = "hostserv/setall"; permission = "hostserv/set"; }
diff --git a/data/hybrid.example.conf b/data/hybrid.example.conf
new file mode 100644
index 000000000..6e9f4da6f
--- /dev/null
+++ b/data/hybrid.example.conf
@@ -0,0 +1,231 @@
+
+module
+{
+ name = "protocol/hybrid"
+}
+
+usermode
+{
+ name = "ADMIN"
+ character = "a"
+ oper_only = yes
+}
+
+usermode
+{
+ name = "CALLERID"
+ character = "g"
+}
+
+usermode
+{
+ name = "INVIS"
+ character = "i"
+}
+
+usermode
+{
+ name = "LOCOPS"
+ character = "l"
+ oper_only = yes
+}
+
+usermode
+{
+ name = "OPER"
+ character = "o"
+ oper_only = yes
+}
+
+usermode
+{
+ name = "REGISTERED"
+ character = "r"
+ setable = no
+}
+
+usermode
+{
+ name = "SNOMASK"
+ character = "s"
+ oper_only = yes
+}
+
+usermode
+{
+ name = "WALLOPS"
+ character = "w"
+}
+
+usermode
+{
+ name = "DEAF"
+ character = "D"
+}
+
+usermode
+{
+ name = "HIDEOPER"
+ character = "H"
+ oper_only = yes
+}
+
+usermode
+{
+ name = "REGPRIF"
+ character = "R"
+}
+
+usermode
+{
+ name = "SSL"
+ character = "S"
+ setable = no
+}
+
+usermode
+{
+ name = "CLOAK"
+ character = "x"
+}
+
+channelmode
+{
+ name = "BAN"
+ character = "b"
+ list = yes
+}
+
+channelmode
+{
+ name = "EXCEPT"
+ character = "e"
+ list = yes
+}
+
+channemode
+{
+ name = "INVITEOVERRIDE"
+ character = "I"
+ list = yes
+}
+
+channelmode
+{
+ name = "VOICE"
+ character = "v"
+ status = "+"
+ level = 1
+}
+
+channelmode
+{
+ name = "HALFOP"
+ characater = "h"
+ status = "%"
+ level = 2
+}
+
+channelmode
+{
+ name = "OP"
+ character = "o"
+ status = "@"
+ level = 3
+}
+
+channelmode
+{
+ name = "BLOCKCOLOR"
+ character = "c"
+}
+
+channelmode
+{
+ name = "INVITE"
+ character = "i"
+}
+
+channelmode
+{
+ name = "KEY"
+ character = "k"
+ param_regex = "[^:,]+"
+}
+
+channelmode
+{
+ name = "LIMIT"
+ character = "l"
+ param_regex = "\d+"
+ param_unset = no
+}
+
+channelmode
+{
+ name = "MODERATED"
+ character = "m"
+}
+
+channelmode
+{
+ name = "NOEXTERNAL"
+ character = "n"
+}
+
+channelmode
+{
+ name = "PRIVATE"
+ character = "p"
+}
+
+channelmode
+{
+ name = "REGISTERED"
+ character = "r"
+ setable = no
+}
+
+channelmode
+{
+ name = "SECRET"
+ character = "s"
+}
+
+channelmode
+{
+ name = "TOPIC"
+ character = "t"
+}
+
+channelmode
+{
+ name = "REGMODERATED"
+ character = "M"
+}
+
+channelmode
+{
+ name = "OPERONLY"
+ character = "O"
+ oper_only = yes
+}
+
+channelmode
+{
+ name = "REGISTEREDONLY"
+ character = "R"
+}
+
+channelmode
+{
+ name = "SSL"
+ character = "S"
+}
+
+channelmode
+{
+ name = "NONOTICE"
+ character = "T"
+}
+
diff --git a/data/inspircd20.example.conf b/data/inspircd20.example.conf
new file mode 100644
index 000000000..347fb52ea
--- /dev/null
+++ b/data/inspircd20.example.conf
@@ -0,0 +1,547 @@
+
+module
+{
+ name = "protocol/inspircd20"
+
+ /*
+ * Enables mode locks server-side. This reduces the spam caused by
+ * services immediately reversing mode changes for locked modes.
+ */
+ use_server_side_mlock = yes
+
+ /*
+ * Enforces topic locks server-side. This reduces the spam caused by
+ * services immediately reversing topic changes.
+ */
+ use_server_side_topiclock = yes
+}
+
+usermode
+{
+ name = "BOT"
+ character = "B"
+}
+
+usermode
+{
+ name = "CALLERID"
+ character = "g"
+}
+
+usermode
+{
+ name = "CLOAK"
+ character = "x"
+}
+
+usermode
+{
+ name = "DEAF"
+ character = "d"
+}
+
+usermode
+{
+ name = "COMMONCHANS"
+ character = "c"
+}
+
+usermode
+{
+ name = "HELPOP"
+ character = "h"
+ oper_only = yes
+}
+
+usermode
+{
+ name = "PRIV"
+ character = "I"
+}
+
+usermode
+{
+ name = "HIDEOPER"
+ character = "H"
+ oper_only = yes
+}
+
+usermode
+{
+ name = "INVIS"
+ character = "i"
+}
+
+usermode
+{
+ name = "OPER"
+ character = "o"
+ oper_only = yes
+}
+
+usermode
+{
+ name = "REGPRIV"
+ character = "R"
+}
+
+usermode
+{
+ name = "PROTECTED"
+ character = "k"
+ setable = no
+}
+
+usermode
+{
+ name = "WHOIS"
+ character = "W"
+ oper_only = yes
+}
+
+usermode
+{
+ name = "CENSOR"
+ character = "G"
+}
+
+usermode
+{
+ name = "REGISTERED"
+ character = "r"
+ setable = no
+}
+
+usermode
+{
+ name = "STRIPCOLOR"
+ character = "S"
+}
+
+usermode
+{
+ name = "WALLOPS"
+ character = "w"
+}
+
+usermode
+{
+ name = "SNOMASK"
+ character = "s"
+ oper_only = yes
+}
+
+channelmode
+{
+ name = "PROTECT"
+ character = "a"
+ status = "&"
+ level = 4
+}
+
+channelmode
+{
+ name = "ALLINVITE"
+ character = "A"
+}
+
+channelmode
+{
+ name = "AUDITORIUM"
+ character = "u"
+}
+
+channelmode
+{
+ name = "AUTOOP"
+ character = "w"
+ setable = no
+}
+
+channelmode
+{
+ name = "BAN"
+ character = "b"
+ list = yes
+}
+
+channelmode
+{
+ name = "EXCEPT"
+ character = "e"
+ list = yes
+}
+
+channelmode
+{
+ name = "BLOCKCAPS"
+ character = "B"
+}
+
+channelmode
+{
+ name = "BLOCKCOLOR"
+ character = "c"
+}
+
+channelmode
+{
+ name = "REGISTERED"
+ character = "r"
+ setable = false
+}
+
+channelmode
+{
+ name = "CENSOR"
+ character = "G"
+}
+
+channelmode
+{
+ name = "DELAYEDJOIN"
+ character = "D"
+}
+
+channelmode
+{
+ name = "DELAYMSG"
+ character = "d"
+ param_regex = "[1-9]\d*"
+}
+
+channelmode
+{
+ name = "FILTER"
+ character = "g"
+ list = yes
+}
+
+channelmode
+{
+ name = "FLOOD"
+ character = "f"
+ param_regex = "\*?\d+:\d+"
+}
+
+channelmode
+{
+ name = "OWNER"
+ character = "q"
+ status = "~"
+ level = 5
+}
+
+channelmode
+{
+ name = "HALFOP"
+ character = "h"
+ status = "%"
+ level = 2
+}
+
+channelmode
+{
+ name = "HISTORY"
+ character = "H"
+ param = yes
+}
+
+channelmode
+{
+ name = "INVITEOVERRIDE"
+ character = "I"
+ list = yes
+}
+
+channelmode
+{
+ name = "INVITE"
+ character = "i"
+}
+
+channelmode
+{
+ name = "JOINFLOOD"
+ character = "j"
+ param_regex = "\d+:\d+"
+}
+
+channelmode
+{
+ name = "KEY"
+ character = "k"
+ param_regex = "[^:,]+"
+}
+
+channelmode
+{
+ name = "NOREJOIN"
+ character = "J"
+ param_regex = "\d+"
+}
+
+channelmode
+{
+ name = "LIMIT"
+ character = "l"
+ param_regex = "\d+"
+ param_unset = no
+}
+
+channelmode
+{
+ name = "MODERATED"
+ character = "m"
+}
+
+channelmode
+{
+ name = "NICKFLOOD"
+ character = "F"
+ param_regex = "\d+:\d+"
+}
+
+channelmode
+{
+ name = "NOCTCP"
+ character = "C"
+}
+
+channelmode
+{
+ name = "NOEXTERNAL"
+ character = "n"
+}
+
+channelmode
+{
+ name = "NOKICK"
+ character = "Q"
+}
+
+channelmode
+{
+ name = "NOKNOCK"
+ character = "K"
+}
+
+channelmode
+{
+ name = "NONICK"
+ character = "N"
+}
+
+channelmode
+{
+ name = "NONOTICEB"
+ character = "T"
+}
+
+channelmode
+{
+ name = "OP"
+ character = "o"
+ status = "@"
+ level = 3
+}
+
+channelmode
+{
+ name = "OPERONLY"
+ character = "O"
+ oper_only = yes
+}
+
+channelmode
+{
+ name = "PERM"
+ character = "P"
+ oper_only = yes
+}
+
+channelmode
+{
+ name = "PRIVATE"
+ character = "p"
+}
+
+channelmode
+{
+ name = "REDIRECT"
+ character = "L"
+ param = yes
+}
+
+channelmode
+{
+ name = "REGISTEREDONLY"
+ character = "R"
+}
+
+channelmode
+{
+ name = "REGMODERATED"
+ character = "M"
+}
+
+channelmode
+{
+ name = "SECRET"
+ character = "s"
+}
+
+channelmode
+{
+ name = "SSLONLY"
+ character = "z"
+}
+
+channelmode
+{
+ name = "STRIPCOLOR"
+ character = "S"
+}
+
+channelmode
+{
+ name = "TOPIC"
+ character = "t"
+}
+
+channelmode
+{
+ name = "VOICE"
+ character = "v"
+ status = "+"
+ level = 1
+}
+
+extban
+{
+ name = "INVITEBAN"
+ type = "entry"
+ base = "BAN"
+ chaacter = "A"
+}
+
+extban
+{
+ name = "BLOCKCAPSBAN"
+ type = "entry"
+ base = "BAN"
+ character = "B"
+}
+
+extban
+{
+ name = "BLOCKCOLORBAN"
+ type = "entry"
+ base = "BAN"
+ character = "c"
+}
+
+extban
+{
+ name = "NOCTCPBAN"
+ type = "entry"
+ base = "BAN"
+ character = "C"
+}
+
+extban
+{
+ name = "NOKICKBAN"
+ type = "entry"
+ base = "BAN"
+ character = "Q"
+}
+
+extban
+{
+ name = "NONICKBAN"
+ type = "entry"
+ base = "BAN"
+ character = "N"
+}
+
+extban
+{
+ name = "NONOTICEBAN"
+ type = "entry"
+ base = "BAN"
+ character = "T"
+}
+
+extban
+{
+ name = "SSLBAN"
+ type = "fingerprint"
+ base = "BAN"
+ character = "z"
+}
+
+extban
+{
+ name = "STRIPCOLORBAN"
+ type = "entry"
+ base = "BAN"
+ character = "S"
+}
+
+extban
+{
+ name = "ACCOUNTBAN"
+ type = "account"
+ base = "BAN"
+ character = "R"
+}
+
+extban
+{
+ name = "UNREGISTEREDBAN"
+ type = "unidentified"
+ base = "BAN"
+ character = "U"
+}
+
+extban
+{
+ name = "CHANNELBAN"
+ type = "channel"
+ base = "BAN"
+ character = "j"
+}
+
+extban
+{
+ name = "REALNAMEBAN"
+ type = "realname"
+ base = "BAN"
+ character = "r"
+}
+
+extban
+{
+ name = "PARTMESSAGEBAN"
+ type = "entry"
+ base = "BAN"
+ character = "p"
+}
+
+extban
+{
+ name = "SERVERBAN"
+ type = "server"
+ base = "BAN"
+ character = "s"
+}
+
+extban
+{
+ name = "QUIET"
+ type = "entry"
+ base = "BAN"
+ character = "m"
+}
+
diff --git a/data/memoserv.example.conf b/data/memoserv.example.conf
index 9f07ec424..cda9a02ae 100644
--- a/data/memoserv.example.conf
+++ b/data/memoserv.example.conf
@@ -40,15 +40,6 @@ service
* unable to do certain things if this option is enabled.
*/
#modes = "+o"
-
- /*
- * An optional comma separated list of channels this service should join. Outside
- * of log channels this is not very useful, as the service will just idle in the
- * specified channels, and will not accept any types of commands.
- *
- * Prefixes may be given to the channels in the form of mode characters or prefix symbols.
- */
- #channels = "@#services,#mychan"
}
/*
@@ -58,7 +49,7 @@ service
*/
module
{
- name = "memoserv"
+ name = "memoserv/main"
/*
* The name of the client that should be MemoServ. Clients are configured
* with the service blocks.
@@ -101,37 +92,37 @@ module
command { service = "MemoServ"; name = "HELP"; command = "generic/help"; }
/*
- * ms_cancel
+ * memoserv/cancel
*
* Provides the command memoserv/cancel.
*
* Used to cancel memos already sent but not yet read.
*/
-module { name = "ms_cancel" }
+module { name = "memoserv/cancel" }
command { service = "MemoServ"; name = "CANCEL"; command = "memoserv/cancel"; }
/*
- * ms_check
+ * memoserv/check
*
* Provides the command memoserv/check.
*
* Used to check if a sent memo has been read.
*/
-module { name = "ms_check" }
+module { name = "memoserv/check" }
command { service = "MemoServ"; name = "CHECK"; command = "memoserv/check"; }
/*
- * ms_del
+ * memoserv/del
*
* Provides the command memoserv/del.
*
* Used to delete your memos.
*/
-module { name = "ms_del" }
+module { name = "memoserv/del" }
command { service = "MemoServ"; name = "DEL"; command = "memoserv/del"; }
/*
- * ms_ignore
+ * memoserv/ignore
*
* Provides the command memoserv/ignore.
*
@@ -139,7 +130,7 @@ command { service = "MemoServ"; name = "DEL"; command = "memoserv/del"; }
*/
module
{
- name = "ms_ignore"
+ name = "memoserv/ignore"
/*
* The maximum number of entries that may be on a memo ignore list.
@@ -151,37 +142,37 @@ module
command { service = "MemoServ"; name = "IGNORE"; command = "memoserv/ignore"; }
/*
- * ms_info
+ * memoserv/info
*
* Provides the command memoserv/info.
*
* Used to show memo related information about an account or a channel.
*/
-module { name = "ms_info" }
+module { name = "memoserv/info" }
command { service = "MemoServ"; name = "INFO"; command = "memoserv/info"; }
/*
- * ms_list
+ * memoserv/list
*
* Provides the command memoserv/list.
*
* Used to list your current memos.
*/
-module { name = "ms_list" }
+module { name = "memoserv/list" }
command { service = "MemoServ"; name = "LIST"; command = "memoserv/list"; }
/*
- * ms_read
+ * memoserv/read
*
* Provides the command memoserv/read.
*
* Used to read your memos.
*/
-module { name = "ms_read" }
+module { name = "memoserv/read" }
command { service = "MemoServ"; name = "READ"; command = "memoserv/read"; }
/*
- * ms_rsend
+ * memoserv/rsend
*
* Provides the command memoserv/rsend.
*
@@ -191,10 +182,10 @@ command { service = "MemoServ"; name = "READ"; command = "memoserv/read"; }
*/
#module
{
- name = "ms_rsend"
+ name = "memoserv/rsend"
/*
- * Only allow Services Operators to use ms_rsend.
+ * Only allow Services Operators to use memoserv/rsend.
*
* This directive is optional.
*/
@@ -203,41 +194,41 @@ command { service = "MemoServ"; name = "READ"; command = "memoserv/read"; }
#command { service = "MemoServ"; name = "RSEND"; command = "memoserv/rsend"; }
/*
- * ms_send
+ * memoserv/send
*
* Provides the command memoserv/send.
*
* Used to send memos.
*/
-module { name = "ms_send" }
+module { name = "memoserv/send" }
command { service = "MemoServ"; name = "SEND"; command = "memoserv/send"; }
/*
- * ms_sendall
+ * memoserv/sendall
*
* Provides the command memoserv/sendall.
*
* Used to send a mass memo to every registered user.
*/
-module { name = "ms_sendall" }
+module { name = "memoserv/sendall" }
command { service = "MemoServ"; name = "SENDALL"; command = "memoserv/sendall"; permission = "memoserv/sendall"; }
/*
- * ms_set
+ * memoserv/set
*
* Provides the command memoserv/set.
*
* Used to set settings such as how you are notified of new memos, and your memo limit.
*/
-module { name = "ms_set" }
+module { name = "memoserv/set" }
command { service = "MemoServ"; name = "SET"; command = "memoserv/set"; }
/*
- * ms_staff
+ * memoserv/staff
*
* Provides the command memoserv/staff.
*
* Used to send a memo to all registered staff members.
*/
-module { name = "ms_staff" }
+module { name = "memoserv/staff" }
command { service = "MemoServ"; name = "STAFF"; command = "memoserv/staff"; permission = "memoserv/staff"; }
diff --git a/data/modules.example.conf b/data/modules.example.conf
index e921c1e0d..89166e619 100644
--- a/data/modules.example.conf
+++ b/data/modules.example.conf
@@ -19,14 +19,14 @@
module { name = "help" }
/*
- * m_dns
+ * dns
*
* Adds support for the DNS protocol. By itself this module does nothing useful,
- * but other modules such as m_dnsbl and os_dns require this.
+ * but other modules such as dnsbl and operserv/dns require this.
*/
#module
{
- name = "m_dns"
+ name = "dns"
/*
* The nameserver to use for resolving hostnames, must be an IP or a resolver configuration file.
@@ -42,7 +42,7 @@ module { name = "help" }
timeout = 5
- /* Only edit below if you are expecting to use os_dns or otherwise answer DNS queries. */
+ /* Only edit below if you are expecting to use operserv/dns or otherwise answer DNS queries. */
/*
* The IP and port services use to listen for DNS queries.
@@ -80,7 +80,7 @@ module { name = "help" }
}
/*
- * m_dnsbl
+ * dnsbl
*
* Allows configurable DNS blacklists to check connecting users against. If a user
* is found on the blacklist they will be immediately banned. This is a crucial module
@@ -88,7 +88,7 @@ module { name = "help" }
*/
#module
{
- name = "m_dnsbl"
+ name = "dnsbl"
/*
* If set, Services will check clients against the DNSBLs when services connect to its uplink.
@@ -179,19 +179,19 @@ module { name = "help" }
}
/*
- * m_helpchan
+ * helpchan
*
* Gives users who are op in the specified help channel usermode +h (helpop).
*/
#module
{
- name = "m_helpchan"
+ name = "helpchan"
helpchannel = "#help"
}
/*
- * m_httpd
+ * httpd
*
* Allows services to serve web pages. By itself, this module does nothing useful.
*
@@ -200,7 +200,7 @@ module { name = "help" }
*/
#module
{
- name = "m_httpd"
+ name = "httpd"
httpd
{
@@ -232,13 +232,13 @@ module { name = "help" }
}
/*
- * m_ldap [EXTRA]
+ * ldap [EXTRA]
*
* This module allows other modules to use LDAP. By itself, this module does nothing useful.
*/
#module
{
- name = "m_ldap"
+ name = "ldap"
ldap
{
@@ -253,14 +253,14 @@ module { name = "help" }
}
/*
- * m_ldap_authentication [EXTRA]
+ * ldap_authentication [EXTRA]
*
* This module allows many commands such as IDENTIFY, RELEASE, RECOVER, GHOST, etc. use
- * LDAP to authenticate users. Requires m_ldap.
+ * LDAP to authenticate users. Requires ldap.
*/
#module
{
- name = "m_ldap_authentication"
+ name = "ldap_authentication"
/*
* The distinguished name used for searching for users's accounts.
@@ -313,16 +313,16 @@ module { name = "help" }
}
/*
- * m_ldap_oper [EXTRA]
+ * ldap_oper [EXTRA]
*
* This module dynamically ties users to Anope opertypes when they identify
- * via LDAP group membership. Requires m_ldap.
+ * via LDAP group membership. Requires ldap.
*
* Note that this doesn't give the user privileges on the IRCd, only in Services.
*/
#module
{
- name = "m_ldap_oper"
+ name = "ldap_oper"
/*
* An optional binddn to use when searching for groups.
@@ -354,13 +354,13 @@ module { name = "help" }
}
/*
- * m_mysql [EXTRA]
+ * mysql [EXTRA]
*
* This module allows other modules to use MySQL.
*/
#module
{
- name = "m_mysql"
+ name = "mysql"
mysql
{
@@ -374,13 +374,13 @@ module { name = "help" }
}
}
/*
- * m_redis
+ * redis
*
* This module allows other modules to use Redis.
*/
#module
{
- name = "m_redis"
+ name = "redis"
/* A redis database */
redis
@@ -399,38 +399,16 @@ module { name = "help" }
}
/*
- * m_regex_pcre [EXTRA]
- *
- * Provides the regex engine regex/pcre, which uses the Perl Compatible Regular Expressions library.
- */
-#module { name = "m_regex_pcre" }
-
-/*
- * m_regex_posix [EXTRA]
- *
- * Provides the regex engine regex/posix, which uses the POSIX compliant regular expressions.
- * This is likely the only regex module you will not need extra libraries for.
- */
-#module { name = "m_regex_posix" }
-
-/*
- * m_regex_tre [EXTRA]
- *
- * Provides the regex engine regex/tre, which uses the TRE regex library.
- */
-#module { name = "m_regex_tre" }
-
-/*
- * m_rewrite
+ * rewrite
*
* Allows rewriting commands sent to/from clients.
*/
-#module { name = "m_rewrite" }
+#module { name = "rewrite" }
#command
{
service = "ChanServ"; name = "CLEAR"; command = "rewrite"
- /* Enable m_rewrite. */
+ /* Enable rewrite. */
rewrite = true
/* Source message to match. A $ can be used to match anything. */
@@ -451,111 +429,47 @@ module { name = "help" }
}
/*
- * m_proxyscan
+ * sasl
*
- * This module allows you to scan connecting clients for open proxies.
- * Note that using this will allow users to get the IP of your services.
- *
- * Currently the two supported proxy types are HTTP and SOCKS5.
- *
- * The proxy scanner works by attempting to connect to clients when they
- * connect to the network, and if they have a proxy running instruct it to connect
- * back to services. If services are able to connect through the proxy to itself
- * then it knows it is an insecure proxy, and will ban it.
+ * Some IRCds allow "SASL" authentication to let users identify to Services
+ * during the IRCd user registration process. If this module is loaded, Services will allow
+ * authenticating users through this mechanism. Supported mechanisms are:
+ * PLAIN, EXTERNAL.
*/
-#module
-{
- name = "m_proxyscan"
-
- /*
- * The target IP services tells the proxy to connect back to. This must be a publicly
- * available IP that remote proxies can connect to.
- */
- #target_ip = "127.0.0.1"
-
- /*
- * The port services tells the proxy to connect to.
- */
- target_port = 7226
-
- /*
- * The listen IP services listen on for incoming connections from suspected proxies.
- * This probably will be the same as target_ip, but may not be if you are behind a firewall (NAT).
- */
- #listen_ip = "127.0.0.1"
-
- /*
- * The port services should listen on for incoming connections from suspected proxies.
- * This most likely will be the same as target_port.
- */
- listen_port = 7226
-
- /*
- * An optional notice sent to clients upon connect.
- */
- #connect_notice = "We will now scan your host for insecure proxies. If you do not consent to this scan please disconnect immediately."
-
- /*
- * Who the notice should be sent from.
- */
- #connect_source = "OperServ"
-
- /*
- * If set, OperServ will add infected clients to the akill list. Without it, OperServ simply sends
- * a timed G/K-line to the IRCd and forgets about it. Can be useful if your akill list is being filled up by bots.
- */
- add_to_akill = yes
-
- /*
- * How long before connections should be timed out.
- */
- timeout = 5
-
- proxyscan
- {
- /* The type of proxy to check for. A comma separated list is allowed. */
- type = "HTTP"
-
- /* The ports to check. */
- port = "80,8080"
-
- /* How long to set the ban for. */
- time = 4h
+#module { name = "sasl" }
- /*
- * The reason to ban the user for.
- * %h is replaced with the type of proxy found.
- * %i is replaced with the IP of proxy found.
- * %p is replaced with the port.
- */
- reason = "You have an open proxy running on your host (%t:%i:%p)"
- }
-}
+/*
+ * sasl_dh-aes [EXTRA]
+ *
+ * Add the DH-AES mechanism to SASL.
+ * Requires sasl to be loaded.
+ * Requires openssl.
+ */
+#module { name = "sasl_dh-aes" }
/*
- * m_sasl
+ * sasl_dh-blowfish [EXTRA]
*
- * Some IRCds allow "SASL" authentication to let users identify to Services
- * during the IRCd user registration process. If this module is loaded, Services will allow
- * authenticating users through this mechanism. Supported mechanisms are:
- * PLAIN, EXTERNAL.
+ * Add the DH-BLOWFISH mechanism to SASL.
+ * Requires sasl to be loaded.
+ * Requires openssl.
*/
-#module { name = "m_sasl" }
+#module { name = "sasl_dh-blowfish" }
/*
- * m_ssl_gnutls [EXTRA]
+ * ssl_gnutls [EXTRA]
*
* This module provides SSL services to Anope using GnuTLS, for example to
* connect to the uplink server(s) via SSL.
*
- * You may only load either m_ssl_gnutls or m_ssl_openssl, bot not both.
+ * You may only load either ssl_gnutls or ssl_openssl, bot not both.
*/
#module
{
- name = "m_ssl_gnutls"
+ name = "ssl_gnutls"
/*
- * An optional certificate and key for m_ssl_gnutls to give to the uplink.
+ * An optional certificate and key for ssl_gnutls to give to the uplink.
*
* You can generate your own certificate and key pair by using:
*
@@ -581,20 +495,20 @@ module { name = "help" }
}
/*
- * m_ssl_openssl [EXTRA]
+ * ssl_openssl [EXTRA]
*
* This module provides SSL services to Anope using OpenSSL, for example to
* connect to the uplink server(s) via SSL.
*
- * You may only load either m_ssl_openssl or m_ssl_gnutls, bot not both.
+ * You may only load either ssl_openssl or ssl_gnutls, bot not both.
*
*/
#module
{
- name = "m_ssl_openssl"
+ name = "ssl_openssl"
/*
- * An optional certificate and key for m_ssl_openssl to give to the uplink.
+ * An optional certificate and key for ssl_openssl to give to the uplink.
*
* You can generate your own certificate and key pair by using:
*
@@ -614,16 +528,16 @@ module { name = "help" }
}
/*
- * m_sql_authentication [EXTRA]
+ * sql_authentication [EXTRA]
*
* This module allows authenticating users against an external SQL database using a custom
* query.
*/
#module
{
- name = "m_sql_authentication"
+ name = "sql_authentication"
- /* SQL engine to use. Should be configured elsewhere with m_mysql, m_sqlite, etc. */
+ /* SQL engine to use. Should be configured elsewhere with mysql, sqlite, etc. */
engine = "mysql/main"
/* Query to execute to authenticate. A non empty result from this query is considered a success,
@@ -665,7 +579,7 @@ module { name = "help" }
}
/*
- * m_sql_log [EXTRA]
+ * sql_log [EXTRA]
*
* This module adds an additional target option to log{} blocks
* that allows logging Service's logs to SQL. To log to SQL, add
@@ -682,24 +596,24 @@ module { name = "help" }
* it if it doesn't exist. This module does not create any indexes (keys)
* on the table and it is recommended you add them yourself as necessary.
*/
-#module { name = "m_sql_log" }
+#module { name = "sql_log" }
/*
- * m_sql_oper [EXTRA]
+ * sql_oper [EXTRA]
*
* This module allows granting users services operator privileges and possibly IRC Operator
* privileges based on an external SQL database using a custom query.
*/
#module
{
- name = "m_sql_oper"
+ name = "sql_oper"
- /* SQL engine to use. Should be configured elsewhere with m_mysql, m_sqlite, etc. */
+ /* SQL engine to use. Should be configured elsewhere with mysql, sqlite, etc. */
engine = "mysql/main"
/* Query to execute to determine if a user should have operator privileges.
* A field named opertype must be returned in order to link the user to their oper type.
- * The oper types must be configured earlier in services.conf.
+ * The oper types must be configured earlier in anope.conf.
*
* If a field named modes is returned from this query then those modes are set on the user.
* Without this, only a simple +o is sent.
@@ -711,13 +625,13 @@ module { name = "help" }
}
/*
- * m_sqlite [EXTRA]
+ * sqlite [EXTRA]
*
* This module allows other modules to use SQLite.
*/
#module
{
- name = "m_sqlite"
+ name = "sqlite"
/* A SQLite database */
sqlite
@@ -737,7 +651,7 @@ module { name = "help" }
* as they could over IRC. If you are using the default configuration you should be able to access
* this panel by visiting http://127.0.0.1:8080 in your web browser from the machine Anope is running on.
*
- * This module requires m_httpd.
+ * This module requires httpd.
*/
#module
{
@@ -754,23 +668,23 @@ module { name = "help" }
}
/*
- * m_xmlrpc
+ * xmlrpc
*
* Allows remote applications (websites) to execute queries in real time to retrieve data from Anope.
- * By itself this module does nothing, but allows other modules (m_xmlrpc_main) to receive and send XMLRPC queries.
+ * By itself this module does nothing, but allows other modules (xmlrpc_main) to receive and send XMLRPC queries.
*/
#module
{
- name = "m_xmlrpc"
+ name = "xmlrpc"
- /* Web service to use. Requires m_httpd. */
+ /* Web service to use. Requires httpd. */
server = "httpd/main"
}
/*
- * m_xmlrpc_main
+ * xmlrpc_main
*
* Adds the main XMLRPC core functions.
- * Requires m_xmlrpc.
+ * Requires xmlrpc.
*/
-#module { name = "m_xmlrpc_main" }
+#module { name = "xmlrpc_main" }
diff --git a/data/ngircd.example.conf b/data/ngircd.example.conf
new file mode 100644
index 000000000..7df67ce64
--- /dev/null
+++ b/data/ngircd.example.conf
@@ -0,0 +1,234 @@
+
+module
+{
+ name = "protocol/ngircd"
+}
+
+usermode
+{
+ name = "NOCTCP"
+ character = "b"
+}
+
+usermode
+{
+ name = "BOT"
+ character = "B"
+}
+
+usermode
+{
+ name = "COMMONCHANS"
+ character = "C"
+}
+
+usermode
+{
+ name = "INVIS"
+ character = "i"
+}
+
+usermode
+{
+ name = "OPER"
+ character = "o"
+ oper_only = yes
+}
+
+usermode
+{
+ name = "PROTECTED"
+ character = "q"
+ oper_only = yes
+}
+
+usermode
+{
+ name = "RESTRICTED"
+ character = "r"
+ oper_only = yes
+}
+
+usermode
+{
+ name = "REGISTERED"
+ character = "R"
+ setable = no
+}
+
+usermode
+{
+ name = "SNOMASK"
+ character = "s"
+ oper_only = yes
+}
+
+usermode
+{
+ name = "WALLOPS"
+ character = "w"
+}
+
+usermode
+{
+ name = "CLOAK"
+ character = "x"
+}
+
+channelmode
+{
+ name = "BAN"
+ character = "b"
+ list = yes
+}
+
+channelmode
+{
+ name = "EXCEPT"
+ character = "e"
+ list = yes
+}
+
+channemode
+{
+ name = "INVITEOVERRIDE"
+ character = "I"
+ list = yes
+}
+
+
+channelmode
+{
+ name = "VOICE"
+ character = "v"
+ status = "+"
+ level = 1
+}
+
+channelmode
+{
+ name = "HALFOP"
+ character = "h"
+ status = "%"
+ level = 2
+}
+
+channelmode
+{
+ name = "OP"
+ character = "@"
+ status = "@"
+ level = 3
+}
+
+channelmode
+{
+ name = "PROTECT"
+ character = "a"
+ status = "&"
+ level = 4
+}
+
+channelmode
+{
+ name = "OWNER"
+ character = "q"
+ status = "~"
+ level = 5
+}
+
+channelmode
+{
+ name = "INVITE"
+ character = "i"
+}
+
+channelmode
+{
+ name = "KEY"
+ character = "k"
+ param_regex = "[^:,]+"
+}
+
+channelmode
+{
+ name = "LIMIT"
+ character = "l"
+ param_regex = "\d+"
+ param_unset = no
+}
+
+channelmode
+{
+ name = "MODERATED"
+ character = "m"
+}
+
+channelmode
+{
+ name = "REGMODERATED"
+ character = "M"
+}
+
+channelmode
+{
+ name = "NOEXTERNAL"
+ character = "n"
+}
+
+channelmode
+{
+ name = "OPERONLY"
+ character = "O"
+ oper_only = yes
+}
+
+channelmode
+{
+ name = "PERM"
+ character = "P"
+ oper_only = yes
+}
+
+channelmode
+{
+ name = "NOKICK"
+ character = "Q"
+}
+
+channelmode
+{
+ name = "REGISTERED"
+ character = "r"
+ setable = no
+}
+
+channelmode
+{
+ name = "REGISTEREDONLY"
+ character = "R"
+}
+
+channelmode
+{
+ name = "SECRET"
+ character = "s"
+}
+
+channelmode
+{
+ name = "TOPIC"
+ character = "t"
+}
+
+channelmode
+{
+ name = "NOINVITE"
+ character = "V"
+}
+
+channelmode
+{
+ name = "SSL"
+ character = "z"
+}
diff --git a/data/nickserv.example.conf b/data/nickserv.example.conf
index ee036d086..1f07831c4 100644
--- a/data/nickserv.example.conf
+++ b/data/nickserv.example.conf
@@ -40,15 +40,6 @@ service
* unable to do certain things if this option is enabled.
*/
#modes = "+o"
-
- /*
- * An optional comma separated list of channels this service should join. Outside
- * of log channels this is not very useful, as the service will just idle in the
- * specified channels, and will not accept any types of commands.
- *
- * Prefixes may be given to the channels in the form of mode characters or prefix symbols.
- */
- #channels = "@#services,#mychan"
}
/*
@@ -58,7 +49,7 @@ service
*/
module
{
- name = "nickserv"
+ name = "nickserv/main"
/*
* The name of the client that should be NickServ.
@@ -109,7 +100,7 @@ module
* - ns_keepmodes: Enables keepmodes, which retains user modes across sessions
* - ns_no_expire: Enables no expire. Unconfirmed expire overrules this.
*
- * This directive is optional, if left blank, the options will default to ns_secure, memo_signon, and
+ * This directive is optional, if left blank, the options will default to nickserv/secure, memo_signon, and
* memo_receive. If you really want no defaults, use "none" by itself as the option.
*/
defaults = "ns_secure ns_private hide_email hide_mask memo_signon memo_receive autoop"
@@ -128,8 +119,8 @@ module
expire = 21d
/*
- * Prevents the use of the ACCESS and CERT (excluding their LIST subcommand), DROP, FORBID, SUSPEND,
- * GETPASS and SET PASSWORD commands by services operators on other services operators.
+ * Prevents the use of the ACCESS and CERT (excluding their LIST subcommand), DROP, FORBID, SUSPEND
+ * and SET PASSWORD commands by services operators on other services operators.
*
* This directive is optional, but recommended.
*/
@@ -239,7 +230,7 @@ command_group
command { service = "NickServ"; name = "HELP"; command = "generic/help"; }
/*
- * ns_access
+ * nickserv/access
*
* Provides the command nickserv/access.
*
@@ -247,7 +238,7 @@ command { service = "NickServ"; name = "HELP"; command = "generic/help"; }
*/
module
{
- name = "ns_access"
+ name = "nickserv/access"
/*
* The maximum number of entries allowed on a nickname's access list.
@@ -266,7 +257,7 @@ module
command { service = "NickServ"; name = "ACCESS"; command = "nickserv/access"; }
/*
- * ns_ajoin
+ * nickserv/ajoin
*
* Provides the command nickserv/ajoin.
*
@@ -274,7 +265,7 @@ command { service = "NickServ"; name = "ACCESS"; command = "nickserv/access"; }
*/
module
{
- name = "ns_ajoin"
+ name = "nickserv/ajoin"
/*
* The maximum number of channels a user can have on NickServ's AJOIN command.
@@ -284,17 +275,17 @@ module
command { service = "NickServ"; name = "AJOIN"; command = "nickserv/ajoin"; }
/*
- * ns_alist
+ * nickserv/alist
*
* Provides the command nickserv/alist.
*
* Used for viewing what channels you have access to.
*/
-module { name = "ns_alist" }
+module { name = "nickserv/alist" }
command { service = "NickServ"; name = "ALIST"; command = "nickserv/alist"; }
/*
- * ns_cert
+ * nickserv/cert
*
* Provides the command nickserv/cert.
*
@@ -302,7 +293,7 @@ command { service = "NickServ"; name = "ALIST"; command = "nickserv/alist"; }
*/
module
{
- name = "ns_cert"
+ name = "nickserv/cert"
/*
* The maximum number of entries allowed on a nickname's certificate fingerprint list.
@@ -313,39 +304,27 @@ module
command { service = "NickServ"; name = "CERT"; command = "nickserv/cert"; }
/*
- * ns_drop
+ * nickserv/drop
*
* Provides the command nickserv/drop.
*
* Used for unregistering names.
*/
-module { name = "ns_drop" }
+module { name = "nickserv/drop" }
command { service = "NickServ"; name = "DROP"; command = "nickserv/drop"; }
/*
- * ns_getemail
+ * nickserv/getemail
*
* Provides the command nickserv/getemail.
*
* Used for getting registered accounts by searching for emails.
*/
-module { name = "ns_getemail" }
+module { name = "nickserv/getemail" }
command { service = "NickServ"; name = "GETEMAIL"; command = "nickserv/getemail"; permission = "nickserv/getemail"; group = "nickserv/admin"; }
/*
- * ns_getpass
- *
- * Provides the command nickserv/getpass.
- *
- * Used for getting users passwords.
- *
- * Requires no encryption is being used.
- */
-#module { name = "ns_getpass" }
-#command { service = "NickServ"; name = "GETPASS"; command = "nickserv/getpass"; permission = "nickserv/getpass"; }
-
-/*
- * ns_group
+ * nickserv/group
*
* Provides the commands nickserv/group, nickserv/glist, and nickserv/ungroup.
*
@@ -353,7 +332,7 @@ command { service = "NickServ"; name = "GETEMAIL"; command = "nickserv/getemail"
*/
module
{
- name = "ns_group"
+ name = "nickserv/group"
/*
* The maximum number of nicks allowed in a group.
@@ -376,7 +355,7 @@ command { service = "NickServ"; name = "GROUP"; command = "nickserv/group"; }
command { service = "NickServ"; name = "UNGROUP"; command = "nickserv/ungroup"; }
/*
- * ns_identify
+ * nickserv/identify
*
* Provides the command nickserv/identify.
*
@@ -384,7 +363,7 @@ command { service = "NickServ"; name = "UNGROUP"; command = "nickserv/ungroup";
*/
module
{
- name = "ns_identify"
+ name = "nickserv/identify"
/*
* If set, limits the number of concurrent users that can be logged in as a given account at once.
@@ -395,14 +374,14 @@ command { service = "NickServ"; name = "ID"; command = "nickserv/identify"; hide
command { service = "NickServ"; name = "IDENTIFY"; command = "nickserv/identify"; }
/*
- * ns_info
+ * nickserv/info
*
* Provides the commands:
* nickserv/info. - Used for gathering information about an account.
* nickserv/set/hide, nickserv/saset/hide - Used for configuring which options are publicly shown in nickserv/info.
*
*/
-module { name = "ns_info" }
+module { name = "nickserv/info" }
command { service = "NickServ"; name = "INFO"; command = "nickserv/info"; }
command { service = "NickServ"; name = "SET HIDE"; command = "nickserv/set/hide"; }
@@ -410,7 +389,7 @@ command { service = "NickServ"; name = "SASET HIDE"; command = "nickserv/saset/h
/*
- * ns_list
+ * nickserv/list
*
* Provides the commands:
* nickserv/list - Used for retrieving and searching the registered account list.
@@ -419,7 +398,7 @@ command { service = "NickServ"; name = "SASET HIDE"; command = "nickserv/saset/h
*/
module
{
- name = "ns_list"
+ name = "nickserv/list"
/*
* The maximum number of nicks to be returned for a NickServ LIST command.
@@ -433,17 +412,17 @@ command { service = "NickServ"; name = "SASET PRIVATE"; command = "nickserv/sase
/*
- * ns_logout
+ * nickserv/logout
*
* Provides the command nickserv/logout.
*
* Used for logging out of your account.
*/
-module { name = "ns_logout" }
+module { name = "nickserv/logout" }
command { service = "NickServ"; name = "LOGOUT"; command = "nickserv/logout"; }
/*
- * ns_recover
+ * nickserv/recover
*
* Provides the command nickserv/recover.
*
@@ -451,7 +430,7 @@ command { service = "NickServ"; name = "LOGOUT"; command = "nickserv/logout"; }
*/
module
{
- name = "ns_recover"
+ name = "nickserv/recover"
/*
* If set, Services will svsnick and svsjoin users who use the recover
@@ -467,7 +446,7 @@ command { service = "NickServ"; name = "RECOVER"; command = "nickserv/recover";
#command { service = "NickServ"; name = "RELEASE"; command = "nickserv/recover"; }
/*
- * ns_register
+ * nickserv/register
*
* Provides the commands nickserv/confirm, nickserv/register, and nickserv/resend.
*
@@ -475,7 +454,7 @@ command { service = "NickServ"; name = "RECOVER"; command = "nickserv/recover";
*/
module
{
- name = "ns_register"
+ name = "nickserv/register"
/*
* Registration confirmation setting. Set to "none" for no registration confirmation,
@@ -510,17 +489,17 @@ command { service = "NickServ"; name = "REGISTER"; command = "nickserv/register"
command { service = "NickServ"; name = "RESEND"; command = "nickserv/resend"; }
/*
- * ns_resetpass
+ * nickserv/resetpass
*
* Provides the command nickserv/resetpass.
*
* Used for resetting passwords by emailing users a temporary one.
*/
-module { name = "ns_resetpass" }
+module { name = "nickserv/resetpass" }
command { service = "NickServ"; name = "RESETPASS"; command = "nickserv/resetpass"; }
/*
- * ns_set
+ * nickserv/set
*
* Provides the commands:
* nickserv/set, nickserv/saset - Dummy help wrappers for the SET and SASET commands.
@@ -537,7 +516,7 @@ command { service = "NickServ"; name = "RESETPASS"; command = "nickserv/resetpas
*/
module
{
- name = "ns_set"
+ name = "nickserv/set"
/*
* Allow the use of the IMMED option in the NickServ SET KILL command.
@@ -581,14 +560,14 @@ command { service = "NickServ"; name = "SASET NOEXPIRE"; command = "nickserv/sas
/*
- * ns_set_misc
+ * nickserv/set_misc
*
* Provides the command nickserv/set/misc.
*
* Allows you to create arbitrary commands to set data, and have that data show up in nickserv/info.
* A field named misc_description may be given for use with help output.
*/
-module { name = "ns_set_misc" }
+module { name = "nickserv/set_misc" }
command { service = "NickServ"; name = "SET URL"; command = "nickserv/set/misc"; misc_description = _("Associate a URL with your account"); }
command { service = "NickServ"; name = "SASET URL"; command = "nickserv/saset/misc"; misc_description = _("Associate a URL with this account"); permission = "nickserv/saset/url"; group = "nickserv/admin"; }
#command { service = "NickServ"; name = "SET ICQ"; command = "nickserv/set/misc"; misc_description = _("Associate an ICQ account with your account"); }
@@ -599,17 +578,17 @@ command { service = "NickServ"; name = "SASET URL"; command = "nickserv/saset/mi
#command { service = "NickServ"; name = "SASET FACEBOOK"; command = "nickserv/saset/misc"; misc_description = _("Associate a Facebook URL with this account"); permission = "nickserv/saset/facebook"; group = "nickserv/admin"; }
/*
- * ns_status
+ * nickserv/status
*
* Provides the nickserv/status command.
*
* Used to determine if a user is recognized or identified by services.
*/
-module { name = "ns_status" }
+module { name = "nickserv/status" }
command { service = "NickServ"; name = "STATUS"; command = "nickserv/status"; }
/*
- * ns_suspend
+ * nickserv/suspend
*
* Provides the commands nickserv/suspend and nickserv/unsuspend.
*
@@ -617,7 +596,7 @@ command { service = "NickServ"; name = "STATUS"; command = "nickserv/status"; }
*/
module
{
- name = "ns_suspend"
+ name = "nickserv/suspend"
/*
* The length of time before a suspended nick becomes unsuspended.
@@ -637,13 +616,13 @@ command { service = "NickServ"; name = "SUSPEND"; command = "nickserv/suspend";
command { service = "NickServ"; name = "UNSUSPEND"; command = "nickserv/unsuspend"; permission = "nickserv/suspend"; group = "nickserv/admin"; }
/*
- * ns_update
+ * nickserv/update
*
* Provides the command nickserv/update.
*
* Used to update your status on all channels, turn on your vHost, etc.
*/
-module { name = "ns_update" }
+module { name = "nickserv/update" }
command { service = "NickServ"; name = "UPDATE"; command = "nickserv/update"; }
@@ -652,14 +631,14 @@ command { service = "NickServ"; name = "UPDATE"; command = "nickserv/update"; }
*/
/*
- * ns_maxemail
+ * nickserv/maxemail
*
* Limits how many times the same email address may be used in Anope
* to register accounts.
*/
#module
{
- name = "ns_maxemail"
+ name = "nickserv/maxemail"
/*
* The limit to how many registered nicks can use the same e-mail address. If set to 0 or left
diff --git a/data/operserv.example.conf b/data/operserv.example.conf
index 0c82f1e06..6deedddcd 100644
--- a/data/operserv.example.conf
+++ b/data/operserv.example.conf
@@ -40,15 +40,6 @@ service
* unable to do certain things if this option is enabled.
*/
#modes = "+o"
-
- /*
- * An optional comma separated list of channels this service should join. Outside
- * of log channels this is not very useful, as the service will just idle in the
- * specified channels, and will not accept any types of commands.
- *
- * Prefixes may be given to the channels in the form of mode characters or prefix symbols.
- */
- #channels = "@#services,#mychan"
}
/*
@@ -58,7 +49,7 @@ service
*/
module
{
- name = "operserv"
+ name = "operserv/main"
/*
* The name of the client that should be OperServ.
@@ -135,27 +126,27 @@ module
command { service = "OperServ"; name = "HELP"; command = "generic/help"; }
/*
- * os_akill
+ * operserv/akill
*
* Provides the command operserv/akill.
*
* Used to ban users from the network.
*/
-module { name = "os_akill" }
+module { name = "operserv/akill" }
command { service = "OperServ"; name = "AKILL"; command = "operserv/akill"; permission = "operserv/akill"; }
/*
- * os_chankill
+ * operserv/chankill
*
* Provides the command operserv/chankill.
*
* Used to akill users from an entire channel.
*/
-module { name = "os_chankill" }
+module { name = "operserv/chankill" }
command { service = "OperServ"; name = "CHANKILL"; command = "operserv/chankill"; permission = "operserv/chankill"; }
/*
- * os_defcon
+ * operserv/defcon
*
* Provides the command operserv/defcon.
*
@@ -164,7 +155,7 @@ command { service = "OperServ"; name = "CHANKILL"; command = "operserv/chankill"
*/
#module
{
- name = "os_defcon"
+ name = "operserv/defcon"
/*
* Default DefCon level (1-5) to use when starting Services up. Level 5 constitutes normal operation
@@ -263,7 +254,7 @@ command { service = "OperServ"; name = "CHANKILL"; command = "operserv/chankill"
#command { service = "OperServ"; name = "DEFCON"; command = "operserv/defcon"; permission = "operserv/defcon"; }
/*
- * os_dns
+ * operserv/dns
*
* Provides the command operserv/dns.
*
@@ -295,7 +286,7 @@ command { service = "OperServ"; name = "CHANKILL"; command = "operserv/chankill"
*/
#module
{
- name = "os_dns"
+ name = "operserv/dns"
/* TTL for records. This should be very low if your records change often. */
ttl = 1m
@@ -324,99 +315,99 @@ command { service = "OperServ"; name = "CHANKILL"; command = "operserv/chankill"
#command { service = "OperServ"; name = "DNS"; command = "operserv/dns"; permission = "operserv/dns"; }
/*
- * os_config
+ * operserv/config
*
* Provides the command operserv/config.
*
* Used to view and set configuration options while services are running.
*/
-module { name = "os_config" }
+module { name = "operserv/config" }
command { service = "OperServ"; name = "CONFIG"; command = "operserv/config"; permission = "operserv/config"; }
/*
- * os_forbid
+ * operserv/forbid
*
* Provides the command operserv/forbid.
*
* Used to forbid specific nicks, channels, emails, etc. from being used.
*/
-module { name = "os_forbid" }
+module { name = "operserv/forbid" }
command { service = "OperServ"; name = "FORBID"; command = "operserv/forbid"; permission = "operserv/forbid"; }
/*
- * os_ignore
+ * operserv/ignore
*
* Provides the command operserv/ignore.
*
* Used to make Services ignore users.
*/
-module { name = "os_ignore" }
+module { name = "operserv/ignore" }
command { service = "OperServ"; name = "IGNORE"; command = "operserv/ignore"; permission = "operserv/ignore"; }
/*
- * os_info
+ * operserv/info
*
* Provides the command operserv/info.
*
* Used to add oper only notes to users and channels.
*/
-module { name = "os_info" }
+module { name = "operserv/info" }
command { service = "OperServ"; name = "INFO"; command = "operserv/info"; permission = "operserv/info"; }
/*
- * os_jupe
+ * operserv/jupe
*
* Provides the command operserv/jupe.
*
* Used to disconnect servers from the network and prevent them from relinking.
*/
-module { name = "os_jupe" }
+module { name = "operserv/jupe" }
command { service = "OperServ"; name = "JUPE"; command = "operserv/jupe"; permission = "operserv/jupe"; }
/*
- * os_kick
+ * operserv/kick
*
* Provides the command operserv/kick.
*
* Used to kick users from channels.
*/
-module { name = "os_kick" }
+module { name = "operserv/kick" }
command { service = "OperServ"; name = "KICK"; command = "operserv/kick"; permission = "operserv/kick"; }
/*
- * os_kill
+ * operserv/kill
*
* Provides the command operserv/kill.
*
* Used to forcibly disconnect users from the network.
*/
-module { name = "os_kill" }
+module { name = "operserv/kill" }
command { service = "OperServ"; name = "KILL"; command = "operserv/kill"; permission = "operserv/kill"; }
/*
- * os_list
+ * operserv/list
*
* Provides the commands operserv/chanlist and operserv/userlist.
*
* Used to list and search the channels and users currently on the network.
*/
-module { name = "os_list" }
+module { name = "operserv/list" }
command { service = "OperServ"; name = "CHANLIST"; command = "operserv/chanlist"; permission = "operserv/chanlist"; }
command { service = "OperServ"; name = "USERLIST"; command = "operserv/userlist"; permission = "operserv/userlist"; }
/*
- * os_login
+ * operserv/login
*
* Provides the commands operserv/login and operserv/logout.
*
* Used to login to OperServ, only required if your oper block requires this.
*/
-module { name = "os_login" }
+module { name = "operserv/login" }
command { service = "OperServ"; name = "LOGIN"; command = "operserv/login"; }
command { service = "OperServ"; name = "LOGOUT"; command = "operserv/logout"; }
/*
- * os_logsearch
+ * operserv/logsearch
*
* Provides the command operserv/logsearch.
*
@@ -424,7 +415,7 @@ command { service = "OperServ"; name = "LOGOUT"; command = "operserv/logout"; }
*/
module
{
- name = "os_logsearch"
+ name = "operserv/logsearch"
/* The log file name to search. There should be a log{} block configured to log
* to a file of this name.
@@ -434,41 +425,41 @@ module
command { service = "OperServ"; name = "LOGSEARCH"; command = "operserv/logsearch"; permission = "operserv/logsearch"; }
/*
- * os_mode
+ * operserv/mode
*
* Provides the commands operserv/mode and operserv/umode.
*
* Used to change user and channel modes.
*/
-module { name = "os_mode" }
+module { name = "operserv/mode" }
command { service = "OperServ"; name = "UMODE"; command = "operserv/umode"; permission = "operserv/umode"; }
command { service = "OperServ"; name = "MODE"; command = "operserv/mode"; permission = "operserv/mode"; }
/*
- * os_modinfo
+ * operserv/modinfo
*
* Provides the commands operserv/modinfo and operserv/modlist.
*
* Used to show information about loaded modules.
*/
-module { name = "os_modinfo" }
+module { name = "operserv/modinfo" }
command { service = "OperServ"; name = "MODINFO"; command = "operserv/modinfo"; permission = "operserv/modinfo"; }
command { service = "OperServ"; name = "MODLIST"; command = "operserv/modlist"; permission = "operserv/modinfo"; }
/*
- * os_module
+ * operserv/module
*
* Provides the commands operserv/modload, operserv/modreload, and operserv/modunload.
*
* Used to load, reload, and unload modules.
*/
-module { name = "os_module" }
+module { name = "operserv/module" }
command { service = "OperServ"; name = "MODLOAD"; command = "operserv/modload"; permission = "operserv/modload"; }
command { service = "OperServ"; name = "MODRELOAD"; command = "operserv/modreload"; permission = "operserv/modload"; }
command { service = "OperServ"; name = "MODUNLOAD"; command = "operserv/modunload"; permission = "operserv/modload"; }
/*
- * os_news
+ * operserv/news
*
* Provides the commands operserv/logonnews, operserv/opernews, and operserv/randomnews.
*
@@ -476,7 +467,7 @@ command { service = "OperServ"; name = "MODUNLOAD"; command = "operserv/modunloa
*/
module
{
- name = "os_news"
+ name = "operserv/news"
/*
* The service bot names to use to send news to users on connection
@@ -497,48 +488,48 @@ command { service = "OperServ"; name = "OPERNEWS"; command = "operserv/opernews"
command { service = "OperServ"; name = "RANDOMNEWS"; command = "operserv/randomnews"; permission = "operserv/news"; }
/*
- * os_noop
+ * operserv/noop
*
* Provides the command operserv/noop.
*
* Used to NOOP a server, which prevents users from opering on that server.
*/
-module { name = "os_noop" }
+module { name = "operserv/noop" }
command { service = "OperServ"; name = "NOOP"; command = "operserv/noop"; permission = "operserv/noop"; }
/*
- * os_oline
+ * operserv/oline
*
* Provides the command operserv/oline.
*
* Used to set oper flags on users, and is specific to UnrealIRCd.
* See /helpop ?svso on your IRCd for more information.
*/
-module { name = "os_oline" }
+module { name = "operserv/oline" }
command { service = "OperServ"; name = "OLINE"; command = "operserv/oline"; permission = "operserv/oline"; }
/*
- * os_oper
+ * operserv/oper
*
* Provides the command operserv/oper.
*
* Used to configure opers and show information about opertypes.
*/
-module { name = "os_oper" }
+module { name = "operserv/oper" }
command { service = "OperServ"; name = "OPER"; command = "operserv/oper"; permission = "operserv/oper"; }
/*
- * os_reload
+ * operserv/reload
*
* Provides the command operserv/reload.
*
- * Used to reload the services.conf configuration file.
+ * Used to reload the anope.conf configuration file.
*/
-module { name = "os_reload" }
+module { name = "operserv/reload" }
command { service = "OperServ"; name = "RELOAD"; command = "operserv/reload"; permission = "operserv/reload"; }
/*
- * os_session
+ * operserv/session
*
* Provides the commands operserv/exception and operserv/session.
*
@@ -551,25 +542,27 @@ command { service = "OperServ"; name = "RELOAD"; command = "operserv/reload"; pe
*/
module
{
- name = "os_session"
+ name = "operserv/session"
/*
* Default session limit per host. Once a host reaches its session limit, all clients attempting
* to connect from that host will be killed.
*
- * This directive is required if os_session is loaded.
+ * This directive is required if operserv/session is loaded.
*/
defaultsessionlimit = 3
/*
* The maximum session limit that may be set for a host in an exception.
*
- * This directive is required if os_session is loaded.
+ * This directive is required if operserv/session is loaded.
*/
maxsessionlimit = 100
/*
* Sets the default expiry time for session exceptions.
+ *
+ * This directive is required if operserv/session is loaded.
*/
#exceptionexpiry = 1d
@@ -622,7 +615,7 @@ command { service = "OperServ"; name = "EXCEPTION"; command = "operserv/exceptio
command { service = "OperServ"; name = "SESSION"; command = "operserv/session"; permission = "operserv/session"; }
/*
- * os_set
+ * operserv/set
*
* Provides the command operserv/set.
*
@@ -630,7 +623,7 @@ command { service = "OperServ"; name = "SESSION"; command = "operserv/session";
*/
module
{
- name = "os_set"
+ name = "operserv/set"
/*
* If set, Services Admins will be able to use SUPERADMIN [ON|OFF] which will temporarily grant
@@ -643,56 +636,56 @@ module
command { service = "OperServ"; name = "SET"; command = "operserv/set"; permission = "operserv/set"; }
/*
- * os_shutdown
+ * operserv/shutdown
*
* Provides the commands operserv/quit, operserv/restart, and operserv/shutdown.
*
* Used to quit, restart, or shutdown services.
*/
-module { name = "os_shutdown" }
+module { name = "operserv/shutdown" }
command { service = "OperServ"; name = "QUIT"; command = "operserv/quit"; permission = "operserv/quit"; }
command { service = "OperServ"; name = "RESTART"; command = "operserv/restart"; permission = "operserv/restart"; }
command { service = "OperServ"; name = "SHUTDOWN"; command = "operserv/shutdown"; permission = "operserv/shutdown"; }
/*
- * os_stats
+ * operserv/stats
*
* Provides the operserv/stats command.
*
* Used to show statistics about services.
*/
-module { name = "os_stats" }
+module { name = "operserv/stats" }
command { service = "OperServ"; name = "STATS"; command = "operserv/stats"; permission = "operserv/stats"; }
/*
- * os_svs
+ * operserv/svs
*
* Provides the commands operserv/svsnick, operserv/svsjoin, and operserv/svspart.
*
* Used to force users to change nicks, join and part channels.
*/
-module { name = "os_svs" }
+module { name = "operserv/svs" }
command { service = "OperServ"; name = "SVSNICK"; command = "operserv/svsnick"; permission = "operserv/svs"; }
command { service = "OperServ"; name = "SVSJOIN"; command = "operserv/svsjoin"; permission = "operserv/svs"; }
command { service = "OperServ"; name = "SVSPART"; command = "operserv/svspart"; permission = "operserv/svs"; }
/*
- * os_sxline
+ * operserv/sxline
*
* Provides the operserv/snline and operserv/sqline commands.
*
* Used to ban real names, nick names, and possibly channels.
*/
-module { name = "os_sxline" }
+module { name = "operserv/sxline" }
command { service = "OperServ"; name = "SNLINE"; command = "operserv/snline"; permission = "operserv/snline"; }
command { service = "OperServ"; name = "SQLINE"; command = "operserv/sqline"; permission = "operserv/sqline"; }
/*
- * os_update
+ * operserv/update
*
* Provides the operserv/update command.
*
* Use to immediately update the databases.
*/
-module { name = "os_update" }
+module { name = "operserv/update" }
command { service = "OperServ"; name = "UPDATE"; command = "operserv/update"; permission = "operserv/update"; }
diff --git a/data/plexus.example.conf b/data/plexus.example.conf
new file mode 100644
index 000000000..9d1204828
--- /dev/null
+++ b/data/plexus.example.conf
@@ -0,0 +1,294 @@
+
+module
+{
+ name = "protocol/plexus"
+}
+
+usermode
+{
+ name = "ADMIN"
+ character = "a"
+ oper_only = yes
+}
+
+usermode
+{
+ name = "NOCTCP"
+ character = "c"
+}
+
+usermode
+{
+ name = "SOFTCALLERID"
+ character = "G"
+}
+
+usermode
+{
+ name = "CALLERID"
+ character = "g"
+}
+
+usermode
+{
+ name = "INVIS"
+ character = "i"
+}
+
+usermode
+{
+ name = "LOCOPS"
+ character = "l"
+ oper_only = yes
+}
+
+usermode
+{
+ name = "OPER"
+ character = "o"
+ oper_only = yes
+}
+
+usermode
+{
+ name = "NETADMIN"
+ character = "N"
+ oper_only = yes
+}
+
+usermode
+{
+ name = "PRIV"
+ character = "p"
+}
+
+usermode
+{
+ name = "ROUTING"
+ character = "q"
+ oper_only = yes
+}
+
+usermode
+{
+ name = "REGISTERED"
+ character = "r"
+ setable = no
+}
+
+usermode
+{
+ name = "REGPRIV"
+ character = "R"
+}
+
+usermode
+{
+ name = "SNOMASK"
+ character = "s"
+ oper_only = yes
+}
+
+usermode
+{
+ name = "SSL"
+ character = "S"
+ setable = no
+}
+
+usermode
+{
+ name = "PROTECTEDF"
+ character = "U"
+ setable = no
+}
+
+usermode
+{
+ name = "WALLOPS"
+ character = "w"
+}
+
+usermode
+{
+ name = "WEBIRC"
+ character = "W"
+ setable = no
+}
+
+usermode
+{
+ name = "CLOAK"
+ character = "x"
+}
+
+usermode
+{
+ name = "OPERWALL"
+ character = "z"
+ oper_only = yes
+}
+
+channelmode
+{
+ name = "BAN"
+ character = "b"
+ list = yes
+}
+
+channelmode
+{
+ name = "EXCEPT"
+ character = "e"
+ list = yes
+}
+
+channemode
+{
+ name = "INVITEOVERRIDE"
+ character = "I"
+ list = yes
+}
+
+channelmode
+{
+ name = "VOICE"
+ character = "v"
+ status = "+"
+ level = 1
+}
+
+channelmode
+{
+ name = "HALFOP"
+ characater = "h"
+ status = "%"
+ level = 2
+}
+
+channelmode
+{
+ name = "OP"
+ character = "o"
+ status = "@"
+ level = 3
+}
+
+channelmode
+{
+ name = "PROTECT"
+ character = "a"
+ status = "~"
+ level = 4
+}
+
+channelmode
+{
+ name = "OWNER"
+ character = "q"
+ status = "*"
+ level = 5
+}
+
+_____________
+
+channelmode
+{
+ name = "BANDWIDTHSAVER"
+ character = "B"
+}
+
+channelmode
+{
+ name = "NOCTCP"
+ character = "C"
+}
+
+channelmode
+{
+ name = "BLOCKCOLOR"
+ character = "c"
+}
+
+channelmode
+{
+ name = "INVITE"
+ character = "i"
+}
+
+channelmode
+{
+ name = "KEY"
+ character = "k"
+ param_regex = "[^:,]+"
+}
+
+channelmode
+{
+ name = "LIMIT"
+ character = "l"
+ param_regex = "\d+"
+ param_unset = no
+}
+
+channelmode
+{
+ name = "MODERATED"
+ character = "m"
+}
+
+channelmode
+{
+ name = "NOEXTERNAL"
+ character = "n"
+}
+
+channelmode
+{
+ name = "PRIVATE"
+ character = "p"
+}
+
+channelmode
+{
+ name = "SECRET"
+ character = "s"
+}
+
+channelmode
+{
+ name = "TOPIC"
+ character = "t"
+}
+
+channelmode
+{
+ name = "REGMODERATED"
+ character = "M"
+}
+
+channelmode
+{
+ name = "OPERONLY"
+ character = "O"
+ oper_only = yes
+}
+
+channelmode
+{
+ name = "REGISTEREDONLY"
+ character = "R"
+}
+
+channelmode
+{
+ name = "SSL"
+ character = "S"
+}
+
+channelmode
+{
+ name = "PERM"
+ character = "z"
+}
+
diff --git a/data/ratbox.example.conf b/data/ratbox.example.conf
new file mode 100644
index 000000000..b5fc4546d
--- /dev/null
+++ b/data/ratbox.example.conf
@@ -0,0 +1,174 @@
+
+module
+{
+ name = "protocol/ratbox"
+}
+
+usermode
+{
+ name = "ADMIN"
+ character = "a"
+ oper_only = yes
+}
+
+usermode
+{
+ name = "CALLERID"
+ character = "g"
+}
+
+usermode
+{
+ name = "DEAF"
+ character = "D"
+}
+
+usermode
+{
+ name = "INVIS"
+ character = "i"
+}
+
+usermode
+{
+ name = "LOCOPS"
+ character = "l"
+ oper_only = yes
+}
+
+usermode
+{
+ name = "OPER"
+ character = "o"
+ oper_only = yes
+}
+
+usermode
+{
+ name = "SNOMASK"
+ character = "s"
+ oper_only = yes
+}
+
+usermode
+{
+ name = "PROTECTED"
+ character = "S"
+ setable = no
+}
+
+
+usermode
+{
+ name = "WALLOPS"
+ character = "w"
+}
+
+usermode
+{
+ name = "OPERWALL"
+ character = "z"
+ oper_only = yes
+}
+
+channelmode
+{
+ name = "BAN"
+ character = "b"
+ list = yes
+}
+
+channelmode
+{
+ name = "EXCEPT"
+ character = "e"
+ list = yes
+}
+
+channemode
+{
+ name = "INVITEOVERRIDE"
+ character = "I"
+ list = yes
+}
+
+channelmode
+{
+ name = "VOICE"
+ character = "v"
+ status = "+"
+ level = 1
+}
+
+channelmode
+{
+ name = "OP"
+ character = "o"
+ status = "@"
+ level = 2
+}
+
+channelmode
+{
+ name = "INVITE"
+ character = "i"
+}
+
+channelmode
+{
+ name = "KEY"
+ character = "k"
+ param_regex = "[^:,]+"
+}
+
+channelmode
+{
+ name = "LIMIT"
+ character = "l"
+ param_regex = "\d+"
+ param_unset = no
+}
+
+channelmode
+{
+ name = "MODERATED"
+ character = "m"
+}
+
+channelmode
+{
+ name = "NOEXTERNAL"
+ character = "n"
+}
+
+channelmode
+{
+ name = "PRIVATE"
+ character = "p"
+}
+
+channelmode
+{
+ name = "SECRET"
+ character = "s"
+}
+
+channelmode
+{
+ name = "TOPIC"
+ character = "t"
+}
+
+channelmode
+{
+ name = "REGISTEREDONLY"
+ character = "r"
+}
+
+channelmode
+{
+ name = "SSL"
+ character = "S"
+}
+
+
diff --git a/data/rfc1459.conf b/data/rfc1459.conf
new file mode 100644
index 000000000..81ced1ac0
--- /dev/null
+++ b/data/rfc1459.conf
@@ -0,0 +1,24 @@
+
+include
+{
+ name = "ascii.conf"
+}
+
+casemap
+{
+ lower = "{"
+ upper = "["
+}
+
+casemap
+{
+ lower = "}"
+ upper = "]"
+}
+
+casemap
+{
+ lower = "|"
+ upper = "\""
+}
+
diff --git a/data/stats.standalone.example.conf b/data/stats.standalone.example.conf
deleted file mode 100644
index 8db7c9999..000000000
--- a/data/stats.standalone.example.conf
+++ /dev/null
@@ -1,513 +0,0 @@
-/*
- * Example configuration file for Services. After making the appropriate
- * changes to this file, place it in the Services conf directory (as
- * specified in the "configure" script, default /home/username/services/conf)
- * under the name "services.conf".
- *
- * The format of this file is fairly simple: three types of comments are supported:
- * - All text after a '#' on a line is ignored, as in shell scripting
- * - All text after '//' on a line is ignored, as in C++
- * - A block of text like this one is ignored, as in C
- *
- * Outside of comments, there are three structures: blocks, keys, and values.
- *
- * A block is a named container, which contains a number of key to value pairs
- * - you may think of this as an array.
- *
- * A block is created like so:
- * foobar
- * {
- * moo = "cow"
- * foo = bar
- * }
- *
- * Note that nameless blocks are allowed and are often used with comments to allow
- * easily commenting an entire block, for example:
- * #foobar
- * {
- * moo = "cow"
- * foo = bar
- * }
- * is an entirely commented block.
- *
- * Keys are case insensitive. Values depend on what key - generally, information is
- * given in the key comment. The quoting of values (and most other syntax) is quite
- * flexible, however, please do not forget to quote your strings:
- *
- * "This is a parameter string with spaces in it"
- *
- * If you need to include a double quote inside a quoted string, precede it
- * by a backslash:
- *
- * "This string has \"double quotes\" in it"
- *
- * Time parameters can be specified either as an integer representing a
- * number of seconds (e.g. "3600" = 1 hour), or as an integer with a unit
- * specifier: "s" = seconds, "m" = minutes, "h" = hours, "d" = days.
- * Combinations (such as "1h30m") are not permitted. Examples (all of which
- * represent the same length of time, one day):
- *
- * "86400", "86400s", "1440m", "24h", "1d"
- *
- * In the documentation for each directive, one of the following will be
- * included to indicate whether an option is required:
- *
- * [REQUIRED]
- * Indicates a directive which must be given. Without it, Services will
- * not start.
- *
- * [RECOMMENDED]
- * Indicates a directive which may be omitted, but omitting it may cause
- * undesirable side effects.
- *
- * [OPTIONAL]
- * Indicates a directive which is optional. If not given, the feature
- * will typically be disabled. If this is not the case, more
- * information will be given in the documentation.
- *
- * [DISCOURAGED]
- * Indicates a directive which may cause undesirable side effects if
- * specified.
- *
- * [DEPRECATED]
- * Indicates a directive which will disappear in a future version of
- * Services, usually because its functionality has been either
- * superseded by that of other directives or incorporated into the main
- * program.
- */
-
-/*
- * [OPTIONAL] Defines
- *
- * You can define values to other values, which can be used to easily change
- * many values in the configuration. at once.
- */
-
-/*
- * The services.host define is used in multiple different locations throughout the
- * configuration for services clients hostnames.
- */
-define
-{
- name = "services.host"
- value = "services.localhost.net"
-}
-
-/*
- * [OPTIONAL] Additional Includes
- *
- * You can include additional configuration files here.
- * You may also include executable files, which will be executed and
- * the output from it will be included into your configuration.
- */
-
-#include
-{
- type = "file"
- name = "some.conf"
-}
-
-#include
-{
- type = "executable"
- name = "/usr/bin/wget -q -O - http://some.misconfigured.network.com/services.conf"
-}
-
-/*
- * [REQUIRED] IRCd Config
- *
- * This section is used to set up Anope to connect to your IRC network.
- * This section can be included multiple times, and Anope will attempt to
- * connect to each server until it finally connects.
- *
- * Each uplink IRCd should have a corresponding configuration to allow Services
- * to link to it.
- *
- * An example configuration for InspIRCd that is compatible with the below uplink
- * and serverinfo configuration would look like:
- *
- * <link name="services.localhost.net"
- * ipaddr="127.0.0.1"
- * port="7000"
- * sendpass="mypassword"
- * recvpass="mypassword">
- * <uline server="services.localhost.net" silent="yes">
- * <bind address="127.0.0.1" port="7000" type="servers">
- *
- * An example configuration for UnrealIRCd that is compatible with the below uplink
- * and serverinfo configuration would look like:
- *
- * link services.localhost.net
- * {
- * username *;
- * hostname *;
- * bind-ip "127.0.0.1";
- * port 7000;
- * hub *;
- * password-connect "mypassword";
- * password-receive "mypassword";
- * class servers;
- * };
- * ulines { services.localhost.net; };
- * listen 127.0.0.1:7000;
- */
-uplink
-{
- /*
- * The IP or hostname of the IRC server you wish to connect Services to.
- * Usually, you will want to connect Services over 127.0.0.1 (aka localhost).
- *
- * NOTE: On some shell providers, this will not be an option.
- */
- host = "127.0.0.1"
-
- /*
- * Enable if Services should connect using IPv6.
- */
- ipv6 = no
-
- /*
- * Enable if Services should connect using SSL.
- * You must have an SSL module loaded for this to work.
- */
- ssl = no
-
- /*
- * The port to connect to.
- * The IRCd *MUST* be configured to listen on this port, and to accept
- * server connections.
- *
- * Refer to your IRCd documentation for how this is to be done.
- */
- port = 7000
-
- /*
- * The password to send to the IRC server for authentication.
- * This must match the link block on your IRCd.
- *
- * Refer to your IRCd documentation for more information on link blocks.
- */
- password = "mypassword"
-}
-
-/*
- * [REQUIRED] Server Information
- *
- * This section contains information about the Services server.
- */
-serverinfo
-{
- /*
- * The hostname that Services will be seen as, it must have no conflicts with any
- * other server names on the rest of your IRC network. Note that it does not have
- * to be an existing hostname, just one that isn't on your network already.
- */
- name = "stats.localhost.net"
-
- /*
- * The text which should appear as the server's information in /whois and similar
- * queries.
- */
- description = "Stats for IRC Networks"
-
- /*
- * The local address that Services will bind to before connecting to the remote
- * server. This may be useful for multihomed hosts. If omitted, Services will let
- * the Operating System choose the local address. This directive is optional.
- *
- * If you don't know what this means or don't need to use it, just leave this
- * directive commented out.
- */
- #localhost = "nowhere."
-
- /*
- * What Server ID to use for this connection?
- * Note: This should *ONLY* be used for TS6/P10 IRCds. Refer to your IRCd documentation
- * to see if this is needed.
- */
- #id = "00A"
-
- /*
- * The filename containing the Services process ID. The path is relative to the
- * services root directory.
- */
- pid = "data/services.pid"
-
- /*
- * The filename containing the Message of the Day. The path is relative to the
- * services root directory.
- */
- motd = "conf/services.motd"
-}
-
-/*
- * [REQUIRED] Protocol module
- *
- * This directive tells Anope which IRCd Protocol to speak when connecting.
- * You MUST modify this to match the IRCd you run.
- *
- * Supported:
- * - bahamut
- * - charybdis
- * - hybrid
- * - inspircd12
- * - inspircd20
- * - ngircd
- * - plexus
- * - ratbox
- * - unreal
- */
-module
-{
- name = "inspircd20"
-}
-
-/*
- * [REQUIRED] Network Information
- *
- * This section contains information about the IRC network that Services will be
- * connecting to.
- */
-networkinfo
-{
- /*
- * This is the name of the network that Services will be running on.
- */
- networkname = "LocalNet"
-
- /*
- * Set this to the maximum allowed nick length on your network.
- * Be sure to set this correctly, as setting this wrong can result in
- * Services being disconnected from the network.
- */
- nicklen = 31
-
- /* Set this to the maximum allowed ident length on your network.
- * Be sure to set this correctly, as setting this wrong can result in
- * Services being disconnected from the network.
- */
- userlen = 10
-
- /* Set this to the maximum allowed hostname length on your network.
- * Be sure to set this correctly, as setting this wrong can result in
- * Services being disconnected from the network.
- */
- hostlen = 64
-
- /* Set this to the maximum allowed channel length on your network.
- */
- chanlen = 32
-
- /* The maximum number of list modes settable on a channel (such as b, e, I).
- * Comment out or set to 0 to disable.
- */
- modelistsize = 100
-
- /*
- * The characters allowed in hostnames. This is used for validating hostnames given
- * to services, such as BotServ bot hostnames and user vhosts. Changing this is not
- * recommended unless you know for sure your IRCd supports whatever characters you are
- * wanting to use. Telling services to set a vHost containing characters your IRCd
- * disallows could potentially break the IRCd and/or Services.
- *
- * It is recommended you DON'T change this.
- */
- vhost_chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789.-"
-
- /*
- * If set to true, allows vHosts to not contain dots (.).
- * Newer IRCds generally do not have a problem with this, but the same warning as
- * vhost_chars applies.
- *
- * It is recommended you DON'T change this.
- */
- allow_undotted_vhosts = false
-
- /*
- * The characters that are not allowed to be at the very beginning or very ending
- * of a vHost. The same warning as vhost_chars applies.
- *
- * It is recommended you DON'T change this.
- */
- disallow_start_or_end = ".-"
-}
-
-/*
- * [REQUIRED] Services Options
- *
- * This section contains various options which determine how Services will operate.
- */
-options
-{
- /*
- * On Linux/UNIX systems Anope can setuid and setgid to this user and group
- * after starting up. This is useful if Anope has to bind to privileged ports
- */
- #user = "anope"
- #group = "anope"
-
- /*
- * The case mapping used by services. This must be set to a valid locale name
- * installed on your machine. Services use this case map to compare, with
- * case insensitivity, things such as nick names, channel names, etc.
- *
- * We provide two special casemaps shipped with Anope, ascii and rfc1459.
- *
- * This value should be set to what your IRCd uses, which is probably rfc1459,
- * however Anope has always used ascii for comparison, so the default is ascii.
- *
- * Changing this value once set is not recommended.
- */
- casemap = "ascii"
-
- /*
- * Sets the timeout period for reading from the uplink.
- */
- readtimeout = 5s
-
- /*
- * Sets the interval between sending warning messages for program errors via
- * WALLOPS/GLOBOPS.
- */
- warningtimeout = 4h
-
- /*
- * If set, Services will only show /stats o to IRC Operators. This directive
- * is optional.
- */
- #hidestatso = yes
-
- /*
- * A space-separated list of ulined servers on your network, it is assumed that
- * the servers in this list are allowed to set channel modes and Services will
- * not attempt to reverse their mode changes.
- *
- * WARNING: Do NOT put your normal IRC user servers in this directive.
- *
- * This directive is optional.
- */
- #ulineservers = "services.your.network"
-
- /*
- * How long to wait between connection retries with the uplink(s).
- */
- retrywait = 60s
-}
-
-/*
- * [RECOMMENDED] Logging Configuration
- *
- * This section is used for configuring what is logged and where it is logged to.
- * You may have multiple log blocks if you wish. Remember to properly secure any
- * channels you choose to have Anope log to!
- */
-log
-{
- /*
- * Target(s) to log to, which may be one of the following:
- * - a channel name
- * - a filename
- * - globops
- */
- target = "stats.log"
-
- /* Log to both services.log and the channel #services
- *
- * Note that some older IRCds, such as Ratbox, require services to be in the
- * log channel to be able to message it. To do this, configure service:channels to
- * join your logging channel.
- */
- #target = "stats.log #services"
-
- /*
- * The source(s) to only accept log messages from. Leave commented to allow all sources.
- * This can be a users name, a channel name, one of our clients (eg, OperServ), or a server name.
- */
- #source = ""
-
- /*
- * The bot used to log generic messages which have no predefined sender if there
- * is a channel in the target directive.
- */
- bot = "Global"
-
- /*
- * The number of days to keep logfiles, only useful if you are logging to a file.
- * Set to 0 to never delete old logfiles.
- *
- * Note that Anope must run 24 hours a day for this feature to work correctly.
- */
- logage = 7
-
- /*
- * What types of log messages should be logged by this block. There are nine general categories:
- *
- * servers - Server actions, linking, squitting, etc.
- * channels - Actions in channels such as joins, parts, kicks, etc.
- * users - User actions such as connecting, disconnecting, changing name, etc.
- * other - All other messages without a category.
- * rawio - Logs raw input and output from services
- * debug - Debug messages (log files can become VERY large from this).
- *
- * These options determine what messages from the categories should be logged. Wildcards are accepted, and
- * you can also negate values with a ~. For example, "~operserv/akill operserv/*" would log all operserv
- * messages except for operserv/akill. Note that processing stops at the first matching option, which
- * means "* ~operserv/*" would log everything because * matches everything.
- *
- * Valid server options are:
- * connect, quit, sync, squit
- *
- * Valid channel options are:
- * create, destroy, join, part, kick, leave, mode
- *
- * Valid user options are:
- * connect, disconnect, quit, nick, ident, host, mode, maxusers, oper
- *
- * Rawio and debug are simple yes/no answers, there are no types for them.
- *
- * Note that modules may add their own values to these options.
- */
- servers = "*"
- #channels = "~mode *"
- users = "connect disconnect nick"
- other = "*"
- rawio = no
- debug = no
-}
-
-/*
- * [REQUIRED] MySQL Database configuration.
- *
- * m_mysql
- *
- * This module allows other modules to use MySQL.
- */
-module
-{
- name = "m_mysql"
-
- mysql
- {
- /* The name of this service. */
- name = "mysql/main"
- database = "anope"
- server = "127.0.0.1"
- username = "anope"
- password = "mypassword"
- port = 3306
- }
-}
-
-/*
- * IRC2SQL Gateway
- * This module collects data about users, channels and servers. It doesn't build stats
- * itself, however, it gives you the database, it's up to you how you use it.
- *
- * Requires a MySQL Database and MySQL version 5.5 or higher
- */
-include
-{
- type = "file"
- name = "irc2sql.example.conf"
-}
-
diff --git a/data/unreal.example.conf b/data/unreal.example.conf
new file mode 100644
index 000000000..692790730
--- /dev/null
+++ b/data/unreal.example.conf
@@ -0,0 +1,449 @@
+
+module
+{
+ name = "protocol/unreal"
+
+ /*
+ * Enforces mode locks server-side. This reduces the spam caused by
+ * services immediately reversing mode changes for locked modes.
+ */
+ use_server_side_mlock = yes
+}
+
+usermode
+{
+ name = "BOT"
+ character = "B"
+}
+
+usermode
+{
+ name = "CENSOR"
+ character = "G"
+}
+
+usermode
+{
+ name = "HIDEOPER"
+ character = "H"
+ oper_only = yes
+}
+
+usermode
+{
+ name = "HIDEIDLE"
+ character = "I"
+ oper_only = yes
+}
+
+usermode
+{
+ name = "REGPRIV"
+ character = "R"
+}
+
+usermode
+{
+ name = "PROTECTED"
+ character = "S"
+ oper_only = yes
+}
+
+usermode
+{
+ name = "NOCTCP"
+ character = "T"
+}
+
+usermode
+{
+ name = "WEBTV"
+ character = "V"
+}
+
+usermode
+{
+ name = "WHOIS"
+ character = "W"
+ oper_only = yes
+}
+
+usermode
+{
+ name = "DEAF"
+ character = "d"
+}
+
+usermode
+{
+ name = "GLOBOPS"
+ character = "g"
+ oper_only = yes
+}
+
+usermode
+{
+ name = "HELPOP"
+ character = "h"
+ oper_only = yes
+}
+
+usermode
+{
+ name = "INVIS"
+ character = "i"
+}
+
+usermode
+{
+ name = "OPER"
+ character = "o"
+ oper_only = yes
+}
+
+usermode
+{
+ name = "PRIV"
+ character = "p"
+}
+
+usermode
+{
+ name = "GOD"
+ character = "q"
+ oper_only = yes
+}
+
+usermode
+{
+ name = "REGISTERED"
+ character = "r"
+ oper_only = yes
+}
+
+usermode
+{
+ name = "SNOMASK"
+ character = "s"
+ oper_only = yes
+}
+
+usermode
+{
+ name = "VHOST"
+ character = "t"
+ setable = no
+}
+
+usermode
+{
+ name = "WALLOPS"
+ character = "w"
+}
+
+usermode
+{
+ name = "CLOAK"
+ character = "x"
+}
+
+usermode
+{
+ name = "SSL"
+ character = "z"
+ setable = no
+}
+
+channelmode
+{
+ name = "VOICE"
+ character = "v"
+ status = "+"
+ level = 1
+}
+
+channelmode
+{
+ name = "HALFOP"
+ character = "h"
+ status = "%"
+ level = 2
+}
+
+channelmode
+{
+ name = "OP"
+ character = "@"
+ status = "@"
+ level = 3
+}
+
+channelmode
+{
+ name = "PROTECT"
+ character = "a"
+ status = "~"
+ level = 4
+}
+
+channelmode
+{
+ name = "OWNER"
+ character = "q"
+ status = "*"
+ level = 5
+}
+
+channelmode
+{
+ name = "BAN"
+ character = "b"
+ list = yes
+}
+
+channelmode
+{
+ name = "EXCEPT"
+ character = "e"
+ list = yes
+}
+
+channemode
+{
+ name = "INVITEOVERRIDE"
+ character = "I"
+ list = yes
+}
+
+channelmode
+{
+ name = "KEY"
+ character = "k"
+ param_regex = "[^:,]+"
+}
+
+channelmode
+{
+ name = "FLOOD"
+ character = "f"
+ param_regex = "\[(?:(?:(?<=\[)|,)\d+[ckmnt](?:#[CiKmNmMRb]\d*)?)+\]:\d+"
+}
+
+channelmode
+{
+ name = "REDIRECT"
+ character = "L"
+ param = yes
+}
+
+channelmode
+{
+ name = "LIMIT"
+ character = "l"
+ param_regex = "\d+"
+ param_unset = no
+}
+
+channelmode
+{
+ name = "DELAYEDJOIN"
+ character = "D"
+}
+
+channelmode
+{
+ name = "PRIVATE"
+ character = "p"
+}
+
+channelmode
+{
+ name = "SECRET"
+ character = "s"
+}
+
+channelmode
+{
+ name = "MODERATED"
+ character = "m"
+}
+
+channelmode
+{
+ name = "NOEXTERNAL"
+ character = "n"
+}
+
+channelmode
+{
+ name = "TOPIC"
+ character = "t"
+}
+
+channelmode
+{
+ name = "INVITE"
+ character = "i"
+}
+
+channelmode
+{
+ name = "REGISTERED"
+ character = "r"
+ setable = no
+}
+
+channelmode
+{
+ name = "REGISTEREDONLY"
+ character = "R"
+}
+
+channelmode
+{
+ name = "BLOCKCOLOR"
+ character = "c"
+}
+
+channelmode
+{
+ name = "OPERONLY"
+ character = "O"
+ oper_only = yes
+}
+
+channelmode
+{
+ name = "PERM"
+ character = "P"
+}
+
+channelmode
+{
+ name = "NOKICK"
+ character = "Q"
+}
+
+channelmode
+{
+ name = "NOKNOCK"
+ character = "K"
+}
+
+channelmode
+{
+ name = "NOINVITE"
+ character = "V"
+}
+
+channelmode
+{
+ name = "NOCTCP"
+ character = "C"
+}
+
+channelmode
+{
+ name = "SSL"
+ character = "z"
+}
+
+channelmode
+{
+ name = "NONICK"
+ character = "N"
+}
+
+channelmode
+{
+ name = "STRIPCOLOR"
+ character = "S"
+}
+
+channelmode
+{
+ name = "REGMODERATED"
+ character = "M"
+}
+
+channelmode
+{
+ name = "NONOTICE"
+ character = "T"
+}
+
+channelmode
+{
+ name = "CENSOR"
+ character = "G"
+}
+
+channelmode
+{
+ name = "SSL2"
+ character = "Z"
+ setable = no
+}
+
+extban
+{
+ name = "CHANNELBAN"
+ type = "channel"
+ character = "c"
+}
+
+extban
+{
+ name = "JOINBAN"
+ type = "entry"
+ character = "j"
+}
+
+extban
+{
+ name = "NONICKBAN"
+ type = "entry"
+ base = "BAN"
+ character = "n"
+}
+
+extban
+{
+ name = "QUIET"
+ type = "entry"
+ base = "BAN"
+ character = "q"
+}
+
+extban
+{
+ name = "REALNAMEBAN"
+ type = "realname"
+ base = "BAN"
+ character = "r"
+}
+
+extban
+{
+ name = "REGISTEREDBAN"
+ type = "registered"
+ base = "BAN"
+ character = "R"
+}
+
+extban
+{
+ name = "ACCOUNTBAN"
+ type = "account"
+ base = "BAN"
+ character = "a"
+}
+
+extban
+{
+ name = "SSLBAN"
+ type = "fingerprint"
+ base = "BAN"
+ character = "S"
+}
+