OperServ

AKILL

AKILL allows you to maintain network-wide bans. Services will keep your AKILLs stored and allow for easy management.

Syntax: AKILL ADD <nick|hostmask> [!P|!T <minutes>] <reason>

If the !P token is specified the AKILL will never expire (permanent). If the !T token is specified expire time must follow, in minutes, hours ("h"), days ("d") or weeks ("w").

Examples:
/msg OperServ AKILL ADD foo !T 5 bar reason
/msg OperServ AKILL ADD foo !T 3d bar reason
/msg OperServ AKILL ADD foo@bar.com !P foo reason
/msg OperServ AKILL ADD foo@bar.com foo reason

The first example looks for the user with a nickname of "foo" and adds a 5 minute AKILL for "bar reason."

The second example is similar but adds the AKILL for 3 days instead of 5 minutes.

The third example adds a permanent AKILL on foo@bar.com for "foo reason."

The fourth example adds a AKILL on foo@bar.com for the duration specified in the configuration file for "foo reason."

Syntax: AKILL DEL <hostmask|number>

If number is specified it correlates with the number on AKILL LIST. You may specify multiple numbers by separating with commas. You may specify a range by using a colon.

Examples:
/msg OperServ AKILL DEL foo@bar.com
/msg OperServ AKILL DEL 5
/msg OperServ AKILL DEL 1,2,5,10
/msg OperServ AKILL DEL 1:5,7,9:11

Syntax: AKILL LIST [FULL]

If FULL is specified the AKILL reasons will be shown.

Examples:
/msg OperServ AKILL LIST
/msg OperServ AKILL LIST FULL

Syntax: AKILL LIST <hostmask>

Shows any AKILLs matching the given hostmask, with reasons. This command will not perform DNS lookups on a host, for best results repeat it with host and IP address.

Examples:
/msg OperServ AKILL LIST test@192.168.1.1

Syntax: AKILL LIST <number>

Shows the given AKILL, with reason.

Syntax: AKILL SYNC

Sends all akills to all servers. This can be useful in case services will be down or do not see a user as matching a certain akill.

CLEARCHAN

CLEARCHAN allows operators to clear a channel in one of three ways: KICK, which kicks all users from the channel, KILL, which kills all users in the channel off the network, or AKILL, which sets a one week network ban against the hosts of all users in the channel.

This command should not be used lightly.

Syntax: CLEARCHAN KICK|KILL|AKILL <#channel> <reason>

Example:
/msg OperServ CLEARCHAN KICK #warez warez is bad, mk?
/msg OperServ CLEARCHAN AKILL #warez you were warned!

CLONES

CLONES keeps track of the number of clients per IP address. Warnings are displayed in the snoop channel about IP addresses with multiple clients.

CLONES only works on clients whose IP address Atheme knows. If the ircd does not support propagating IP addresses at all, CLONES is not useful; if IP addresses are not sent for spoofed clients, those clients are exempt from CLONES checking.

Syntax: CLONES KLINE ON|OFF|<count>

Enables/disables banning IP addresses with more than the allowed number clients from the network for one hour (these bans are not added to the AKILL list). This setting is saved in etc/services.db and defaults to off.

If a count is specified, <count> warning kills will be performed before setting a k-line.

Syntax: CLONES LIST

Shows all IP addresses with more than 3 clients with the number of clients and whether the IP address is exempt.

Syntax: CLONES ADDEXEMPT <ip> <clones> [!P|!T <minutes>] <reason>

Adds an IP address to the clone exemption list. The IP address must match exactly with the form used by the ircd (mind '::' shortening with IPv6). The IP address can also be a CIDR mask, for example 192.168.1.0/24. Single IPs take priority above CIDR. <clones> is the number of clones allowed; it must be at least 4. Warnings are sent if this number is met, and a network ban may be set if the number is exceeded. The reason is shown in LISTEXEMPT. The clone exemption list is stored in etc/services.db.

Syntax: CLONES DELEXEMPT <ip>

Removes an IP address from the clone exemption list.

Syntax: CLONES SETEXEMPT [DEFAULT | <ip>] <ALLOWED | WARN> <limit>

Sets either the default or a given exemption's ALLOWED or WARN limit to the specified number of clones. WARN or ALLOWED can be 0, disabling any warning messages or kills.

Syntax: CLONES SETEXEMPT <ip> <REASON | DURATION> <value>

Sets the reason or duration of a given exemption to the specified value. The DURATION value can be 0, making the exemption permanent.

