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.

bircd
-----

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.

For host hiding (umode +x, <account>.<suffix>) to work, the hosthidesuffix
in serverinfo{} must be correct.

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.

dreamforge
----------

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

Dreamforge 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.

The TOPIC and TOPICAPPEND commands cannot be used to change topics as
dreamforge does not allow services to set newer topics. KEEPTOPIC and
TOPICLOCK can be used, however.

Dreamforge is a dated IRCd, you should probably upgrade to a more
modern one.

inspircd
--------

You should use inspircd12 for inspircd 1.2.x, inspircd 2.0.x and inspircd 2.1.x.
InspIRCd 1.0.x support (inspircd10) and InspIRCd 1.1.x support (inspircd11)
have been dropped.

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.

Using the m_invisible module on inspircd with Atheme connected is an unsupported
condition and will result in your Atheme installation being "tainted".

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.

officeirc
---------

Support for OfficeIRC has been discontinued as of Atheme 6.0. We suggest
switching to another IRCd.

plexus
------

PleXusIRCd 3 is the only version supported.

If you want services to function properly, you will need a shared { } 
block for services, without any usermask entries, tagged for services:

shared
{
     name = "services.int";
     type = all, services;
};

The above block should do the trick.

ptlink
------

Atheme's server name must match ServicesServer in network.dconf (on all
servers on the network).

The following options/features are not recommended: HideServerOnWhois (not
effective), SecureModes (Atheme does not set channels +r), RestrictedChans (not
implemented by Atheme), user mode +H (various bugs and tricks allow users to
see the oper status anyway), stealth mode (highly unethical and various bugs
and tricks allow users to get around it).

PTlink ircd allows services to do various special things like restarting the
server; write a module if you want to use those.

By default, Atheme assumes cmode +a (channel admin/protect, AdminWithDot in
network.dconf) and cmode +h (halfops, compile time option) are enabled. If
this is not the case, load the protocol/mixin_noprotect and/or
protocol/mixin_nohalfops modules.

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.

shadowircd
----------

This protocol module supports the charybdis-based versions of ShadowIRCd
(5.x and 6.x).

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.

ultimate3
---------

Support for UltimateIRCd 3 has been discontinued as of Atheme 6.0. We suggest
switching to another IRCd that's still being developed.

undernet
--------

You need U:lines or UWorld entries 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.

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).

Atheme does not support oplevels; they should be disabled.

chanserv::changets can be used with ircu version 2.10.12.06 or newer; if any
server on the network is 2.10.11.x, netsplits will occur whenever Atheme tries
to lower TS.

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.
