Difference between revisions of "2.0/Configuration"

From AnopeWiki
Jump to: navigation, search
Line 673: Line 673:
  
 
=== ChanServ ===
 
=== ChanServ ===
 +
 +
<div class="code">
 +
<syntaxhighlight lang="cpp">
 +
 +
/*
 +
* Example configuration file for ChanServ.
 +
*/
 +
 +
/*
 +
* First, create the service.
 +
*/
 +
service
 +
{
 +
/*
 +
* The name of the ChanServ client.
 +
* If you change this value, you probably want to change the client directive in the configuration for the chanserv module too.
 +
*/
 +
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"
 +
 +
/*
 +
* An optional comma separated list of channels this service should join. Outside
 +
* of log channels this is not very useful, as the service will just idle in the
 +
* specified channels, and will not accept any types of commands.
 +
*
 +
* Prefixes may be given to the channels in the form of mode characters or prefix symbols.
 +
*/
 +
#channels = "@#services,#mychan"
 +
}
 +
 +
/*
 +
* Core ChanServ module.
 +
*
 +
* Provides essential functionality for ChanServ.
 +
*/
 +
module
 +
{
 +
name = "chanserv"
 +
 +
/*
 +
* The name of the client that should be ChanServ.
 +
*/
 +
client = "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
 +
* -          peace: Disallow users from kicking or removing modes from others who are of the same
 +
*                    access level or superior
 +
* -    cs_private: Hide the channel from ChanServ's LIST command
 +
* -    restricted: Kick/ban users who are restricted from the channel
 +
* -      cs_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.
 +
* - signkick_level: 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
 +
* -      noautoop: Disables autoop on the channel
 +
* -  cs_keep_modes: Enables keep modes on the channel, which retains modes when the channel is
 +
*                    not in use.
 +
* -          none: No defaults
 +
*
 +
* This directive is optional, if left blank, the options will default to keeptopic, cs_secure, securefounder,
 +
* and signkick. If you really want no defaults, use "none" by itself as the option.
 +
*/
 +
defaults = "keeptopic peace cs_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 maximum number of entries on a channel's access list.
 +
* If not set, the default is 1024. This can be set to 0 for unlimited.
 +
*/
 +
accessmax = 1024
 +
 +
/*
 +
* 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
 +
 +
/*
 +
* Allow only IRC Operators to use ChanServ.
 +
*
 +
* This directive is optional.
 +
*/
 +
#opersonly = yes
 +
 +
/*
 +
* Modes that will not be allowed to be locked. Oper only modes such as +O
 +
* are always restricted from regular users and are not affected by this.
 +
* Comment out for no restrictions.
 +
*/
 +
#nomlock = "P"
 +
 +
/*
 +
* Modes that are required to be set and only set on all registered channels.
 +
* These modes can not be locked or unlocked. The registered channel mode is
 +
* automatically always required, if such a mode exists.
 +
*/
 +
#require = "r"
 +
 +
/*
 +
* The maximum length of the reason field for user commands such as chanserv/kick
 +
* and chanserv/ban.
 +
*/
 +
reasonmax = 200
 +
 +
/*
 +
* If set, prevents channel access entries from containing hostmasks.
 +
*/
 +
disallow_hostmask_access = false
 +
 +
/*
 +
* If set, prevents channels from being on access lists.
 +
*/
 +
disallow_channel_access = false
 +
 +
/*
 +
* If set, ChanServ will always lower the timestamp of registered channels to their registration date.
 +
* This prevents several race conditions where unauthorized users can join empty registered channels and set
 +
* modes etc. prior to services deopping them.
 +
*/
 +
always_lower_ts = false
 +
}
 +
 +
/*
 +
* ChanServ privilege configuration.
 +
*
 +
* ChanServ privileges are used to determine who has what access in channels. By default the core has its own
 +
* set of privileges it uses for various commands, which are defined below. Privilege ranks are used to
 +
* determine how powerful privileges are relative to other privileges, which is used by Anope to determine
 +
* who has greater access in a channel.
 +
*
 +
* If you load cs_access, you may define a level for the privilege, which is used by chanserv/access and chanserv/levels.
 +
* The levels defined will be used as the default levels for newly registered channels.
 +
* The level "founder" is a special level which means anyone with the privilege FOUNDER on the channel
 +
* has that permission. Additionally, the level "disabled" means that no one can use the privilege, including founders.
 +
*
 +
* If you load cs_flags, you may define a flag associated with that privilege for use in chanserv/flags.
 +
*
 +
* If you load cs_xop, you may define a XOP command to associate the privilege with.
 +
*
 +
* The name of privileges are uesd to associate them with channel modes. If you are using an IRCd that allows you to define additional
 +
* channel status modes, such as InspIRCd, you can associate privileges (and thus access levels, flags, xop) with the mode by naming
 +
* the privileges appropriately. For example, if you had a channel mode called admin, you could create AUTOADMIN, ADMIN, and ADMINME
 +
* privileges which would automatically be associated with that channel mode.
 +
*
 +
* Defining new privileges here is not useful unless you have a module (eg, a third party one) made to check for
 +
* the specific level you are defining.
 +
*
 +
* Sane defaults are provided below that do not need to be edited unless you wish to change the default behavior.
 +
*/
 +
 +
/*
 +
* ACCESS_CHANGE privilege.
 +
*
 +
* Used by chanserv/access, chanserv/flags and chanserv/xop.
 +
*
 +
* Users with this permission can modify the permissions of others.
 +
*/
 +
privilege
 +
{
 +
name = "ACCESS_CHANGE"
 +
rank = 0
 +
level = 10
 +
flag = "f"
 +
xop = "SOP"
 +
}
 +
 +
/*
 +
* ACCESS_LIST privilege.
 +
*
 +
* Used by chanserv/access, chanserv/flags, and chanserv/xop.
 +
*
 +
* Users with this permission can view the access list of channels.
 +
*/
 +
privilege
 +
{
 +
name = "ACCESS_LIST"
 +
rank = 10
 +
level = 3
 +
flag = "f"
 +
xop = "VOP"
 +
}
 +
 +
/*
 +
* AKICK privilege.
 +
*
 +
* Used by chanserv/akick and chanserv/enforce.
 +
*
 +
* Users with this permission can modify the AKICK list.
 +
*/
 +
privilege
 +
{
 +
name = "AKICK"
 +
rank = 250
 +
level = 10
 +
flag = "K"
 +
xop = "SOP"
 +
}
 +
 +
/*
 +
* ASSIGN privilege.
 +
*
 +
* Used by botserv/assign.
 +
*
 +
* Users with this permission can assign and unassign BotServ bots to and from the channel.
 +
*/
 +
privilege
 +
{
 +
name = "ASSIGN"
 +
rank = 270
 +
level = "founder"
 +
flag = "s"
 +
xop = "QOP"
 +
}
 +
 +
/*
 +
* AUTOHALFOP privilege.
 +
*
 +
* Used by the core.
 +
*
 +
* Users with this permission get halfop on join.
 +
*/
 +
privilege
 +
{
 +
name = "AUTOHALFOP"
 +
rank = 100
 +
level = 4
 +
flag = "H"
 +
xop = "HOP"
 +
}
 +
 +
/*
 +
* AUTOOP privilege.
 +
*
 +
* Used by the core.
 +
*
 +
* Users with this permission get op on join.
 +
*/
 +
privilege
 +
{
 +
name = "AUTOOP"
 +
rank = 210
 +
level = 5
 +
flag = "O"
 +
xop = "AOP"
 +
}
 +
 +
/*
 +
* AUTOOWNER privilege.
 +
*
 +
* Used by the core.
 +
*
 +
* Users with this permission get owner on join.
 +
*/
 +
privilege
 +
{
 +
name = "AUTOOWNER"
 +
rank = 330
 +
level = 9999
 +
flag = "Q"
 +
xop = "QOP"
 +
}
 +
 +
/*
 +
* AUTOPROTECT privilege.
 +
*
 +
* Used by the core.
 +
*
 +
* Users with this permission get admin on join.
 +
*/
 +
privilege
 +
{
 +
name = "AUTOPROTECT"
 +
rank = 240
 +
level = 10
 +
flag = "A"
 +
xop = "SOP"
 +
}
 +
 +
/*
 +
* AUTOVOICE privilege.
 +
*
 +
* Used by the core.
 +
*
 +
* Users with this permission get voice on join.
 +
*/
 +
privilege
 +
{
 +
name = "AUTOVOICE"
 +
rank = 50
 +
level = 3
 +
flag = "V"
 +
xop = "VOP"
 +
}
 +
 +
/*
 +
* BADWORDS privilege.
 +
*
 +
* Used by botserv/badwords.
 +
*
 +
* Users with this permission can modify BotServ's BADWORDS list.
 +
*/
 +
privilege
 +
{
 +
name = "BADWORDS"
 +
rank = 260
 +
level = 10
 +
flag = "K"
 +
xop = "SOP"
 +
}
 +
 +
/*
 +
* BAN privilege.
 +
*
 +
* Used by chanserv/ban.
 +
*
 +
* Users with this permission can use the BAN command.
 +
*/
 +
privilege
 +
{
 +
name = "BAN"
 +
rank = 150
 +
level = 4
 +
flag = "b"
 +
xop = "HOP"
 +
}
 +
 +
/*
 +
* FANTASIA privilege.
 +
*
 +
* Used by botserv/main and chanserv/xop.
 +
*
 +
* Users with this permission can use fantasy commands in the channel.
 +
*/
 +
privilege
 +
{
 +
name = "FANTASIA"
 +
rank = 30
 +
level = 3
 +
flag = "c"
 +
xop = "VOP"
 +
}
 +
 +
/*
 +
* FOUNDER privilege.
 +
*
 +
* Used by chanserv/access, chanserv/akick,
 +
* chanserv/drop, chanserv/set/founder,
 +
* chanserv/set/securefounder, chanserv/set/successor and chanserv/xop.
 +
*
 +
* Users with this permission are treated as founders and can use
 +
* commands restricted to founders.
 +
*/
 +
privilege
 +
{
 +
name = "FOUNDER"
 +
rank = 360
 +
level = 10000
 +
flag = "F"
 +
xop = "QOP"
 +
}
 +
 +
/*
 +
* GETKEY privilege.
 +
*
 +
* Used by chanserv/getkey and nickserv/ajoin.
 +
*
 +
* Users with this permission can get they channel key with GETKEY and
 +
* can use nickserv/ajoin to join channels with keys.
 +
*/
 +
privilege
 +
{
 +
name = "GETKEY"
 +
rank = 180
 +
level = 5
 +
flag = "G"
 +
xop = "AOP"
 +
}
 +
 +