Syntax: CLONES LISTEXEMPT

Shows the clone exemption list with reasons.

Example:
/msg OperServ CLONES ADDEXEMPT 127.0.0.1 100 local
/msg OperServ CLONES DELEXEMPT 192.168.1.2

Syntax: CLONES DURATION

Allows modifying the duration that hosts who clone are banned for. Defaults to one hour. Is saved between restarts.

Example:
/msg OperServ CLONES DURATION 30m

COMPARE

COMPARE allows operators with chan:auspex privilege to view matching information on two users, or two channels.

It is useful in clone detection, amongst other situations.

Syntax: COMPARE <#channel|user> <#channel|user>

Example:
/msg OperServ COMPARE #warez #dcc
/msg OperServ COMPARE w00t Brik

GREPLOG

GREPLOG searches through services logs and displays matching lines.

The first parameter is either a service name (to search all commands given to that service) or an asterisk (to search all changes to services data).

The second parameter is the pattern to search for. It may contain * and ? wildcards and should usually start and end in *.

The optional third parameter is the number of previous days to search in addition to today.

Note that this command will only work if sufficient information is written to log files.

Syntax: GREPLOG <service> <pattern> [days]
Syntax: GREPLOG * <pattern> [days]

Examples:
/msg OperServ GREPLOG ChanServ *#somechan* 7
/msg OperServ GREPLOG * *#somechan* 60

IDENTIFY

IDENTIFY authenticates for services operator privileges, if the operator or operator class has been defined as needing an additional password.

You need to log in to your services account first.

Syntax: IDENTIFY <password>

IGNORE

Services has an ignore list which functions similarly to the way a user can ignore another user. If a user matches a mask in the ignore list and attempts to use services, they will not get a reply.


ADD - Add a mask to the ignore list.
DEL - Delete a mask from the ignore list.
LIST - List all the entries in the ignore list.
CLEAR - Clear all the entries in the ignore list.

Examples:
/msg OperServ IGNORE ADD pfish!*@* flooding services
/msg OperServ IGNORE DEL pfish!*@*
/msg OperServ IGNORE LIST
/msg OperServ IGNORE CLEAR

INFO

INFO shows some services configuration information that is not available to see elsewhere.

Syntax: INFO

INJECT

INJECT fakes data from the uplink. This command is for debugging only and should not be used unless you know what you're doing.

Syntax: INJECT <parameters>

Examples:
/msg OperServ INJECT :uplink.network.com PING :shrike.network.com
/msg OperServ INJECT :foo PRIVMSG OperServ :HELP INJECT

JUPE

JUPE introduces a fake server with the given name, so that the real server cannot connect. Jupes only last as long as services is connected to the uplink and can also (on most ircds) be removed with a simple /squit command.

Syntax: JUPE <server> <reason>

Example:
/msg OperServ JUPE irc.blah.net very unstable server

MODE

MODE allows for the editing of modes on a channel. Some networks will most likely find this command to be unethical.

Syntax: MODE <#channel> <mode> [parameters]

Examples:
/msg OperServ MODE #heh -m
/msg OperServ MODE #heh +o foo

MODINSPECT

MODINSPECT displays detailed information about a module.

The names can be gathered from the MODLIST command. They are not necessarily equal to the pathnames to load them with MODLOAD.

Syntax: MODINSPECT <name>

Example:
/msg OperServ MODINSPECT protocol/charybdis

MODLIST

MODLIST displays a listing of all loaded modules and their addresses.

Syntax: MODLIST

MODLOAD

MODLOAD loads one or more modules.

If the path does not start with a slash, it is taken relative to PREFIX/modules or PREFIX/lib/atheme/modules (depending on how Atheme was compiled). Specifying a suffix like .so is optional.

If any of the modules need a rehash after being loaded, this is done automatically.

Syntax: MODLOAD <path...>

Example:
/msg OperServ MODLOAD ../contrib/fc_dice

MODRELOAD

MODRELOAD reloads a currently loaded module. If the command fails, the module in question will be unloaded until errors are corrected.

Syntax: MODRELOAD <name...>

Example:
/msg OperServ MODRELOAD chanserv/register

MODUNLOAD

MODUNLOAD unloads one or more modules. Not all modules can be unloaded.

The names can be gathered from the MODLIST command. They are not necessarily equal to the pathnames to load them with MODLOAD.

Syntax: MODUNLOAD <name...>

Example:
/msg OperServ MODUNLOAD chanserv/register

