# IRC Services Manual

## 1. About IRC Services

1-1. Introduction
1-2. Overview of IRC Services clients
1-3. IRC Services home page and download URL
1-4. IRC Services discussion forums
1-5. Credits and acknowledgements

Table of Contents

### 1-1. Introduction

IRC Services (also called just "Services" for short) is a system of services to be used with Internet Relay Chat networks. Services provides for definitive nickname and channel ownership, as well as the ability to send messages ("memos") to offline users, and gives IRC operators considerably more control over the network.

In particular, Services provides the following features to an IRC network:

- Nickname management. Services allows users to "register" nicknames, and will prevent users other than the registrant from using them. Services also maintains information about each registered nickname, including the last time the nick's owner was online as well as a URL and E-mail address that can be set by the user.
- Channel management. Like nicknames, Services allows users to register channels as well. A channel's owner can give privileges to other users of the channel, such as auto-opping or the ability to set various channel options, or conversely deny other users the ability to obtain channel operator privileges or even enter the channel altogether. Services will remember the topic on the channel even after the last user leaves, and can automatically set modes on the channel whenever a user joins it.
- Messages to offline users. Probably every IRC user has gone through the experience of waiting and waiting for someone to come online in order to pass a message along or ask a question. Services alleviates this with a "memo" system, allowing users to leave messages for other users even if the recipient is not online at the time; the recipient will be notified of the memo the next time they log on.
- Centralized network control. Services includes features which allow IRC operators greater control over the IRC network through a single point, and also defines multiple privilege levels for IRC operators with respect to Services itself. For example, IRC operators with sufficient privileges can use Services to set modes on any channel; it is also possible to ban users or groups of users from connecting to the network entirely, and such bans ("autokills" in Services terminology) will remain active even if a server, or Services itself, splits from the network.

Furthermore, each of these sets of features can be configured or disabled to match individual networks' policies.

Back to top

### 1-2. Overview of Services clients

