Get involved
Run a network or a channel? Here is how to get listed, set up channel statistics, and let our read-only collector connect cleanly.
Getting your network listed (or removed)
We add networks by hand, one at a time. If you would like yours tracked - or taken down - just send us a note with the network name and a server to connect to. We only ever connect as a single, well-behaved read-only client: we run LIST and LUSERS, record the totals, and disconnect. We never join a channel or read anything anyone says during a network sweep.
Not verified yet? Networks we track that haven't confirmed they are happy with it show as unverified. If that is yours, please reach out - a quick word from an IRC operator or network administrator confirms we may collect from your network and gets it marked as verified. If you would rather we did not, tell us and we will take it down. There is no obligation either way; we would just rather have your say-so.
Channel statistics for your channel
Channel statistics - a channel's day-by-day activity, busiest hours, top talkers and the like - are opt-in and set up per channel. There are three ways to feed them, whichever suits you:
Network approval comes first. Because this means our client connecting to (and, for the first option below, sitting in a channel on) your network, an IRC operator or network administrator has to sign off before we can begin - even if you own the channel. If you are the channel owner but not network staff, loop in your network's admins first; we are happy to walk them through exactly what we do and do not store.
- Let our client sit in the channel. The same read-only collector joins and tallies activity as it happens, counting messages and events. It never stores what is said - only aggregate daily counts, plus one short sample line per top nick, ever leave the channel.
- Run our tool yourself. Grab the open-source channel-stats tool, point it at your existing logs or your own bot, and it sends us just the aggregate totals. The full text never leaves your machine.
- Upload a log file. If you would rather not run anything, send us a log and we process it at our end into the same aggregate counts.
Whichever route you pick, we only ever keep aggregate counts and that single sample line per nick. We never store full message logs. To get a channel set up, get in touch.
How we identify ourselves
The collector is easy to recognise on IRC. It answers a VERSION request with who we are and a link back here, and flags itself as a bot where the network supports it - so you can always see what it is and reach us.
Whitelisting the collector
If your network throttles new connections, runs DNS blacklists, or rate-limits LIST, you can add our collector to your allow list so it connects cleanly and finishes a sweep without being dropped. It stays a single read-only client either way - whitelisting just keeps it from tripping generic abuse protection.
The collector reaches you from two hosts - allow either or both, whichever is talking to you:
Each example lists both the hostname and the IP - use whichever your ircd matches on, and drop the other if you like. These are stable addresses (hence the name), but if they ever change we'll update this page. Rehash the server after editing the config.
/* erkstats collector - stable.erkstats.info (primary), stable.nictitate.net (secondary) */
except ban {
mask { stable.erkstats.info; 20.211.170.222; stable.nictitate.net; 20.227.22.88; }
type { blacklist; handshake-data-flood; connect-flood; }
}
except throttle {
mask { stable.erkstats.info; 20.211.170.222; stable.nictitate.net; 20.227.22.88; }
}
<connect name="erkstats-primary" allow="20.211.170.222"
fakelag="no" localmax="5" globalmax="5" limit="5">
<connect name="erkstats-secondary" allow="20.227.22.88"
fakelag="no" localmax="5" globalmax="5" limit="5">
auth {
user = "*@stable.erkstats.info"; # primary
user = "*@20.211.170.222";
user = "*@stable.nictitate.net"; # secondary
user = "*@20.227.22.88";
flags = exceed_limit, dnsbl_exempt, kline_exempt;
};
auth {
user = "*@stable.erkstats.info"; # primary
user = "*@20.211.170.222";
user = "*@stable.nictitate.net"; # secondary
user = "*@20.227.22.88";
flags = exceed_limit, kline_exempt, can_flood;
};
allow {
host "*@stable.erkstats.info"; # primary
ipmask "*@20.211.170.222";
class "users";
flags "CFT";
};
allow {
host "*@stable.nictitate.net"; # secondary
ipmask "*@20.227.22.88";
class "users";
flags "CFT";
};