NOOP

NOOP allows you to deny IRCop access on a per-hostmask or per-server basis. If a matching user opers up, they will be killed.

Syntax: NOOP ADD HOSTMASK <nick!user@host> [reason]
Syntax: NOOP ADD SERVER <mask> [reason]

Examples:
/msg OperServ NOOP ADD HOSTMASK *!*@some.spoof Abusive operator
/msg OperServ NOOP ADD SERVER bad.server Abusive admin

Syntax: NOOP DEL HOSTMASK <nick!user@host>
Syntax: NOOP DEL SERVER <mask>

Examples:
/msg OperServ NOOP DEL HOSTMASK *!some@operator.host
/msg OperServ NOOP DEL SERVER bad.server

Syntax: NOOP LIST HOSTMASK
Syntax: NOOP LIST SERVER

OVERRIDE

OVERRIDE is used for running a command as another user.

Syntax: OVERRIDE <target> <service> <command> [params]

Examples:
/msg OperServ OVERRIDE dotslasher ChanServ FLAGS #cows nenolod +*

PERL

Inspect the Perl interpreter, including debug information on loaded scripts and more.

To load scripts into Atheme, use the MODLOAD/MODUNLOAD/MODRELOAD commands, providing the script's filename instead of a compiled module.

Examples:
/msg OperServ PERL

RAKILL

RAKILL allows for regex-based akills, which are useful for removing clones or botnets. The akills are not added to OperServ's list and last a week.

Be careful, as regex is very easy to make mistakes with. Use RMATCH first. The regex syntax is exactly the same.

Syntax: RAKILL /<pattern>/[i][p] <reason>

Example:
/msg OperServ RAKILL /^m(oo|00)cow/i No moocows allowed.

RAW

RAW injects data into the uplink. This command is for debugging only and should not be used unless you know what you're doing.

Syntax: RAW <parameters>

Example:
/msg OperServ RAW :OperServ OPERWALL :My admin is a loser

READONLY

READONLY allows services operators to enable or disable readonly mode while services is running.

Syntax: READONLY ON|OFF

Examples:
/msg OperServ READONLY ON

REHASH

REHASH updates the database and reloads the configuration file. You can perform a rehash from system console with a kill -HUP command.

Syntax: REHASH

Example:
/msg OperServ REHASH

RESTART

RESTART shuts down services and restarts them.

Syntax: RESTART

Example:
/msg OperServ RESTART

RMATCH

RMATCH shows all users whose nick!user@host gecos matches the given regular expression.

Instead of a slash, any character that is not a letter, digit, whitespace or backslash and does not occur in the pattern can be used. An i after the pattern means case insensitive matching.

By default, the pattern is a POSIX extended regular expression. If PCRE support has been compiled in, you can put a p after the pattern to use it.

By default, there is a limit on the number of matches. To override this limit, add the FORCE keyword. In any case the actual number of matches will be shown.

Syntax: RMATCH /<pattern>/[i][p] [FORCE]

Example:
/msg OperServ RMATCH /^m(oo|00)cow/i FORCE
/msg OperServ RMATCH #^[a-z]+!~?[a-z]+@#
/msg OperServ RMATCH /^[^ ]* [^ ]*$/
/msg OperServ RMATCH /\d\d\d/p

RNC

RNC shows the most common realnames on the network.

Syntax: RNC [number]

Example:
/msg OperServ RNC 10

RWATCH

RWATCH maintains a list of regular expressions, which the nick!user@host gecos of all connecting clients are matched against. Matching clients can be displayed in the snoop channel and/or banned from the network. These network bans are set on *@host, last 24 hours and are not added to the AKILL list. The RWATCH list is stored in etc/rwatch.db and saved whenever it is modified.

See RMATCH for more information about regular expression syntax.

Syntax: RWATCH ADD /<pattern>/[i][p] <reason>

Adds a regular expression to the RWATCH list. The reason is shown in snoop notices and kline reasons.

Syntax: RWATCH DEL /<pattern>/[i][p]

Removes a regular expression from the RWATCH list.

Syntax: RWATCH LIST

Shows the RWATCH list. The meaning of the letters is:
i - case insensitive match
p - PCRE pattern
S - matching clients are shown in the snoop channel
K - matching clients are banned from the network

Syntax: RWATCH SET /<pattern>/[i][p] <options>

Changes the action for a regular expression. Possible values for <options> are:
SNOOP - enables display in the snoop channel
NOSNOOP - disables display in the snoop channel
KLINE - enables network bans
NOKLINE - disables network bans

