Services compatibility documentation
------------------------------------

Originally written by Lee Hardy for ircd-ratbox. Minor changes by Elizabeth
Myers for modern services.


Compatibility with services is always enabled.  Supported services include
atheme and anope. They add the following features to Charybdis:

1. Channel mode +r

   A simple mode taking no parameters, will require users are logged in
   with user services before they may join the channel.

   Gives numeric 477 to users who arent logged in:
   :<server> 477 <nick> <channel> :Cannot join channel (+r)

2. service block to ircd.conf

   Ability to specify the names of services servers in ircd.conf:
   service {
       name = "services.charybdis.io";
       name = "backup-services.charybdis.io";
   };

   These must be specified for certain features to work.  You may specify as
   many name entries as you wish, however you must define only one service
   block.

   Entries will be listed in stats U with the flag 's'.

3. Services protection

   Services will be protected from being deopped or kicked from a channel.

4. Username tracking through netsplits

   When users are logged in, the username they are logged in with will be
   preserved on a netsplit, so users will not have to relogin when the
   network merges together.

5. Username given on WHOIS

   When users are logged in, WHOIS will also give numeric 330:
   :<server> 330 <yournick> <targetnick> <loginname> :is logged in as

6. Forced nick change

   When using nickname services and a client requests they regain a
   nickname, services can perform a forced nick change on the client.
   This forcibly changes the clients nickname to the one they requested
   they regain, ensuring they can always regain their nickname.

7. User mode +R

   This user mode will require users are logged in with user services
   before they may send private messages or notices to the user.

   As with user mode +g, IRC operators and accepted users can send even
   if they are not logged in.

   Gives numeric 486 to users sending a PRIVMSG who are not logged in:
   :<server> 486 <nick> <targetnick> :You must log in with services to message this user

