[IRCServices Coding] Making Services 5 friendly external pseudo clients

Mark Hetherington mark at mhetherington.demon.co.uk
Sun Feb 10 08:51:04 PST 2002


Currently on our network we have a couple of psuedo clients which are not
part of IRC Services but have similar "powers" as +S psudeo clients on
ulined servers. This includes a StatServ client that we had been running for
some time prior to the first StatServ appearing in IRC Services and an open
proxy monitor.

Although they generally live happily together, since Services does not
recognise these external psuedo clients, occasionally they tend to "fight".

Using our StatServ as an example, this basically sits in a channel
announcing various information about the network for the use of IRCops.
Ideally we would like this channel locked to be an oper only channel but
currently have to rely on an eggdrop bot to enforce this rather than
ChanServ.

The problems are twofold. Firstly, since Services has no way of recognising
an external psuedo client, when StatServ ops itself, Chanserv will
immediately deop it. Secondly, if the channel mode is set to mode +O,
StatServ can happily join the channel (as a +S user), but services will
enforce the mode and kick StatServ as a non-oper. This results in a vicious
flood of join/kicks as they both fight for their rights :)

Hopefully, the built-in StatServ will eventually provide most if not all of
the functionality of our existing StatServ and anything it doesn't provide
we can develop into a custom module of services. But, until that time, we
need to maintain StatServ as an external pseudo client.

The simplest way seems to be some recognition within services for other
ulined servers possibly by detecting the +S user mode in a similar way that
our StatServ will recognise each Services pseudo client as such. Is there
anything in current versions of services that would allow the two servers to
live together or anything we could set in our external pseudo clients which
would cause services to ignore their actions?


Mark.