mirror of
				https://github.com/jlu5/PyLink.git
				synced 2025-11-04 08:57:25 +01:00 
			
		
		
		
	protocols: implement SVSNICK hooks for InspIRCd, Charybdis, UnrealIRCd (#269)
More testing still needs to be done with this on Nefarious, as atheme (what I'm testing against) doesn't use P10 SVSNICK yet.
This commit is contained in:
		
							parent
							
								
									bc369bf6a6
								
							
						
					
					
						commit
						21d03e7b69
					
				@ -770,4 +770,5 @@ class InspIRCdProtocol(TS6BaseProtocol):
 | 
			
		||||
            self.removeClient(killed)
 | 
			
		||||
        return {'target': killed, 'text': args[1], 'userdata': data}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Class = InspIRCdProtocol
 | 
			
		||||
 | 
			
		||||
@ -17,7 +17,7 @@ class TS6Protocol(TS6BaseProtocol):
 | 
			
		||||
        super().__init__(irc)
 | 
			
		||||
        self.casemapping = 'rfc1459'
 | 
			
		||||
        self.hook_map = {'SJOIN': 'JOIN', 'TB': 'TOPIC', 'TMODE': 'MODE', 'BMASK': 'MODE',
 | 
			
		||||
                         'EUID': 'UID'}
 | 
			
		||||
                         'EUID': 'UID', 'RSFNC': 'SVSNICK'}
 | 
			
		||||
 | 
			
		||||
        # Track whether we've received end-of-burst from the uplink.
 | 
			
		||||
        self.has_eob = False
 | 
			
		||||
@ -657,7 +657,7 @@ class TS6Protocol(TS6BaseProtocol):
 | 
			
		||||
 | 
			
		||||
    def handle_su(self, numeric, command, args):
 | 
			
		||||
        """
 | 
			
		||||
        Handles SU, which is used for setting login information
 | 
			
		||||
        Handles SU, which is used for setting login information.
 | 
			
		||||
        """
 | 
			
		||||
        # <- :00A ENCAP * SU 42XAAAAAC :GLolol
 | 
			
		||||
        # <- :00A ENCAP * SU 42XAAAAAC
 | 
			
		||||
@ -669,4 +669,11 @@ class TS6Protocol(TS6BaseProtocol):
 | 
			
		||||
        uid = args[0]
 | 
			
		||||
        self.irc.callHooks([uid, 'CLIENT_SERVICES_LOGIN', {'text': account}])
 | 
			
		||||
 | 
			
		||||
    def handle_rsfnc(self, numeric, command, args):
 | 
			
		||||
        """
 | 
			
		||||
        Handles RSFNC, used for forced nick change attempts.
 | 
			
		||||
        """
 | 
			
		||||
        # <- :00A ENCAP somenet.relay RSFNC 801AAAAAB Guest75038 1468299643 :1468299675
 | 
			
		||||
        return {'target': args[0], 'newnick': args[1]}
 | 
			
		||||
 | 
			
		||||
Class = TS6Protocol
 | 
			
		||||
 | 
			
		||||
@ -440,3 +440,13 @@ class TS6BaseProtocol(IRCS2SProtocol):
 | 
			
		||||
            if not (self.irc.channels[channel].users or ((self.irc.cmodes.get('permanent'), None) in self.irc.channels[channel].modes)):
 | 
			
		||||
                del self.irc.channels[channel]
 | 
			
		||||
        return {'channels': channels, 'text': reason}
 | 
			
		||||
 | 
			
		||||
    def handle_svsnick(self, source, command, args):
 | 
			
		||||
        """Handles SVSNICK (forced nickname change attempts)."""
 | 
			
		||||
        # InspIRCd:
 | 
			
		||||
        # <- :00A ENCAP 902 SVSNICK 902AAAAAB Guest53593 :1468299404
 | 
			
		||||
        # This is rewritten to SVSNICK with args ['902AAAAAB', 'Guest53593', '1468299404']
 | 
			
		||||
 | 
			
		||||
        # UnrealIRCd:
 | 
			
		||||
        # <- :services.midnight.vpn SVSNICK GL Guest87795 1468303726
 | 
			
		||||
        return {'target': self._getUid(args[0]), 'newnick': args[1]}
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user