Example:
/msg OperServ RWATCH ADD /^m(oo|00)cow/i moocow figure
/msg OperServ RWATCH DEL /^m(oo|00)cow/i

SET AKICKTIME

SET AKICKTIME allows network staff to alter the default duration of akicks. Setting this to 0 makes all akicks permanent unless a duration is specified in the AKICK command.

Syntax: SET AKICKTIME <time in minutes>

Example:
/msg OperServ SET AKICKTIME 20

SET CHANEXPIRE

SET CHANEXPIRE allows network staff to modify how often channel expirations will be checked.

Syntax: SET CHANEXPIRE <time in days>

Example:
/msg OperServ SET CHANEXPIRE 30

SET COMMITINTERVAL

SET COMMITINTERVAL allows network staff to set how often (in minutes) the services database will be written to disk.

Syntax: SET COMMITINTERVAL <time in minutes>

Example:
/msg OperServ SET COMMITINTERVAL 5

SET ENFORCEPREFIX

SET ENFORCEPREFIX changes the prefix of the nick that a user will be changed to when they use an enforced nickname and fail to authenticate to it.

Syntax: SET ENFORCEPREFIX <prefix>

Example:
/msg OperServ SET ENFORCEPREFIX Guest

SET KLINETIME

SET KLINETIME allows network staff to set a default time before AKILLs with no provided duration will expire.

Syntax: SET KLINETIME <time in days>

Example:
/msg OperServ SET KLINETIME 5

SET MAXCHANACS

SET MAXCHANACS allows setting the maximum number of entries allowed in a channel's access list.

Syntax: SET MAXCHANACS <value>

Example:
/msg OperServ SET MAXCHANACS 30

SET MAXCHANS

SET MAXCHANS allows setting how many channels one account may be founder of.

Syntax: SET MAXCHANS <value>

Example:
/msg OperServ SET MAXCHANS 7

SET MAXFOUNDERS

SET MAXFOUNDERS allows setting the maximum number of founders that one channel may have.

Syntax: SET MAXFOUNDERS <value>

Example:
/msg OperServ SET MAXFOUNDERS 4

SET MAXLOGINS

SET MAXLOGINS allows setting how many users may be logged into one account at the same time.

Syntax: SET MAXLOGINS <value>

Example:
/msg OperServ SET MAXLOGINS 7

SET MAXNICKS

SET MAXNICKS allows setting how many nicknames one account is allowed to own.

Syntax: SET MAXNICKS <value>

Example:
/msg OperServ SET MAXNICKS 7

SET MAXUSERS

SET MAXUSERS allows setting how many accounts one email address may have registered. This can be overridden on a per-email basis with the emailexempts configuration block.

Syntax: SET MAXUSERS <value>

Example:
/msg OperServ SET MAXUSERS 7

SET MDLIMIT

SET MDLIMIT sets how many pieces of metadata can belong to one object (an account, group or channel).

Syntax: SET MDLIMIT <value>

Example:
/msg OperServ SET MDLIMIT 30

SET NICKEXPIRE

SET NICKEXPIRE allows network staff to modify how often nickname and account expirations will be checked.

Syntax: SET NICKEXPIRE <time in days>

Example:
/msg OperServ SET NICKEXPIRE 30

SET RECONTIME

SET RECONTIME allows modifying how long before services will try to reconnect to the uplink.

Syntax: SET RECONTIME <time in seconds>

Example:
/msg OperServ SET RECONTIME 5

SET SPAM

SET SPAM allows network staff to define whether or not new users get messaged about services when they connect.

Syntax: SET SPAM TRUE|FALSE

Example:
/msg OperServ SET SPAM TRUE

SGLINE

SGLINE allows you to maintain network-wide bans by real name (gecos). It works similarly to AKILL.

Syntax: SGLINE ADD <gecos> [!P|!T <minutes>] <reason>

If the !P token is specified the SGLINE will never expire (permanent). If the !T token is specified expire time must follow, in minutes, hours ("h"), days ("d") or weeks ("w").

Examples:
/msg OperServ SGLINE ADD foo !T 5 bar reason
/msg OperServ SGLINE ADD foo !T 3d bar reason
/msg OperServ SGLINE ADD foo !P foo reason
/msg OperServ SGLINE ADD foo foo reason

The first example looks for the user with a gecos of "foo" and adds a 5 minute SGLINE for "bar reason."

