mirror of
				https://github.com/jlu5/PyLink.git
				synced 2025-10-31 15:07:25 +01:00 
			
		
		
		
	relay: sync whitelisted mode lists with 2.0-alpha3
This commit is contained in:
		
							parent
							
								
									209fa9722c
								
							
						
					
					
						commit
						1fbe3c6891
					
				| @ -579,7 +579,7 @@ def get_supported_umodes(irc, remoteirc, modes): | ||||
|             # in the supported modes list for the TARGET network, and set that | ||||
|             # mode character as the one we're setting, if it exists. | ||||
|             if modechar == m: | ||||
|                 if name not in whitelisted_umodes: | ||||
|                 if name not in WHITELISTED_UMODES: | ||||
|                     log.debug("(%s) relay.get_supported_umodes: skipping mode (%r, %r) because " | ||||
|                               "it isn't a whitelisted (safe) mode for relay.", | ||||
|                               irc.name, modechar, arg) | ||||
| @ -712,22 +712,74 @@ def relay_part(irc, channel, user): | ||||
|             remoteirc.proto.quit(remoteuser, 'Left all shared channels.') | ||||
|             del relayusers[(irc.name, user)][remoteirc.name] | ||||
| 
 | ||||
| WHITELISTED_CMODES = { | ||||
|      'admin', | ||||
|      'adminonly', | ||||
|      'allowinvite', | ||||
|      'autoop', | ||||
|      'ban', | ||||
|      'banexception', | ||||
|      'blockcolor', | ||||
|      'blockcaps', | ||||
|      'blockhighlight', | ||||
|      'exemptchanops', | ||||
|      'filter', | ||||
|      'flood', | ||||
|      'flood_unreal', | ||||
|      'freetarget', | ||||
|      'halfop', | ||||
|      'hidequits', | ||||
|      'history', | ||||
|      'invex', | ||||
|      'inviteonly', | ||||
|      'joinflood', | ||||
|      'key', | ||||
|      'kicknorejoin', | ||||
|      'kicknorejoin_insp', | ||||
|      'largebanlist', | ||||
|      'limit', | ||||
|      'moderated', | ||||
|      'nickflood', | ||||
|      'noamsg', | ||||
|      'noctcp', | ||||
|      'noextmsg', | ||||
|      'noforwards', | ||||
|      'noinvite', | ||||
|      'nokick', | ||||
|      'noknock', | ||||
|      'nonick', | ||||
|      'nonotice', | ||||
|      'op', | ||||
|      'operonly', | ||||
|      'opmoderated', | ||||
|      'owner', | ||||
|      'private', | ||||
|      'quiet', | ||||
|      'regmoderated', | ||||
|      'regonly', | ||||
|      'repeat', | ||||
|      'repeat_insp', | ||||
|      'secret', | ||||
|      'sslonly', | ||||
|      'stripcolor', | ||||
|      'topiclock', | ||||
|      'voice' | ||||
| } | ||||
| WHITELISTED_UMODES = { | ||||
|      'bot', | ||||
|      'hidechans', | ||||
|      'hideidle', | ||||
|      'hideoper', | ||||
|      'invisible', | ||||
|      'noctcp', | ||||
|      'oper', | ||||
|      'regdeaf', | ||||
|      'stripcolor', | ||||
|      'wallops' | ||||
| } | ||||
| CLIENTBOT_WHITELISTED_CMODES = {'admin', 'ban', 'banexception', 'halfop', 'invex', 'op', 'owner', 'voice'} | ||||
| CLIENTBOT_MODESYNC_OPTIONS = ('none', 'half', 'full') | ||||
| 
 | ||||
| whitelisted_cmodes = {'admin', 'allowinvite', 'autoop', 'ban', 'banexception', | ||||
|                       'blockcolor', 'halfop', 'invex', 'inviteonly', 'key', | ||||
|                       'limit', 'moderated', 'noctcp', 'noextmsg', 'nokick', | ||||
|                       'noknock', 'nonick', 'nonotice', 'op', 'operonly', | ||||
|                       'opmoderated', 'owner', 'private', 'regonly', | ||||
|                       'regmoderated', 'secret', 'sslonly', 'adminonly', | ||||
|                       'stripcolor', 'topiclock', 'voice', 'flood', | ||||
|                       'flood_unreal', 'joinflood', 'freetarget', | ||||
|                       'noforwards', 'noinvite'} | ||||
| whitelisted_umodes = {'bot', 'hidechans', 'hideoper', 'invisible', 'oper', | ||||
|                       'regdeaf', 'stripcolor', 'noctcp', 'wallops', | ||||
|                       'hideidle'} | ||||
| clientbot_whitelisted_cmodes = {'admin', 'ban', 'banexception', | ||||
|                                 'halfop', 'invex', 'op', 'owner', 'voice'} | ||||
| modesync_options = ('none', 'half', 'full') | ||||
| def get_supported_cmodes(irc, remoteirc, channel, modes): | ||||
|     """ | ||||
|     Filters a channel mode change to the modes supported by the target IRCd. | ||||
| @ -737,18 +789,18 @@ def get_supported_cmodes(irc, remoteirc, channel, modes): | ||||
|         return [] | ||||
| 
 | ||||
|     # Handle Clientbot-specific mode whitelist settings | ||||
|     whitelist = whitelisted_cmodes | ||||
|     whitelist = WHITELISTED_CMODES | ||||
|     if remoteirc.protoname == 'clientbot' or irc.protoname == 'clientbot': | ||||
|         modesync = conf.conf.get('relay', {}).get('clientbot_modesync', 'none').lower() | ||||
|         if modesync not in modesync_options: | ||||
|         if modesync not in CLIENTBOT_MODESYNC_OPTIONS: | ||||
|             modesync = 'none' | ||||
|             log.warning('relay: Bad clientbot_modesync option %s: valid values are %s', | ||||
|                         modesync, modesync_options) | ||||
|                         modesync, CLIENTBOT_MODESYNC_OPTIONS) | ||||
| 
 | ||||
|         if modesync == 'none': | ||||
|             return []  # Do nothing | ||||
|         elif modesync == 'half': | ||||
|             whitelist = clientbot_whitelisted_cmodes | ||||
|             whitelist = CLIENTBOT_WHITELISTED_CMODES | ||||
| 
 | ||||
|     supported_modes = [] | ||||
|     for modepair in modes: | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 James Lu
						James Lu