summaryrefslogtreecommitdiff
path: root/data
diff options
context:
space:
mode:
authorAdam <Adam@anope.org>2011-07-14 02:31:12 -0400
committerAdam <Adam@anope.org>2011-07-14 02:31:12 -0400
commitf858164deed48f2dcacd5ffc06a55398a54da7e8 (patch)
tree89c3cf36bd8e94942370135218d67d6d17ee222e /data
parent924f6849fee4598a1a3a7f1a98d96b79e5ffd3b4 (diff)
Rewrote how commands are handled within Anope.
This allows naming commands and having spaces within command names.
Diffstat (limited to 'data')
-rw-r--r--data/CMakeLists.txt2
-rw-r--r--data/commands.example.conf336
-rw-r--r--data/example.conf1868
-rw-r--r--data/modules.example.conf528
-rw-r--r--data/mysql/tables.sql21
5 files changed, 1414 insertions, 1341 deletions
diff --git a/data/CMakeLists.txt b/data/CMakeLists.txt
index 461ea287a..b0d99e11e 100644
--- a/data/CMakeLists.txt
+++ b/data/CMakeLists.txt
@@ -1,6 +1,6 @@
# 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 example.conf mysql/tables.sql)
+set(DATA example.chk commands.example.conf example.conf modules.example.conf mysql/tables.sql)
install(FILES ${DATA}
DESTINATION data
)
diff --git a/data/commands.example.conf b/data/commands.example.conf
new file mode 100644
index 000000000..a3481bc11
--- /dev/null
+++ b/data/commands.example.conf
@@ -0,0 +1,336 @@
+
+/*
+ * [RECOMMENDED] Core modules and command configuration
+ *
+ * In Anope modules can provide (multiple) commands, each of which has a unique command name. Once these modules
+ * are loaded you can then configure the commands to be added to any client you like with any name you like.
+ *
+ * Sane defaults are below.
+ */
+
+module { name = "help" }
+command { service = "BotServ"; name = "HELP"; command = "generic/help"; }
+command { service = "ChanServ"; name = "HELP"; command = "generic/help"; }
+command { service = "Global"; name = "HELP"; command = "generic/help"; }
+command { service = "HostServ"; name = "HELP"; command = "generic/help"; }
+command { service = "MemoServ"; name = "HELP"; command = "generic/help"; }
+command { service = "NickServ"; name = "HELP"; command = "generic/help"; }
+command { service = "OperServ"; name = "HELP"; command = "generic/help"; }
+
+module { name = "bs_assign" }
+command { service = "BotServ"; name = "ASSIGN"; command = "botserv/assign"; }
+command { service = "BotServ"; name = "UNASSIGN"; command = "botserv/unassign"; }
+module { name = "bs_badwords" }
+command { service = "BotServ"; name = "BADWORDS"; command = "botserv/badwords"; }
+module { name = "bs_bot" }
+command { service = "BotServ"; name = "BOT"; command = "botserv/bot"; }
+module { name = "bs_botlist" }
+command { service = "BotServ"; name = "BOTLIST"; command = "botserv/botlist"; }
+module { name = "bs_control" }
+command { service = "BotServ"; name = "ACT"; command = "botserv/act"; }
+command { service = "BotServ"; name = "SAY"; command = "botserv/say"; }
+module { name = "bs_info" }
+command { service = "BotServ"; name = "INFO"; command = "botserv/info"; }
+module { name = "bs_kick" }
+command { service = "BotServ"; name = "KICK"; command = "botserv/kick"; }
+module { name = "bs_set" }
+command { service = "BotServ"; name = "SET"; command = "botserv/set"; }
+
+module { name = "cs_access" }
+command { service = "ChanServ"; name = "ACCESS"; command = "chanserv/access"; }
+command { service = "ChanServ"; name = "LEVELS"; command = "chanserv/levels"; }
+module { name = "cs_akick" }
+command { service = "ChanServ"; name = "AKICK"; command = "chanserv/akick"; }
+module { name = "cs_ban" }
+command { service = "ChanServ"; name = "BAN"; command = "chanserv/ban"; }
+command { service = "ChanServ"; name = "KB"; command = "chanserv/ban"; }
+module { name = "cs_clearusers" }
+command { service = "ChanServ"; name = "CLEARUSERS"; command = "chanserv/clearusers"; }
+module { name = "cs_clone" }
+command { service = "ChanServ"; name = "CLONE"; command = "chanserv/clone"; }
+module { name = "cs_drop" }
+command { service = "ChanServ"; name = "DROP"; command = "chanserv/drop"; }
+module { name = "cs_getkey" }
+command { service = "ChanServ"; name = "GETKEY"; command = "chanserv/getkey"; }
+module { name = "cs_info" }
+command { service = "ChanServ"; name = "INFO"; command = "chanserv/info"; }
+module { name = "cs_invite" }
+command { service = "ChanServ"; name = "INVITE"; command = "chanserv/invite"; }
+module { name = "cs_kick" }
+command { service = "ChanServ"; name = "KICK"; command = "chanserv/kick"; }
+command { service = "ChanServ"; name = "K"; command = "chanserv/kick"; }
+module { name = "cs_list" }
+command { service = "ChanServ"; name = "LIST"; command = "chanserv/list"; }
+module { name = "cs_mode" }
+command { service = "ChanServ"; name = "MODE"; command = "chanserv/mode"; }
+module { name = "cs_modes" }
+command { service = "ChanServ"; name = "OP"; command = "chanserv/op"; }
+command { service = "ChanServ"; name = "DEOP"; command = "chanserv/deop"; }
+command { service = "ChanServ"; name = "HALFOP"; command = "chanserv/halfop"; }
+command { service = "ChanServ"; name = "DEHALFOP"; command = "chanserv/dehalfop"; }
+command { service = "ChanServ"; name = "VOICE"; command = "chanserv/voice"; }
+command { service = "ChanServ"; name = "DEVOICE"; command = "chanserv/devoice"; }
+command { service = "ChanServ"; name = "PROTECT"; command = "chanserv/protect"; }
+command { service = "ChanServ"; name = "DEPROTECT"; command = "chanserv/deprotect"; }
+command { service = "ChanServ"; name = "OWNER"; command = "chanserv/owner"; }
+command { service = "ChanServ"; name = "DEOWNER"; command = "chanserv/deowner"; }
+module { name = "cs_register" }
+command { service = "ChanServ"; name = "REGISTER"; command = "chanserv/register"; }
+module { name = "cs_set" }
+command { service = "ChanServ"; name = "SET"; command = "chanserv/set"; }
+module { name = "cs_saset" }
+command { service = "ChanServ"; name = "SASET"; command = "chanserv/saset"; }
+module { name = "cs_set_bantype" }
+command { service = "ChanServ"; name = "SET BANTYPE"; command = "chanserv/set/bantype"; }
+command { service = "ChanServ"; name = "SASET BANTYPE"; command = "chanserv/saset/bantype"; }
+module { name = "cs_set_description" }
+command { service = "ChanServ"; name = "SET DESCRIPTION"; command = "chanserv/set/description"; }
+command { service = "ChanServ"; name = "SASET DESCRIPTION"; command = "chanserv/saset/description"; }
+module { name = "cs_set_founder" }
+command { service = "ChanServ"; name = "SET FOUNDER"; command = "chanserv/set/founder"; }
+command { service = "ChanServ"; name = "SASET FOUNDER"; command = "chanserv/saset/founder"; }
+module { name = "cs_set_keeptopic" }
+command { service = "ChanServ"; name = "SET KEEPTOPIC"; command = "chanserv/set/keeptopic"; }
+command { service = "ChanServ"; name = "SASET KEEPTOPIC"; command = "chanserv/saset/keeptopic"; }
+module { name = "cs_set_opnotice" }
+command { service = "ChanServ"; name = "SET OPNOTICE"; command = "chanserv/set/opnotice"; }
+command { service = "ChanServ"; name = "SASET OPNOTICE"; command = "chanserv/saset/opnotice"; }
+module { name = "cs_set_peace" }
+command { service = "ChanServ"; name = "SET PEACE"; command = "chanserv/set/peace"; }
+command { service = "ChanServ"; name = "SASET PEACE"; command = "chanserv/saset/peace"; }
+module { name = "cs_set_persist" }
+command { service = "ChanServ"; name = "SET PERSIST"; command = "chanserv/set/persist"; }
+command { service = "ChanServ"; name = "SASET PERSIST"; command = "chanserv/saset/persist"; }
+module { name = "cs_set_private" }
+command { service = "ChanServ"; name = "SET PRIVATE"; command = "chanserv/set/private"; }
+command { service = "ChanServ"; name = "SASET PRIVATE"; command = "chanserv/saset/private"; }
+module { name = "cs_set_restricted" }
+command { service = "ChanServ"; name = "SET RESITRCTED"; command = "chanserv/set/restricted"; }
+command { service = "ChanServ"; name = "SASET RESITRCTED"; command = "chanserv/saset/restricted"; }
+module { name = "cs_set_secure" }
+command { service = "ChanServ"; name = "SET SECURE"; command = "chanserv/set/secure"; }
+command { service = "ChanServ"; name = "SASET SECURE"; command = "chanserv/saset/secure"; }
+module { name = "cs_set_securefounder" }
+command { service = "ChanServ"; name = "SET SECUREFOUNDER"; command = "chanserv/set/securefounder"; }
+command { service = "ChanServ"; name = "SASET SECUREFOUNDER"; command = "chanserv/saset/securefounder"; }
+module { name = "cs_set_secureops" }
+command { service = "ChanServ"; name = "SET SECUREOPS"; command = "chanserv/set/secureops"; }
+command { service = "ChanServ"; name = "SASET SECUREOPS"; command = "chanserv/saset/secureops"; }
+module { name = "cs_set_signkick" }
+command { service = "ChanServ"; name = "SET SIGNKICK"; command = "chanserv/set/signkick"; }
+command { service = "ChanServ"; name = "SASET SIGNKICK"; command = "chanserv/saset/signkick"; }
+module { name = "cs_set_successor" }
+command { service = "ChanServ"; name = "SET SUCCESSOR"; command = "chanserv/set/successor"; }
+command { service = "ChanServ"; name = "SASET SUCCESSOR"; command = "chanserv/saset/successor"; }
+module { name = "cs_set_topiclock" }
+command { service = "ChanServ"; name = "SET TOPICLOCK"; command = "chanserv/set/topiclock"; }
+command { service = "ChanServ"; name = "SASET TOPICLOCK"; command = "chanserv/saset/topiclock"; }
+module { name = "cs_set_xop" }
+command { service = "ChanServ"; name = "SET XOP"; command = "chanserv/set/xop"; }
+command { service = "ChanServ"; name = "SASET XOP"; command = "chanserv/saset/xop"; }
+module { name = "cs_saset_noexpire" }
+command { service = "ChanServ"; name = "SET NOEXPIRE"; command = "chanserv/set/noexpire"; }
+module { name = "cs_status" }
+command { service = "ChanServ"; name = "STATUS"; command = "chanserv/status"; }
+module { name = "cs_suspend" }
+command { service = "ChanServ"; name = "SUSPEND"; command = "chanserv/suspend"; }
+command { service = "ChanServ"; name = "UNSUSPEND"; command = "chanserv/unsuspend"; }
+module { name = "cs_topic" }
+command { service = "ChanServ"; name = "TOPIC"; command = "chanserv/topic"; }
+module { name = "cs_unban" }
+command { service = "ChanServ"; name = "UNBAN"; command = "chanserv/unban"; }
+module { name = "cs_xop" }
+command { service = "ChanServ"; name = "QOP"; command = "chanserv/qop"; }
+command { service = "ChanServ"; name = "SOP"; command = "chanserv/sop"; }
+command { service = "ChanServ"; name = "AOP"; command = "chanserv/aop"; }
+command { service = "ChanServ"; name = "HOP"; command = "chanserv/hop"; }
+command { service = "ChanServ"; name = "VOP"; command = "chanserv/vop"; }
+
+module { name = "gl_global" }
+command { service = "Global"; name = "GLOBAL"; command = "global/global"; }
+
+module { name = "hs_del" }
+command { service = "HostServ"; name = "DEL"; command = "hostserv/del"; }
+command { service = "HostServ"; name = "DELALL"; command = "hostserv/delall"; }
+module { name = "hs_group" }
+command { service = "HostServ"; name = "GROUP"; command = "hostserv/group"; }
+module { name = "hs_list" }
+command { service = "HostServ"; name = "LIST"; command = "hostserv/list"; }
+module { name = "hs_off" }
+command { service = "HostServ"; name = "OFF"; command = "hostserv/off"; }
+module { name = "hs_on" }
+command { service = "HostServ"; name = "ON"; command = "hostserv/on"; }
+module { name = "hs_set" }
+command { service = "HostServ"; name = "SET"; command = "hostserv/set"; }
+command { service = "HostServ"; name = "SETALL"; command = "hostserv/setall"; }
+
+module { name = "ms_cancel" }
+command { service = "MemoServ"; name = "CANCEL"; command = "memoserv/cancel"; }
+module { name = "ms_check" }
+command { service = "MemoServ"; name = "CHECK"; command = "memoserv/check"; }
+module { name = "ms_del" }
+command { service = "MemoServ"; name = "DEL"; command = "memoserv/del"; }
+module { name = "ms_ignore" }
+command { service = "MemoServ"; name = "IGNORE"; command = "memoserv/ignore"; }
+module { name = "ms_info" }
+command { service = "MemoServ"; name = "INFO"; command = "memoserv/info"; }
+module { name = "ms_list" }
+command { service = "MemoServ"; name = "LIST"; command = "memoserv/list"; }
+module { name = "ms_read" }
+command { service = "MemoServ"; name = "READ"; command = "memoserv/read"; }
+module { name = "ms_rsend" }
+command { service = "MemoServ"; name = "RSEND"; command = "memoserv/rsend"; }
+module { name = "ms_send" }
+command { service = "MemoServ"; name = "SEND"; command = "memoserv/send"; }
+module { name = "ms_sendall" }
+command { service = "MemoServ"; name = "SENDALL"; command = "memoserv/sendall"; }
+module { name = "ms_set" }
+command { service = "MemoServ"; name = "SET"; command = "memoserv/set"; }
+module { name = "ms_staff" }
+command { service = "MemoServ"; name = "STAFF"; command = "memoserv/staff"; }
+
+module { name = "ns_access" }
+command { service = "NickServ"; name = "ACCESS"; command = "nickserv/access"; }
+module { name = "ns_ajoin" }
+command { service = "NickServ"; name = "AJOIN"; command = "nickserv/ajoin"; }
+module { name = "ns_alist" }
+command { service = "NickServ"; name = "ALIST"; command = "nickserv/alist"; }
+module { name = "ns_cert" }
+command { service = "NickServ"; name = "CERT"; command = "nickserv/cert"; }
+module { name = "ns_drop" }
+command { service = "NickServ"; name = "DROP"; command = "nickserv/drop"; }
+module { name = "ns_getemail" }
+command { service = "NickServ"; name = "GETEMAIL"; command = "nickserv/getemail"; }
+module { name = "ns_getpass" }
+command { service = "NickServ"; name = "GETPASS"; command = "nickserv/getpass"; }
+module { name = "ns_ghost" }
+command { service = "NickServ"; name = "GHOST"; command = "nickserv/ghost"; }
+module { name = "ns_group" }
+command { service = "NickServ"; name = "GLIST"; command = "nickserv/glist"; }
+command { service = "NickServ"; name = "GROUP"; command = "nickserv/group"; }
+command { service = "NickServ"; name = "UNGROUP"; command = "nickserv/ungroup"; }
+module { name = "ns_identify" }
+command { service = "NickServ"; name = "IDENTIFY"; command = "nickserv/identify"; }
+module { name = "ns_info" }
+command { service = "NickServ"; name = "INFO"; command = "nickserv/info"; }
+module { name = "ns_list" }
+command { service = "NickServ"; name = "LIST"; command = "nickserv/list"; }
+module { name = "ns_logout" }
+command { service = "NickServ"; name = "LOGOUT"; command = "nickserv/logout"; }
+module { name = "ns_recover" }
+command { service = "NickServ"; name = "RECOVER"; command = "nickserv/recover"; }
+module { name = "ns_register" }
+command { service = "NickServ"; name = "CONFIRM"; command = "nickserv/confirm"; }
+command { service = "NickServ"; name = "REGISTER"; command = "nickserv/register"; }
+command { service = "NickServ"; name = "RESEND"; command = "nickserv/resend"; }
+module { name = "ns_release" }
+command { service = "NickServ"; name = "RELEASE"; command = "nickserv/release"; }
+module { name = "ns_resetpass" }
+command { service = "NickServ"; name = "RESETPASS"; command = "nickserv/resetpass"; }
+module { name = "ns_saset" }
+command { service = "NickServ"; name = "SASET"; command = "nickserv/saset"; }
+command { service = "NickServ"; name = "SASET DISPLAY"; command = "nickserv/saset/display"; }
+command { service = "NickServ"; name = "SASET PASSWORD"; command = "nickserv/saset/password"; }
+module { name = "ns_set" }
+command { service = "NickServ"; name = "SET"; command = "nickserv/set"; }
+command { service = "NickServ"; name = "SET DISPLAY"; command = "nickserv/set/display"; }
+command { service = "NickServ"; name = "SET PASSWORD"; command = "nickserv/set/password"; }
+module { name = "ns_set_autoop" }
+command { service = "NickServ"; name = "SET AUTOOP"; command = "nickserv/set/autoop"; }
+command { service = "NickServ"; name = "SASET AUTOOP"; command = "nickserv/saset/autoop"; }
+module { name = "ns_set_email" }
+command { service = "NickServ"; name = "SET EMAIL"; command = "nickserv/set/email"; }
+command { service = "NickServ"; name = "SASET EMAIL"; command = "nickserv/saset/email"; }
+module { name = "ns_set_greet" }
+command { service = "NickServ"; name = "SET GREET"; command = "nickserv/set/greet"; }
+command { service = "NickServ"; name = "SASET GREET"; command = "nickserv/saset/greet"; }
+module { name = "ns_set_hide" }
+command { service = "NickServ"; name = "SET HIDE"; command = "nickserv/set/hide"; }
+command { service = "NickServ"; name = "SASET HIDE"; command = "nickserv/saset/hide"; }
+module { name = "ns_set_kill" }
+command { service = "NickServ"; name = "SET KILL"; command = "nickserv/set/kill"; }
+command { service = "NickServ"; name = "SASET KILL"; command = "nickserv/saset/kill"; }
+module { name = "ns_set_language" }
+command { service = "NickServ"; name = "SET LANGUAGE"; command = "nickserv/set/language"; }
+command { service = "NickServ"; name = "SASET LANGUAGE"; command = "nickserv/saset/language"; }
+module { name = "ns_set_message" }
+command { service = "NickServ"; name = "SET MESSAGE"; command = "nickserv/set/message"; }
+command { service = "NickServ"; name = "SASET MESSAGE"; command = "nickserv/saset/message"; }
+module { name = "ns_set_private" }
+command { service = "NickServ"; name = "SET PRIVATE"; command = "nickserv/set/private"; }
+command { service = "NickServ"; name = "SASET PRIVATE"; command = "nickserv/set/private"; }
+module { name = "ns_set_secure" }
+command { service = "NickServ"; name = "SET SECURE"; command = "nickserv/set/secure"; }
+command { service = "NickServ"; name = "SASET SECURE"; command = "nickserv/set/secure"; }
+module { name = "ns_saset_noexpire" }
+command { service = "NickServ"; name = "SASET NOEXPIRE"; command = "nickserv/saset/noexpire"; }
+module { name = "ns_sendpass" }
+command { service = "NickServ"; name = "SENDPASS"; command = "nickserv/sendpass"; }
+module { name = "ns_status" }
+command { service = "NickServ"; name = "STATUS"; command = "nickserv/status"; }
+module { name = "ns_suspend" }
+command { service = "NickServ"; name = "SUSPEND"; command = "nickserv/suspend"; }
+command { service = "NickServ"; name = "UNSUSPEND"; command = "nickserv/unsuspend"; }
+module { name = "ns_update" }
+command { service = "NickServ"; name = "UPDATE"; command = "nickserv/update"; }
+
+module { name = "os_akill" }
+command { service = "OperServ"; name = "AKILL"; command = "operserv/akill"; }
+module { name = "os_chankill" }
+command { service = "OperServ"; name = "CHANKILL"; command = "operserv/chankill"; }
+module { name = "os_list" }
+command { service = "OperServ"; name = "CHANLIST"; command = "operserv/chanlist"; }
+command { service = "OperServ"; name = "USERLIST"; command = "operserv/userlist"; }
+module { name = "os_config" }
+command { service = "OperServ"; name = "CONFIG"; command = "operserv/config"; }
+module { name = "os_forbid" }
+command { service = "OperServ"; name = "FORBID"; command = "operserv/forbid"; }
+module { name = "os_ignore" }
+command { service = "OperServ"; name = "IGNORE"; command = "operserv/ignore"; }
+module { name = "os_jupe" }
+command { service = "OperServ"; name = "JUPE"; command = "operserv/jupe"; }
+module { name = "os_kick" }
+command { service = "OperServ"; name = "KICK"; command = "operserv/kick"; }
+module { name = "os_login" }
+command { service = "OperServ"; name = "LOGIN"; command = "operserv/login"; }
+module { name = "os_mode" }
+command { service = "OperServ"; name = "MODE"; command = "operserv/mode"; }
+module { name = "os_modinfo" }
+command { service = "OperServ"; name = "MODINFO"; command = "operserv/modinfo"; }
+command { service = "OperServ"; name = "MODLIST"; command = "operserv/modlist"; }
+module { name = "os_module" }
+command { service = "OperServ"; name = "MODLOAD"; command = "operserv/modload"; }
+command { service = "OperServ"; name = "MODRELOAD"; command = "operserv/modreload"; }
+command { service = "OperServ"; name = "MODUNLOAD"; command = "operserv/modunload"; }
+module { name = "os_news" }
+command { service = "OperServ"; name = "LOGONNEWS"; command = "operserv/logonnews"; }
+command { service = "OperServ"; name = "OPERNEWS"; command = "operserv/opernews"; }
+command { service = "OperServ"; name = "RANDOMNEWS"; command = "operserv/randomnews"; }
+module { name = "os_noop" }
+command { service = "OperServ"; name = "NOOP"; command = "operserv/noop"; }
+module { name = "os_oline" }
+command { service = "OperServ"; name = "OLINE"; command = "operserv/oline"; }
+module { name = "os_oper" }
+command { service = "OperServ"; name = "OPER"; command = "operserv/oper"; }
+module { name = "os_reload" }
+command { service = "OperServ"; name = "RELOAD"; command = "operserv/reload"; }
+module { name = "os_session" }
+command { service = "OperServ"; name = "EXCEPTION"; command = "operserv/exception"; }
+command { service = "OperServ"; name = "SESSION"; command = "operserv/session"; }
+module { name = "os_set" }
+command { service = "OperServ"; name = "SET"; command = "operserv/set"; }
+module { name = "os_shutdown" }
+command { service = "OperServ"; name = "QUIT"; command = "operserv/quit"; }
+command { service = "OperServ"; name = "RESTART"; command = "operserv/restart"; }
+command { service = "OperServ"; name = "SHUTDOWN"; command = "operserv/shutdown"; }
+module { name = "os_stats" }
+command { service = "OperServ"; name = "STATS"; command = "operserv/stats"; }
+module { name = "os_svsnick" }
+command { service = "OperServ"; name = "SVSNICK"; command = "operserv/svsnick"; }
+module { name = "os_sxline" }
+command { service = "OperServ"; name = "SNLINE"; command = "operserv/snline"; }
+command { service = "OperServ"; name = "SQLINE"; command = "operserv/sqline"; }
+command { service = "OperServ"; name = "SZLINE"; command = "operserv/szline"; }
+module { name = "os_update" }
+command { service = "OperServ"; name = "UPDATE"; command = "operserv/update"; }
+
diff --git a/data/example.conf b/data/example.conf
index 8e5e49c92..754cfe598 100644
--- a/data/example.conf
+++ b/data/example.conf
@@ -157,12 +157,6 @@ serverinfo
#id = "00A"
/*
- * These identify the ident@hostname which will be used by the Services pesudoclients.
- */
- ident = "services"
- hostname = "localhost.net"
-
- /*
* The filename containing the Services process ID. The path is relative to the
* services executable. If not given, defaults to "services.pid".
*/
@@ -469,598 +463,167 @@ options
}
/*
- * [RECOMMENDED] Logging Configuration
+ * [RECOMMENDED] Service client 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!
+ * Defines some of the core services. Commands are later added to these services.
*/
-log
-{
- /*
- * Target(s) to log to, which may be one of the following:
- * - a channel name
- * - a filename
- * - globops
- */
- target = "services.log"
- /* Log to both services.log and the channel #services */
- #target = "services.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 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
-
- /*
- * Enable to have the core services clients join and stay in the log channel(s) when logging.
- * Note: on some IRCds this is not optional, and is enforced on.
- */
- inhabitlogchannel = yes
+service
+{
/*
- * What types of log messages should be logged by this block. There are nine general categories:
- *
- * admin - Execution of admin commands (OperServ, etc).
- * override - A services operator using their powers to execute a command they couldn't normally.
- * commands - Execution of general commands.
- * 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 admin, override, and command options are:
- * pesudo-serv/commandname (eg, operserv/akill, chanserv/set)
- *
- * Valid server options are:
- * connect, quit, sync
- *
- * Valid channel options are:
- * create, destroy, join, part, kick, leave, mode
- *
- * Valid user options are:
- * connect, disconnect, quit, nick, ident, host, mode, maxusers
- *
- * 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.
+ * The nick, user name, host, and real name of the service.
*/
- admin = "operserv/*"
- override = "chanserv/* nickserv/* memoserv/set botserv/* ~botserv/set"
- commands = "~operserv/* *"
- servers = "*"
- #channels = "~mode *"
- users = "connect disconnect nick"
- other = "*"
- rawio = no
- debug = no
+ nick = "BotServ"
+ user = "services"
+ host = "localhost.net"
+ gecos = "Bot Service"
}
-/*
- * A log block to globops some useful things.
- */
-log
+service
{
- target = "globops"
- admin = "global/* operserv/mode operserv/kick opeserv/akill operserv/s*line operserv/noop operserv/jupe */forbid nickserv/getpass */drop"
-}
-
-/*
- * [RECOMMENDED] Oper Access Config
- *
- * This section is used to set up staff access to restricted oper only commands.
- * You may define groups of commands and privileges, as well as who may use them.
- *
- * This block is recommended, as without it you will be unable to access most oper commands.
- * It replaces the old ServicesRoot directive amongst others.
- *
- * Note that third party modules may add additional commands and privileges to this list.
- *
- * Available privileges:
- * botserv/administration - Can perform certain BotServ administrative tasks
- * chanserv/access/modify - Can modify channel access and akick lists
- * chanserv/auspex - Can see any information with /chanserv info
- * chanserv/no-register-limit - May register an unlimited number of channels and nicknames
- * chanserv/set - Can modify the settings of any channel (incl. changing of the owner and password!)
- * memoserv/info - Can see any information with /memoserv info
- * memoserv/set-limit - Can set the limit of max stored memos on any user and channel
- * memoserv/no-limit - Can send memos through limits and throttles
- * nickserv/auspex - Can see any information with /nickserv info
- * nickserv/confirm - Can confirm other users nicknames
- * nickserv/drop - Can drop other users nicks
- *
- * Available commands:
- * botserv/bot/del botserv/bot/add botserv/bot/change botserv/assign/private
- * botserv/botlist botserv/set/private botserv/set/nobot
- *
- * chanserv/access/list chanserv/drop chanserv/forbid chanserv/getkey
- * chanserv/list chanserv/suspend chanserv/topic chanserv/status
- * chanserv/mode
- *
- * chanserv/saset/bantype chanserv/saset/description chanserv/saset/email chanserv/saset/entrymsg
- * chanserv/saset/founder chanserv/saset/keeptopic chanserv/saset/opnotice chanserv/saset/restricted
- * chanserv/saset/peace chanserv/saset/persist chanserv/saset/private
- * chanserv/saset/secure chanserv/saset/securefounder chanserv/saset/secureops
- * chanserv/saset/signkick chanserv/saset/successor chanserv/saset/topiclock
- * chanserv/saset/url chanserv/saset/xop
- *
- * memoserv/sendall memoserv/staff
- *
- * nickserv/getpass nickserv/sendpass nickserv/getemail nickserv/suspend
- * nickserv/resetpass
- *
- * nickserv/saset/autoop nickserv/saset/email nickserv/saset/greet
- * nickserv/saset/icq nickserv/saset/kill nickserv/saset/language nickserv/saset/message
- * nickserv/saset/private nickserv/saset/secure nickserv/saset/url nickserv/saset/noexpire
- *
- * hostserv/set hostserv/del
- *
- * global/global
- *
- * operserv/news operserv/stats operserv/kick
- * operserv/mode operserv/session operserv/modlist operserv/ignore
- * operserv/chankill operserv/akill operserv/sqline operserv/snline
- * operserv/szline operserv/staff operserv/config
- * operserv/modload operserv/jupe operserv/set operserv/noop
- * operserv/quit operserv/update operserv/reload operserv/restart
- * operserv/shutdown operserv/svsnick operserv/oline
- *
- * Firstly, we define 'opertypes' which are named whatever we want ('Network Administrator', etc).
- * These can contain commands for oper-only strings (see above) which grants access to that specific command,
- * and privileges (which grant access to more general permissions for the named area).
- * Wildcard entries are permitted for both, e.g. 'commands = "operserv/*"' for all OperServ commands.
- *
- * Below are some default example types, but this is by no means exhaustive,
- * and it is recommended that you configure them to your needs.
- */
-
-opertype
-{
- /* The name of this opertype */
- name = "Helper"
-
- /* What commands (see above) this opertype has */
- commands = "hostserv/*"
-}
-
-opertype
-{
- /* The name of this opertype */
- name = "Services Operator"
-
- /* What opertype(s) this inherits from. Seperate with a comma. */
- inherits = "Helper, Another Helper"
-
- /* What commands (see above) this opertype may use */
- commands = "chanserv/list chanserv/suspend chanserv/status chanserv/topic memoserv/staff nickserv/sendpass nickserv/resetpass nickserv/suspend operserv/mode operserv/chankill operserv/szline operserv/akill operserv/session operserv/modlist operserv/sqline operserv/staff operserv/kick operserv/ignore operserv/snline"
-
- /* What privs (see above) this opertype has */
- privs = "chanserv/auspex chanserv/no-register-limit memoserv/* nickserv/auxpex nickserv/confirm"
-}
-
-opertype
-{
- name = "Services Administrator"
-
- inherits = "Services Operator"
-
- commands = "chanserv/access/list chanserv/drop chanserv/forbid chanserv/getkey chanserv/set/noexpire memoserv/sendall nickserv/saset/* nickserv/getemail operserv/news operserv/jupe operserv/svsnick operserv/stats operserv/oline operserv/noop global/*"
-
- privs = "*"
+ nick = "ChanServ"
+ user = "services"
+ host = "localhost.net"
+ gecos = "Channel Registration Service"
}
-opertype
+service
{
- name = "Services Root"
-
- commands = "*"
-
- privs = "*"
-}
-
-/*
- * 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).
- * 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.
- */
-
-oper
-{
- /* The nickname of this services oper */
- #name = "nick1"
-
- /* The opertype this person will have */
- type = "Services Root"
-
- /* An optional password. If defined the user must login using /operserv login first */
- #password = "secret"
-
- /* An optional SSL fingerprint. If defined is required to use this opertype. */
- #certfp = "ed3383b3f7d74e89433ddaa4a6e5b2d7"
+ nick = "Global"
+ user = "services"
+ host = "localhost.net"
+ gecos = "Global Noticer"
}
-/*
-oper
+service
{
- name = "nick2"
- type = "Services Administrator"
+ nick = "HostServ"
+ user = "services"
+ host = "localhost.net"
+ gecos = "vHost Service"
}
-oper
+service
{
- name = "nick3"
- type = "Helper"
+ nick = "MemoServ"
+ user = "services"
+ host = "localhost.net"
+ gecos = "Memo Service"
}
-*/
-/*
- * [OPTIONAL] Mail Config
- *
- * 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.
- */
-mail
+service
{
- /*
- * If set, this option enables the mail commands in Services. 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 the
- * nickserv:emailregistration is set to yes.
- */
- usemail = yes
-
- /*
- * This is the command-line that will be used to call the mailer to send an
- * e-mail. It must be called with all the parameters needed to make it
- * scan the mail input to find the mail recipient; consult your mailer
- * documentation.
- *
- * Postfix users must use the compatible sendmail utility provided with
- * it. This one usually needs no parameters on the command-line. Most
- * sendmail applications (or replacements of it) require the -t option
- * to be used.
- */
- sendmailpath = "/usr/sbin/sendmail -t"
-
- /*
- * This is the e-mail address from which all the e-mails are to be sent from.
- * It should really exist.
- */
- sendfrom = "services@localhost.net"
-
- /*
- * If set, SENDPASS and RESETPASS will be restricted to IRC operators.
- * This directive is optional.
- *
- * WARNING: If you choose to not enable this option, you should limit the
- * number of processes that the services user can have at a time (you can
- * create a special user for this; remember to NEVER launch Services as
- * root).
- */
- restrict = yes
-
- /*
- * This controls the minimum amount of time a user must wait before sending
- * 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
- * it is highly recommended that it be used.
- *
- * This directive is optional, but highly recommended.
- */
- delay = 5m
-
- /*
- * If set, Services will not attempt to put quotes around the TO: fields
- * in e-mails.
- *
- * This directive is optional, and as far as we know, it's only needed
- * if you are using ESMTP or QMail to send out e-mails.
- */
- #dontquoteaddresses = yes
+ nick = "NickServ"
+ user = "services"
+ host = "localhost.net"
+ gecos = "Nickname Registration Service"
}
-/*
- * [OPTIONAL] DNS Config
- *
- * This section is used to configure DNS.
- * At this time DNS is only used by a few modules (m_dnsbl)
- * and is not required by the core to function.
- */
-dns
+service
{
- /*
- * The nameserver to use for resolving hostnames, must be an IP or a resolver configuration file.
- * The below should work fine on all unix like systems. Windows users will have to find their nameservers
- * from ipconfig /all and put the IP here
- */
- nameserver = "/etc/resolv.conf"
- #nameserver = "127.0.0.1"
-
- /*
- * How long to wait in seconds before a DNS query has timed out
- */
- timeout = 5
+ nick = "OperServ"
+ user = "services"
+ host = "localhost.net"
+ gecos = "Operator Service"
}
/*
- * [RECOMMENDED] NickServ
- *
- * Comment the following line to disable NickServ.
+ * [RECOMMENDED] Core clients
*/
-module { name = "ns_main" }
-/*
- * [REQUIRED] NickServ Config
- *
- * This section is used to set up the Nickname Registration Service pseudo-client.
- * Unless specified otherwise, all directives are required.
- */
-nickserv
+module { name = "bs_main" }
+botserv
{
/*
- * The nickname of the NickServ client.
- */
- nick = "NickServ"
-
- /*
- * The description of the NickServ client, which will be used as the GECOS
- * (real name) of the client.
+ * The name of the client that should be BotServ.
+ * Clients are configured above.
*/
- description = "Nickname Registration Service"
-
- /*
- * The core modules to load for NickServ. This is a space separated list that corresponds
- * to the base names of the modules for NickServ.
- *
- * This directive is optional, but highly recommended.
- */
- modules = "ns_help ns_register ns_group ns_identify ns_access ns_cert ns_set ns_saset ns_set_autoop ns_set_email ns_set_greet ns_set_hide ns_set_kill ns_set_language ns_set_message ns_set_private ns_set_secure ns_saset_noexpire ns_drop ns_recover ns_release ns_sendpass ns_ghost ns_alist ns_info ns_list ns_logout ns_status ns_update ns_getpass ns_getemail ns_suspend ns_resetpass ns_ajoin"
-
- /*
- * Force users to give an e-mail address when they register a nick.
- *
- * This directive is recommended to be enabled, and required if e-mail registration is enabled.
- */
- forceemail = yes
-
- /*
- * Require users who change their email address to confirm they
- * own it.
- */
- confirmemailchanges = no
-
- /*
- * Require an e-mail to be sent to the user before they can register their nick.
- */
- #emailregistration = yes
+ nick = "BotServ"
/*
- * The default options for newly registered nicks. Note that changing these options
- * will have no effect on nicks which are already registered. The list must be separated
+ * The default bot options for newly registered channels. Note that changing these options
+ * will have no effect on channels which are already registered. The list must be separated
* by spaces.
*
* The options are:
- * - kill: Kill nick if not identified within 60 seconds
- * - killquick: Kill nick if not identified within 20 seconds, this one overrides the above
- * option and the above must be specified with this one
- * - secure: Enable nickname security, requiring the nick's password before any operations
- * can be done on it
- * - private: Hide the nick from NickServ's LIST command
- * - hideemail: Hide's the nick's e-mail address from NickServ's INFO command
- * - hideusermask: Hide's the nick's last or current user@host from NickServ's INFO command
- * - hidequit: Hide's the nick's last quit message
- * - memosignon: Notify user if they have a new memo when they sign into the nick
- * - memoreceive: Notify user if they have a new memo as soon as it's received
- * - autoop: User will be automatically opped in channels they enter and have access to
- * - msg: Services messages will be sent as PRIVMSGs instead of NOTICEs, requires UsePrivmsg
- * to be enabled as well
- *
- * This directive is optional, if left blank, the options will default to secure, memosignon, and
- * memoreceive. If you really want no defaults, use "none" by itself as the option.
- */
- defaults="secure private hideemail hideusermask memosignon memoreceive autoop"
-
- /*
- * A list of languages to load on startup that will be available in /nickserv set language.
- * Useful if you translate Anope to your language. (Explained further in docs/LANGUAGE).
- * Note that english should not be listed here because it is the base language.
- */
- languages = "ca_ES de_DE el_GR es_ES fr_FR hu_HU it_IT nl_NL pl_PL pt_PT ru_RU tr_TR"
-
- /*
- * Default language that non- and newly-registered nicks will receive messages in.
- * Leave empty to default to English.
- */
- #defaultlanguage = "es_ES"
-
- /*
- * The minimum length of time between consecutive uses of NickServ's REGISTER command. This
- * directive is optional, but recommended. If not set, this restriction will be disabled.
- */
- regdelay = 30s
-
- /*
- * The minimum length of time between consecutive uses of NickServ's RESEND command.
- *
- * This directive is optional, but recommended. If not set, this restriction will be disabled.
- */
- resenddelay = 90s
-
- /*
- * The length of time before a nick registration expires.
- *
- * This directive is optional, but recommended. If not set, the default is 21 days.
- */
- expire = 21d
-
- /*
- * The length of time before a suspended nick becomes unsuspended.
- *
- * This directive is optional. If not set, the default is to never.
- */
- #suspendexpire = 90d
-
- /*
- * The length of time a user using an unconfirmed account has
- * before the account will be released for general use again.
- *
- * This directive is only required if the e-mail registration option is enabled.
- */
- #unconfirmedexpire = 1d
-
- /*
- * The maximum number of nicks allowed in a group.
+ * - dontkickops: Channel operators will be protected against BotServ kicks
+ * - dontkickvoices: Voiced users will be protected against BotServ kicks
+ * - greet: The channel's BotServ bot will greet incoming users that have set a greet
+ * in their NickServ settings
+ * - fantasy: Enables the use of BotServ fantasy commands in the channel
*
- * This directive is optional, but recommended. If not set or set to 0, no limits will be applied.
+ * This directive is optional, if left blank, there will be no defaults.
*/
- maxaliases = 16
+ defaults="greet fantasy"
/*
- * The maximum number of entries allowed on a nickname's access list.
+ * The minimum number of users there must be in a channel before the bot joins it. The best
+ * value for this setting is 1 or 2. This can be 0, the service bots will not part unless
+ * specifically unassigned, and will keep the channel open.
*/
- accessmax = 32
+ minusers = 1
/*
- * The username (and possibly hostname) used for the fake user created when NickServ collides
- * a user. Should be in the user@host format. If the host is not given, the one from ServicesUser
- * is used.
+ * The maximum number of entries a single bad words list can have. Setting it too high can
+ * reduce performance slightly.
*/
- enforceruser = "enforcer"
- #enforceruser = "enforcer@localhost.net"
+ badwordsmax = 32
/*
- * The delay before a NickServ collided nick is released.
+ * The amount of time that data for a user is valid in BotServ. If the data exceeds this time,
+ * it is reset or deleted depending on the case. Do not set it too high, otherwise your
+ * resources will be slightly affected.
*/
- releasetimeout = 1m
+ keepdata = 10m
/*
- * Allow the use of the IMMED option in the NickServ SET KILL command.
+ * The bots are currently not affected by any modes or bans when they try to join a channel.
+ * But some people may want to make it act like a real bot, that is, for example, remove all
+ * the bans affecting the bot before joining the channel, remove a ban that affects the bot
+ * set by a user when it is in the channel, and so on. Since it consumes a bit more CPU
+ * time, you should not enable this on larger networks.
*
* This directive is optional.
*/
- #allowkillimmed = yes
-
- /*
- * If set, the NickServ GROUP command won't allow any group change. This is recommended for
- * better performance and to protect against nick stealing, however users will have less
- * flexibility.
- *
- * This directive is optional, but recommended.
- */
- #nogroupchange = yes
+ #smartjoin = yes
/*
- * Limits the use of the NickServ LIST command to IRC operators.
+ * If set, the bots will use a kick reason that does not state the word when it is kicking.
+ * This is especially useful if you have young people on your network.
*
* This directive is optional.
*/
- #listopersonly = yes
-
- /*
- * The maximum number of nicks to be returned for a NickServ LIST command.
- */
- listmax = 50
-
- /*
- * When a user's nick is forcibly changed to enforce a "nick kill", their new nick will start
- * with this value. The rest will be made up of 6 or 7 digits.
- */
- guestnickprefix = "Guest"
-
- /*
- * Prevents the use of the DROP, FORBID, GETPASS, and SET PASSWORD commands by Services Admins
- * on other Services Admins or the Services Root(s).
- *
- * This directive is optional, but recommended.
- */
- secureadmins = yes
-
- /*
- * If set, any user wanting to use the privileges of Services Root, Services Admin, or Services
- * Operator must have been logged as an IRC Operator with the /oper command.
- *
- * This directive is optional, but recommended.
- */
- strictprivileges = yes
+ gentlebadwordreason = yes
/*
- * If set, Services will set the channel modes a user has access to upon identifying, assuming
- * they are not already set.
+ * If set, BotServ will use case sensitive checking for badwords.
*
* This directive is optional.
*/
- modeonid = yes
-
- /*
- * If set, Services will add the usermask of registering users to the access list of their
- * newly created account. If not set, users will always have to identify to NickServ before
- * being recognized, unless they manually add an address to the access list of their account.
- * This directive is optional.
- */
- addaccessonreg = yes
+ #casesensitive = yes
/*
- * The maximum number of channels a user can have on NickServ's AJOIN command.
+ * Defines the prefix for fantasy commands in channels. This character will have to be prepended
+ * to all fantasy commands. If you choose "!", for example, fantasy commands will be "!kick",
+ * "!op", etc. This directive is optional, if left out, the default fantasy character is "!".
*/
- ajoinmax = 10
+ #fantasycharacter = "!"
}
/*
- * [RECOMMENDED] ChanServ
+ * [RECOMMENDED] Core ChanServ module.
*
- * Comment the following line to disable ChanServ.
+ * Provides essential functionality for ChanServ
*/
module { name = "cs_main" }
-/*
- * [RECOMMENDED] ChanServ Config
- *
- * This section is used to set up the Channel Registration Service pseudo-client.
- * Unless specified otherwise, all directives are required if you wish to use ChanServ.
- */
chanserv
{
/*
- * The nickname of the ChanServ client.
+ * The name of the client that should be ChanServ. Clients are configured
+ * with the service blocks.
*/
- nick = "ChanServ"
-
- /*
- * The description of the ChanServ client, which will be used as the GECOS
- * (real name) of the client.
- */
- description = "Channel Registration Service"
-
- /*
- * The core modules to load for ChanServ. This is a space separated list that corresponds
- * to the base names of the modules for ChanServ.
- *
- * This directive is optional, but highly recommended.
- */
- modules = "cs_help cs_register cs_set cs_saset cs_saset_noexpire cs_set_bantype cs_set_description cs_set_founder cs_set_keeptopic cs_set_opnotice cs_set_peace cs_set_persist cs_set_private cs_set_restricted cs_set_secure cs_set_securefounder cs_set_secureops cs_set_signkick cs_set_successor cs_set_topiclock cs_set_xop cs_xop cs_access cs_akick cs_drop cs_ban cs_clearusers cs_modes cs_getkey cs_invite cs_kick cs_list cs_topic cs_info cs_suspend cs_status cs_unban cs_clone cs_mode"
+ name = "ChanServ"
/*
* The default options for newly registered channels. Note that changing these options
@@ -1177,38 +740,63 @@ chanserv
#opersonly = yes
}
-/*
- * [OPTIONAL] MemoServ
- *
- * Comment the following line to disable MemoServ.
- */
-module { name = "ms_main" }
-
-/* [OPTIONAL] MemoServ configuration
- *
- * This section is used to set up the Memo Service pseudo-client. This is only required if ms_main
- * is being loaded.
- */
-memoserv
+module { name = "gl_main" }
+global
{
/*
- * The nickname of the MemoServ client.
+ * The name of the client that should be Global. Clients are configured
+ * with the service blocks.
*/
- nick = "MemoServ"
+ name = "Global"
/*
- * The description of the MemoServ client, which will be used as the GECOS
- * (real name) of the client.
+ * If set, Services will send global messages on starting up and shutting
+ * down/restarting.
+ *
+ * This directive is optional.
*/
- description = "Memo Service"
+ #globaloncycle = yes
/*
- * The core modules to load for MemoServ. This is a space separated list that corresponds
- * to the base names of the modules for MemoServ.
- *
- * This directive is optional, but highly recommended.
+ * This is the global message that will be sent when Services are being
+ * shutdown/restarted. This directive is only required if you enable
+ * globaloncycle above.
+ */
+ globaloncycledown = "Services are restarting, they will be back shortly - please be good while we're gone"
+
+ /*
+ * This is the global message that will be sent when Services (re)join the
+ * network. This directive is only required if you enable globaloncycle above.
+ */
+ globaloncycleup = "Services are now back online - have a nice day"
+
+ /*
+ * If set, Services will hide the IRC operator's nick in a global
+ * message/notice.
+ *
+ * This directive is optional.
+ */
+ #anonymousglobal = yes
+}
+
+module { name = "hs_main" }
+hostserv
+{
+ /*
+ * The name of the client that should be HostServ. Clients are configured
+ * with the service blocks.
+ */
+ name = "HostServ"
+}
+
+module { name = "ms_main" }
+memoserv
+{
+ /*
+ * The name of the client that should be MemoServ. Clients are configured
+ * with the service blocks.
*/
- modules = "ms_send ms_cancel ms_list ms_read ms_del ms_set ms_info ms_rsend ms_check ms_staff ms_sendall ms_ignore ms_help"
+ name = "MemoServ"
/*
* The maximum number of memos a user is allowed to keep by default. Normal users may set the
@@ -1241,180 +829,211 @@ memoserv
#memoreceipt = 1
}
-/*
- * [OPTIONAL] BotServ
- *
- * Comment the following line to disable BotServ.
- */
-module { name = "bs_main" }
-
-/* [OPTIONAL] BotServ configuration
- *
- * This section is used to set up the Bot Service pseudo-client. This is only required if ms_main
- * is being loaded.
- */
-botserv
+module { name = "ns_main" }
+nickserv
{
/*
- * The nickname of the BotServ client.
+ * The name of the client that should be NickServ. Clients are configured
+ * with the service blocks.
*/
- nick = "BotServ"
+ name = "NickServ"
/*
- * The description of the BotServ client, which will be used as the GECOS
- * (real name) of the client.
+ * Force users to give an e-mail address when they register a nick.
+ *
+ * This directive is recommended to be enabled, and required if e-mail registration is enabled.
*/
- description = "Bot Service"
+ forceemail = yes
/*
- * The core modules to load for BotServ. This is a space separated list that corresponds
- * to the base names of the modules for BotServ.
- *
- * This directive is optional, but highly recommended.
+ * Require users who change their email address to confirm they
+ * own it.
*/
- modules = "bs_help bs_botlist bs_assign bs_set bs_kick bs_badwords bs_act bs_info bs_say bs_unassign bs_bot"
+ confirmemailchanges = no
/*
- * The default bot options for newly registered channels. Note that changing these options
- * will have no effect on channels which are already registered. The list must be separated
+ * Require an e-mail to be sent to the user before they can register their nick.
+ */
+ #emailregistration = yes
+
+ /*
+ * The default options for newly registered nicks. Note that changing these options
+ * will have no effect on nicks which are already registered. The list must be separated
* by spaces.
*
* The options are:
- * - dontkickops: Channel operators will be protected against BotServ kicks
- * - dontkickvoices: Voiced users will be protected against BotServ kicks
- * - greet: The channel's BotServ bot will greet incoming users that have set a greet
- * in their NickServ settings
- * - fantasy: Enables the use of BotServ fantasy commands in the channel
- * - symbiosis: Causes the BotServ bot to do all actions that would normally have been
- * done by ChanServ
+ * - kill: Kill nick if not identified within 60 seconds
+ * - killquick: Kill nick if not identified within 20 seconds, this one overrides the above
+ * option and the above must be specified with this one
+ * - secure: Enable nickname security, requiring the nick's password before any operations
+ * can be done on it
+ * - private: Hide the nick from NickServ's LIST command
+ * - hideemail: Hide's the nick's e-mail address from NickServ's INFO command
+ * - hideusermask: Hide's the nick's last or current user@host from NickServ's INFO command
+ * - hidequit: Hide's the nick's last quit message
+ * - memosignon: Notify user if they have a new memo when they sign into the nick
+ * - memoreceive: Notify user if they have a new memo as soon as it's received
+ * - autoop: User will be automatically opped in channels they enter and have access to
+ * - msg: Services messages will be sent as PRIVMSGs instead of NOTICEs, requires UsePrivmsg
+ * to be enabled as well
*
- * This directive is optional, if left blank, there will be no defaults.
+ * This directive is optional, if left blank, the options will default to secure, memosignon, and
+ * memoreceive. If you really want no defaults, use "none" by itself as the option.
*/
- defaults="greet fantasy symbiosis"
+ defaults="secure private hideemail hideusermask memosignon memoreceive autoop"
/*
- * The minimum number of users there must be in a channel before the bot joins it. The best
- * value for this setting is 1 or 2. This can be 0, the service bots will not part unless
- * specifically unassigned, and will keep the channel open.
+ * A list of languages to load on startup that will be available in /nickserv set language.
+ * Useful if you translate Anope to your language. (Explained further in docs/LANGUAGE).
+ * Note that english should not be listed here because it is the base language.
*/
- minusers = 1
+ languages = "ca_ES de_DE el_GR es_ES fr_FR hu_HU it_IT nl_NL pl_PL pt_PT ru_RU tr_TR"
/*
- * The maximum number of entries a single bad words list can have. Setting it too high can
- * reduce performance slightly.
+ * Default language that non- and newly-registered nicks will receive messages in.
+ * Leave empty to default to English.
*/
- badwordsmax = 32
+ #defaultlanguage = "es_ES"
/*
- * The amount of time that data for a user is valid in BotServ. If the data exceeds this time,
- * it is reset or deleted depending on the case. Do not set it too high, otherwise your
- * resources will be slightly affected.
+ * The minimum length of time between consecutive uses of NickServ's REGISTER command. This
+ * directive is optional, but recommended. If not set, this restriction will be disabled.
*/
- keepdata = 10m
+ regdelay = 30s
/*
- * The bots are currently not affected by any modes or bans when they try to join a channel.
- * But some people may want to make it act like a real bot, that is, for example, remove all
- * the bans affecting the bot before joining the channel, remove a ban that affects the bot
- * set by a user when it is in the channel, and so on. Since it consumes a bit more CPU
- * time, you should not enable this on larger networks.
+ * The minimum length of time between consecutive uses of NickServ's RESEND command.
*
- * This directive is optional.
+ * This directive is optional, but recommended. If not set, this restriction will be disabled.
*/
- #smartjoin = yes
+ resenddelay = 90s
/*
- * If set, the bots will use a kick reason that does not state the word when it is kicking.
- * This is especially useful if you have young people on your network.
+ * The length of time before a nick registration expires.
*
- * This directive is optional.
+ * This directive is optional, but recommended. If not set, the default is 21 days.
*/
- gentlebadwordreason = yes
+ expire = 21d
/*
- * If set, BotServ will use case sensitive checking for badwords.
+ * The length of time before a suspended nick becomes unsuspended.
*
- * This directive is optional.
+ * This directive is optional. If not set, the default is to never.
*/
- #casesensitive = yes
+ #suspendexpire = 90d
/*
- * Defines the prefix for fantasy commands in channels. This character will have to be prepended
- * to all fantasy commands. If you choose "!", for example, fantasy commands will be "!kick",
- * "!op", etc. This directive is optional, if left out, the default fantasy character is "!".
+ * The length of time a user using an unconfirmed account has
+ * before the account will be released for general use again.
+ *
+ * This directive is only required if the e-mail registration option is enabled.
*/
- #fantasycharacter = "!"
-}
+ #unconfirmedexpire = 1d
-/*
- * [OPTIONAL] HostServ
- *
- * Comment the following line to disable HostServ.
- */
-module { name = "hs_main" }
+ /*
+ * The maximum number of nicks allowed in a group.
+ *
+ * This directive is optional, but recommended. If not set or set to 0, no limits will be applied.
+ */
+ maxaliases = 16
-/*
- * [OPTIONAL] HostServ Config
- *
- * This section is used to set up the vHost Service pseudo-client.
- *
- * Unless specified otherwise, all directives are required if you do wish to use HostServ.
- */
-hostserv
-{
/*
- * The nickname of the HostServ client.
+ * The maximum number of entries allowed on a nickname's access list.
*/
- nick = "HostServ"
+ accessmax = 32
/*
- * The description of the HostServ client, which will be used as the GECOS
- * (real name) of the client.
+ * The username (and possibly hostname) used for the fake user created when NickServ collides
+ * a user. Should be in the user@host format.
*/
- description = "vHost Service"
+ enforceruser = "enforcer"
+ enforcerhost = "localhost.net"
/*
- * The core modules to load for HostServ. This is a space separated list that corresponds
- * to the base names of the modules for HostServ.
+ * The delay before a NickServ collided nick is released.
+ */
+ releasetimeout = 1m
+
+ /*
+ * Allow the use of the IMMED option in the NickServ SET KILL command.
*
- * This directive is optional, but highly recommended.
+ * This directive is optional.
*/
- modules = "hs_help hs_on hs_off hs_group hs_list hs_set hs_setall hs_del hs_delall"
-}
+ #allowkillimmed = yes
-/*
- * [RECOMMENDED] OperServ
- *
- * Comment the following line to disable OperServ.
- */
-module { name = "os_main" }
+ /*
+ * If set, the NickServ GROUP command won't allow any group change. This is recommended for
+ * better performance and to protect against nick stealing, however users will have less
+ * flexibility.
+ *
+ * This directive is optional, but recommended.
+ */
+ #nogroupchange = yes
-/*
- * [RECOMMENDED] OperServ Config
- *
- * This section is used to set up the Operator Service pseudo-client. Unless specified otherwise,
- * all directives are required if you wish to use OperServ.
- */
-operserv
-{
/*
- * The nickname of the OperServ client.
+ * Limits the use of the NickServ LIST command to IRC operators.
+ *
+ * This directive is optional.
*/
- nick = "OperServ"
+ #listopersonly = yes
/*
- * The description of the OperServ client, which will be used as the GECOS
- * (real name) of the client.
+ * The maximum number of nicks to be returned for a NickServ LIST command.
*/
- description = "Operator Service"
+ listmax = 50
/*
- * The core modules to load for OperServ. This is a space separated list that corresponds
- * to the base names of the modules for OperServ.
+ * When a user's nick is forcibly changed to enforce a "nick kill", their new nick will start
+ * with this value. The rest will be made up of 6 or 7 digits.
+ */
+ guestnickprefix = "Guest"
+
+ /*
+ * Prevents the use of the DROP, FORBID, GETPASS, and SET PASSWORD commands by Services Admins
+ * on other Services Admins or the Services Root(s).
*
- * This directive is optional, but highly recommended.
+ * This directive is optional, but recommended.
+ */
+ secureadmins = yes
+
+ /*
+ * If set, any user wanting to use the privileges of Services Root, Services Admin, or Services
+ * Operator must have been logged as an IRC Operator with the /oper command.
+ *
+ * This directive is optional, but recommended.
+ */
+ strictprivileges = yes
+
+ /*
+ * If set, Services will set the channel modes a user has access to upon identifying, assuming
+ * they are not already set.
+ *
+ * This directive is optional.
*/
- modules = "os_help os_stats os_oper os_mode os_kick os_akill os_snline os_sqline os_szline os_chanlist os_userlist os_news os_session os_noop os_jupe os_ignore os_set os_reload os_update os_restart os_quit os_shutdown os_chankill os_svsnick os_oline os_modload os_modunload os_modreload os_modlist os_modinfo os_config os_login os_forbid"
+ modeonid = yes
+
+ /*
+ * If set, Services will add the usermask of registering users to the access list of their
+ * newly created account. If not set, users will always have to identify to NickServ before
+ * being recognized, unless they manually add an address to the access list of their account.
+ * This directive is optional.
+ */
+ addaccessonreg = yes
+
+ /*
+ * The maximum number of channels a user can have on NickServ's AJOIN command.
+ */
+ ajoinmax = 10
+}
+
+module { name = "os_main" }
+operserv
+{
+ /*
+ * The name of the client that should be OperServ. Clients are configured
+ * with the service blocks.
+ */
+ name = "OperServ"
/*
* If set, Services Admins will be able to use SUPERADMIN [ON|OFF] which will temporarily grant
@@ -1567,806 +1186,415 @@ operserv
}
/*
- * [RECOMMENDED] Global
- *
- * Comment the following line to disable Global.
- */
-module { name = "gl_main" }
-
-/*
- * [RECOMMENDED] Global Config
- *
- * This section is used to set up the Global pseudo-client. Unless specified otherwise,
- * all directives are required if you wish to use Global.
+ * [RECOMMENDED] Logging Configuration
*
- * Globals two main functions are for sending globals and for logging miscellaneous data to
- * the log channel(s). If disabled, many logs will NOT be sent to the log channel(s).
+ * 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!
*/
-global
+log
{
/*
- * The nickname of the Global client.
- */
- nick = "Global"
-
- /*
- * The description of the Global client, which will be used as the GECOS
- * (real name) of the client.
+ * Target(s) to log to, which may be one of the following:
+ * - a channel name
+ * - a filename
+ * - globops
*/
- description = "Global Noticer"
+ target = "services.log"
+ /* Log to both services.log and the channel #services */
+ #target = "services.log #services"
/*
- * The core modules to load for OperServ. This is a space separated list that corresponds
- * to the base names of the modules for OperServ.
- *
- * This directive is optional, but highly recommended.
+ * 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.
*/
- modules = "gl_help gl_global"
+ #source = ""
/*
- * If set, Services will send global messages on starting up and shutting
- * down/restarting.
+ * The number of days to keep logfiles, only useful if you are logging to a file.
+ * Set to 0 to never delete old logfiles.
*
- * This directive is optional.
- */
- #globaloncycle = yes
-
- /*
- * This is the global message that will be sent when Services are being
- * shutdown/restarted. This directive is only required if you enable
- * globaloncycle above.
+ * Note that Anope must run 24 hours a day for this feature to work correctly.
*/
- globaloncycledown = "Services are restarting, they will be back shortly - please be good while we're gone"
+ logage = 7
/*
- * This is the global message that will be sent when Services (re)join the
- * network. This directive is only required if you enable globaloncycle above.
+ * Enable to have the core services clients join and stay in the log channel(s) when logging.
+ * Note: on some IRCds this is not optional, and is enforced on.
*/
- globaloncycleup = "Services are now back online - have a nice day"
+ inhabitlogchannel = yes
/*
- * If set, Services will hide the IRC operator's nick in a global
- * message/notice.
+ * What types of log messages should be logged by this block. There are nine general categories:
*
- * This directive is optional.
- */
- #anonymousglobal = yes
-}
-
-/*
- * [OPTIONAL] DefCon Config
- *
- * This section is used to set up the DefCon system of OperServ. The block is optional and can be
- * removed if you wish to disable DefCon in it's entirety. Unless specified otherwise, all directives
- * are required if you do wish to use DefCon.
- */
-defcon
-{
- /*
- * Default DefCon level (1-5) to use when starting Services up. Level 5 constitutes normal operation
- * while level 1 constitutes the most restrictive operation. If this setting is left out or set to
- * 0, DefCon will be disabled and the rest of this block will be ignored.
- */
- #defaultlevel = 5
-
- /*
- * The following 4 directives define what operations will take place when DefCon is set to levels
- * 1 through 4. Each level is a list that must be separated by spaces.
+ * admin - Execution of admin commands (OperServ, etc).
+ * override - A services operator using their powers to execute a command they couldn't normally.
+ * commands - Execution of general commands.
+ * 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).
*
- * The following operations can be defined at each level:
- * - nonewchannels: Disables registering new channels
- * - nonewnicks: Disables registering new nicks
- * - nomlockchanges: Disables changing MLOCK on registered channels
- * - forcechanmodes: Forces all channels to have the modes given in the later chanmodes directive
- * - reducedsessions: Reduces the session limit to the value given in the later sessionlimit directive
- * - nonewclients: KILL any new clients trying to connect
- * - operonly: Services will ignore all non-IRCops
- * - silentoperonly: Services will silently ignore all non-IRCops
- * - akillnewclients: AKILL any new clients trying to connect
- * - nonewmemos: No new memos will be sent to block MemoServ attacks
- */
- level4 = "nonewchannels nonewnicks nomlockchanges reducedsessions"
- level3 = "nonewchannels nonewnicks nomlockchanges forcechanmodes reducedsessions"
- level2 = "nonewchannels nonewnicks nomlockchanges forcechanmodes reducedsessions silentoperonly"
- level1 = "nonewchannels nonewnicks nomlockchanges forcechanmodes reducedsessions silentoperonly akillnewclients"
-
- /*
- * New session limit to use when a DefCon level is using "reduced" session limiting.
- */
- #sessionlimit = 2
-
- /*
- * Length of time to add an AKILL for when DefCon is preventing new clients from connecting to the
- * network.
- */
- #akillexpire = 5m
-
- /*
- * The channel modes to set on all channels when the DefCon channel mode system is in use.
+ * 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.
*
- * Note 1: Choose these modes carefully, because when DefCon switches to a level which does NOT have
- * the mode setting selected, Services will set the reverse on all channels, e.g. if this setting
- * is +RN when DefCon is used, all channels will be set to +RN, when DefCon is removed, all
- * channels will be set to -RN. You don't want to set this to +k for example, because when DefCon
- * is removed all channels with -k.
+ * Valid admin, override, and command options are:
+ * pesudo-serv/commandname (eg, operserv/akill, chanserv/set)
*
- * Note 2: MLOCKed modes will not be lost.
- */
- #chanmodes = "+R"
-
- /*
- * This value can be used to automatically return the network to DefCon level 5 after the specified
- * time period, just in case any IRC Operator forgets to remove a DefCon setting.
+ * Valid server options are:
+ * connect, quit, sync
*
- * This directive is optional.
- */
- #timeout = 15m
-
- /*
- * If set, Services will send a global message on DefCon level changes.
+ * Valid channel options are:
+ * create, destroy, join, part, kick, leave, mode
*
- * This directive is optional.
- */
- #globalondefcon = yes
-
- /*
- * Defines a message that will be sent on DefCon level changes.
+ * Valid user options are:
+ * connect, disconnect, quit, nick, ident, host, mode, maxusers
*
- * This directive is optional.
- */
- #message = "Put your message to send your users here. Dont forget to uncomment globalondefconmore"
-
- /*
- * Defines the message that will be sent when DefCon is returned to level 5. This directive is optional,
- * and will also override globalondefcon and globalondefconmore when set.
- */
- #offmessage = "Services are now back to normal, sorry for any inconvenience"
-
- /*
- * Defines the reason to use when clients are KILLed or AKILLed from the network while the proper
- * DefCon operation is in effect.
+ * 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.
*/
- #akillreason = "This network is currently not accepting connections, please try again later"
+ admin = "operserv/*"
+ override = "chanserv/* nickserv/* memoserv/set botserv/* ~botserv/set"
+ commands = "~operserv/* *"
+ servers = "*"
+ #channels = "~mode *"
+ users = "connect disconnect nick"
+ other = "*"
+ rawio = no
+ debug = no
}
/*
- * [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.
+ * A log block to globops some useful things.
*/
-
-/*
-include
-{
- type = "file"
- name = "some_other.conf"
-}
-include
+log
{
- type = "executable"
- name = "/usr/bin/wget -q -O - http://some.miconfigured.network.com/services.conf"
+ target = "globops"
+ admin = "global/* operserv/mode operserv/kick opeserv/akill operserv/s*line operserv/noop operserv/jupe */forbid nickserv/getpass */drop"
}
-*/
/*
- * [OPTIONAL] Non-Core Modules
+ * [RECOMMENDED] Oper Access Config
*
- * The following blocks are used to load all non-core modules, including 3rd-party modules.
- * Modules can be prevented from loading by commenting out the line, other modules can be added by
- * adding a module block. These modules will be loaded prior to Services connecting to your network.
- */
-
-/*
- * cs_appendtopic
+ * This section is used to set up staff access to restricted oper only commands.
+ * You may define groups of commands and privileges, as well as who may use them.
*
- * Adds the APPENDTOPIC command to ChanServ, which allows users to easially append text to
- * the end of existing channel topics.
- */
-module { name = "cs_appendtopic" }
-
-/*
- * cs_enforce
+ * This block is recommended, as without it you will be unable to access most oper commands.
+ * It replaces the old ServicesRoot directive amongst others.
*
- * Adds the ENFORCE commad to ChanServ, which allows enforcing various channel settings like
- * SECUREOPS and RESTRICTED.
- */
-module { name = "cs_enforce" }
-
-/*
- * cs_entrymsg
+ * Note that third party modules may add additional commands and privileges to this list.
*
- * Allows you to set entry messages on your channel, which are shown to anyone
- * who joins.
- */
-module { name = "cs_entrymsg" }
-cs_entrymsg
-{
- /* The maximum number of entrymsgs allowed per channel. If not set, defaults to 5. */
- maxentries = 5
-}
-
-/*
- * cs_set_misc
+ * Available privileges:
+ * botserv/administration - Can perform certain BotServ administrative tasks
+ * chanserv/access/modify - Can modify channel access and akick lists
+ * chanserv/auspex - Can see any information with /chanserv info
+ * chanserv/no-register-limit - May register an unlimited number of channels and nicknames
+ * chanserv/set - Can modify the settings of any channel (incl. changing of the owner and password!)
+ * memoserv/info - Can see any information with /memoserv info
+ * memoserv/set-limit - Can set the limit of max stored memos on any user and channel
+ * memoserv/no-limit - Can send memos through limits and throttles
+ * nickserv/auspex - Can see any information with /nickserv info
+ * nickserv/confirm - Can confirm other users nicknames
+ * nickserv/drop - Can drop other users nicks
*
- * Allows you to create misc /chanserv set commands, and have the data
- * show up in /chanserv info
- */
-module { name = "cs_set_misc" }
-cs_set_misc
-{
- /* The name of the command */
- name = "OINFO"
- /* A short description of the command */
- desc = "Associate oper only information to this channel"
- /* Set to yes if only opers and privileged users can set it and see it */
- privileged = yes
-}
-cs_set_misc
-{
- name = "URL"
- desc = "Associate a URL with the channel"
-}
-cs_set_misc
-{
- name = "EMAIL"
- desc = "Associate an EMail with the channel"
-}
-
-/*
- * db_plain
+ * Available commands:
+ * botserv/bot/del botserv/bot/add botserv/bot/change botserv/assign/private
+ * botserv/botlist botserv/set/private botserv/set/nobot
*
- * This is the default flatfile database format. You must have at least one database
- * module loaded or Anope will not save databases!
- */
-module { name = "db_plain" }
-db_plain
-{
- /*
- * The database db_plain should use
- */
- database = "anope.db"
-}
-
-/*
- * db_mysql and db_mysql_live
+ * chanserv/access/list chanserv/drop chanserv/forbid chanserv/getkey
+ * chanserv/list chanserv/suspend chanserv/topic chanserv/status
+ * chanserv/mode
*
- * Enables (live) MySQL support.
+ * chanserv/saset/bantype chanserv/saset/description chanserv/saset/email chanserv/saset/entrymsg
+ * chanserv/saset/founder chanserv/saset/keeptopic chanserv/saset/opnotice chanserv/saset/restricted
+ * chanserv/saset/peace chanserv/saset/persist chanserv/saset/private
+ * chanserv/saset/secure chanserv/saset/securefounder chanserv/saset/secureops
+ * chanserv/saset/signkick chanserv/saset/successor chanserv/saset/topiclock
+ * chanserv/saset/url chanserv/saset/xop
*
- * The db_mysql_live module is an extension to db_mysql, and should only be used if
- * db_mysql is being used. This module pulls data in real time from SQL as it is
- * requested by the core as a result of someone executing commands.
+ * memoserv/sendall memoserv/staff
*
- * This effectively allows you to edit your database and have it be immediately
- * reflected back in Anope.
+ * nickserv/getpass nickserv/sendpass nickserv/getemail nickserv/suspend
+ * nickserv/resetpass
*
- * For information on how to make db_mysql_live use asynchronous queries see
- * m_async_commands.
+ * nickserv/saset/autoop nickserv/saset/email nickserv/saset/greet
+ * nickserv/saset/icq nickserv/saset/kill nickserv/saset/language nickserv/saset/message
+ * nickserv/saset/private nickserv/saset/secure nickserv/saset/url nickserv/saset/noexpire
*
- * At this time db_mysql_live only supports pulling data in real time from the three
- * main tables: anope_cs_info, anope_ns_alias, and anope_ns_core.
- */
-#module { name = "db_mysql" }
-#module { name = "db_mysql_live" }
-
-/*
- * The encryption modules are used when dealing with passwords. This determines how
- * the passwords are stored in the databases, and does not add any security as
- * far as transmitting passwords over the network goes.
- *
- * Without any encryption modules, passwords will be stored in plain text, allowing
- * for passwords to be recovered later but isn't secure therefore is not recommended.
- *
- * The other encryption modules use one-way encryption, so the passwords can not
- * be recovered later if those are used.
+ * hostserv/set hostserv/del
*
- * NOTE: enc_old is Anope's previous (broken) MD5 implementation, if your databases
- * were made using that module, continue to use it and do not use enc_md5.
+ * global/global
*
- * 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.
+ * operserv/news operserv/stats operserv/kick
+ * operserv/mode operserv/session operserv/modlist operserv/ignore
+ * operserv/chankill operserv/akill operserv/sqline operserv/snline
+ * operserv/szline operserv/staff operserv/config
+ * operserv/modload operserv/jupe operserv/set operserv/noop
+ * operserv/quit operserv/update operserv/reload operserv/restart
+ * operserv/shutdown operserv/svsnick operserv/oline
*
- * The first encryption module loaded is the primary encryption module. All new passwords are
- * encrypted by this module. Old passwords stored in another encryption method are
- * automatically re-encrypted by the primary encryption module on next identify.
- */
-module { name = "enc_md5" }
-#module { name = "enc_sha1" }
-#module { name = "enc_sha256" }
-
-/*
- * When using enc_none, passwords will be stored without encryption in plain
- * text, allowing for passwords to be recovered later. This isn't secure therefore
- * is not recommended.
- */
-#module { name = "enc_none" }
-
-/*
- * enc_old is Anope's previous (broken) MD5 implementation, if your databases
- * were made using that module, load it here to allow conversion to the primary
- * encryption method.
- */
-#module { name = "enc_old" }
-
-/*
- * hs_request
+ * Firstly, we define 'opertypes' which are named whatever we want ('Network Administrator', etc).
+ * These can contain commands for oper-only strings (see above) which grants access to that specific command,
+ * and privileges (which grant access to more general permissions for the named area).
+ * Wildcard entries are permitted for both, e.g. 'commands = "operserv/*"' for all OperServ commands.
*
- * Allows users to request vhosts which opers may then view, accept or deny
+ * Below are some default example types, but this is by no means exhaustive,
+ * and it is recommended that you configure them to your needs.
*/
-module { name = "hs_request" }
-hs_request
+
+opertype
{
- /*
- * If set, Services will send a memo to the user requesting a vHost when it's been
- * approved or rejected.
- */
- #memouser = yes
+ /* The name of this opertype */
+ name = "Helper"
- /*
- * If set, Services will send a memo to all Services staff when a new vHost is requested.
- */
- #memooper = yes
+ /* What commands (see above) this opertype has */
+ commands = "hostserv/*"
}
-/*
- * m_alias
- *
- * Allows you to create custom command aliases.
- */
-module { name = "m_alias" }
-alias
+opertype
{
- /* Set to yes to make this alias triggerable by fantasy commands. */
- fantasy = no
- /* Set to yes to make this alias oper only */
- operonly = no
- /* Set to yes to hide this command from HELP */
- #hide = yes
+ /* The name of this opertype */
+ name = "Services Operator"
- /* Source client and command.
- */
- source_client = "NickServ"
- source_command = "ID"
+ /* What opertype(s) this inherits from. Seperate with a comma. */
+ inherits = "Helper, Another Helper"
- /* Target client and command.
- */
- target_client = "NickServ"
- target_command = "IDENTIFY"
+ /* What commands (see above) this opertype may use */
+ commands = "chanserv/list chanserv/suspend chanserv/status chanserv/topic memoserv/staff nickserv/sendpass nickserv/resetpass nickserv/suspend operserv/mode operserv/chankill operserv/szline operserv/akill operserv/session operserv/modlist operserv/sqline operserv/staff operserv/kick operserv/ignore operserv/snline"
+
+ /* What privs (see above) this opertype has */
+ privs = "chanserv/auspex chanserv/no-register-limit memoserv/* nickserv/auxpex nickserv/confirm"
}
-/* Adds the /chanserv alist command which becomes rewritten to /chanserv access #channel list"
-alias
+
+opertype
{
- hide = yes
+ name = "Services Administrator"
- source_client = "ChanServ"
- source_command = "ALIST"
+ inherits = "Services Operator"
- target_client = "ChanServ"
- target_command = "ACCESS"
- target_rewrite = "$0 LIST"
-}
-/* Provides the !k fantasy command */
-alias
-{
- fantasy = yes
- source_command = "K"
+ commands = "chanserv/access/list chanserv/drop chanserv/forbid chanserv/getkey chanserv/set/noexpire memoserv/sendall nickserv/saset/* nickserv/getemail operserv/news operserv/jupe operserv/svsnick operserv/stats operserv/oline operserv/noop global/*"
- target_client = "ChanServ"
- target_command = "KICK"
-
+ privs = "*"
}
-/* Provides the !kb fantasy command */
-alias
+
+opertype
{
- fantasy = yes
- source_command = "KB"
+ name = "Services Root"
- target_client = "ChanServ"
- target_command = "BAN"
+ commands = "*"
+
+ privs = "*"
}
/*
- * m_async_commands
- *
- * Threads for each command executed by users. You should
- * only load this if you are using a module designed to work with this.
+ * 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.
*
- * If this is loaded with db_mysql_live then Anope will support
- * processing multiple commands at once which will negate the "lag"
- * issues caused from the overhead of SQL queries by db_mysql_live.
+ * The default is to comment these out (so NOBODY will have Services access).
+ * You probably want to add yourself and a few other people at minimum.
*
- * Note that this module is currently EXPERIMENTAL and you should report
- * any bugs you find.
+ * As with all permissions, make sure to only give trustworthy people access to Services.
*/
-#module { name = "m_async_commands" }
-/* m_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
- * to prevent bot attacks.
- */
-module { name = "m_dnsbl" }
-m_dnsbl
+oper
{
- /*
- * If set, Services will check clients against the DNSBLs when services connect to its uplink.
- * This is not recommended, and on large networks will open a very large amount of DNS queries.
- * Whilst services are not drastically affected by this, your nameserver/DNSBL might care.
- */
- check_on_connect = no
+ /* The nickname of this services oper */
+ #name = "nick1"
- /*
- * If set, Services will check clients when coming back from a netsplit. This can cause a large number
- * of DNS queries open at once. Whilst services are not drastically affected by this, your nameserver/DNSBL
- * might care.
- */
- check_on_netburst = no
+ /* The opertype this person will have */
+ type = "Services Root"
- /*
- * If set, OperServ will add clients found in the DNSBL 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 fill up by bots.
- */
- add_to_akill = yes
-}
-blacklist
-{
- /* Name of the blacklist */
- name = "rbl.efnetrbl.org"
-
- /* How long to set the ban for */
- time = 4h
-
- /* Reason for akill.
- * %n is the nick of the user
- * %u is the ident/username of the user
- * %g is the realname of the user
- * %h is the hostname of the user
- * %i is the IP of the user
- * %r is the reason (configured below). Will be nothing if not configured.
- * %N is the network name set in networkinfo:networkname
- */
- reason = "You are listed in the efnet RBL, visit http://rbl.efnetrbl.org/?i=%i for info"
-
- /* Replies to ban and their reason. If this is totally ommited all replies get banned */
- 1 = "Open Proxy"
- /* Don't ban for result 2 or 3 */
- #2 = "spamtrap666"
- #3 = "spamtrap50"
- 4 = "TOR"
- 5 = "Drones / Flooding"
-}
-blacklist
-{
- name = "dnsbl.dronebl.org"
- time = 4h
- reason = "You have a host listed in the DroneBL. For more information, visit http://dronebl.org/lookup_branded.do?ip=%i&network=%N"
+ /* An optional password. If defined the user must login using /operserv login first */
+ #password = "secret"
+
+ /* An optional SSL fingerprint. If defined is required to use this opertype. */
+ #certfp = "ed3383b3f7d74e89433ddaa4a6e5b2d7"
}
-/* m_helpchan
- *
- * Gives users who are op in the specified help channel usermode +h (helpop).
- */
-#module { name = "m_helpchan" }
-m_helpchan
+/*
+oper
{
- helpchannel = "#help"
+ name = "nick2"
+ type = "Services Administrator"
}
-/*
- * m_ldap
- *
- * This module allows other modules to use LDAP. By itself, this module does nothing useful.
- */
-#module { name = "m_ldap" }
-ldap
+oper
{
- server = "ldap://127.0.0.1"
- port = 389
- admin_binddn = "cn=Manager,dc=anope,dc=org"
- admin_password = "secret"
+ name = "nick3"
+ type = "Helper"
}
+*/
/*
- * m_ldap_authentication
+ * [OPTIONAL] Mail Config
*
- * This module allows many commands such as IDENTIFY, RELEASE, RECOVER, GHOST, etc. use
- * LDAP to authenticate users. Requires m_ldap.
-*/
-#module { name = "m_ldap_authentication" }
-m_ldap_authentication
+ * 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.
+ */
+mail
{
/*
- * The distinguished name we should bind to when a user tries to identify.
+ * If set, this option enables the mail commands in Services. 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 the
+ * nickserv:emailregistration is set to yes.
*/
- binddn = "ou=users,dc=anope,dc=org"
+ usemail = yes
/*
- * The object class used by LDAP to store user account information.
- * Used for adding new users to LDAP if disable_ns_register is false
+ * This is the command-line that will be used to call the mailer to send an
+ * e-mail. It must be called with all the parameters needed to make it
+ * scan the mail input to find the mail recipient; consult your mailer
+ * documentation.
+ *
+ * Postfix users must use the compatible sendmail utility provided with
+ * it. This one usually needs no parameters on the command-line. Most
+ * sendmail applications (or replacements of it) require the -t option
+ * to be used.
*/
- object_class = "anopeUser";
+ sendmailpath = "/usr/sbin/sendmail -t"
/*
- * The attribute value used for account names.
+ * This is the e-mail address from which all the e-mails are to be sent from.
+ * It should really exist.
*/
- username_attribute = "uid"
+ sendfrom = "services@localhost.net"
/*
- * The attribute value used for email addresses.
+ * If set, SENDPASS and RESETPASS will be restricted to IRC operators.
* This directive is optional.
+ *
+ * WARNING: If you choose to not enable this option, you should limit the
+ * number of processes that the services user can have at a time (you can
+ * create a special user for this; remember to NEVER launch Services as
+ * root).
*/
- email_attribute = "email"
-
- /*
- * The attribute value used for passwords.
- * Used when registering new accounts in LDAP.
- */
- password_attribute = "userPassword"
+ restrict = yes
/*
- * Enable to have this module disable /nickserv register.
+ * This controls the minimum amount of time a user must wait before sending
+ * 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
+ * it is highly recommended that it be used.
+ *
+ * This directive is optional, but highly recommended.
*/
- disable_ns_register = false
+ delay = 5m
/*
- * The reason to give the users who try to /ns register if
- * disable_ns_register is enabled.
+ * If set, Services will not attempt to put quotes around the TO: fields
+ * in e-mails.
+ *
+ * This directive is optional, and as far as we know, it's only needed
+ * if you are using ESMTP or QMail to send out e-mails.
*/
- #disable_reason = "To register on this network visit http://some.misconfigured.site/register"
+ #dontquoteaddresses = yes
}
/*
- * m_ldap_oper
- *
- * This module dynamically ties users to Anope opertypes when they identify
- * via LDAP group membership. Requires m_ldap.
+ * [OPTIONAL] DNS Config
*
- * Note that this doesn't give the user privileges on the IRCd, only in Services.
+ * This section is used to configure DNS.
+ * At this time DNS is only used by a few modules (m_dnsbl)
+ * and is not required by the core to function.
*/
-#module { name = "m_ldap_oper" }
-m_ldap_oper
+dns
{
- /*
- * An optional binddn to use when searching for groups.
- * %a is replaced with the account name of the user.
- */
- #binddn = "cn=Manager,dc=anope,dc=org"
-
- /*
- * An optional password to bind with.
- */
- #password = "secret"
-
- /*
- * The base DN where the groups are.
- */
- basedn = "ou=groups,dc=anope,dc=org"
-
- /*
- * The filter to use when searching for users.
- * %a is replaced with the account name of the user.
+ /*
+ * The nameserver to use for resolving hostnames, must be an IP or a resolver configuration file.
+ * The below should work fine on all unix like systems. Windows users will have to find their nameservers
+ * from ipconfig /all and put the IP here
*/
- filter = "(member=uid=%a,ou=users,dc=anope,dc=org)"
+ nameserver = "/etc/resolv.conf"
+ #nameserver = "127.0.0.1"
/*
- * The attribute of the group that is the name of the opertype.
- * The cn attribute should match a known opertype in the config.
+ * How long to wait in seconds before a DNS query has timed out
*/
- opertype_attribute = "cn"
+ timeout = 5
}
/*
- * m_mysql
+ * [REQUIRED] Encryption modules.
*
- * This module allows other modules (db_mysql/db_mysql_live) to use MySQL.
- * Be sure you have imported the table schema with mydbgen before
- * trying to use MySQL
- */
-#module { name = "m_mysql" }
-mysql
-{
- database = "anope"
- server = "127.0.0.1"
- username = "anope"
- password = "mypassword"
- port = 3306
-}
-
-/*
- * m_ssl
+ * The encryption modules are used when dealing with passwords. This determines how
+ * the passwords are stored in the databases, and does not add any security as
+ * far as transmitting passwords over the network goes.
+ *
+ * Without any encryption modules, passwords will be stored in plain text, allowing
+ * for passwords to be recovered later but isn't secure therefore is not recommended.
+ *
+ * The other encryption modules use one-way encryption, so the passwords can not
+ * be recovered later if those are used.
*
- * This module uses SSL to connect to the uplink server(s)
- */
-module { name = "m_ssl" }
-
-/*
- * m_statusupdate
+ * NOTE: enc_old is Anope's previous (broken) MD5 implementation, if your databases
+ * were made using that module, continue to use it and do not use enc_md5.
*
- * This module automatically updates users status on channels when the
- * channel's access list is modified.
- */
-module { name = "m_statusupdate" }
-
-/*
- * m_xmlrpc
+ * 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.
*
- * 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.
+ * The first encryption module loaded is the primary encryption module. All new passwords are
+ * encrypted by this module. Old passwords stored in another encryption method are
+ * automatically re-encrypted by the primary encryption module on next identify.
*/
-#module { name = "m_xmlrpc" }
-m_xmlrpc
-{
- /* IP to listen on */
- bindip = "127.0.0.1"
- /* Port to listen on */
- port = 26673
- /* Enable for IPv6 */
- ipv6 = no
- /* If enabled, requires m_ssl to be loaded */
- ssl = no
- /* IPs allowed to connect (separate with spaces), this should be secured. We also recommend you firewall this
- * with an outside program to increase security.
- */
- allowed = "127.0.0.0/24"
-}
+module { name = "enc_md5" }
+#module { name = "enc_sha1" }
+#module { name = "enc_sha256" }
/*
- * m_xmlrpc_main
- *
- * Adds the main XMLRPC core functions.
- * Requires m_xmlrpc.
+ * When using enc_none, passwords will be stored without encryption in plain
+ * text, allowing for passwords to be recovered later. This isn't secure therefore
+ * is not recommended.
*/
-#module { name = "m_xmlrpc_main" }
+#module { name = "enc_none" }
/*
- * ns_maxemail
- *
- * Limits how many times the same email address may be used in Anope
- * to register accounts.
+ * enc_old is Anope's previous (broken) MD5 implementation, if your databases
+ * were made using that module, load it here to allow conversion to the primary
+ * encryption method.
*/
-module { name = "ns_maxemail" }
-ns_maxemail
-{
- /*
- * The limit to how many registered nicks can use the same e-mail address. If set to 0 or left
- * commented, there will be no limit enforced when registering new accounts or using
- * /msg NickServ SET EMAIL.
- */
- #maxemails = 1
-}
+#module { name = "enc_old" }
/*
- * ns_set_misc
+ * [OPTIONAL] Additional includes
*
- * Allows you to create misc /nickserv set commands, and have the data
- * show up in /nickserv info
+ * 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.
*/
-module { name = "ns_set_misc" }
-ns_set_misc
-{
- name = "OINFO"
- desc = "Associate oper only information to this nick"
- privileged = yes
-}
-ns_set_misc
+
+/* Include core commands */
+include
{
- name = "URL"
- desc = "Associate a URL with the nick"
+ type = "file"
+ name = "commands.example.conf"
}
-ns_set_misc
+
+/* Extra (optional) modules */
+include
{
- name = "ICQ"
- desc = "Associate an ICQ number with the nick"
+ type = "file"
+ name = "modules.example.conf"
}
-
/*
- * os_defcon
- *
- * Allows you to set services in defcon mode, which can be used to restrict services access
- * during bot attacks.
- */
-#module { "os_defcon" }
-os_defcon
+include
{
- /*
- * Default DefCon level (1-5) to use when starting Services up. Level 5 constitutes normal operation
- * while level 1 constitutes the most restrictive operation. If this setting is left out or set to
- * 0, DefCon will be disabled and the rest of this block will be ignored.
- */
- #defaultlevel = 5
-
- /*
- * The following 4 directives define what operations will take place when DefCon is set to levels
- * 1 through 4. Each level is a list that must be separated by spaces.
- *
- * The following operations can be defined at each level:
- * - nonewchannels: Disables registering new channels
- * - nonewnicks: Disables registering new nicks
- * - nomlockchanges: Disables changing MLOCK on registered channels
- * - forcechanmodes: Forces all channels to have the modes given in the later chanmodes directive
- * - reducedsessions: Reduces the session limit to the value given in the later sessionlimit directive
- * - nonewclients: KILL any new clients trying to connect
- * - operonly: Services will ignore all non-IRCops
- * - silentoperonly: Services will silently ignore all non-IRCops
- * - akillnewclients: AKILL any new clients trying to connect
- * - nonewmemos: No new memos will be sent to block MemoServ attacks
- */
- level4 = "nonewchannels nonewnicks nomlockchanges reducedsessions"
- level3 = "nonewchannels nonewnicks nomlockchanges forcechanmodes reducedsessions"
- level2 = "nonewchannels nonewnicks nomlockchanges forcechanmodes reducedsessions silentoperonly"
- level1 = "nonewchannels nonewnicks nomlockchanges forcechanmodes reducedsessions silentoperonly akillnewclients"
-
- /*
- * New session limit to use when a DefCon level is using "reduced" session limiting.
- */
- #sessionlimit = 2
-
- /*
- * Length of time to add an AKILL for when DefCon is preventing new clients from connecting to the
- * network.
- */
- #akillexpire = 5m
-
- /*
- * The channel modes to set on all channels when the DefCon channel mode system is in use.
- *
- * Note 1: Choose these modes carefully, because when DefCon switches to a level which does NOT have
- * the mode setting selected, Services will set the reverse on all channels, e.g. if this setting
- * is +RN when DefCon is used, all channels will be set to +RN, when DefCon is removed, all
- * channels will be set to -RN. You don't want to set this to +k for example, because when DefCon
- * is removed all channels with -k.
- *
- * Note 2: MLOCKed modes will not be lost.
- */
- #chanmodes = "+R"
-
- /*
- * This value can be used to automatically return the network to DefCon level 5 after the specified
- * time period, just in case any IRC Operator forgets to remove a DefCon setting.
- *
- * This directive is optional.
- */
- #timeout = 15m
-
- /*
- * If set, Services will send a global message on DefCon level changes.
- *
- * This directive is optional.
- */
- #globalondefcon = yes
-
- /*
- * If set, Services will send the global message defined in the message directive on DefCon level
- * changes.
- *
- * This directive is optional.
- */
- #globalondefconmore = yes
-
- /*
- * Defines the message that will be sent on DefCon level changes when globalondefconmore is set.
- *
- * This directive is required only when globalondefconmore is set.
- */
- #message = "Put your message to send your users here. Dont forget to uncomment globalondefconmore"
-
- /*
- * Defines the message that will be sent when DefCon is returned to level 5. This directive is optional,
- * and will also override globalondefcon and globalondefconmore when set.
- */
- #offmessage = "Services are now back to normal, sorry for any inconvenience"
-
- /*
- * Defines the reason to use when clients are KILLed or AKILLed from the network while the proper
- * DefCon operation is in effect.
- */
- #akillreason = "This network is currently not accepting connections, please try again later"
+ type = "executable"
+ name = "/usr/bin/wget -q -O - http://some.miconfigured.network.com/services.conf"
}
+*/
+
diff --git a/data/modules.example.conf b/data/modules.example.conf
new file mode 100644
index 000000000..51f9f32f9
--- /dev/null
+++ b/data/modules.example.conf
@@ -0,0 +1,528 @@
+
+/*
+ * [OPTIONAL] Non-Core Modules
+ *
+ * The following blocks are used to load all non-core modules, including 3rd-party modules.
+ * Modules can be prevented from loading by commenting out the line, other modules can be added by
+ * adding a module block. These modules will be loaded prior to Services connecting to your network.
+ */
+
+/*
+ * cs_appendtopic
+ *
+ * Adds the APPENDTOPIC command to ChanServ, which allows users to easially append text to
+ * the end of existing channel topics.
+ */
+module { name = "cs_appendtopic" }
+command { service = "ChanServ"; name = "APPENDTOPIC"; command = "chanserv/appendtopic"; }
+
+/*
+ * cs_enforce
+ *
+ * Adds the ENFORCE commad to ChanServ, which allows enforcing various channel settings like
+ * SECUREOPS and RESTRICTED.
+ */
+module { name = "cs_enforce" }
+command { service = "ChanServ"; name = "ENFORCE"; command = "chanserv/enforce"; }
+
+/*
+ * cs_entrymsg
+ *
+ * Allows you to set entry messages on your channel, which are shown to anyone
+ * who joins.
+ */
+module { name = "cs_entrymsg" }
+command { service = "ChanServ"; name = "ENTRYMSG"; command = "chanserv/entrymsg"; }
+cs_entrymsg
+{
+ /* The maximum number of entrymsgs allowed per channel. If not set, defaults to 5. */
+ maxentries = 5
+}
+
+/*
+ * cs_set_misc
+ *
+ * Allows you to create misc /chanserv set commands, and have the data
+ * show up in /chanserv info
+ */
+module { name = "cs_set_misc" }
+cs_set_misc
+{
+ /* The name of the command */
+ name = "OINFO"
+ /* A short description of the command */
+ desc = "Associate oper only information to this channel"
+ /* Set to yes if only opers and privileged users can set it and see it */
+ privileged = yes
+}
+cs_set_misc
+{
+ name = "URL"
+ desc = "Associate a URL with the channel"
+}
+cs_set_misc
+{
+ name = "EMAIL"
+ desc = "Associate an EMail with the channel"
+}
+
+/*
+ * db_plain
+ *
+ * This is the default flatfile database format. You must have at least one database
+ * module loaded or Anope will not save databases!
+ */
+module { name = "db_plain" }
+db_plain
+{
+ /*
+ * The database db_plain should use
+ */
+ database = "anope.db"
+}
+
+/*
+ * db_mysql and db_mysql_live
+ *
+ * Enables (live) MySQL support.
+ *
+ * The db_mysql_live module is an extension to db_mysql, and should only be used if
+ * db_mysql is being used. This module pulls data in real time from SQL as it is
+ * requested by the core as a result of someone executing commands.
+ *
+ * This effectively allows you to edit your database and have it be immediately
+ * reflected back in Anope.
+ *
+ * For information on how to make db_mysql_live use asynchronous queries see
+ * m_async_commands.
+ *
+ * At this time db_mysql_live only supports pulling data in real time from the three
+ * main tables: anope_cs_info, anope_ns_alias, and anope_ns_core.
+ */
+#module { name = "db_mysql" }
+#module { name = "db_mysql_live" }
+
+/*
+ * hs_request
+ *
+ * Allows users to request vhosts which opers may then view, accept or deny
+ */
+module { name = "hs_request" }
+command { service = "HostServ"; name = "REQUEST"; command = "hostserv/request"; }
+command { service = "HostServ"; name = "ACTIVATE"; command = "hostserv/active"; }
+command { service = "HostServ"; name = "REJECT"; command = "hostserv/reject"; }
+command { service = "HostServ"; name = "WAITING"; command = "hostserv/waiting"; }
+hs_request
+{
+ /*
+ * If set, Services will send a memo to the user requesting a vHost when it's been
+ * approved or rejected.
+ */
+ #memouser = yes
+
+ /*
+ * If set, Services will send a memo to all Services staff when a new vHost is requested.
+ */
+ #memooper = yes
+}
+
+/*
+ * m_async_commands
+ *
+ * Threads for each command executed by users. You should
+ * only load this if you are using a module designed to work with this.
+ *
+ * If this is loaded with db_mysql_live then Anope will support
+ * processing multiple commands at once which will negate the "lag"
+ * issues caused from the overhead of SQL queries by db_mysql_live.
+ *
+ * Note that this module is currently EXPERIMENTAL and you should report
+ * any bugs you find.
+ */
+#module { name = "m_async_commands" }
+
+/* m_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
+ * to prevent bot attacks.
+ */
+module { name = "m_dnsbl" }
+m_dnsbl
+{
+ /*
+ * If set, Services will check clients against the DNSBLs when services connect to its uplink.
+ * This is not recommended, and on large networks will open a very large amount of DNS queries.
+ * Whilst services are not drastically affected by this, your nameserver/DNSBL might care.
+ */
+ check_on_connect = no
+
+ /*
+ * If set, Services will check clients when coming back from a netsplit. This can cause a large number
+ * of DNS queries open at once. Whilst services are not drastically affected by this, your nameserver/DNSBL
+ * might care.
+ */
+ check_on_netburst = no
+
+ /*
+ * If set, OperServ will add clients found in the DNSBL 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 fill up by bots.
+ */
+ add_to_akill = yes
+}
+blacklist
+{
+ /* Name of the blacklist */
+ name = "rbl.efnetrbl.org"
+
+ /* How long to set the ban for */
+ time = 4h
+
+ /* Reason for akill.
+ * %n is the nick of the user
+ * %u is the ident/username of the user
+ * %g is the realname of the user
+ * %h is the hostname of the user
+ * %i is the IP of the user
+ * %r is the reason (configured below). Will be nothing if not configured.
+ * %N is the network name set in networkinfo:networkname
+ */
+ reason = "You are listed in the efnet RBL, visit http://rbl.efnetrbl.org/?i=%i for info"
+
+ /* Replies to ban and their reason. If this is totally ommited all replies get banned */
+ 1 = "Open Proxy"
+ /* Don't ban for result 2 or 3 */
+ #2 = "spamtrap666"
+ #3 = "spamtrap50"
+ 4 = "TOR"
+ 5 = "Drones / Flooding"
+}
+blacklist
+{
+ name = "dnsbl.dronebl.org"
+ time = 4h
+ reason = "You have a host listed in the DroneBL. For more information, visit http://dronebl.org/lookup_branded.do?ip=%i&network=%N"
+}
+
+/* m_helpchan
+ *
+ * Gives users who are op in the specified help channel usermode +h (helpop).
+ */
+#module { name = "m_helpchan" }
+m_helpchan
+{
+ helpchannel = "#help"
+}
+
+/*
+ * m_ldap
+ *
+ * This module allows other modules to use LDAP. By itself, this module does nothing useful.
+ */
+#module { name = "m_ldap" }
+ldap
+{
+ server = "ldap://127.0.0.1"
+ port = 389
+ admin_binddn = "cn=Manager,dc=anope,dc=org"
+ admin_password = "secret"
+}
+
+/*
+ * m_ldap_authentication
+ *
+ * This module allows many commands such as IDENTIFY, RELEASE, RECOVER, GHOST, etc. use
+ * LDAP to authenticate users. Requires m_ldap.
+*/
+#module { name = "m_ldap_authentication" }
+m_ldap_authentication
+{
+ /*
+ * The distinguished name we should bind to when a user tries to identify.
+ */
+ binddn = "ou=users,dc=anope,dc=org"
+
+ /*
+ * The object class used by LDAP to store user account information.
+ * Used for adding new users to LDAP if disable_ns_register is false
+ */
+ object_class = "anopeUser"
+
+ /*
+ * The attribute value used for account names.
+ */
+ username_attribute = "uid"
+
+ /*
+ * The attribute value used for email addresses.
+ * This directive is optional.
+ */
+ email_attribute = "email"
+
+ /*
+ * The attribute value used for passwords.
+ * Used when registering new accounts in LDAP.
+ */
+ password_attribute = "userPassword"
+
+ /*
+ * Enable to have this module disable /nickserv register.
+ */
+ disable_ns_register = false
+
+ /*
+ * The reason to give the users who try to /ns register if
+ * disable_ns_register is enabled.
+ */
+ #disable_reason = "To register on this network visit http://some.misconfigured.site/register"
+}
+
+/*
+ * m_ldap_oper
+ *
+ * This module dynamically ties users to Anope opertypes when they identify
+ * via LDAP group membership. Requires m_ldap.
+ *
+ * Note that this doesn't give the user privileges on the IRCd, only in Services.
+ */
+#module { name = "m_ldap_oper" }
+m_ldap_oper
+{
+ /*
+ * An optional binddn to use when searching for groups.
+ * %a is replaced with the account name of the user.
+ */
+ #binddn = "cn=Manager,dc=anope,dc=org"
+
+ /*
+ * An optional password to bind with.
+ */
+ #password = "secret"
+
+ /*
+ * The base DN where the groups are.
+ */
+ basedn = "ou=groups,dc=anope,dc=org"
+
+ /*
+ * The filter to use when searching for users.
+ * %a is replaced with the account name of the user.
+ */
+ filter = "(member=uid=%a,ou=users,dc=anope,dc=org)"
+
+ /*
+ * The attribute of the group that is the name of the opertype.
+ * The cn attribute should match a known opertype in the config.
+ */
+ opertype_attribute = "cn"
+}
+
+/*
+ * m_mysql
+ *
+ * This module allows other modules (db_mysql/db_mysql_live) to use MySQL.
+ * Be sure you have imported the table schema with mydbgen before
+ * trying to use MySQL
+ */
+#module { name = "m_mysql" }
+mysql
+{
+ database = "anope"
+ server = "127.0.0.1"
+ username = "anope"
+ password = "mypassword"
+ port = 3306
+}
+
+/*
+ * m_ssl
+ *
+ * This module uses SSL to connect to the uplink server(s)
+ */
+module { name = "m_ssl" }
+
+/*
+ * m_statusupdate
+ *
+ * This module automatically updates users status on channels when the
+ * channel's access list is modified.
+ */
+module { name = "m_statusupdate" }
+
+/*
+ * m_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.
+ */
+#module { name = "m_xmlrpc" }
+m_xmlrpc
+{
+ /* IP to listen on */
+ bindip = "127.0.0.1"
+ /* Port to listen on */
+ port = 26673
+ /* Enable for IPv6 */
+ ipv6 = no
+ /* If enabled, requires m_ssl to be loaded */
+ ssl = no
+ /* IPs allowed to connect (separate with spaces), this should be secured. We also recommend you firewall this
+ * with an outside program to increase security.
+ */
+ allowed = "127.0.0.0/24"
+}
+
+/*
+ * m_xmlrpc_main
+ *
+ * Adds the main XMLRPC core functions.
+ * Requires m_xmlrpc.
+ */
+#module { name = "m_xmlrpc_main" }
+
+/*
+ * ns_maxemail
+ *
+ * Limits how many times the same email address may be used in Anope
+ * to register accounts.
+ */
+module { name = "ns_maxemail" }
+ns_maxemail
+{
+ /*
+ * The limit to how many registered nicks can use the same e-mail address. If set to 0 or left
+ * commented, there will be no limit enforced when registering new accounts or using
+ * /msg NickServ SET EMAIL.
+ */
+ #maxemails = 1
+}
+
+/*
+ * ns_set_misc
+ *
+ * Allows you to create misc /nickserv set commands, and have the data
+ * show up in /nickserv info
+ */
+module { name = "ns_set_misc" }
+ns_set_misc
+{
+ name = "OINFO"
+ desc = "Associate oper only information to this nick"
+ privileged = yes
+}
+ns_set_misc
+{
+ name = "URL"
+ desc = "Associate a URL with the nick"
+}
+ns_set_misc
+{
+ name = "ICQ"
+ desc = "Associate an ICQ number with the nick"
+}
+
+/*
+ * os_defcon
+ *
+ * Allows you to set services in defcon mode, which can be used to restrict services access
+ * during bot attacks.
+ */
+#module { name = "os_defcon" }
+command { service = "OperServ"; name = "DEFCON"; command = "operserv/defcon"; }
+defcon
+{
+ /*
+ * Default DefCon level (1-5) to use when starting Services up. Level 5 constitutes normal operation
+ * while level 1 constitutes the most restrictive operation. If this setting is left out or set to
+ * 0, DefCon will be disabled and the rest of this block will be ignored.
+ */
+ #defaultlevel = 5
+
+ /*
+ * The following 4 directives define what operations will take place when DefCon is set to levels
+ * 1 through 4. Each level is a list that must be separated by spaces.
+ *
+ * The following operations can be defined at each level:
+ * - nonewchannels: Disables registering new channels
+ * - nonewnicks: Disables registering new nicks
+ * - nomlockchanges: Disables changing MLOCK on registered channels
+ * - forcechanmodes: Forces all channels to have the modes given in the later chanmodes directive
+ * - reducedsessions: Reduces the session limit to the value given in the later sessionlimit directive
+ * - nonewclients: KILL any new clients trying to connect
+ * - operonly: Services will ignore all non-IRCops
+ * - silentoperonly: Services will silently ignore all non-IRCops
+ * - akillnewclients: AKILL any new clients trying to connect
+ * - nonewmemos: No new memos will be sent to block MemoServ attacks
+ */
+ level4 = "nonewchannels nonewnicks nomlockchanges reducedsessions"
+ level3 = "nonewchannels nonewnicks nomlockchanges forcechanmodes reducedsessions"
+ level2 = "nonewchannels nonewnicks nomlockchanges forcechanmodes reducedsessions silentoperonly"
+ level1 = "nonewchannels nonewnicks nomlockchanges forcechanmodes reducedsessions silentoperonly akillnewclients"
+
+ /*
+ * New session limit to use when a DefCon level is using "reduced" session limiting.
+ */
+ #sessionlimit = 2
+
+ /*
+ * Length of time to add an AKILL for when DefCon is preventing new clients from connecting to the
+ * network.
+ */
+ #akillexpire = 5m
+
+ /*
+ * The channel modes to set on all channels when the DefCon channel mode system is in use.
+ *
+ * Note 1: Choose these modes carefully, because when DefCon switches to a level which does NOT have
+ * the mode setting selected, Services will set the reverse on all channels, e.g. if this setting
+ * is +RN when DefCon is used, all channels will be set to +RN, when DefCon is removed, all
+ * channels will be set to -RN. You don't want to set this to +k for example, because when DefCon
+ * is removed all channels with -k.
+ *
+ * Note 2: MLOCKed modes will not be lost.
+ */
+ #chanmodes = "+R"
+
+ /*
+ * This value can be used to automatically return the network to DefCon level 5 after the specified
+ * time period, just in case any IRC Operator forgets to remove a DefCon setting.
+ *
+ * This directive is optional.
+ */
+ #timeout = 15m
+
+ /*
+ * If set, Services will send a global message on DefCon level changes.
+ *
+ * This directive is optional.
+ */
+ #globalondefcon = yes
+
+ /*
+ * If set, Services will send the global message defined in the message directive on DefCon level
+ * changes.
+ *
+ * This directive is optional.
+ */
+ #globalondefconmore = yes
+
+ /*
+ * Defines the message that will be sent on DefCon level changes when globalondefconmore is set.
+ *
+ * This directive is required only when globalondefconmore is set.
+ */
+ #message = "Put your message to send your users here. Dont forget to uncomment globalondefconmore"
+
+ /*
+ * Defines the message that will be sent when DefCon is returned to level 5. This directive is optional,
+ * and will also override globalondefcon and globalondefconmore when set.
+ */
+ #offmessage = "Services are now back to normal, sorry for any inconvenience"
+
+ /*
+ * Defines the reason to use when clients are KILLed or AKILLed from the network while the proper
+ * DefCon operation is in effect.
+ */
+ #akillreason = "This network is currently not accepting connections, please try again later"
+}
+
diff --git a/data/mysql/tables.sql b/data/mysql/tables.sql
index 13493279b..32bfcde35 100644
--- a/data/mysql/tables.sql
+++ b/data/mysql/tables.sql
@@ -301,31 +301,12 @@ CREATE TABLE IF NOT EXISTS `anope_ns_core_metadata` (
-- --------------------------------------------------------
--
--- Table structure for table `anope_os_akills`
---
-
-CREATE TABLE IF NOT EXISTS `anope_os_akills` (
- `user` varchar(255) NOT NULL,
- `host` varchar(255) NOT NULL,
- `xby` text NOT NULL,
- `reason` text NOT NULL,
- `seton` int(10) unsigned NOT NULL DEFAULT '0',
- `expire` int(10) unsigned NOT NULL DEFAULT '0'
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-
--- --------------------------------------------------------
-
---
-- Table structure for table `anope_os_core`
--
CREATE TABLE IF NOT EXISTS `anope_os_core` (
`maxusercnt` int(11) NOT NULL DEFAULT '0',
`maxusertime` int(10) unsigned NOT NULL DEFAULT '0',
- `akills_count` int(11) NOT NULL DEFAULT '0',
- `snlines_count` int(11) NOT NULL DEFAULT '0',
- `sqlines_count` int(11) NOT NULL DEFAULT '0',
- `szlines_count` int(11) NOT NULL DEFAULT '0'
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- --------------------------------------------------------
@@ -350,7 +331,7 @@ CREATE TABLE IF NOT EXISTS `anope_os_exceptions` (
--
CREATE TABLE IF NOT EXISTS `anope_os_xlines` (
- `type` varchar(20) NOT NULL,
+ `type` varchar(1) NOT NULL,
`mask` varchar(255) NOT NULL,
`xby` text NOT NULL,
`reason` text NOT NULL,