mirror of
				https://github.com/jlu5/PyLink.git
				synced 2025-11-03 16:37:22 +01:00 
			
		
		
		
	clientbot: make oper status tracking a network-specific option
This commit is contained in:
		
							parent
							
								
									288a2fffd7
								
							
						
					
					
						commit
						7917502799
					
				@ -283,6 +283,11 @@ servers:
 | 
			
		||||
        #autoperform:
 | 
			
		||||
        #   - "NOTICE somebody :hello, i've connected"
 | 
			
		||||
 | 
			
		||||
        # Determines whether oper statuses should be tracked on this Clientbot network. This
 | 
			
		||||
        # defaults to False for the best security, since oper status may allow more access to the
 | 
			
		||||
        # entire PyLink service than what's desired, even when PyLink is only connected as a bot.
 | 
			
		||||
        track_oper_statuses: false
 | 
			
		||||
 | 
			
		||||
# Plugins to load (omit the .py extension)
 | 
			
		||||
plugins:
 | 
			
		||||
    # Commands plugin: Provides core commands such as logging in, shutting down
 | 
			
		||||
 | 
			
		||||
@ -503,16 +503,17 @@ class ClientbotWrapperProtocol(Protocol):
 | 
			
		||||
        else:
 | 
			
		||||
            log.warning('(%s) handle_352: got wrong string %s for away status', self.irc.name, status[0])
 | 
			
		||||
 | 
			
		||||
        if '*' in status:  # Track IRCop status
 | 
			
		||||
            if not self.irc.isOper(uid, allowAuthed=False):
 | 
			
		||||
                # Don't send duplicate oper ups if the target is already oper.
 | 
			
		||||
                self.irc.applyModes(uid, [('+o', None)])
 | 
			
		||||
                self.irc.callHooks([uid, 'MODE', {'target': uid, 'modes': {('+o', None)}}])
 | 
			
		||||
                self.irc.callHooks([uid, 'CLIENT_OPERED', {'text': 'IRC Operator'}])
 | 
			
		||||
        elif self.irc.isOper(uid, allowAuthed=False) and not self.irc.isInternalClient(uid):
 | 
			
		||||
            # Track deopers
 | 
			
		||||
            self.irc.applyModes(uid, [('-o', None)])
 | 
			
		||||
            self.irc.callHooks([uid, 'MODE', {'target': uid, 'modes': {('-o', None)}}])
 | 
			
		||||
        if self.irc.serverdata.get('track_oper_statuses'):
 | 
			
		||||
            if '*' in status:  # Track IRCop status
 | 
			
		||||
                if not self.irc.isOper(uid, allowAuthed=False):
 | 
			
		||||
                    # Don't send duplicate oper ups if the target is already oper.
 | 
			
		||||
                    self.irc.applyModes(uid, [('+o', None)])
 | 
			
		||||
                    self.irc.callHooks([uid, 'MODE', {'target': uid, 'modes': {('+o', None)}}])
 | 
			
		||||
                    self.irc.callHooks([uid, 'CLIENT_OPERED', {'text': 'IRC Operator'}])
 | 
			
		||||
            elif self.irc.isOper(uid, allowAuthed=False) and not self.irc.isInternalClient(uid):
 | 
			
		||||
                # Track deopers
 | 
			
		||||
                self.irc.applyModes(uid, [('-o', None)])
 | 
			
		||||
                self.irc.callHooks([uid, 'MODE', {'target': uid, 'modes': {('-o', None)}}])
 | 
			
		||||
 | 
			
		||||
        self.who_received.add(uid)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user