The second example is similar but adds the SGLINE for 3 days instead of 5 minutes.

The third example adds a permanent SGLINE on foo for "foo reason."

The fourth example adds a SGLINE on foo for the duration specified in the configuration file for "foo reason."

Syntax: SGLINE DEL <gecos|number>

If number is specified it correlates with the number on SGLINE LIST. You may specify multiple numbers by separating with commas. You may specify a range by using a colon.

Examples:
/msg OperServ SGLINE DEL foo
/msg OperServ SGLINE DEL 5
/msg OperServ SGLINE DEL 1,2,5,10
/msg OperServ SGLINE DEL 1:5,7,9:11

Syntax: SGLINE LIST [FULL]

If FULL is specified the SGLINE reasons will be shown.

Examples:
/msg OperServ SGLINE LIST
/msg OperServ SGLINE LIST FULL

Syntax: SGLINE SYNC

Sends all sglines to all servers. This can be useful in case services will be down or do not see a user as matching a certain sgline.

SHUTDOWN

SHUTDOWN shuts down services. Services will not reconnect or restart.

Syntax: SHUTDOWN

Example:
/msg OperServ SHUTDOWN

SOPER

SOPER allows manipulation of services operator privileges.

SOPER LIST shows all accounts with services operator privileges, both from the configuration file and this command. It is similar to /stats o OperServ.

SOPER LISTCLASS shows all defined oper classes. Use the SPECS command to view the privileges associated with an oper class.

SOPER ADD grants services operator privileges to an account. The granted privileges are described by an oper class. You can also optionally specify a password for the new services operator.

SOPER DEL removes services operator privileges from an account.

SOPER SETPASS sets or clears a password for services operator privileges on an account. The password must be already encrypted. The target user needs to enter the password using IDENTIFY.

It is not possible to modify accounts with operator{} blocks in the configuration file.

Syntax: SOPER LIST|LISTCLASS
Syntax: SOPER ADD <account> <operclass> [password]
Syntax: SOPER DEL <account>
Syntax: SOPER SETPASS <account> [password]

Examples:
/msg OperServ SOPER LIST
/msg OperServ SOPER ADD anoper sra
/msg OperServ SOPER ADD newoper sra $1$bllsww$xBjenkPsZgkqy1Rx5gl2h1
/msg OperServ SOPER DEL abusiveoper
/msg OperServ SOPER SETPASS anoper $1$vHFzU0jC$ePfKvERVwaDRdnHOnZZ6h.

SPECS

SPECS shows the privileges you have in services.

Syntax: SPECS

It is also possible to see the privileges of other online users or of oper classes.

Syntax: SPECS USER <nick>
Syntax: SPECS OPERCLASS <classname>

Example:
/msg OperServ SPECS USER w00t

SQLINE

SQLINE allows you to deny the use of certain nicknames or channels network-wide.

A nickname sqline may contain *, ?, # (any digit) and @ (any letter) wildcards. A channel sqline must be an exact match, starting with # or &.

Syntax: SQLINE ADD <mask> [!P|!T <minutes>] <reason>

If the !P token is specified the SQLINE will never expire (permanent). If the !T token is specified expire time must follow, in minutes, hours ("h"), days ("d") or weeks ("w").

Examples:
/msg OperServ SQLINE ADD spambot* !T 7d bar reason
/msg OperServ SQLINE ADD spam??? !P foo reason

The first example denies the use of nicknames starting with "spambot" for 7 days.

The second example adds a permanent SQLINE on "spam???" for "foo reason."

Syntax: SQLINE DEL <mask|number>

If number is specified it correlates with the number on SQLINE LIST. You may specify multiple numbers by separating with commas. You may specify a range by using a colon.

Examples:
/msg OperServ SQLINE DEL foo
/msg OperServ SQLINE DEL 5
/msg OperServ SQLINE DEL 1,2,5,10
/msg OperServ SQLINE DEL 1:5,7,9:11

Syntax: SQLINE LIST [FULL]

If FULL is specified the SQLINE reasons will be shown.

Examples:
/msg OperServ SQLINE LIST
/msg OperServ SQLINE LIST FULL

Syntax: SQLINE SYNC

Sends all sqlines to all servers. This is useful because sqlines must be present before the nickname or channel is tried to be fully effective.

UPDATE

UPDATE flushes the database to disk.

Syntax: UPDATE

Example:
/msg OperServ UPDATE

UPTIME

UPTIME shows services uptime and the number of registered nicks and channels.

Syntax: UPTIME