Each of the major feature groups mentioned in section 1-1 above is controlled through a Services client, a nickname associated with that particular set of features. (These are often called "pseudoclients", since they are not true clients, like IRC programs used by humans, but simply conveniences to simplify access to Services' features.) These clients, as well as others which handle smaller areas of network control, are discussed below; a more detailed discussion of each feature is presented in section 3, while complete descriptions of the commands used to control each client can be found in section 4.

NickServ handles registration and maintenance of nicknames. Its primary functions include:

- registration and de-registration (dropping) of nicknames;
- verification of nickname users, including password authentication, and removal (either automatically or upon request) of unauthorized users;
- creation and deletion of nickname aliases (links), which allow a single user to own and switch between multiple nicknames which share settings;
- control of nickname options, including security level (whether to require a password or simply check the user's username and hostname), associated URL and E-mail address, and what information to show or not show to other users;
- recording of nickname usage information, including the nickname's last used time and the username and hostname of the nickname's last user; and
- expiration of nicknames that have not been used in a certain period of time.

Services has the ability to send messages to users in multiple languages; a user who has registered their nickname can select from any of the supported languages (currently English, Dutch, French, German, Hungarian, Spanish, and Turkish, with partial support for Italian, Japanese, and Portugese). A default language can also be configured for users who have not registered their nicknames or have not selected a specific language.

Furthermore, NickServ has the ability to verify E-mail addresses associated with nicknames, by sending an "authorization code" to the E-mail address and not allowing the owner any privileges associated with the nickname until the owner sends that authorization code back to NickServ. This feature can help maintain accountability of users for their actions on IRC by requiring a valid E-mail address at which the user of a nickname can be contacted if problems arise.

ChanServ is to channels what NickServ is to nicknames; it handles registration and maintenance of channels on the IRC network. Its functions in large part mirror those of NickServ, and include:

- registration and dropping of channels (a user who registers a channel is known as the channel's founder);
- verification of channel users, either through direct password authentication or NickServ verification;
- control of channel access and autokick lists (see below);
- monitoring and adjustment of channel modes, including automatically giving channel-operator or voice privileges or "inviting" authorized users into invite-only channels;
- control of channel options, such as preventing users from changing the topic or controlling the strictness with which channel modes and privileges are enforced, and setting a URL or E-mail address for the channel;
- recording of channel usage information, including the last time a verified user was in the channel; and
- expiration of channels that have not been used in a certain period of time.

One major difference between nicknames and channels is the access list. While nicknames may have an "access list" which lists addresses which NickServ will recognize as "allowed to use the nickname"—a feature that has little value if passwords are used as the primary means of verification—channel access lists play a much greater role, in that they control which users (nicknames) have what degree of access to (privileges in) the channel. The founder of a channel will always have full access to the channel, but the founder can, via the access list, designate other users who will receive a certain subset of channel privileges. For example, the founder might give privileges to some users to automatically receive channel operator (`+o`) status when they enter the channel; those users might then, in turn, designate other users to automatically receive voice (`+v`) status if the channel is moderated. Certain levels of access also allow users to use privileged ChanServ features, such as management of the "autokick list", explained below, or commands which remove channel bans on a user or invite the user into a channel.

Conversely, the autokick list (often referred to as the "AKICK list", from the name of the command—`AKICK`—which controls it) specifies users which are not to be allowed access to the channel at all. If a user joins a channel whose autokick list they are listed on, ChanServ will kick them out of the channel and set a channel ban which prevents them from entering again. Since a malicious user could easily enter using an unregistered nickname, channel founders (or other privileged users) can enter username/hostname masks as well as nicknames in the autokick list.

As channels are complex beasts, ChanServ features many options which control how the channel is managed; for example, ChanServ can be set to disallow any changes to the channel topic (if a user changes the topic, ChanServ will cancel the change by restoring the previous topic), or to prevent any users not explicitly entered in the access list from using the channel. ChanServ can also enforce a certain set of modes on a channel; for example, a channel which wants to stay hidden from casual users could use ChanServ to ensure that the `+s` (secret) mode is always set on the channel.

If the founder of a channel loses his nickname, whether by explicitly dropping it or by letting it expire, the channel will be dropped as well. If this should happen by accident, it can be difficult to restore all of the channel settings. To help avoid this problem, ChanServ allows channel founders to designate a successor for the channel. If the founder's nickname should ever be dropped or expire, rather than dropping the channel, ChanServ will give the channel to the successor, making them the new founder of the channel.

MemoServ handles storage and notification of memos, short messages between IRC users. Memos can be thought of as an intermediate stage between realtime chat and E-mail; they are sent and read in the same way as ordinary chatting, but can be sent even if the recipient is not online at the time, and the recipient can read the memos at his or her leisure. Memos are particularly useful for short messages for which it would not be worth the time to start up an E-mail client and type out a complete message, or for cases where the nickname of the recipient is known but the recipient's E-mail address is not (or the recipient does not have an E-mail address at all).

MemoServ's four main functions are sending memos, listing memos which have been received, reading memos, and deleting memos after they have been read. Users can also set memo options, which include whether to notify them of new memos when they log on and whether they should be able to receive memos at all.

In addition to memos between users, memos can also be sent to channels; such memos are only readable by users with sufficient privileges on the channel. This type of memo can be used, for example, to inform channel operators about a problem user, or as a central point for users with questions about the channel to send messages to.

OperServ provides access to the "network control" functionality of Services. Available only to IRC operators, OperServ allows:

- broadcasts of messages to the entire network (global notices), as well as recording of news messages to be sent to users when they connect to the network;
- control of modes in any channel, as well as the ability to kick any user from any channel;
- banning certain users from the entire network (autokill list and S-lines, described below);
- limiting the number of users which can connect from a single IP address, useful for preventing "cloning" (sessions), as well as making exceptions to those limits;
- disconnecting all users from a given IP address;
- preventing certain servers from connecting to the network ("juping");
- setting global Services options; and
- restarting or shutting down Services itself.

Many of these functions can, if misused, have disastrous effects for the entire network; thus, OperServ implements a privilege system to limit which IRC operators can use which functions. Four different privilege levels are defined: normal IRC operator, Services operator, Services administrator, and Services super-user (also known as "Services root", from the Unix tradition of using the username "root" for the system super-user). Normal IRC operators can use very few of the functions above, while the Services super-user has absolute control over Services and the IRC network.

Of particular note are the autokill list and S-line features, which are to the network as autokick lists are to channels; users in these lists will be prohibited from connecting to any server on the network, and will be disconnected immediately if they do connect. The difference between the two is what they prohibit; the autokill list prohibits certain combinations of username and hostname, much like autokick lists do, while S-lines, named after the commands used by a certain IRC server to implement them, prohibit nicknames, "real names", or IP addresses (IP address checking is only available with a few IRC servers).

OperServ also includes a separate client, by default called Global, which is used to send global (network-wide) notices and news messages to users. Many networks rename this client to the same name as their network; the name of the client (as well as all other Services clients) can be changed by editing the configuration file, as described in section 2-4.

StatServ is an additional client which monitors and keeps statistical information regarding network usage. It can be useful to check, for example, which servers are getting the most use, or whether certain servers have a tendency to split from the network frequently.

In addition to the clients above, Services also has a built-in HTTP (web) server, which allows access to Services information (such as registered nickname and channel information and network statistics) without having to connect to the IRC network. See section 3-6 for more information about the HTTP server.

Back to top

### 1-3. IRC Services home page and download URL

The official IRC Services home page is located at `http://www.ircservices.za.net/`. This page contains up-to-date information on Services (including much of the information in this section), as well as links to download Services and a copy of this manual.

The primary download site is located at `ftp://ftp.ircservices.za.net/pub/ircservices/` (located in South Africa); the most recent version of the Services source code distribution can always be obtained at `ftp://ftp.ircservices.za.net/pub/ircservices/current.tar.gz`. Mirrors of the download site are available at:

- `ftp://ftp.esper.net/ircservices/` (Western USA)
- `ftp://ftp.electrocity.com/pub/ircservices/` (Eastern USA)
- `http://ftp.freenet.de/pub/ftp.esper.net/ircservices/` (Germany, also accessible via FTP)
- `http://www.irc.gr/ircservices/` (Greece)
- `ftp://ftp.ircd.com.br/ircservices/` (Brazil)

Back to top

### 1-4. IRC Services discussion forums

There is a public mailing list available for discussion of Services. Anyone may subscribe to the mailing list and participate in the discussion, but you must subscribe before you will be allowed to send mail to the list. You can subscribe to the list by visiting `http://www.ircservices.za.net/mailman/listinfo/ircservices`. You will be sent a confirmation E-mail message; reply to that message and you will be subscribed to the list. If you later want to unsubscribe, visit the same page and select "Edit Options" after entering your E-mail address; you can also temporarily disable mail delivery and set other delivery options from that page.

Once you have subscribed, the address for posting to the list is `ircservices@ircservices.za.net`. Archives of past messages to the list are available at `http://www.ircservices.za.net/pipermail/ircservices/`; please check the archives before asking a question to make sure your question has not been answered already.

When posting to the mailing lists, please observe standard E-mail etiquette (in particular, be polite to others, don't flame), and please read the documentation (this manual, and especially the FAQ) before asking for help! Neither the author of Services nor long-time members of the list have any tolerance for questions that could be easily answered by simply reading the documentation. Also, do not send HTML messages to the list; many mailing list members, including the author of Services, cannot read them.

Users who intend to modify or extend Services may also wish to join the `ircservices-coding@ircservices.za.net` mailing list; information on this mailing list can be found at `http://www.ircservices.za.net/mailman/listinfo/ircservices-coding`. Please note that discussions on this list are frequently very technical in nature, and questions about setting up or using Services will not be answered there.

Back to top

### 1-5. Credits and acknowledgements

Services is primarily the work of Andrew Church, and has been under development since early 1996. However, many other people have contributed to the project as well. Some of the more noteworthy contributors include:

- Andrew Kempe (session limiting and news systems, as well as maintenance and development of Services for versions 4.3 and 4.4)
- Yusuf Iskenderoglu (Turkish translation and many feature suggestions)
- Martin Pels (Dutch translation)
- Elijah (French translation)
- Jacek Margos and Holger Baust (German translation)
- Janos Kapitany and Krisztian Romek (Hungarian translation)
- <RealCFC@chatfirst.com> (Spanish translation)

Credit is given to all contributions in the `Changes` and `Changes.old` files in the top directory of the Services distribution, which detail all changes made in each version of Services.

The Services home page is designed and maintained by Andrew Kempe, who also maintains the primary download site. Mirrors of the download site are provided by Ian Justman, Michael Raff, Michael Haardt, Sotiris Tsimbonis, and Andre Arruda.

Back to top

Table of Contents | Previous section: What does "RTFM" mean? | Top | Next section: About IRC Services