3
0
mirror of https://github.com/jlu5/PyLink.git synced 2024-11-01 01:09:22 +01:00

p10: add GLINE support (#139)

This commit is contained in:
James Lu 2017-07-17 07:50:48 -07:00
parent 410ade3b60
commit cc9025a080

View File

@ -60,6 +60,8 @@ class P10SIDGenerator():
self.currentnum += 1 self.currentnum += 1
return sid return sid
GLINE_MAX_EXPIRE = 604800
class P10Protocol(IRCS2SProtocol): class P10Protocol(IRCS2SProtocol):
COMMAND_TOKENS = { COMMAND_TOKENS = {
'AC': 'ACCOUNT', 'AC': 'ACCOUNT',
@ -490,6 +492,24 @@ class P10Protocol(IRCS2SProtocol):
else: else:
raise LookupError("No such PyLink client exists.") raise LookupError("No such PyLink client exists.")
def set_server_ban(self, source, duration, user='*', host='*', reason='User banned'):
"""
Sets a server ban.
"""
assert not (user == host == '*'), "Refusing to set ridiculous ban on *@*"
# https://github.com/evilnet/nefarious2/blob/master/doc/p10.txt#L535
# <- ABAAA GL * +test@test.host 30 1500300185 1500300215 :haha, you're banned now!!!!1
currtime = int(time.time())
if duration == 0 or duration > GLINE_MAX_EXPIRE:
# IRCu and Nefarious set 7 weeks (604800 secs) as the max GLINE length - look for the
# GLINE_MAX_EXPIRE definition
log.debug('(%s) Lowering GLINE duration on %s@%s from %s to %s', self.name, user, host, duration, GLINE_MAX_EXPIRE)
duration = GLINE_MAX_EXPIRE
self._send_with_prefix(source, 'GL * +%s@%s %s %s %s :%s' % (user, host, duration, currtime, currtime+duration, reason))
def sjoin(self, server, channel, users, ts=None, modes=set()): def sjoin(self, server, channel, users, ts=None, modes=set()):
"""Sends an SJOIN for a group of users to a channel. """Sends an SJOIN for a group of users to a channel.