/*
 +
* HALFOP privilege.
 +
*
 +
* Used by chanserv/mode, chanserv/halfop and chanserv/dehalfop.
 +
*
 +
* Users with this permission can use ChanServ to halfop and dehalfop
 +
* others in the channel.
 +
*/
 +
privilege
 +
{
 +
name = "HALFOP"
 +
rank = 120
 +
level = 5
 +
flag = "h"
 +
xop = "AOP"
 +
}
 +
 +
/*
 +
* HALFOPME privilege.
 +
*
 +
* Used by chanserv/mode, chanserv/halfop and chanserv/dehalfop.
 +
*
 +
* Users with this permission can use ChanServ to halfop and dehalfop
 +
* themselves in the channel.
 +
*/
 +
privilege
 +
{
 +
name = "HALFOPME"
 +
rank = 110
 +
level = 4
 +
flag = "h"
 +
xop = "HOP"
 +
}
 +
 +
/*
 +
* INFO privilege.
 +
*
 +
* Used by botserv/info and chanserv/info.
 +
*
 +
* Users with this permission are allowed to get the full INFO output
 +
* from BotServ and ChanServ.
 +
*/
 +
privilege
 +
{
 +
name = "INFO"
 +
rank = 80
 +
level = 9999
 +
flag = "I"
 +
xop = "QOP"
 +
}
 +
 +
/*
 +
* INVITE privilege.
 +
*
 +
* Used by chanserv/invite and nickserv/ajoin.
 +
*
 +
* Users with this permission can invite users through ChanServ and
 +
* join invite only channels with nickserv/ajoin.
 +
*/
 +
privilege
 +
{
 +
name = "INVITE"
 +
rank = 190
 +
level = 5
 +
flag = "i"
 +
xop = "AOP"
 +
}
 +
 +
/*
 +
* KICK privilege.
 +
*
 +
* Used by chanserv/kick.
 +
*
 +
* Users with this permission can use the KICK command.
 +
*/
 +
privilege
 +
{
 +
name = "KICK"
 +
rank = 130
 +
level = 4
 +
flag = "k"
 +
xop = "HOP"
 +
}
 +
 +
/*
 +
* MEMO privilege.
 +
*
 +
* Used by memoserv/del, memoserv/ignore, memoserv/info, memoserv/list,
 +
* memoserv/main, memoserv/read and memoserv/set.
 +
*
 +
* Users with this permission can manage channel memos.
 +
*/
 +
privilege
 +
{
 +
name = "MEMO"
 +
rank = 280
 +
level = 10
 +
flag = "m"
 +
xop = "SOP"
 +
}
 +
 +
/*
 +
* MODE privilege.
 +
*
 +
* Used by chanserv/mode.
 +
*
 +
* Users with this permission can set modes through ChanServ and change
 +
* the mode lock.
 +
*/
 +
privilege
 +
{
 +
name = "MODE"
 +
rank = 170
 +
level = 9999
 +
flag = "s"
 +
xop = "QOP"
 +
}
 +
 +
/*
 +
* NOKICK privilege.
 +
*
 +
* Used by botserv/kick.
 +
*
 +
* Users with this permission are spared from automated BotServ kicks.
 +
*/
 +
privilege
 +
{
 +
name = "NOKICK"
 +
rank = 20
 +
level = 1
 +
flag = "N"
 +
xop = "VOP"
 +
}
 +
 +
/*
 +
* OP privilege.
 +
*
 +
* Used by chanserv/mode, chanserv/modes.
 +
*
 +
* Users with this permission can use ChanServ to op and deop
 +
* others in the channel.
 +
*/
 +
privilege
 +
{
 +
name = "OP"
 +
rank = 230
 +
level = 5
 +
flag = "o"
 +
xop = "SOP"
 +
}
 +
 +
/*
 +
* OPME privilege.
 +
*
 +
* Used by chanserv/mode, chanserv/modes.
 +
*
 +
* Users with this permission can use ChanServ to op and deop
 +
* themselves in the channel.
 +
*/
 +
privilege
 +
{
 +
name = "OPME"
 +
rank = 220
 +
level = 5
 +
flag = "o"
 +
xop = "AOP"
 +
}
 +
 +
/*
 +
* OWNER privilege.
 +
*
 +
* Used by chanserv/mode and chanserv/modes.
 +
*
 +
* Users with this permission can use ChanServ to owner and deowner
 +
* others in the channel.
 +
*/
 +
privilege
 +
{
 +
name = "OWNER"
 +
rank = 350
 +
level = "founder"
 +
flag = "q"
 +
xop = "QOP"
 +
}
 +
 +
/*
 +
* OWNERME privilege.
 +
*
 +
* Used by chanserv/mode and chanserv/modes.
 +
*
 +
* Users with this permission can use ChanServ to owner and deowner
 +
* themselves in the channel.
 +
*/
 +
privilege
 +
{
 +
name = "OWNERME"
 +
rank = 340
 +
level = 9999
 +
flag = "q"
 +
xop = "QOP"
 +
}
 +
 +
/*
 +
* PROTECT privilege.
 +
*
 +
* Used by chanserv/mode and chanserv/modes.
 +
*
 +
* Users with this permission can use ChanServ to protect and deprotect
 +
* others in the channel.
 +
*/
 +
privilege
 +
{
 +
name = "PROTECT"
 +
rank = 310
 +
level = 9999
 +
flag = "a"
 +
xop = "QOP"
 +
}
 +
 +
/*
 +
* PROTECTME privilege.
 +
*
 +
* Used by chanserv/mode and chanserv/modes.
 +
*
 +
* Users with this permission can use ChanServ to protect and deprotect
 +
* themselves in the channel.
 +
*/
 +
privilege
 +
{
 +
name = "PROTECTME"
 +
rank = 300
 +
level = 10
 +
flag = "a"
 +
xop = "AOP"
 +
}
 +
 +
/*
 +
* SAY privilege.
 +
*
 +
* Used by botserv/control.
 +
*
 +
* Users with this permission can use the BotServ bot in the channel to
 +
* say or do a /me with the provided message.
 +
*/
 +
privilege
 +
{
 +
name = "SAY"
 +
rank = 90
 +
level = 5
 +
flag = "B"
 +
xop = "AOP"
 +
}
 +
 +
/*
 +
* SET privilege.
 +
*
 +
* Used by botserv/kick, botserv/set, chanserv/clone, chanserv/log,
 +
* chanserv/saset/noexpire and chanserv/set.
 +
*
 +
* Users with this permission can set what BotServ will kick for, change
 +
* BotServ and ChanServ settings, clone ChanServ channel setings, and
 +
* set ChanServ logging options.
 +
*/
 +
privilege
 +
{
 +
name = "SET"
 +
rank = 320
 +
level = 9999
 +
flag = "s"
 +
xop = "QOP"
 +
}
 +
 +
/*
 +
* SIGNKICK privilege.
 +
*
 +
* Used by chanserv/ban and chanserv/kick.
 +
*
 +
* Users with this permission won't get their nick shown in the kick
 +
* through ChanServ when the setting SIGNKICK is set to LEVEL.
 +
*/
 +
privilege
 +
{
 +
name = "SIGNKICK"
 +
rank = 140
 +
level = 9999
 +
flag = "K"
 +
xop = "QOP"
 +
}
 +
 +
/*
 +
* TOPIC privilege.
 +
*
 +
* Used by chanserv/topic.
 +
*
 +
* Users with this permission can change the channel topic through ChanServ.
 +
*/
 +
privilege
 +
{
 +
name = "TOPIC"
 +
rank = 160
 +
level = 5
 +
flag = "t"
 +
xop = "AOP"
 +
}
 +
 +
/*
 +
* UNBAN privilege.
 +
*
 +
* Used by chanserv/unban.
 +
*
 +
* Users with this permission can unban themselves and others through ChanServ.
 +
*/
 +
privilege
 +
{
 +
name = "UNBAN"
 +
rank = 200
 +
level = 4
 +
flag = "u"
 +
xop = "HOP"
 +
}
 +
 +
/*
 +
* VOICE privilege.
 +
*
 +
* Used by chanserv/mode and chanserv/modes.
 +
*
 +
* Users with this permission can use ChanServ to voice and devoice
 +
* others in the channel.
 +
*/
 +
privilege
 +
{
 +
name = "VOICE"
 +
rank = 70
 +
level = 4
 +
flag = "v"
 +
xop = "HOP"
 +
}
 +
 +
/*
 +
* VOICEME privilege.
 +
*
 +
* Used by chanserv/mode and chanserv/modes.
 +
*
 +
* Users with this permission can use ChanServ to voice and devoice
 +
* themselves in the channel.
 +
*/
 +
privilege
 +
{
 +
name = "VOICEME"
 +
rank = 60
 +
level = 3
 +
flag = "v"
 +
xop = "VOP"
 +
}
 +
 +
/*
 +
* 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.
 +
*/
 +
 +
/* Command group configuration for ChanServ.
 +
*
 +
* Commands may optionally be placed into groups to make ChanServ's HELP output easier to understand.
 +
* Remove the following groups to use the old behavior of simply listing all ChanServ commands from HELP.
 +
*/
 +
command_group
 +
{
 +
name = "chanserv/access"
 +
description = _("Used to manage the list of privileged users")
 +
}
 +
 +
command_group
 +
{
 +
name = "chanserv/status"
 +
description = _("Used to modify the channel status of you or other users")
 +
}
 +
 +
command_group
 +
{
 +
name = "chanserv/management"
 +
description = _("Used to manage channels")
 +
}
 +
 +
command_group
 +
{
 +
name = "chanserv/admin"
 +
description = _("Services Operator commands")
 +
}
 +
 +
/* 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 using a levels system. Allows allows redefining which privileges
 +
* are representated by given level on a per channel basis.
 +
*
 +
* The "LIST" subcommand of chanserv/access will show every access entry on the channel, including access
 +
* entries not added by cs_access. The "level" of these entries will be the representation of the access
 +
* entry by the other access system, which could be an XOP command name, or a set of flags.
 +
*/
 +
module { name = "cs_access" }
 +
command { service = "ChanServ"; name = "ACCESS"; command = "chanserv/access"; group = "chanserv/access"; }
 +
command { service = "ChanServ"; name = "LEVELS"; command = "chanserv/levels"; group = "chanserv/access"; }
 +
 +
/*
 +
* cs_akick
 +
*
 +
* Provides the command chanserv/akick.
 +
*
 +
* Used for preventing users from joining channels.
 +
*/
 +
