IRCD-specific notes
-------------------

asuka
-----

You need U:lines for services on all servers on the network.

You must enable join_chans as P10 is designed for services to work that way.

P10 does not support logout, so users are killed (from the services server)
when they log out. It is suggested that the logout module is not loaded.
Users dropping their account will be killed; this cannot be avoided.

Asuka's +N (no notices/wallchops) mode is turned off whenever a
notice/wallchops is to be sent to a channel (it should not block notices from
remotes or wallchops, really). If you want a channel to be +N always, leave
verbose disabled.

For host hiding (umode +x, <account>.<suffix>) to work, the hosthidesuffix
in serverinfo{} must be correct (same value as F:HIDDEN_HOST in ircd.conf).

SETHOST (umode +h [ident@]host) is supported. When changing the ident via +h,
atheme will not restore the ident on -h. This can be worked around by never
changing ident with +h, never doing -h or doing a +h with the original ident@
before -h.

bahamut
-------

You need U:lines/super{} entries for services on all servers on the network.

Bahamut is designed for services not joining channels, not having the ability
to prevent services being kicked/deopped and the like. If you want to use
fantasy commands, you will have to enable join_chans anyway; beware of bots
fighting with chanserv.

Do not use the "services hub" server type.

charybdis
---------

You will need a service{} block on all servers.

If you want to use akills, you need shared{} blocks for services on all servers
on the network.

inspircd
--------

You should use the "inspircd" protocol module for InspIRCd 3.x and 4.x.
InspIRCd 1.2 support was deprecated in atheme 7.1 and has been dropped
in atheme 7.2. InspIRCd 2.x support has been dropped in atheme 7.3.

You need <uline> tags for services on all servers on the network.

Several of the modes supported by Atheme are in optional modules. It should
usually not be a problem if those modules are not loaded. The exception to
this is the m_services_account.so module, which must be loaded at all times
on your inspircd servers if you wish to use this version of atheme.

Jupes will use SIDs numerically following services's SID, make sure to leave
plenty of space.

ircnet
------

Atheme links as a server (C:, N:, H: lines), not as a service. IRCnet-style
services cannot do enough (like manipulating channel modes).

Nick delay will lock any nicks killed, so /ns ghost is worthless; it is
probably best to use userserv instead of nickserv.

Only # channels are supported.

Tklines are used for /os akill but this only works on the server
Atheme is directly linked to.

It is recommended to enable join_chans, otherwise many things will be sent
from the server (possibly generating nasty server notices) or chanserv will
join and part to do the action. Alternatively, disable it and avoid commands
that cause Atheme to kick as much as possible.

Jupes will use SIDs numerically following services's SID, make sure to
leave plenty of space.

Server hostmasking mostly works, but Atheme will not mask itself (this would
not be useful anyway). Messages from masked servers which have the server
name as prefix are not recognized. This may affect KILL in particular.

nefarious
---------

You need U:lines for services on all servers on the network.

EXTENDED_ACCOUNTS must be enabled. Login-on-connect is not supported.

For host hiding (umode +x, <account>.<suffix>) to work, the hosthidesuffix
in serverinfo{} must be correct (same value as F:HIDDEN_HOST in ircd.conf).
Only F:HOST_HIDING_STYLE:1 (<account>.<suffix>) is supported,
F:HOST_HIDING_STYLE:2 (scrambled hostname/IP) is not.

SETHOST (umode +h [ident@]host) is supported. When changing the ident via +h,
atheme will not restore the ident on -h. This can be worked around by never
changing ident with +h, never doing -h or doing a +h with the original ident@
before -h.

/ns vhost will use the FAKEHOST mechanism. Using SETHOST and /ns vhost at
the same time may cause trouble. Other uses of FAKEHOST may also cause
trouble. Combining +x and /ns vhost is OK.

Ban exceptions (EXCEPTS and BREAK_P10) are supported, although some Nefarious
versions have bugs where they are not sent properly.

ratbox
------

If you want to use operserv akill, you need shared{} blocks or U:lines
for services on all servers on the network. Note that only hybrid 7.1
and ratbox support remote unkline, although it may appear to sort of
work in hybrid 7.0.

If you use ratbox 2.1.x or newer, it is recommended to compile with
ratbox-services support as this will allow remembering logged-in state
across netsplits and services restarts, prevent deopping/kicking chanserv,
etc. You will need a service{} block on all servers.

Hybrid 6.x or csircd should also work but they are not recommended; you
must leave join_chans enabled for full functionality.

elemental-ircd
--------------

This protocol module supports elemental-ircd. It might be possible to
use this protocol module on charybdis-based ShadowIRCd versions when
protocol/mixin_noowner is loaded.

You will need a service{} block on all servers.

If you want to use akills, you need shared{} blocks for services on all servers
on the network.

unreal
------

You need ulines{} for services on all servers on the network. If a server lacks
U:lines, a storm of mode changes may result.
