3
0
mirror of https://github.com/jlu5/PyLink.git synced 2024-12-24 11:42:51 +01:00

protocols: update nick TS on nick change (#267)

This commit is contained in:
James Lu 2016-07-10 21:10:44 -07:00
parent ade0fa707e
commit 16b162ffbe
2 changed files with 21 additions and 3 deletions

View File

@ -5,6 +5,7 @@ nefarious.py: Nefarious IRCu protocol module for PyLink.
import base64 import base64
import struct import struct
from ipaddress import ip_address from ipaddress import ip_address
import time
from pylinkirc import utils, structures from pylinkirc import utils, structures
from pylinkirc.classes import * from pylinkirc.classes import *
@ -417,9 +418,12 @@ class P10Protocol(IRCS2SProtocol):
if not self.irc.isInternalClient(numeric): if not self.irc.isInternalClient(numeric):
raise LookupError('No such PyLink client exists.') raise LookupError('No such PyLink client exists.')
self._send(numeric, 'NICK %s %s' % (newnick, int(time.time()))) self._send(numeric, 'N %s %s' % (newnick, int(time.time())))
self.irc.users[numeric].nick = newnick self.irc.users[numeric].nick = newnick
# Update the NICK TS.
self.irc.users[numeric].ts = int(time.time())
def numeric(self, source, numeric, target, text): def numeric(self, source, numeric, target, text):
"""Sends raw numerics from a server to a remote client. This is used for WHOIS """Sends raw numerics from a server to a remote client. This is used for WHOIS
replies.""" replies."""
@ -852,7 +856,11 @@ class P10Protocol(IRCS2SProtocol):
# <- ABAAA N GL_ 1460753763 # <- ABAAA N GL_ 1460753763
oldnick = self.irc.users[source].nick oldnick = self.irc.users[source].nick
newnick = self.irc.users[source].nick = args[0] newnick = self.irc.users[source].nick = args[0]
return {'newnick': newnick, 'oldnick': oldnick, 'ts': int(args[1])}
self.irc.users[source].ts = ts = int(args[1])
# Update the nick TS.
return {'newnick': newnick, 'oldnick': oldnick, 'ts': ts}
def checkCloakChange(self, uid): def checkCloakChange(self, uid):
"""Checks for cloak changes (ident and host) on the given UID.""" """Checks for cloak changes (ident and host) on the given UID."""

View File

@ -3,6 +3,7 @@ ts6_common.py: Common base protocol class with functions shared by the UnrealIRC
""" """
import string import string
import time
from pylinkirc import utils, structures from pylinkirc import utils, structures
from pylinkirc.classes import * from pylinkirc.classes import *
@ -196,9 +197,14 @@ class TS6BaseProtocol(IRCS2SProtocol):
"""Changes the nick of a PyLink client.""" """Changes the nick of a PyLink client."""
if not self.irc.isInternalClient(numeric): if not self.irc.isInternalClient(numeric):
raise LookupError('No such PyLink client exists.') raise LookupError('No such PyLink client exists.')
self._send(numeric, 'NICK %s %s' % (newnick, int(time.time()))) self._send(numeric, 'NICK %s %s' % (newnick, int(time.time())))
self.irc.users[numeric].nick = newnick self.irc.users[numeric].nick = newnick
# Update the NICK TS.
self.irc.users[numeric].ts = int(time.time())
def part(self, client, channel, reason=None): def part(self, client, channel, reason=None):
"""Sends a part from a PyLink client.""" """Sends a part from a PyLink client."""
channel = self.irc.toLower(channel) channel = self.irc.toLower(channel)
@ -376,7 +382,11 @@ class TS6BaseProtocol(IRCS2SProtocol):
# <- :70MAAAAAA NICK GL-devel 1434744242 # <- :70MAAAAAA NICK GL-devel 1434744242
oldnick = self.irc.users[numeric].nick oldnick = self.irc.users[numeric].nick
newnick = self.irc.users[numeric].nick = args[0] newnick = self.irc.users[numeric].nick = args[0]
return {'newnick': newnick, 'oldnick': oldnick, 'ts': int(args[1])}
# Update the nick TS.
self.irc.users[numeric].ts = ts = int(args[1])
return {'newnick': newnick, 'oldnick': oldnick, 'ts': ts}
def handle_quit(self, numeric, command, args): def handle_quit(self, numeric, command, args):
"""Handles incoming QUIT commands.""" """Handles incoming QUIT commands."""