module
 +
{
 +
name = "cs_akick"
 +
 +
/*
 +
* 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"
 +
}
 +
command { service = "ChanServ"; name = "AKICK"; command = "chanserv/akick"; group = "chanserv/management"; }
 +
 +
/*
 +
* cs_ban
 +
*
 +
* Provides the command chanserv/ban.
 +
*
 +
* The configuration option 'kick' may be set in a command block for this command to control
 +
* whether or not users will be kicked from the channel once banned. The default is 'yes'.
 +
*
 +
* The configuration option 'mode' may be set to control which mode is set, such as BAN or QUIET.
 +
* The default is BAN.
 +
*
 +
* Used for banning users from channels.
 +
*/
 +
module { name = "cs_ban" }
 +
command { service = "ChanServ"; name = "BAN"; command = "chanserv/ban"; }
 +
 +
/*
 +
* 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"; group = "chanserv/management"; }
 +
 +
/*
 +
* 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"; group = "chanserv/management"; }
 +
 +
/*
 +
* cs_entrymsg
 +
*
 +
* Provides the command chanserv/entrymsg.
 +
*
 +
* Used to configure entry messages sent to users when they join a channel.
 +
*/
 +
module
 +
{
 +
name = "cs_entrymsg"
 +
 +
/* The maximum number of entrymsgs allowed per channel. If not set, defaults to 5. */
 +
maxentries = 5
 +
}
 +
command { service = "ChanServ"; name = "ENTRYMSG"; command = "chanserv/entrymsg"; group = "chanserv/management"; }
 +
 +
/*
 +
* cs_flags
 +
*
 +
* Provides the command chanserv/flags.
 +
* Provides the access system "flags".
 +
*
 +
* Used for giving users access in channels.
 +
*
 +
* The "LIST" subcommand of chanserv/flags will show every access entry on the channel, including access
 +
* entries not added by cs_flags. The "Flags" of these entries will be the flags representation of the
 +
* privilege set granted by the access entry.
 +
*/
 +
module { name = "cs_flags" }
 +
command { service = "ChanServ"; name = "FLAGS"; command = "chanserv/flags"; group = "chanserv/access"; }
 +
 +
/*
 +
* 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"; }
 +
 +
/*
 +
* cs_list
 +
*
 +
* Provides the commands:
 +
*  chanserv/list - Used for retrieving and searching the registered channel list.
 +
*  chanserv/set/private - Used for setting whether channels should show up in chanserv/list.
 +
*/
 +
module
 +
{
 +
name = "cs_list"
 +
 +
/*
 +
* The maximum number of channels to be returned for a ChanServ LIST command.
 +
*/
 +
listmax = 50
 +
}
 +
command { service = "ChanServ"; name = "LIST"; command = "chanserv/list"; }
 +
 +
command { service = "ChanServ"; name = "SET PRIVATE"; command = "chanserv/set/private"; }
 +
 +
 +
/*
 +
* cs_log
 +
*
 +
* Provides the command chanserv/log.
 +
*
 +
* Use for configuring what actions on channels are logged and where.
 +
*/
 +
module
 +
{
 +
name = "cs_log"
 +
 +
/* Default log settings for newly registered channels */
 +
 +
#default
 +
{
 +
command = "chanserv/modes"
 +
method = "MESSAGE @"
 +
}
 +
 +
#default
 +
{
 +
service = "ChanServ"
 +
command = "ACCESS"
 +
method = "MESSAGE @"
 +
}
 +
 +
#default
 +
{
 +
command = "chanserv/xop"
 +
method = "MESSAGE @"
 +
}
 +
 +
#default
 +
{
 +
service = "ChanServ"
 +
command = "FLAGS"
 +
method = "MESSAGE @"
 +
}
 +
}
 +
command { service = "ChanServ"; name = "LOG"; command = "chanserv/log"; group = "chanserv/management"; }
 +
 +
/*
 +
* cs_mode
 +
*
 +
* Provides the command chanserv/mode and chanserv/modes.
 +
*
 +
* Used for changing mode locks and changing modes. Multiple commands may be mapped to chanserv/modes, the
 +
* configuration directive 'set' and 'unset' are used to tell chanserv/modes which modes should be set or
 +
* unset when the command is executed.
 +
*/
 +
module
 +
{
 +
name = "cs_mode"
 +
 +
/*
 +
* Default modes for mode lock, these are set on newly registered channels.
 +
*
 +
* If not set, the default is +nt.
 +
*/
 +
mlock = "+nt"
 +
}
 +
command { service = "ChanServ"; name = "MODE"; command = "chanserv/mode"; group = "chanserv/management"; }
 +
 +
command { service = "ChanServ"; name = "OWNER"; command = "chanserv/modes"; group = "chanserv/status"; set = "OWNER" }
 +
command { service = "ChanServ"; name = "DEOWNER"; command = "chanserv/modes"; group = "chanserv/status"; unset = "OWNER" }
 +
 +
command { service = "ChanServ"; name = "PROTECT"; command = "chanserv/modes"; group = "chanserv/status"; set = "PROTECT" }
 +
command { service = "ChanServ"; name = "DEPROTECT"; command = "chanserv/modes"; group = "chanserv/status"; unset = "PROTECT" }
 +
 +
command { service = "ChanServ"; name = "OP"; command = "chanserv/modes"; group = "chanserv/status"; set = "OP" }
 +
command { service = "ChanServ"; name = "DEOP"; command = "chanserv/modes"; group = "chanserv/status"; unset = "OP" }
 +
 +
command { service = "ChanServ"; name = "HALFOP"; command = "chanserv/modes"; group = "chanserv/status"; set = "HALFOP" }
 +
command { service = "ChanServ"; name = "DEHALFOP"; command = "chanserv/modes"; group = "chanserv/status"; unset = "HALFOP" }
 +
 +
command { service = "ChanServ"; name = "VOICE"; command = "chanserv/modes"; group = "chanserv/status"; set = "VOICE" }
 +
command { service = "ChanServ"; name = "DEVOICE"; command = "chanserv/modes"; group = "chanserv/status"; unset = "VOICE" }
 +
 +
 +
/*
 +
* 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"
 +
 +
/* If set, uses the older 1.8 style seen, which is less resource intensive */
 +
simple = false
 +
 +
/* Sets the time to keep seen entries in the seen database. */
 +
purgetime = "30d"
 +
 +
/* Sets the delay between checks for expired seen entries. */
 +
expiretimeout = "1d"
 +
}
 +
command { service = "OperServ"; name = "SEEN"; command = "operserv/seen"; permission = "operserv/seen"; }
 +
 +
/*
 +
* cs_set
 +
*
 +
* Provides the commands:
 +
*  chanserv/set and chanserv/saset - Dummy help wrappers for the SET commands.
 +
*  chanserv/set/autoop - Used for configuring whether or not ChanServ automatically gives channel status to users.
 +
*  chanserv/set/bantype - Used for controlling what format of bans are placed on channels.
 +
*  chanserv/set/description - Used for changing channels descriptions.
 +
*  chanserv/set/founder - Used for changing a channel's founder.
 +
*  chanserv/set/keepmodes - Used for enabling or disabling keepmodes, which retains channel modes.
 +
*  chanserv/set/peace - Used for configuring if users are able to kick other users with higher access than them.
 +
*  chanserv/set/persist - Used for setting whether ChanServ should stay in channels after the last user leaves.
 +
*  chanserv/set/restricted - Used for setting whether users not on a channel's access list can join.
 +
*  chanserv/set/secure - Used for setting whether users who are recognized for accounts should have their access in channels.
 +
*  chanserv/set/securefounder - Used for setting whether users with founder level access in channels have true founder or not.
 +
*  chanserv/set/secureops - Used for restricting who can have channel op privilege in a channel to those whom have access in the channel.
 +
*  chanserv/set/signkick - Used for setting signkick, which appends the kicker's name to kicks sent through ChanServ.
 +
*  chanserv/set/successor - Used for setting channel successors, which become channel founders if the founders' account expires.
 +
*  chanserv/saset/noexpire - Used for setting noexpire, which prevents channels from expiring.
 +
*
 +
* This is a dummy command to provide a help wrapper for the various SET commands.
 +
*/
 +
module
 +
{
 +
name = "cs_set"
 +
 +
/*
 +
* The default ban type for newly registered channels.
 +
*
 +
* 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
 +
 +
/*
 +
* If set, persisent channels have their creation times lowered to their
 +
* original registration dates.
 +
*/
 +
persist_lower_ts = true
 +
}
 +
command { service = "ChanServ"; name = "SET"; command = "chanserv/set"; group = "chanserv/management"; }
 +
command { service = "ChanServ"; name = "SET AUTOOP"; command = "chanserv/set/autoop"; }
 +
command { service = "ChanServ"; name = "SET BANTYPE"; command = "chanserv/set/bantype"; }
 +
command { service = "ChanServ"; name = "SET DESCRIPTION"; command = "chanserv/set/description"; }
 +
command { service = "ChanServ"; name = "SET DESC"; command = "chanserv/set/description"; }
 +
command { service = "ChanServ"; name = "SET FOUNDER"; command = "chanserv/set/founder"; }
 +
command { service = "ChanServ"; name = "SET KEEPMODES"; command = "chanserv/set/keepmodes"; }
 +
command { service = "ChanServ"; name = "SET PEACE"; command = "chanserv/set/peace"; }
 +
command { service = "ChanServ"; name = "SET PERSIST"; command = "chanserv/set/persist"; }
 +
command { service = "ChanServ"; name = "SET RESTRICTED"; command = "chanserv/set/restricted"; }
 +
command { service = "ChanServ"; name = "SET SECURE"; command = "chanserv/set/secure"; }
 +
command { service = "ChanServ"; name = "SET SECUREFOUNDER"; command = "chanserv/set/securefounder"; }
 +
command { service = "ChanServ"; name = "SET SECUREOPS"; command = "chanserv/set/secureops"; }
 +
command { service = "ChanServ"; name = "SET SIGNKICK"; command = "chanserv/set/signkick"; }
 +
command { service = "ChanServ"; name = "SET SUCCESSOR"; command = "chanserv/set/successor"; }
 +
command { service = "ChanServ"; name = "SET NOEXPIRE"; command = "chanserv/saset/noexpire"; permission = "chanserv/saset/noexpire"; }
 +
 +
/*
 +
* 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.
 +
* A field named misc_description may be given for use with help output.
 +
*/
 +
module { name = "cs_set_misc" }
 +
command { service = "ChanServ"; name = "SET URL"; command = "chanserv/set/misc"; misc_description = _("Associate a URL with the channel"); }
 +
command { service = "ChanServ"; name = "SET EMAIL"; command = "chanserv/set/misc"; misc_description = _("Associate an E-mail address with the channel"); }
 +
 +
/*
 +
* cs_status
 +
*
 +
* Provides the command chanserv/status.
 +
*
 +
* Used for determining a user's access on a channel and whether
 +
* or not they match any autokick entries.
 +
*/
 +
module { name = "cs_status" }
 +
command { service = "ChanServ"; name = "STATUS"; command = "chanserv/status"; }
 +
 +
