/* * Example configuration file for ChanServ. */ /* * First, create the service. */ service { /* * The name of the ChanServ client */ nick = "ChanServ" /* * The username of the ChanServ client. */ user = "services" /* * The hostname of the ChanServ client. */ host = "services.host" /* * The realname of the ChanServ client. */ gecos = "Channel Registration Service" /* * The modes this client should use. * Do not modify this unless you know what you are doing. * * These modes are very IRCd specific. If left commented, sane defaults * are used based on what protocol module you have loaded. * * Note that setting this option incorrectly could potentially BREAK some if * not all usefulness of the client. We will not support you if this client is * unable to do certain things if this option is enabled. */ #modes = "+o" } /* * Core ChanServ module. * * Provides essential functionality for ChanServ. */ module { name = "cs_main" } /* * Configuration for ChanServ provided by cs_main. */ chanserv { /* * The name of the client that should be ChanServ. */ name = "ChanServ" /* * The default 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: * - keeptopic: Retain topic when the channel is not in use * - opnotice: Send a notice when OP/DEOP commands are used * - peace: Disallow users from kicking or removing modes from others who are of the same * access level or superior * - private: Hide the channel from ChanServ's LIST command * - restricted: Kick/ban users who are restricted from the channel * - secure: Enable channel security, requiring the user to be identified with NickServ in * order to be considered for being on the access list of the channel * - secureops: Only allow operator status to be given if the user is on the access list * - securefounder: Only allow the real founder of the channel to drop the channel, change it's * password, or change the founder or successor * - signkick: Use of ChanServ's KICK command will cause the user's nick to be signed to the kick. * - signkicklevel: Same as above, but the kick will not be signed if the user is at the same access * level or superior to the target * - topiclock: Disallow the topic to be changed except with ChanServ's TOPIC command * - persist: Keep the channel open at all times * - none: No defaults * * This directive is optional, if left blank, the options will default to keetopic, secure, securefounder, * and signkick. If you really want no defaults, use "none" by itself as the option. */ defaults="keeptopic peace secure securefounder signkick" /* * The maximum number of channels which may be registered to a single nickname. * * This directive is optional, but recommended. * If not set, there will be no restriction on the numbers of channels a single nickname can have registered. */ maxregistered = 20 /* * The length of time before a channel registration expires. * * This directive is optional, but recommended. * If not set, the default is 14 days. */ expire = 14d /* * The length of time before a suspended channel becomes unsuspended. * * This directive is optional. * If not set, the default is to never. */ #suspendexpire = 90d /* * The lenth of time before a forbidden channel drops. * * This directive is optional. * If not set, the default is to never. */ #forbidexpire = 90d /* * The default ban type for newly registered channels (and when importing old databases). * * defbantype can be: * * 0: ban in the form of *!user@host * 1: ban in the form of *!*user@host * 2: ban in the form of *!*@host * 3: ban in the form of *!*user@*.domain */ defbantype = 2 /* * The maximum number of entries on a channel's access list. */ accessmax = 1024 /* * The maximum number of entries on a channel's autokick list. */ autokickmax = 32 /* * The default reason for an autokick if none is given. */ autokickreason = "User has been banned from the channel" /* * The length of time ChanServ stays in a channel after kicking a user from a channel they are not * permitted to be in. This only occurs when the user is the only one in the channel. */ inhabit = 15s /* * The maximum number of channels to be returned for a ChanServ LIST command. */ listmax = 50 /* * Allow only IRC Operators to use ChanServ. * * This directive is optional. */ #opersonly = yes /* * ChanServ levels configuration, for use with cs_access. * * These levels are used by the chanserv/access access system. * The levels configured below will be used as a default by newly registered channels. * * The level "founder" is a special level that means anyone with the level_founder permission * can use (which of course defaults to "founder"). Anyone with the founder level permission in * a channel can do anything in the channel. * * The level "disabled" is a special level that means the level is disabled, even from people * with founder level access. */ level_change = 10 level_list = 1 level_akick = 10 level_assign = "founder" level_autohalfop = 4 level_autoop = 5 level_autoowner = 9999 level_autoprotect = 10 level_autovoice = 3 level_badwords = 10 level_ban = 4 level_fantasia = 3 level_founder = "founder" level_getkey = 5 level_greet = 5 level_halfop = 5 level_halfopme = 4 level_info = 9999 level_invite = 5 level_kick = 4 level_memo = 10 level_mode = 5 level_nokick = 1 level_opdeop = 5 level_opdeopme = 5 level_owner = "founder" level_ownerme = 9999 level_protect = 9999 level_protectme = 10 level_say = 5 level_signkick = 9999 level_set = 9999 level_topic = 5 level_unban = 4 level_voice = 4 level_voiceme = 3 /* * ChanServ flags configuration, for use with cs_flags. * * These flags are used by the chanserv/flags access system. */ flag_change = "f" flag_list = "l" flag_akick = "K" flag_assign = "s" flag_autohalfop = "H" flag_autoop = "O" flag_autoowner = "Q" flag_autoprotect = "A" flag_autovoice = "V" flag_badwords = "k" flag_ban = "b" flag_fantasia = "c" flag_founder = "F" flag_getkey = "G" flag_greet = "g" flag_halfop = "h" flag_halfopme = "h" flag_info = "I" flag_invite = "i" flag_kick = "k" flag_memo = "m" flag_mode = "s" flag_nokick = "N" flag_opdeop = "o" flag_opdeopme = "o" flag_owner = "q" flag_ownerme = "q" flag_protect = "a" flag_protectme = "a" flag_say = "B" flag_set = "s" flag_signkick = "K" flag_topic = "t" flag_unban = "u" flag_voice = "v" flag_voiceme = "v" } /* * Core ChanServ commands. * * 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. * * Additionally, you may provide a permission name that must be in the opertype of users executing the command. * * Sane defaults are provided below that do not need to be edited unless you wish to change the default behavior. */ /* Give it a help command */ command { service = "ChanServ"; name = "HELP"; command = "generic/help"; } /* * cs_access * * Provides commands chanserv/access and chanserv/levels. * Provides the access system "levels". * * Used for giving users access in channels. */ module { name = "cs_access" } command { service = "ChanServ"; name = "ACCESS"; command = "chanserv/access"; } command { service = "ChanServ"; name = "LEVELS"; command = "chanserv/levels"; } /* * cs_akick * * Provides the command chanserv/akick. * * Used for preventing users from joining channels. */ module { name = "cs_akick" } command { service = "ChanServ"; name = "AKICK"; command = "chanserv/akick"; } /* * cs_appendtopic * * Provides the chanserv/appendtopic command. * * Used to append text to existing channel topics. */ module { name = "cs_appendtopic" } command { service = "ChanServ"; name = "APPENDTOPIC"; command = "chanserv/appendtopic"; } /* * cs_ban * * Provides the command chanserv/ban. * * Used for banning users from channels. */ module { name = "cs_ban" } command { service = "ChanServ"; name = "BAN"; command = "chanserv/ban"; } command { service = "ChanServ"; name = "KB"; command = "chanserv/ban"; } /* * cs_clearusers * * Provides the command chanserv/clearusers. * * Used for kicking all users from channels. */ module { name = "cs_clearusers" } command { service = "ChanServ"; name = "CLEARUSERS"; command = "chanserv/clearusers"; } /* * cs_clone * * Provides the command chanserv/clone. * * Used for copying channel settings from one channel to another. */ module { name = "cs_clone" } command { service = "ChanServ"; name = "CLONE"; command = "chanserv/clone"; } /* * cs_drop * * Provides the command chanserv/drop. * * Used for unregistering channels. */ module { name = "cs_drop" } command { service = "ChanServ"; name = "DROP"; command = "chanserv/drop"; } /* * cs_enforce * * Provides the command chanserv/enforce. * * Used to enforce various channel settings such as secureops and restricted. */ module { name = "cs_enforce" } command { service = "ChanServ"; name = "ENFORCE"; command = "chanserv/enforce"; } /* * cs_entrymsg * * Provides the command chanserv/entrymsg. * * Used to configure entry messages sent to users when they join a channel. */ 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_flags * * Provides the command chanserv/flags. * Provides the access system "flags". * * Used for giving users access in channels. */ module { name = "cs_flags" } command { service = "ChanServ"; name = "FLAGS"; command = "chanserv/flags"; } /* * cs_getkey * * Provides the command chanserv/getkey. * * Used for getting the key for channels. */ module { name = "cs_getkey" } command { service = "ChanServ"; name = "GETKEY"; command = "chanserv/getkey"; } /* * cs_info * * Provides the command chanserv/info. * * Used for getting information about channels. */ module { name = "cs_info" } command { service = "ChanServ"; name = "INFO"; command = "chanserv/info"; } /* * cs_invite * * Provides the command chanserv/invite. * * Used for inviting yourself in to channels. */ module { name = "cs_invite" } command { service = "ChanServ"; name = "INVITE"; command = "chanserv/invite"; } /* * cs_kick * * Provides the command chanserv/kick. * * Used for kicking users from channels. */ module { name = "cs_kick" } command { service = "ChanServ"; name = "KICK"; command = "chanserv/kick"; } command { service = "ChanServ"; name = "K"; command = "chanserv/kick"; } /* * cs_list * * Provides the command chanserv/list. * * Used for retrieving and searching the registered channel list. */ module { name = "cs_list" } command { service = "ChanServ"; name = "LIST"; command = "chanserv/list"; permission = "chanserv/list"; } /* * cs_mode * * Provides the command chanserv/mode. * * Used for changing mode locks and changing modes. */ module { name = "cs_mode" } command { service = "ChanServ"; name = "MODE"; command = "chanserv/mode"; } /* * cs_mode * * Provides the commands chanserv/op, chanserv/deop, chanserv/halfop, chanserv/dehalfop * chanserv/voice, chanserv/devoice, chanserv/protect, chanserv/deprotect, * chanserv/owner, and chanserv/deowner. * * Used for setting and removing modes on users. */ 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"; } /* * cs_register * * Provides the commands chanserv/register. * * Used for registering channels. */ module { name = "cs_register" } command { service = "ChanServ"; name = "REGISTER"; command = "chanserv/register"; } /* * cs_seen * * Provides the commands chanserv/seen and operserv/seen. * * Records the last time a user was seen and what they were doing and allows users to request this data. * Also allows administrators to view stats about seen data and purge the database. */ module { name = "cs_seen" } command { service = "ChanServ"; name = "SEEN"; command = "chanserv/seen"; } #command { service = "OperServ"; name = "SEEN"; command = "operserv/seen"; } /* * cs_set * * Provides the command chanserv/set. * * Is a dummy command to provide a help wrapper for the various SET commands. */ module { name = "cs_set" } command { service = "ChanServ"; name = "SET"; command = "chanserv/set"; } /* * cs_saset * * Provides the command chanserv/saset. * * Is a dummy command to provide a help wrapper for the various SASET commands. */ module { name = "cs_saset" } command { service = "ChanServ"; name = "SASET"; command = "chanserv/saset"; permission = "chanserv/saset"; } /* * cs_set_bantype * * Provides the commands chanserv/set/bantype and chanserv/saset/bantype. * * Used for controlling what format bans are placed on channels. */ 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"; permission = "chanserv/saset/bantype"; } /* * cs_set_description * * Provides the commands chanserv/set/description and chanserv/saset/description. * * Used for changing channels descriptions. */ module { name = "cs_set_description" } command { service = "ChanServ"; name = "SET DESCRIPTION"; command = "chanserv/set/description"; } command { service = "ChanServ"; name = "SET DESC"; command = "chanserv/set/description"; } command { service = "ChanServ"; name = "SASET DESCRIPTION"; command = "chanserv/saset/description"; permission = "chanserv/saset/description"; } command { service = "ChanServ"; name = "SASET DESC"; command = "chanserv/saset/description"; permission = "chanserv/saset/description"; } /* * cs_set_founder * * Provides the commands chanserv/set/founder and chanserv/saset/founder. * * Used for changing channel founders. */ 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"; permission = "chanserv/saset/founder"; } /* * cs_set_keeptopic * * Provides the commands chanserv/set/keeptopic and chanserv/saset/keeptopic. * * Used for enabling keeptopic on channels, which causes ChanServ to restore the channel topic * when a channel is created. */ 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"; permission = "chanserv/saset/keeptopic"; } /* * cs_set_misc * * Provides the command chanserv/set/misc. * * Allows you to create arbitrary commands to set data, and have that data show up in chanserv/info. */ module { name = "cs_set_misc" } command { service = "ChanServ"; name = "SET URL"; command = "chanserv/set/misc"; } command { service = "ChanServ"; name = "SET EMAIL"; command = "chanserv/set/misc"; } /* * cs_set_opnotice * * Provides the commands chanserv/set/opnotice and chanserv/saset/opnotice. * * Used for setting whether channel ops should be notified of mode changes made through ChanServ. */ 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"; permission = "chanserv/saset/opnotice"; } /* * cs_set_peace * * Provides the commands chanserv/set/peace and chanserv/saset/peace. * * Used for setting the peace option, which prevents users from kicking other users with * higher level access than them. */ 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"; permission = "chanserv/saset/peace"; } /* * cs_set_persist * * Provides the commands chanserv/set/persist and chanserv/saset/persist. * * Used for setting whether ChanServ should stay in channels after the last user leaves. */ 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"; permission = "chanserv/saset/persist"; } /* * cs_set_private * * Provides the commands chanserv/set/private and chanserv/saset/private. * * Used for setting whether channels should show up in chanserv/list. */ 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"; permission = "chanserv/saset/private"; } /* * cs_set_restricted * * Provides the commands chanserv/set/restricted and chanserv/saset/restricted. * * Used for setting whether users not on a channel's access list can join. */ module { name = "cs_set_restricted" } command { service = "ChanServ"; name = "SET RESTRICTED"; command = "chanserv/set/restricted"; } command { service = "ChanServ"; name = "SASET RESTRICTED"; command = "chanserv/saset/restricted"; permission = "chanserv/saset/restricted"; } /* * cs_set_secure * * Provides the commands chanserv/set/secure and chanserv/saset/secure. * * Used for setting whether users who are recognized for accounts should have their access in channels. */ 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"; permission = "chanserv/saset/secure"; } /* * cs_set_securefounder * * Provides the commands chanserv/set/securefounder and chanserv/saset/securefounder. * * Used for setting whether users with founder level access in channels have true founder or not. */ 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"; permission = "chanserv/saset/securefounder"; } /* * cs_set_secureops * * Provides the commands chanserv/set/secureops and chanserv/saset/secureops. * * Used for restricting who can have channel op privilege in a channel to those whom have access in the channel. */ 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"; permission = "chanserv/saset/secureops"; } /* * cs_set_signkick * * Provides the commands chanserv/set/signkick and chanserv/saset/signkick. * * Used for setting signkick, which appends the kicker's name to kicks sent through ChanServ. */ 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"; permission = "chanserv/saset/signkick"; } /* * cs_set_successor * * Provides the commands chanserv/set/successor and chanserv/saset/successor. * * Used for setting channel successors, which become channel founders if the founders account expires. */ 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"; permission = "chanserv/saset/successor"; } /* * cs_set_topiclock * * Provides the commands chanserv/set/topiclock and chanserv/saset/topiclock. * * Used for setting topiclock, which prevents channel topics from being modified. */ 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"; permission = "chanserv/saset/topiclock"; } /* * cs_set_noexpire * * Provides the command chanserv/saset/noexpire. * * Used for setting noexpire, which prevents channels from expiring. */ module { name = "cs_saset_noexpire" } command { service = "ChanServ"; name = "SASET NOEXPIRE"; command = "chanserv/saset/noexpire"; permission = "chanserv/saset/noexpire"; } /* * cs_suspend * * Provides the commands chanserv/suspend and chanserv/unsuspend. * * Used for suspending and unsuspending channels. Suspended channels can not be used but their settings are stored. */ module { name = "cs_suspend" } command { service = "ChanServ"; name = "SUSPEND"; command = "chanserv/suspend"; permission = "chanserv/suspend"; } command { service = "ChanServ"; name = "UNSUSPEND"; command = "chanserv/unsuspend"; permission = "chanserv/suspend"; } /* * cs_sync * * Provides the command chanserv/sync. * * Used to sync users channel status modes with what access they have. */ module { name = "cs_sync" } command { service = "ChanServ"; name = "SYNC"; command = "chanserv/sync"; } /* * cs_topic * * Provides the command chanserv/topic. * * Used for changing the channel topic. Usedful in conjunction with chanserv/set/topiclock. */ module { name = "cs_topic" } command { service = "ChanServ"; name = "TOPIC"; command = "chanserv/topic"; } /* * cs_unban * * Provides the command chanserv/unban. * * Used for unbanning users from channels. */ module { name = "cs_unban" } command { service = "ChanServ"; name = "UNBAN"; command = "chanserv/unban"; } /* * cs_xop * * Provides the commands chanserv/qop, chanserv/sop, chanserv/aop, chanserv/hop, and chanserv/vop. * Provides the access system "XOP". * * Used for giving users access in channels. */ 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"; }