diff options
| author | Adam <Adam@anope.org> | 2011-07-14 02:31:12 -0400 |
|---|---|---|
| committer | Adam <Adam@anope.org> | 2011-07-14 02:31:12 -0400 |
| commit | f858164deed48f2dcacd5ffc06a55398a54da7e8 (patch) | |
| tree | 89c3cf36bd8e94942370135218d67d6d17ee222e /data | |
| parent | 924f6849fee4598a1a3a7f1a98d96b79e5ffd3b4 (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.txt | 2 | ||||
| -rw-r--r-- | data/commands.example.conf | 336 | ||||
| -rw-r--r-- | data/example.conf | 1868 | ||||
| -rw-r--r-- | data/modules.example.conf | 528 | ||||
| -rw-r--r-- | data/mysql/tables.sql | 21 |
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, |
