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.
Furthermore, Atheme assumes it is the only entity on the network sending
ACCOUNT messages.

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.
Furthermore, Atheme assumes it is the only entity on the network sending
ACCOUNT messages.

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.

Atheme supports both TS5 and TS6 protocol. It is recommended to use TS6
as it reduces ghosts/desyncs and propagates user IP addresses. Although
Atheme does not support IPv6 connections itself, user IPv6 addresses will
be properly stored and logged.

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.

hyperion
--------

The channel mode +D is not supported and will be ignored.

There are two methods to allow services to remember users after a netsplit or
restart and to enable things like channels only accessible for registered
users. The traditional dancer method is umode +e; it only works if the user is
logged in to the nick they are currently using. The new hyperion method using
SVSLOGIN and SIGNON does not have this restriction. It also allows changing
nick/ident/host at the same time, but Atheme does not use that yet.
Consequently, NOIDPREFIX is not supported in a useful way.

Atheme will always set +e appropriately; if SVSLOGIN support is available, it
will be used (this assumes the whole network has it). SVSLOGIN support can
also be disabled with a simple source file change.

The wallops option will report via +s server notices.

Although Atheme does not support IPv6 connections itself, user IPv6 addresses
will be properly stored and logged.

inspircd
--------

You should use inspircd11 for inspircd 1.1.x. InspIRCd 1.0.x support 
(inspircd10) has 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 exceptions to
this are the m_globops.so and m_services_account.so modules, which must be
loaded at all times on your inspircd servers if you wish to use this version of
atheme. If the servers are protocol 1102 or newer, m_globops.so is not
required, although it will be used if loaded.

The inspircd support is developed in cooperation with the inspircd
developers.

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.

nefarious
---------

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.

Atheme assumes it is the only entity on the network sending ACCOUNT messages.
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.

Ban exceptions are supported, although some Nefarious versions have bugs where
they are not sent properly.

officeirc
---------

Unlike other IRCds, OfficeIRC server names do not necessarily have a period in
them; this may cause some warnings about the config file which can safely be
ignored.

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, compile and load the ircd_noprotect and/or
ircd_nohalfops modules from contrib.

Although Atheme does not support IPv6 connections itself, user IPv6 addresses
will be properly stored and logged.

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.

Atheme supports both TS5 and TS6 protocol. It is recommended to use TS6
as it reduces ghosts/desyncs and propagates user IP addresses. Although
Atheme does not support IPv6 connections itself, user IPv6 addresses will
be properly stored and logged.

shadowircd
----------

Atheme does not support the "modern" ShadowIRCd protocol,
revisions 3400 and 4000. You will need to use compatibility mode
with Atheme. Proper care has been taken to ensure that Atheme
complies with all requirements necessary for compatibility mode.

Note that only ShadowIRCd 3.2 and later properly support the removal
of AKILLs, although it may appear to sort of work in earlier versions.

sorcery
-------

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.

ircd-sor 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
ircd-sor does not allow services to set newer topics. KEEPTOPIC and
TOPICLOCK can be used, however.

ultimate3
---------

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

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.
Furthermore, Atheme assumes it is the only entity on the network sending
ACCOUNT messages.

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 IPv6 (neither IPv6 connections nor IPv6 IPs in P10
protocol). IPs of IPv6 clients will not be stored or logged.

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.
