diff --git a/protocols/inspircd.py b/protocols/inspircd.py index 762a0ee..33f9c2a 100644 --- a/protocols/inspircd.py +++ b/protocols/inspircd.py @@ -189,26 +189,20 @@ class InspIRCdProtocol(TS6BaseProtocol): raise LookupError('No such PyLink server exists.') self._sendModes(numeric, target, modes, ts=ts) - def _sendKill(self, numeric, target, reason): + def kill(self, numeric, target, reason): + """Sends a kill from a PyLink client/server.""" + if (not self.irc.isInternalClient(numeric)) and \ + (not self.irc.isInternalServer(numeric)): + raise LookupError('No such PyLink client/server exists.') + self._send(numeric, 'KILL %s :%s' % (target, reason)) + # We only need to call removeClient here if the target is one of our # clients, since any remote servers will send a QUIT from # their target if the command succeeds. if self.irc.isInternalClient(target): self.removeClient(target) - def killServer(self, numeric, target, reason): - """Sends a kill from a PyLink server.""" - if not self.irc.isInternalServer(numeric): - raise LookupError('No such PyLink server exists.') - self._sendKill(numeric, target, reason) - - def killClient(self, numeric, target, reason): - """Sends a kill from a PyLink client.""" - if not self.irc.isInternalClient(numeric): - raise LookupError('No such PyLink client exists.') - self._sendKill(numeric, target, reason) - def topicServer(self, numeric, target, text): """Sends a topic change from a PyLink server. This is usually used on burst.""" if not self.irc.isInternalServer(numeric): diff --git a/protocols/ts6.py b/protocols/ts6.py index cadf109..1c13a4b 100644 --- a/protocols/ts6.py +++ b/protocols/ts6.py @@ -169,10 +169,13 @@ class TS6Protocol(TS6BaseProtocol): raise LookupError('No such PyLink server exists.') self._sendModes(numeric, target, modes, ts=ts) - def killServer(self, numeric, target, reason): - """Sends a kill from a PyLink server.""" - if not self.irc.isInternalServer(numeric): - raise LookupError('No such PyLink server exists.') + def kill(self, numeric, target, reason): + """Sends a kill from a PyLink client/server.""" + + if (not self.irc.isInternalClient(numeric)) and \ + (not self.irc.isInternalServer(numeric)): + raise LookupError('No such PyLink client/server exists.') + # KILL: # parameters: target user, path @@ -180,15 +183,7 @@ class TS6Protocol(TS6BaseProtocol): # the kill followed by a space and a parenthesized reason. To avoid overflow, # it is recommended not to add anything to the path. - assert target in self.irc.users, "Unknown target %r for killServer!" % target - self._send(numeric, 'KILL %s :Killed (%s)' % (target, reason)) - self.removeClient(target) - - def killClient(self, numeric, target, reason): - """Sends a kill from a PyLink client.""" - if not self.irc.isInternalClient(numeric): - raise LookupError('No such PyLink client exists.') - assert target in self.irc.users, "Unknown target %r for killClient!" % target + assert target in self.irc.users, "Unknown target %r for kill()!" % target self._send(numeric, 'KILL %s :Killed (%s)' % (target, reason)) self.removeClient(target) diff --git a/protocols/unreal.py b/protocols/unreal.py index cb53738..7b3af63 100644 --- a/protocols/unreal.py +++ b/protocols/unreal.py @@ -176,25 +176,20 @@ class UnrealProtocol(TS6BaseProtocol): if not (target is None or source is None): self._send(source, 'PING %s %s' % (self.irc.servers[source].name, self.irc.servers[target].name)) - def killServer(self, numeric, target, reason): - """Sends a kill from a PyLink server.""" + def kill(self, numeric, target, reason): + """Sends a kill from a PyLink client/server.""" # <- :GL KILL 38QAAAAAA :hidden-1C620195!GL (test) - if not self.irc.isInternalServer(numeric): - raise LookupError('No such PyLink server exists.') - assert target in self.irc.users, "Unknown target %r for killServer!" % target + if (not self.irc.isInternalClient(numeric)) and \ + (not self.irc.isInternalServer(numeric)): + raise LookupError('No such PyLink client/server exists.') + + assert target in self.irc.users, "Unknown target %r for kill()!" % target + # The killpath doesn't really matter here... self._send(numeric, 'KILL %s :%s!PyLink (%s)' % (target, self.irc.serverdata['hostname'], reason)) self.removeClient(target) - def killClient(self, numeric, target, reason): - """Sends a kill from a PyLink client.""" - if not self.irc.isInternalClient(numeric): - raise LookupError('No such PyLink client exists.') - assert target in self.irc.users, "Unknown target %r for killClient!" % target - self._send(numeric, 'KILL %s :%s!PyLink (%s)' % (target, self.irc.serverdata['hostname'], reason)) - self.removeClient(target) - def _sendModes(self, numeric, target, modes, ts=None): """Internal function to send mode changes from a PyLink client/server.""" # <- :unreal.midnight.vpn MODE #endlessvoid +ntCo GL 1444361345