/*
 +
* 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"
 +
 +
/*
 +
* The length of time before a suspended channel expires.
 +
*
 +
* This directive is optional.
 +
* If not set, the default is never.
 +
*/
 +
expire = 90d
 +
 +
/*
 +
* Settings to show to non-opers in ChanServ's INFO output.
 +
* Comment to completely disable showing any information about
 +
* suspended channels to non-opers.
 +
*/
 +
show = "suspended, by, reason, on, expires"
 +
}
 +
command { service = "ChanServ"; name = "SUSPEND"; command = "chanserv/suspend"; permission = "chanserv/suspend"; group = "chanserv/admin"; }
 +
command { service = "ChanServ"; name = "UNSUSPEND"; command = "chanserv/unsuspend"; permission = "chanserv/suspend"; group = "chanserv/admin"; }
 +
 +
/*
 +
* 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"; group = "chanserv/management"; }
 +
 +
/*
 +
* cs_topic
 +
*
 +
* Provides the commands:
 +
*  chanserv/topic - Used for changing the channel topic. Useful in conjunction with chanserv/set/topiclock.
 +
*  chanserv/set/keeptopic - Used for configuring if ChanServ is to restore the channel topic when a channel is created.
 +
*
 +
*/
 +
module { name = "cs_topic" }
 +
command { service = "ChanServ"; name = "TOPIC"; command = "chanserv/topic"; group = "chanserv/management"; }
 +
command { service = "ChanServ"; name = "SET KEEPTOPIC"; command = "chanserv/set/keeptopic"; }
 +
 +
/*
 +
* 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_updown
 +
*
 +
* Provides the commands chanserv/up and chanserv/down.
 +
*
 +
* Used for setting or removing your status modes on a channel.
 +
*/
 +
module { name = "cs_updown" }
 +
command { service = "ChanServ"; name = "DOWN"; command = "chanserv/down"; group = "chanserv/status"; }
 +
command { service = "ChanServ"; name = "UP"; command = "chanserv/up"; group = "chanserv/status"; }
 +
 +
/*
 +
* cs_xop
 +
*
 +
* Provides the command chanserv/xop.
 +
* Provides the access system "XOP".
 +
*
 +
* Used for giving users access in channels. Many commands may be linked to chanserv/xop, but the
 +
* privileges given by each is determined by the privilege:xop settings above. These commands should
 +
* be ordered from highest to lowest, as each command inherits the privileges of the commands below
 +
* it.
 +
*
 +
* The "LIST" subcommand of chanserv/xop will show only XOP access entries of the given XOP type. You
 +
* can not view the entire access list at once, and instead should use another access system to do that.
 +
*/
 +
module { name = "cs_xop" }
 +
command { service = "ChanServ"; name = "QOP"; command = "chanserv/xop"; group = "chanserv/access"; }
 +
command { service = "ChanServ"; name = "SOP"; command = "chanserv/xop"; group = "chanserv/access"; }
 +
command { service = "ChanServ"; name = "AOP"; command = "chanserv/xop"; group = "chanserv/access"; }
 +
command { service = "ChanServ"; name = "HOP"; command = "chanserv/xop"; group = "chanserv/access"; }
 +
command { service = "ChanServ"; name = "VOP"; command = "chanserv/xop"; group = "chanserv/access"; }
 +
 +
 +
/*
 +
* Extra ChanServ related modules.
 +
*/
 +
 +
/*
 +
* cs_statusupdate
 +
*
 +
* This module automatically updates users status on channels when the
 +
* channel's access list is modified.
 +
*/
 +
module { name = "cs_statusupdate" }
 +
 +
</syntaxhighlight>
 +
</div>
  
 
=== MemoServ ===
 
=== MemoServ ===

Revision as of 21:59, 31 May 2014

Language

English

Configuration

NickServ

/*
 * Example configuration file for NickServ.
 */
 
/*
 * First, create the service.
 */
service
{
	/*
	 * The name of the NickServ client.
	 * If you change this value, you probably want to change the client directive in the configuration for the nickserv module too.
	 */
	nick = "NickServ"
 
	/*
	 * The username of the NickServ client.
	 */
	user = "services"
 
	/*
	 * The hostname of the NickServ client.
	 */
	host = "services.host"
 
	/*
	 * The realname of the NickServ client.
	 */
	gecos = "Nickname 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"
 
	/*
	 * An optional comma separated list of channels this service should join. Outside
	 * of log channels this is not very useful, as the service will just idle in the
	 * specified channels, and will not accept any types of commands.
	 *
	 * Prefixes may be given to the channels in the form of mode characters or prefix symbols.
	 */
	#channels = "@#services,#mychan"
}
 
/*
 * Core NickServ module.
 *
 * Provides essential functionality for NickServ.
 */
module
{
	name = "nickserv"
 
	/*
	 * The name of the client that should be NickServ.
	 */
	client = "NickServ"
 
	/*
	 * Force users to give an e-mail address when they register a nick.
	 *
	 * This directive defaults to "yes" and is recommended to be enabled. This is required if e-mail registration is enabled.
	 */
	forceemail = yes
 
	/*
	 * Require users who change their email address to confirm they
	 * own their new email.
	 */
	confirmemailchanges = no
 
	/*
	 * A message sent to users on connect if they use an unregistered nick.
	 *
	 * This directive is optional.
	 */
	#unregistered_notice = "Your nickname is not registered. To register it, use: /msg NickServ REGISTER password email"
 
	/*
	 * 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:
	 * -   killprotect: Kill nick if not identified within 60 seconds
	 * -    kill_quick: Kill nick if not identified within 20 seconds, this one overrides the above
	 *                    option and the above must be specified with this one
	 * -     ns_secure: Enable nickname security, requiring the nick's password before any operations
	 *                    can be done on it
	 * -    ns_private: Hide the nick from NickServ's LIST command
	 * -    hide_email: Hide's the nick's e-mail address from NickServ's INFO command
	 * -     hide_mask: Hide's the nick's last or current user@host from NickServ's INFO command
	 * -     hide_quit: Hide's the nick's last quit message
	 * -   memo_signon: Notify user if they have a new memo when they sign into the nick
	 * -  memo_receive: Notify user if they have a new memo as soon as it's received
	 * -     memo_mail: Notify user if they have a new memo by mail
	 * -        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
	 *                    options:useprivmsg to be enabled as well
	 * -  ns_keepmodes: Enables keepmodes, which retains user modes across sessions
	 *
	 * This directive is optional, if left blank, the options will default to ns_secure, memo_signon, and
	 * memo_receive. If you really want no defaults, use "none" by itself as the option.
	 */
	defaults = "ns_secure ns_private hide_email hide_mask memo_signon memo_receive autoop"
 
	/*
	 * 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 length of time before a nick's registration expires.
	 *
	 * This directive is optional, but recommended. If not set, the default is 21 days.
	 */
	expire = 21d
 
	/*
	 * Prevents the use of the ACCESS and CERT (excluding their LIST subcommand), DROP, FORBID, SUSPEND,
	 * GETPASS and SET PASSWORD commands by services operators on other services operators.
	 *
	 * This directive is optional, but recommended.
	 */
	secureadmins = 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.
	 */
	modeonid = yes
 
	/*
	 * If set, Services will set these user modes on any user who identifies.
	 *
	 * This directive is optional.
	 */
	#modesonid = "+R"
 
	/*
	 * If set, Services will not show netsplits in the last quit message field
	 * of NickServ's INFO command.
	 */
	hidenetsplitquit = no
 
	/*
	 * If set, is the length of time NickServ's killquick and kill options wait before
	 * forcing users off of protected nicknames.
	 */
	killquick = 20s
	kill = 60s
 
	/*
	 * If set, forbids the registration of nicks that contain an existing
	 * nick with Services access. For example, if Tester is a Services Oper,
	 * you can't register NewTester or Tester123 unless you are an IRC
	 * Operator.
	 *
	 * NOTE: If you enable this, you will have to be logged in as an IRC
	 * operator in order to register a Services Root nick when setting up
	 * Anope for the first time.
	 *
	 * This directive is optional.
	 */
	#restrictopernicks = yes
 
	/*
	 * The username, and possibly hostname, used for fake users created when Services needs to
	 * hold a nickname.
	 */
	enforceruser = "enforcer"
	enforcerhost = "services.host"
 
	/*
	 * The length of time Services hold nicknames.
	 *
	 * This directive is optional, but recommended. If not set it defaults to 1 minute.
	 */
	releasetimeout = 1m
 
	/*
	 * 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.
	 * Make sure this is a valid nick and Nicklen+7 is not longer than the allowed Nicklen on your ircd.
	 *
	 * This directive is optional. If not set it defaults to "Guest"
	 */
	guestnickprefix = "Guest"
 
	/*
	 * If set, Services do not allow ownership of nick names, only ownership of accounts.
	 */
	nonicknameownership = no
 
	/*
	 * The maximum length of passwords
	 *
	 * This directive is optional. If not set it defaults to 32.
	 */
	passlen = 32
}
 
/*
 * Core NickServ 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.
 */
 
/* Command group configuration for NickServ.
 *
 * Commands may optionally be placed into groups to make NickServ's HELP output easier to understand.
 * Remove the following groups to use the old behavior of simply listing all NickServ commands from HELP.
 */
command_group
{
	name = "nickserv/admin"
	description = _("Services Operator commands")
}
 
/* Give it a help command. */
command { service = "NickServ"; name = "HELP"; command = "generic/help"; }
 
/*
 * ns_access
 *
 * Provides the command nickserv/access.
 *
 * Used for configuring what hosts have access to your account.
 */
module
{
	name = "ns_access"
 
	/*
	 * The maximum number of entries allowed on a nickname's access list.
	 * If not set, the default is 32. This number cannot be set to 0.
	 */
	accessmax = 32
 
	/*
	 * 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
}
command { service = "NickServ"; name = "ACCESS"; command = "nickserv/access"; }
 
/*
 * ns_ajoin
 *
 * Provides the command nickserv/ajoin.
 *
 * Used for configuring channels to join once you identify.
 */
module
{
	name = "ns_ajoin"
 
	/*
	 * The maximum number of channels a user can have on NickServ's AJOIN command.
	 */
	ajoinmax = 10
}
command { service = "NickServ"; name = "AJOIN"; command = "nickserv/ajoin"; }
 
/*
 * ns_alist
 *
 * Provides the command nickserv/alist.
 *
 * Used for viewing what channels you have access to.
 */
module { name = "ns_alist" }
command { service = "NickServ"; name = "ALIST"; command = "nickserv/alist"; }
 
/*
 * ns_cert
 *
 * Provides the command nickserv/cert.
 *
 * Used for configuring your SSL certificate list, which can be used to automatically identify you.
 */
module
{
	name = "ns_cert"
 
	/*
	 * The maximum number of entries allowed on a nickname's certificate fingerprint list.
	 * The default is 5. This number cannot be set to 0.
	 */
	max = 5
}
command { service = "NickServ"; name = "CERT"; command = "nickserv/cert"; }
 
/*
 * ns_drop
 *
 * Provides the command nickserv/drop.
 *
 * Used for unregistering names.
 */
module { name = "ns_drop" }
command { service = "NickServ"; name = "DROP"; command = "nickserv/drop"; }
 
/*
 * ns_getemail
 *
 * Provides the command nickserv/getemail.
 *
 * Used for getting registered accounts by searching for emails.
 */
module { name = "ns_getemail" }
command { service = "NickServ"; name = "GETEMAIL"; command = "nickserv/getemail"; permission = "nickserv/getemail"; group = "nickserv/admin"; }
 
/*
 * ns_getpass
 *
 * Provides the command nickserv/getpass.
 *
 * Used for getting users passwords.
 *
 * Requires no encryption is being used.
 */
#module { name = "ns_getpass" }
#command { service = "NickServ"; name = "GETPASS"; command = "nickserv/getpass"; permission = "nickserv/getpass"; }
 
/*
 * ns_group
 *
 * Provides the commands nickserv/group, nickserv/glist, and nickserv/ungroup.
 *
 * Used for controlling nick groups.
 */
module
{
	name = "ns_group"
 
	/*
	 * 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
 
	/*
	 * If set, the NickServ GROUP command won't allow any group changes. This is recommended to
	 * prevent users from accidentally dropping their nicks, as it forces users to explicitly
	 * drop their nicks before adding it to another group.
	 *
	 * This directive is optional, but recommended.
	 */
	nogroupchange = yes
}
command { service = "NickServ"; name = "GLIST"; command = "nickserv/glist"; }
command { service = "NickServ"; name = "GROUP"; command = "nickserv/group"; }
command { service = "NickServ"; name = "UNGROUP"; command = "nickserv/ungroup"; }
 
/*
 * ns_identify
 *
 * Provides the command nickserv/identify.
 *
 * Used for identifying to accounts.
 */
module { name = "ns_identify" }
command { service = "NickServ"; name = "ID"; command = "nickserv/identify"; hide = true; }
command { service = "NickServ"; name = "IDENTIFY"; command = "nickserv/identify"; }
 
/*
 * ns_info
 *
 * Provides the commands:
 * nickserv/info. - Used for gathering information about an account.
 * nickserv/set/hide, nickserv/saset/hide - Used for configuring which options are publically shown in nickserv/info.
 *
 */
module { name = "ns_info" }
command { service = "NickServ"; name = "INFO"; command = "nickserv/info"; }
 
command { service = "NickServ"; name = "SET HIDE"; command = "nickserv/set/hide"; }
command { service = "NickServ"; name = "SASET HIDE"; command = "nickserv/saset/hide"; permission = "nickserv/saset/hide"; }
 
 
/*
 * ns_list
 *
 * Provides the commands:
 *   nickserv/list - Used for retrieving and searching the registered account list.
 *   nickserv/set/private, nickserv/saset/private - Used for configuring whether or a users account shows up in nickserv/list.
 *
 */
module
{
	name = "ns_list"
 
	/*
	 * The maximum number of nicks to be returned for a NickServ LIST command.
	 */
	listmax = 50
}
command { service = "NickServ"; name = "LIST"; command = "nickserv/list"; }
 
command { service = "NickServ"; name = "SET PRIVATE"; command = "nickserv/set/private"; }
command { service = "NickServ"; name = "SASET PRIVATE"; command = "nickserv/saset/private"; permission = "nickserv/saset/private"; }
 
 
/*
 * ns_logout
 *
 * Provides the command nickserv/logout.
 *
 * Used for logging out of your account.
 */
module { name = "ns_logout" }
command { service = "NickServ"; name = "LOGOUT"; command = "nickserv/logout"; }
 
/*
 * ns_recover
 *
 * Provides the command nickserv/recover.
 *
 * Used for recovering your nick from services or another user.
 */
module
{
	name = "ns_recover"
 
	/*
	 * If set, Services will svsnick and svsjoin users who use the recover
	 * command on an identified user to the nick and channels of the recovered user.
	 *
	 * This directive is opional.
	 */
	restoreonrecover = yes
}
command { service = "NickServ"; name = "RECOVER"; command = "nickserv/recover"; }
# Uncomment below to emulate 1.8's behavior of ghost and release.
#command { service = "NickServ"; name = "GHOST"; command = "nickserv/recover"; }
#command { service = "NickServ"; name = "RELEASE"; command = "nickserv/recover"; }
 
/*
 * ns_register
 *
 * Provides the commands nickserv/confirm, nickserv/register, and nickserv/resend.
 *
 * Used for registering accounts.
 */
module
{
	name = "ns_register"
 
	/*
	 * Registration confirmation setting. Set to "none" for no registration confirmation,
	 * "mail" for email confirmation, and "admin" to have services operators manually confirm
	 * every registration. Set to "disable" to completely disable all registrations.
	 */
	registration = "none"
 
	/*
	 * 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
 
	/*
	 * Prevents users from registering their nick if they are not connected
	 * for at least the given number of seconds.
	 *
	 * This directive is optional.
	 */
	#nickregdelay = 30s
 
	/*
	 * The length of time a user using an unconfirmed account has
	 * before the account will be released for general use again.
	 */
	#unconfirmedexpire = 1d
}
command { service = "NickServ"; name = "CONFIRM"; command = "nickserv/confirm"; }
command { service = "NickServ"; name = "REGISTER"; command = "nickserv/register"; }
command { service = "NickServ"; name = "RESEND"; command = "nickserv/resend"; }
 
/*
 * ns_resetpass
 *
 * Provides the command nickserv/resetpass.
 *
 * Used for resetting passwords by emailing users a temporary one.
 */
module { name = "ns_resetpass" }
command { service = "NickServ"; name = "RESETPASS"; command = "nickserv/resetpass"; }
 
/*
 * ns_set
 *
 * Provides the commands:
 *   nickserv/set, nickserv/saset - Dummy help wrappers for the SET and SASET commands.
 *   nickserv/set/autoop, nickserv/saset/autoop - Determines whether or not modes are automatically set users when joining a channel.
 *   nickserv/set/display, nickserv/saset/display - Used for setting a users display name.
 *   nickserv/set/email, nickserv/saset/email - Used for setting a users email address.
 *   nickserv/set/keepmodes, nickserv/saset/keepmodes - Configure whether or not services should retain a user's modes across sessions.
 *   nickserv/set/kill, nickserv/saset/kill - Used for configuring nickname protection.
 *   nickserv/set/language, nickserv/saset/language - Used for configuring what language services use.
 *   nickserv/set/message, nickserv/saset/message - Used to configure how services send messages to you.
 *   nickserv/set/password, nickserv/saset/password  - Used for changing a users password.
 *   nickserv/set/secure, nickserv/saset/secure - Used for configuring whether a user can identify by simply being recognized by nickserv/access.
 *   nickserv/saset/noexpire - Used for configuring noexpire, which prevents nicks from expiring.
 */
module
{
	name = "ns_set"
 
	/*
	 * Allow the use of the IMMED option in the NickServ SET KILL command.
	 *
	 * This directive is optional.
	 */
	#allowkillimmed = yes
}
 
command { service = "NickServ"; name = "SET"; command = "nickserv/set"; }
command { service = "NickServ"; name = "SASET"; command = "nickserv/saset"; permission = "nickserv/saset/"; group = "nickserv/admin"; }
 
command { service = "NickServ"; name = "SET AUTOOP"; command = "nickserv/set/autoop"; }
command { service = "NickServ"; name = "SASET AUTOOP"; command = "nickserv/saset/autoop"; permission = "nickserv/saset/autoop"; }
 
command { service = "NickServ"; name = "SET DISPLAY"; command = "nickserv/set/display"; }
command { service = "NickServ"; name = "SASET DISPLAY"; command = "nickserv/saset/display"; permission = "nickserv/saset/display"; }
 
command { service = "NickServ"; name = "SET EMAIL"; command = "nickserv/set/email"; }
command { service = "NickServ"; name = "SASET EMAIL"; command = "nickserv/saset/email"; permission = "nickserv/saset/email"; }
 
command { service = "NickServ"; name = "SET KEEPMODES"; command = "nickserv/set/keepmodes"; }
command { service = "NickServ"; name = "SASET KEEPMODES"; command = "nickserv/saset/keepmodes"; permission = "nickserv/saset/keepmodes"; }
 
command { service = "NickServ"; name = "SET KILL"; command = "nickserv/set/kill"; }
command { service = "NickServ"; name = "SASET KILL"; command = "nickserv/saset/kill"; permission = "nickserv/saset/kill"; }
 
command { service = "NickServ"; name = "SET LANGUAGE"; command = "nickserv/set/language"; }
command { service = "NickServ"; name = "SASET LANGUAGE"; command = "nickserv/saset/language"; permission = "nickserv/saset/language"; }
 
command { service = "NickServ"; name = "SET MESSAGE"; command = "nickserv/set/message"; }
command { service = "NickServ"; name = "SASET MESSAGE"; command = "nickserv/saset/message"; permission = "nickserv/saset/message"; }
 
command { service = "NickServ"; name = "SET PASSWORD"; command = "nickserv/set/password"; }
command { service = "NickServ"; name = "SASET PASSWORD"; command = "nickserv/saset/password"; permission = "nickserv/saset/password"; }
 
command { service = "NickServ"; name = "SET SECURE"; command = "nickserv/set/secure"; }
command { service = "NickServ"; name = "SASET SECURE"; command = "nickserv/saset/secure"; permission = "nickserv/saset/secure"; }
 
command { service = "NickServ"; name = "SASET NOEXPIRE"; command = "nickserv/saset/noexpire"; permission = "nickserv/saset/noexpire"; }
 
 
/*
 * ns_set_misc
 *
 * Provides the command nickserv/set/misc.
 *
 * Allows you to create arbitrary commands to set data, and have that data show up in nickserv/info.
 * A field named misc_description may be given for use with help output.
 */
module { name = "ns_set_misc" }
command { service = "NickServ"; name = "SET URL"; command = "nickserv/set/misc"; misc_description = _("Associate a URL with your account"); }
command { service = "NickServ"; name = "SASET URL"; command = "nickserv/saset/misc"; misc_description = _("Associate a URL with this account"); permission = "nickserv/saset/url"; group = "nickserv/admin"; }
#command { service = "NickServ"; name = "SET ICQ"; command = "nickserv/set/misc"; misc_description = _("Associate an ICQ account with your account"); }
#command { service = "NickServ"; name = "SASET ICQ"; command = "nickserv/saset/misc"; misc_description = _("Associate an ICQ account with this account"); permission = "nickserv/saset/icq"; group = "nickserv/admin"; }
#command { service = "NickServ"; name = "SET TWITTER"; command = "nickserv/set/misc"; misc_description = _("Associate a Twitter account with your account"); }
#command { service = "NickServ"; name = "SASET TWITTER"; command = "nickserv/saset/misc"; misc_description = _("Associate a Twitter account with this account"); permission = "nickserv/saset/twitter"; group = "nickserv/admin"; }
#command { service = "NickServ"; name = "SET FACEBOOK"; command = "nickserv/set/misc"; misc_description = _("Associate a Facebook URL with your account"); }
#command { service = "NickServ"; name = "SASET FACEBOOK"; command = "nickserv/saset/misc"; misc_description = _("Associate a Facebook URL with this account"); permission = "nickserv/saset/facebook"; group = "nickserv/admin"; }
 
/*
 * ns_status
 *
 * Provides the nickserv/status command.
 *
 * Used to determine if a user is recognized or identified by services.
 */
module { name = "ns_status" }
command { service = "NickServ"; name = "STATUS"; command = "nickserv/status"; }
 
/*
 * ns_suspend
 *
 * Provides the commands nickserv/suspend and nickserv/unsuspend.
 *
 * Used to suspend and unsuspend nicknames. Suspended nicknames can not be used but their settings are preserved.
 */
module
{
	name = "ns_suspend"
 
	/*
	 * The length of time before a suspended nick becomes unsuspended.
	 *
	 * This directive is optional. If not set, the default is never.
	 */
	#suspendexpire = 90d
 
	/*
	 * Settings to show to non-opers in NickServ's INFO output.
	 * Comment to completely disable showing any information about
	 * suspended nicknames to non-opers.
	 */
	show = "suspended, by, reason, on, expires"
}
command { service = "NickServ"; name = "SUSPEND"; command = "nickserv/suspend"; permission = "nickserv/suspend"; group = "nickserv/admin"; }
command { service = "NickServ"; name = "UNSUSPEND"; command = "nickserv/unsuspend"; permission = "nickserv/suspend"; group = "nickserv/admin"; }
 
/*
 * ns_update
 *
 * Provides the command nickserv/update.
 *
 * Used to update your status on all channels, turn on your vHost, etc.
 */
module { name = "ns_update" }
command { service = "NickServ"; name = "UPDATE"; command = "nickserv/update"; }
 
 
/*
 * Extra NickServ related modules.
 */
 
/*
 * ns_maxemail
 *
 * Limits how many times the same email address may be used in Anope
 * to register accounts.
 */
#module
{
	name = "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
}


ChanServ

/*
 * Example configuration file for ChanServ.
 */
 
/*
 * First, create the service.
 */
service
{
	/*
	 * The name of the ChanServ client.
	 * If you change this value, you probably want to change the client directive in the configuration for the chanserv module too.
	 */
	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"
 
	/*
	 * An optional comma separated list of channels this service should join. Outside
	 * of log channels this is not very useful, as the service will just idle in the
	 * specified channels, and will not accept any types of commands.
	 *
	 * Prefixes may be given to the channels in the form of mode characters or prefix symbols.
	 */
	#channels = "@#services,#mychan"
}
 
/*
 * Core ChanServ module.
 *
 * Provides essential functionality for ChanServ.
 */
module
{
	name = "chanserv"
 
	/*
	 * The name of the client that should be ChanServ.
	 */
	client = "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
	 * -          peace: Disallow users from kicking or removing modes from others who are of the same
	 *                     access level or superior
	 * -     cs_private: Hide the channel from ChanServ's LIST command
	 * -     restricted: Kick/ban users who are restricted from the channel
	 * -      cs_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.
	 * - signkick_level: 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
	 * -       noautoop: Disables autoop on the channel
	 * -  cs_keep_modes: Enables keep modes on the channel, which retains modes when the channel is
	 *                     not in use.
	 * -           none: No defaults
	 *
	 * This directive is optional, if left blank, the options will default to keeptopic, cs_secure, securefounder,
	 * and signkick. If you really want no defaults, use "none" by itself as the option.
	 */
	defaults = "keeptopic peace cs_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 maximum number of entries on a channel's access list.
	 * If not set, the default is 1024. This can be set to 0 for unlimited.
	 */
	accessmax = 1024
 
	/*
	 * 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
 
	/*
	 * Allow only IRC Operators to use ChanServ.
	 *
	 * This directive is optional.
	 */
	#opersonly = yes
 
	/*
	 * Modes that will not be allowed to be locked. Oper only modes such as +O
	 * are always restricted from regular users and are not affected by this.
	 * Comment out for no restrictions.
	 */
	#nomlock = "P"
 
	/*
	 * Modes that are required to be set and only set on all registered channels.
	 * These modes can not be locked or unlocked. The registered channel mode is
	 * automatically always required, if such a mode exists.
	 */
	#require = "r"
 
	/*
	 * The maximum length of the reason field for user commands such as chanserv/kick
	 * and chanserv/ban.
	 */
	reasonmax = 200
 
	/*
	 * If set, prevents channel access entries from containing hostmasks.
	 */
	disallow_hostmask_access = false
 
	/*
	 * If set, prevents channels from being on access lists.
	 */
	disallow_channel_access = false
 
	/*
	 * If set, ChanServ will always lower the timestamp of registered channels to their registration date.
	 * This prevents several race conditions where unauthorized users can join empty registered channels and set
	 * modes etc. prior to services deopping them.
	 */
	always_lower_ts = false
}
 
/*
 * ChanServ privilege configuration.
 *
 * ChanServ privileges are used to determine who has what access in channels. By default the core has its own
 * set of privileges it uses for various commands, which are defined below. Privilege ranks are used to
 * determine how powerful privileges are relative to other privileges, which is used by Anope to determine
 * who has greater access in a channel.
 *
 * If you load cs_access, you may define a level for the privilege, which is used by chanserv/access and chanserv/levels.
 * The levels defined will be used as the default levels for newly registered channels.
 * The level "founder" is a special level which means anyone with the privilege FOUNDER on the channel
 * has that permission. Additionally, the level "disabled" means that no one can use the privilege, including founders.
 *
 * If you load cs_flags, you may define a flag associated with that privilege for use in chanserv/flags.
 *
 * If you load cs_xop, you may define a XOP command to associate the privilege with.
 *
 * The name of privileges are uesd to associate them with channel modes. If you are using an IRCd that allows you to define additional
 * channel status modes, such as InspIRCd, you can associate privileges (and thus access levels, flags, xop) with the mode by naming
 * the privileges appropriately. For example, if you had a channel mode called admin, you could create AUTOADMIN, ADMIN, and ADMINME
 * privileges which would automatically be associated with that channel mode.
 *
 * Defining new privileges here is not useful unless you have a module (eg, a third party one) made to check for
 * the specific level you are defining.
 *
 * Sane defaults are provided below that do not need to be edited unless you wish to change the default behavior.
 */
 
/*
 * ACCESS_CHANGE privilege.
 *
 * Used by chanserv/access, chanserv/flags and chanserv/xop.
 *
 * Users with this permission can modify the permissions of others.
 */
privilege
{
	name = "ACCESS_CHANGE"
	rank = 0
	level = 10
	flag = "f"
	xop = "SOP"
}
 
/*
 * ACCESS_LIST privilege.
 *
 * Used by chanserv/access, chanserv/flags, and chanserv/xop.
 *
 * Users with this permission can view the access list of channels.
 */
privilege
{
	name = "ACCESS_LIST"
	rank = 10
	level = 3
	flag = "f"
	xop = "VOP"
}
 
/*
 * AKICK privilege.
 *
 * Used by chanserv/akick and chanserv/enforce.
 *
 * Users with this permission can modify the AKICK list.
 */
privilege
{
	name = "AKICK"
	rank = 250
	level = 10
	flag = "K"
	xop = "SOP"
}
 
/*
 * ASSIGN privilege.
 *
 * Used by botserv/assign.
 *
 * Users with this permission can assign and unassign BotServ bots to and from the channel.
 */
privilege
{
	name = "ASSIGN"
	rank = 270
	level = "founder"
	flag = "s"
	xop = "QOP"
}
 
/*
 * AUTOHALFOP privilege.
 *
 * Used by the core.
 *
 * Users with this permission get halfop on join.
 */
privilege
{
	name = "AUTOHALFOP"
	rank = 100
	level = 4
	flag = "H"
	xop = "HOP"
}
 
/*
 * AUTOOP privilege.
 *
 * Used by the core.
 *
 * Users with this permission get op on join.
 */
privilege
{
	name = "AUTOOP"
	rank = 210
	level = 5
	flag = "O"
	xop = "AOP"
}
 
/*
 * AUTOOWNER privilege.
 *
 * Used by the core.
 *
 * Users with this permission get owner on join.
 */
privilege
{
	name = "AUTOOWNER"
	rank = 330
	level = 9999
	flag = "Q"
	xop = "QOP"
}
 
/*
 * AUTOPROTECT privilege.
 *
 * Used by the core.
 *
 * Users with this permission get admin on join.
 */
privilege
{
	name = "AUTOPROTECT"
	rank = 240
	level = 10
	flag = "A"
	xop = "SOP"
}
 
/*
 * AUTOVOICE privilege.
 *
 * Used by the core.
 *
 * Users with this permission get voice on join.
 */
privilege
{
	name = "AUTOVOICE"
	rank = 50
	level = 3
	flag = "V"
	xop = "VOP"
}
 
/*
 * BADWORDS privilege.
 *
 * Used by botserv/badwords.
 *
 * Users with this permission can modify BotServ's BADWORDS list.
 */
privilege
{
	name = "BADWORDS"
	rank = 260
	level = 10
	flag = "K"
	xop = "SOP"
}
 
/*
 * BAN privilege.
 *
 * Used by chanserv/ban.
 *
 * Users with this permission can use the BAN command.
 */
privilege
{
	name = "BAN"
	rank = 150
	level = 4
	flag = "b"
	xop = "HOP"
}
 
/*
 * FANTASIA privilege.
 *
 * Used by botserv/main and chanserv/xop.
 *
 * Users with this permission can use fantasy commands in the channel.
 */
privilege
{
	name = "FANTASIA"
	rank = 30
	level = 3
	flag = "c"
	xop = "VOP"
}
 
/*
 * FOUNDER privilege.
 *
 * Used by chanserv/access, chanserv/akick,
 * chanserv/drop, chanserv/set/founder,
 * chanserv/set/securefounder, chanserv/set/successor and chanserv/xop.
 *
 * Users with this permission are treated as founders and can use
 * commands restricted to founders.
 */
privilege
{
	name = "FOUNDER"
	rank = 360
	level = 10000
	flag = "F"
	xop = "QOP"
}
 
/*
 * GETKEY privilege.
 *
 * Used by chanserv/getkey and nickserv/ajoin.
 *
 * Users with this permission can get they channel key with GETKEY and
 * can use nickserv/ajoin to join channels with keys.
 */
privilege
{
	name = "GETKEY"
	rank = 180
	level = 5
	flag = "G"
	xop = "AOP"
}
 
/*
 * HALFOP privilege.
 *
 * Used by chanserv/mode, chanserv/halfop and chanserv/dehalfop.
 *
 * Users with this permission can use ChanServ to halfop and dehalfop
 * others in the channel.
 */
privilege
{
	name = "HALFOP"
	rank = 120
	level = 5
	flag = "h"
	xop = "AOP"
}
 
/*
 * HALFOPME privilege.
 *
 * Used by chanserv/mode, chanserv/halfop and chanserv/dehalfop.
 *
 * Users with this permission can use ChanServ to halfop and dehalfop
 * themselves in the channel.
 */
privilege
{
	name = "HALFOPME"
	rank = 110
	level = 4
	flag = "h"
	xop = "HOP"
}
 
/*
 * INFO privilege.
 *
 * Used by botserv/info and chanserv/info.
 *
 * Users with this permission are allowed to get the full INFO output
 * from BotServ and ChanServ.
 */
privilege
{
	name = "INFO"
	rank = 80
	level = 9999
	flag = "I"
	xop = "QOP"
}
 
/*
 * INVITE privilege.
 *
 * Used by chanserv/invite and nickserv/ajoin.
 *
 * Users with this permission can invite users through ChanServ and
 * join invite only channels with nickserv/ajoin.
 */
privilege
{
	name = "INVITE"
	rank = 190
	level = 5
	flag = "i"
	xop = "AOP"
}
 
/*
 * KICK privilege.
 *
 * Used by chanserv/kick.
 *
 * Users with this permission can use the KICK command.
 */
privilege
{
	name = "KICK"
	rank = 130
	level = 4
	flag = "k"
	xop = "HOP"
}
 
/*
 * MEMO privilege.
 *
 * Used by memoserv/del, memoserv/ignore, memoserv/info, memoserv/list,
 * memoserv/main, memoserv/read and memoserv/set.
 *
 * Users with this permission can manage channel memos.
 */
privilege
{
	name = "MEMO"
	rank = 280
	level = 10
	flag = "m"
	xop = "SOP"
}
 
/*
 * MODE privilege.
 *
 * Used by chanserv/mode.
 *
 * Users with this permission can set modes through ChanServ and change
 * the mode lock.
 */
privilege
{
	name = "MODE"
	rank = 170
	level = 9999
	flag = "s"
	xop = "QOP"
}
 
/*
 * NOKICK privilege.
 *
 * Used by botserv/kick.
 *
 * Users with this permission are spared from automated BotServ kicks.
 */
privilege
{
	name = "NOKICK"
	rank = 20
	level = 1
	flag = "N"
	xop = "VOP"
}
 
/*
 * OP privilege.
 *
 * Used by chanserv/mode, chanserv/modes.
 *
 * Users with this permission can use ChanServ to op and deop
 * others in the channel.
 */
privilege
{
	name = "OP"
	rank = 230
	level = 5
	flag = "o"
	xop = "SOP"
}
 
/*
 * OPME privilege.
 *
 * Used by chanserv/mode, chanserv/modes.
 *
 * Users with this permission can use ChanServ to op and deop
 * themselves in the channel.
 */
privilege
{
	name = "OPME"
	rank = 220
	level = 5
	flag = "o"
	xop = "AOP"
}
 
/*
 * OWNER privilege.
 *
 * Used by chanserv/mode and chanserv/modes.
 *
 * Users with this permission can use ChanServ to owner and deowner
 * others in the channel.
 */
privilege
{
	name = "OWNER"
	rank = 350
	level = "founder"
	flag = "q"
	xop = "QOP"
}
 
/*
 * OWNERME privilege.
 *
 * Used by chanserv/mode and chanserv/modes.
 *
 * Users with this permission can use ChanServ to owner and deowner
 * themselves in the channel.
 */
privilege
{
	name = "OWNERME"
	rank = 340
	level = 9999
	flag = "q"
	xop = "QOP"
}
 
/*
 * PROTECT privilege.
 *
 * Used by chanserv/mode and chanserv/modes.
 *
 * Users with this permission can use ChanServ to protect and deprotect
 * others in the channel.
 */
privilege
{
	name = "PROTECT"
	rank = 310
	level = 9999
	flag = "a"
	xop = "QOP"
}
 
/*
 * PROTECTME privilege.
 *
 * Used by chanserv/mode and chanserv/modes.
 *
 * Users with this permission can use ChanServ to protect and deprotect
 * themselves in the channel.
 */
privilege
{
	name = "PROTECTME"
	rank = 300
	level = 10
	flag = "a"
	xop = "AOP"
}
 
/*
 * SAY privilege.
 *
 * Used by botserv/control.
 *
 * Users with this permission can use the BotServ bot in the channel to
 * say or do a /me with the provided message.
 */
privilege
{
	name = "SAY"
	rank = 90
	level = 5
	flag = "B"
	xop = "AOP"
}
 
/*
 * SET privilege.
 *
 * Used by botserv/kick, botserv/set, chanserv/clone, chanserv/log,
 * chanserv/saset/noexpire and chanserv/set.
 *
 * Users with this permission can set what BotServ will kick for, change
 * BotServ and ChanServ settings, clone ChanServ channel setings, and
 * set ChanServ logging options.
 */
privilege
{
	name = "SET"
	rank = 320
	level = 9999
	flag = "s"
	xop = "QOP"
}
 
/*
 * SIGNKICK privilege.
 *
 * Used by chanserv/ban and chanserv/kick.
 *
 * Users with this permission won't get their nick shown in the kick
 * through ChanServ when the setting SIGNKICK is set to LEVEL.
 */
privilege
{
	name = "SIGNKICK"
	rank = 140
	level = 9999
	flag = "K"
	xop = "QOP"
}
 
/*
 * TOPIC privilege.
 *
 * Used by chanserv/topic.
 *
 * Users with this permission can change the channel topic through ChanServ.
 */
privilege
{
	name = "TOPIC"
	rank = 160
	level = 5
	flag = "t"
	xop = "AOP"
}
 
/*
 * UNBAN privilege.
 *
 * Used by chanserv/unban.
 *
 * Users with this permission can unban themselves and others through ChanServ.
 */
privilege
{
	name = "UNBAN"
	rank = 200
	level = 4
	flag = "u"
	xop = "HOP"
}
 
/*
 * VOICE privilege.
 *
 * Used by chanserv/mode and chanserv/modes.
 *
 * Users with this permission can use ChanServ to voice and devoice
 * others in the channel.
 */
privilege
{
	name = "VOICE"
	rank = 70
	level = 4
	flag = "v"
	xop = "HOP"
}
 
/*
 * VOICEME privilege.
 *
 * Used by chanserv/mode and chanserv/modes.
 *
 * Users with this permission can use ChanServ to voice and devoice
 * themselves in the channel.
 */
privilege
{
	name = "VOICEME"
	rank = 60
	level = 3
	flag = "v"
	xop = "VOP"
}
 
/*
 * 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.
 */
 
/* Command group configuration for ChanServ.
 *
 * Commands may optionally be placed into groups to make ChanServ's HELP output easier to understand.
 * Remove the following groups to use the old behavior of simply listing all ChanServ commands from HELP.
 */
command_group
{
	name = "chanserv/access"
	description = _("Used to manage the list of privileged users")
}
 
command_group
{
	name = "chanserv/status"
	description = _("Used to modify the channel status of you or other users")
}
 
command_group
{
	name = "chanserv/management"
	description = _("Used to manage channels")
}
 
command_group
{
	name = "chanserv/admin"
	description = _("Services Operator commands")
}
 
/* 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 using a levels system. Allows allows redefining which privileges
 * are representated by given level on a per channel basis.
 *
 * The "LIST" subcommand of chanserv/access will show every access entry on the channel, including access
 * entries not added by cs_access. The "level" of these entries will be the representation of the access
 * entry by the other access system, which could be an XOP command name, or a set of flags.
 */
module { name = "cs_access" }
command { service = "ChanServ"; name = "ACCESS"; command = "chanserv/access"; group = "chanserv/access"; }
command { service = "ChanServ"; name = "LEVELS"; command = "chanserv/levels"; group = "chanserv/access"; }
 
/*
 * cs_akick
 *
 * Provides the command chanserv/akick.
 *
 * Used for preventing users from joining channels.
 */
module
{
	name = "cs_akick"
 
	/*
	 * 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"
}
command { service = "ChanServ"; name = "AKICK"; command = "chanserv/akick"; group = "chanserv/management"; }
 
/*
 * cs_ban
 *
 * Provides the command chanserv/ban.
 *
 * The configuration option 'kick' may be set in a command block for this command to control
 * whether or not users will be kicked from the channel once banned. The default is 'yes'.
 *
 * The configuration option 'mode' may be set to control which mode is set, such as BAN or QUIET.
 * The default is BAN.
 *
 * Used for banning users from channels.
 */
module { name = "cs_ban" }
command { service = "ChanServ"; name = "BAN"; command = "chanserv/ban"; }
 
/*
 * 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"; group = "chanserv/management"; }
 
/*
 * 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"; group = "chanserv/management"; }
 
/*
 * cs_entrymsg
 *
 * Provides the command chanserv/entrymsg.
 *
 * Used to configure entry messages sent to users when they join a channel.
 */
module
{
	name = "cs_entrymsg"
 
	/* The maximum number of entrymsgs allowed per channel. If not set, defaults to 5. */
	maxentries = 5
}
command { service = "ChanServ"; name = "ENTRYMSG"; command = "chanserv/entrymsg"; group = "chanserv/management"; }
 
/*
 * cs_flags
 *
 * Provides the command chanserv/flags.
 * Provides the access system "flags".
 *
 * Used for giving users access in channels.
 *
 * The "LIST" subcommand of chanserv/flags will show every access entry on the channel, including access
 * entries not added by cs_flags. The "Flags" of these entries will be the flags representation of the
 * privilege set granted by the access entry.
 */
module { name = "cs_flags" }
command { service = "ChanServ"; name = "FLAGS"; command = "chanserv/flags"; group = "chanserv/access"; }
 
/*
 * 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"; }
 
/*
 * cs_list
 *
 * Provides the commands:
 *   chanserv/list - Used for retrieving and searching the registered channel list.
 *   chanserv/set/private - Used for setting whether channels should show up in chanserv/list.
 */
module
{
	name = "cs_list"
 
	/*
	 * The maximum number of channels to be returned for a ChanServ LIST command.
	 */
	listmax = 50
}
command { service = "ChanServ"; name = "LIST"; command = "chanserv/list"; }
 
command { service = "ChanServ"; name = "SET PRIVATE"; command = "chanserv/set/private"; }
 
 
/*
 * cs_log
 *
 * Provides the command chanserv/log.
 *
 * Use for configuring what actions on channels are logged and where.
 */
module
{
	name = "cs_log"
 
	/* Default log settings for newly registered channels */
 
	#default
	{
		command = "chanserv/modes"
		method = "MESSAGE @"
	}
 
	#default
	{
		service = "ChanServ"
		command = "ACCESS"
		method = "MESSAGE @"
	}
 
	#default
	{
		command = "chanserv/xop"
		method = "MESSAGE @"
	}
 
	#default
	{
		service = "ChanServ"
		command = "FLAGS"
		method = "MESSAGE @"
	}
}
command { service = "ChanServ"; name = "LOG"; command = "chanserv/log"; group = "chanserv/management"; }
 
/*
 * cs_mode
 *
 * Provides the command chanserv/mode and chanserv/modes.
 *
 * Used for changing mode locks and changing modes. Multiple commands may be mapped to chanserv/modes, the
 * configuration directive 'set' and 'unset' are used to tell chanserv/modes which modes should be set or
 * unset when the command is executed.
 */
module
{
	name = "cs_mode"
 
	/*
	 * Default modes for mode lock, these are set on newly registered channels.
	 *
	 * If not set, the default is +nt.
	 */
	mlock = "+nt"
}
command { service = "ChanServ"; name = "MODE"; command = "chanserv/mode"; group = "chanserv/management"; }
 
command { service = "ChanServ"; name = "OWNER"; command = "chanserv/modes"; group = "chanserv/status"; set = "OWNER" }
command { service = "ChanServ"; name = "DEOWNER"; command = "chanserv/modes"; group = "chanserv/status"; unset = "OWNER" }
 
command { service = "ChanServ"; name = "PROTECT"; command = "chanserv/modes"; group = "chanserv/status"; set = "PROTECT" }
command { service = "ChanServ"; name = "DEPROTECT"; command = "chanserv/modes"; group = "chanserv/status"; unset = "PROTECT" }
 
command { service = "ChanServ"; name = "OP"; command = "chanserv/modes"; group = "chanserv/status"; set = "OP" }
command { service = "ChanServ"; name = "DEOP"; command = "chanserv/modes"; group = "chanserv/status"; unset = "OP" }
 
command { service = "ChanServ"; name = "HALFOP"; command = "chanserv/modes"; group = "chanserv/status"; set = "HALFOP" }
command { service = "ChanServ"; name = "DEHALFOP"; command = "chanserv/modes"; group = "chanserv/status"; unset = "HALFOP" }
 
command { service = "ChanServ"; name = "VOICE"; command = "chanserv/modes"; group = "chanserv/status"; set = "VOICE" }
command { service = "ChanServ"; name = "DEVOICE"; command = "chanserv/modes"; group = "chanserv/status"; unset = "VOICE" }
 
 
/*
 * 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"
 
	/* If set, uses the older 1.8 style seen, which is less resource intensive */
	simple = false
 
	/* Sets the time to keep seen entries in the seen database. */
	purgetime = "30d"
 
	/* Sets the delay between checks for expired seen entries. */
	expiretimeout = "1d"
}
command { service = "OperServ"; name = "SEEN"; command = "operserv/seen"; permission = "operserv/seen"; }
 
/*
 * cs_set
 *
 * Provides the commands:
 *   chanserv/set and chanserv/saset - Dummy help wrappers for the SET commands.
 *   chanserv/set/autoop - Used for configuring whether or not ChanServ automatically gives channel status to users.
 *   chanserv/set/bantype - Used for controlling what format of bans are placed on channels.
 *   chanserv/set/description - Used for changing channels descriptions.
 *   chanserv/set/founder - Used for changing a channel's founder.
 *   chanserv/set/keepmodes - Used for enabling or disabling keepmodes, which retains channel modes.
 *   chanserv/set/peace - Used for configuring if users are able to kick other users with higher access than them.
 *   chanserv/set/persist - Used for setting whether ChanServ should stay in channels after the last user leaves.
 *   chanserv/set/restricted - Used for setting whether users not on a channel's access list can join.
 *   chanserv/set/secure - Used for setting whether users who are recognized for accounts should have their access in channels.
 *   chanserv/set/securefounder - Used for setting whether users with founder level access in channels have true founder or not.
 *   chanserv/set/secureops - Used for restricting who can have channel op privilege in a channel to those whom have access in the channel.
 *   chanserv/set/signkick - Used for setting signkick, which appends the kicker's name to kicks sent through ChanServ.
 *   chanserv/set/successor - Used for setting channel successors, which become channel founders if the founders' account expires.
 *   chanserv/saset/noexpire - Used for setting noexpire, which prevents channels from expiring.
 *
 * This is a dummy command to provide a help wrapper for the various SET commands.
 */
module
{
	name = "cs_set"
 
	/*
	 * The default ban type for newly registered channels.
	 *
	 * 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
 
	/*
	 * If set, persisent channels have their creation times lowered to their
	 * original registration dates.
	 */
	persist_lower_ts = true
}
command { service = "ChanServ"; name = "SET"; command = "chanserv/set"; group = "chanserv/management"; }
command { service = "ChanServ"; name = "SET AUTOOP"; command = "chanserv/set/autoop"; }
command { service = "ChanServ"; name = "SET BANTYPE"; command = "chanserv/set/bantype"; }
command { service = "ChanServ"; name = "SET DESCRIPTION"; command = "chanserv/set/description"; }
command { service = "ChanServ"; name = "SET DESC"; command = "chanserv/set/description"; }
command { service = "ChanServ"; name = "SET FOUNDER"; command = "chanserv/set/founder"; }
command { service = "ChanServ"; name = "SET KEEPMODES"; command = "chanserv/set/keepmodes"; }
command { service = "ChanServ"; name = "SET PEACE"; command = "chanserv/set/peace"; }
command { service = "ChanServ"; name = "SET PERSIST"; command = "chanserv/set/persist"; }
command { service = "ChanServ"; name = "SET RESTRICTED"; command = "chanserv/set/restricted"; }
command { service = "ChanServ"; name = "SET SECURE"; command = "chanserv/set/secure"; }
command { service = "ChanServ"; name = "SET SECUREFOUNDER"; command = "chanserv/set/securefounder"; }
command { service = "ChanServ"; name = "SET SECUREOPS"; command = "chanserv/set/secureops"; }
command { service = "ChanServ"; name = "SET SIGNKICK"; command = "chanserv/set/signkick"; }
command { service = "ChanServ"; name = "SET SUCCESSOR"; command = "chanserv/set/successor"; }
command { service = "ChanServ"; name = "SET NOEXPIRE"; command = "chanserv/saset/noexpire"; permission = "chanserv/saset/noexpire"; }
 
/*
 * 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.
 * A field named misc_description may be given for use with help output.
 */
module { name = "cs_set_misc" }
command { service = "ChanServ"; name = "SET URL"; command = "chanserv/set/misc"; misc_description = _("Associate a URL with the channel"); }
command { service = "ChanServ"; name = "SET EMAIL"; command = "chanserv/set/misc"; misc_description = _("Associate an E-mail address with the channel"); }
 
/*
 * cs_status
 *
 * Provides the command chanserv/status.
 *
 * Used for determining a user's access on a channel and whether
 * or not they match any autokick entries.
 */
module { name = "cs_status" }
command { service = "ChanServ"; name = "STATUS"; command = "chanserv/status"; }
 
/*
 * 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"
 
	/*
	 * The length of time before a suspended channel expires.
	 *
	 * This directive is optional.
	 * If not set, the default is never.
	 */
	expire = 90d
 
	/*
	 * Settings to show to non-opers in ChanServ's INFO output.
	 * Comment to completely disable showing any information about
	 * suspended channels to non-opers.
	 */
	show = "suspended, by, reason, on, expires"
}
command { service = "ChanServ"; name = "SUSPEND"; command = "chanserv/suspend"; permission = "chanserv/suspend"; group = "chanserv/admin"; }
command { service = "ChanServ"; name = "UNSUSPEND"; command = "chanserv/unsuspend"; permission = "chanserv/suspend"; group = "chanserv/admin"; }
 
/*
 * 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"; group = "chanserv/management"; }
 
/*
 * cs_topic
 *
 * Provides the commands:
 *   chanserv/topic - Used for changing the channel topic. Useful in conjunction with chanserv/set/topiclock.
 *   chanserv/set/keeptopic - Used for configuring if ChanServ is to restore the channel topic when a channel is created.
 *
 */
module { name = "cs_topic" }
command { service = "ChanServ"; name = "TOPIC"; command = "chanserv/topic"; group = "chanserv/management"; }
command { service = "ChanServ"; name = "SET KEEPTOPIC"; command = "chanserv/set/keeptopic"; }
 
/*
 * 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_updown
 *
 * Provides the commands chanserv/up and chanserv/down.
 *
 * Used for setting or removing your status modes on a channel.
 */
module { name = "cs_updown" }
command { service = "ChanServ"; name = "DOWN"; command = "chanserv/down"; group = "chanserv/status"; }
command { service = "ChanServ"; name = "UP"; command = "chanserv/up"; group = "chanserv/status"; }
 
/*
 * cs_xop
 *
 * Provides the command chanserv/xop.
 * Provides the access system "XOP".
 *
 * Used for giving users access in channels. Many commands may be linked to chanserv/xop, but the
 * privileges given by each is determined by the privilege:xop settings above. These commands should
 * be ordered from highest to lowest, as each command inherits the privileges of the commands below
 * it.
 *
 * The "LIST" subcommand of chanserv/xop will show only XOP access entries of the given XOP type. You
 * can not view the entire access list at once, and instead should use another access system to do that.
 */
module { name = "cs_xop" }
command { service = "ChanServ"; name = "QOP"; command = "chanserv/xop"; group = "chanserv/access"; }
command { service = "ChanServ"; name = "SOP"; command = "chanserv/xop"; group = "chanserv/access"; }
command { service = "ChanServ"; name = "AOP"; command = "chanserv/xop"; group = "chanserv/access"; }
command { service = "ChanServ"; name = "HOP"; command = "chanserv/xop"; group = "chanserv/access"; }
command { service = "ChanServ"; name = "VOP"; command = "chanserv/xop"; group = "chanserv/access"; }
 
 
/*
 * Extra ChanServ related modules.
 */
 
/*
 * cs_statusupdate
 *
 * This module automatically updates users status on channels when the
 * channel's access list is modified.
 */
module { name = "cs_statusupdate" }

MemoServ

OperServ

BotServ

HostServ