3
0
mirror of https://github.com/jlu5/PyLink.git synced 2024-11-27 21:19:31 +01:00

relay: set umode +H (hideoper) on all remote opered clients

This commit is contained in:
James Lu 2015-08-31 14:23:42 -07:00
parent 5480ae14c4
commit 8d19057118

View File

@ -150,6 +150,8 @@ def getRemoteUser(irc, remoteirc, user, spawnIfMissing=True):
host = userobj.host[:64] host = userobj.host[:64]
realname = userobj.realname realname = userobj.realname
modes = getSupportedUmodes(irc, remoteirc, userobj.modes) modes = getSupportedUmodes(irc, remoteirc, userobj.modes)
opertype = 'IRC_Operator_(remote)'
if ('o', None) in userobj.modes:
if hasattr(userobj, 'opertype'): if hasattr(userobj, 'opertype'):
# InspIRCd's special OPERTYPE command; this is mandatory # InspIRCd's special OPERTYPE command; this is mandatory
# and setting of umode +/-o will fail unless this # and setting of umode +/-o will fail unless this
@ -163,8 +165,11 @@ def getRemoteUser(irc, remoteirc, user, spawnIfMissing=True):
log.debug('(%s) relay.getRemoteUser: setting OPERTYPE of client for %r to %s', log.debug('(%s) relay.getRemoteUser: setting OPERTYPE of client for %r to %s',
irc.name, user, userobj.opertype) irc.name, user, userobj.opertype)
opertype = userobj.opertype + '_(remote)' opertype = userobj.opertype + '_(remote)'
else: # Set hideoper on remote opers, to prevent inflating
opertype = 'IRC_Operator_(remote)' # /lusers and various /stats
hideoper_mode = remoteirc.umodes.get('hideoper')
if hideoper_mode:
modes.append((hideoper_mode, None))
u = remoteirc.proto.spawnClient(remoteirc, nick, ident=ident, u = remoteirc.proto.spawnClient(remoteirc, nick, ident=ident,
host=host, realname=realname, host=host, realname=realname,
modes=modes, ts=userobj.ts, modes=modes, ts=userobj.ts,
@ -619,7 +624,15 @@ def handle_mode(irc, numeric, command, args):
if utils.isChannel(target): if utils.isChannel(target):
relayModes(irc, remoteirc, numeric, target, modes) relayModes(irc, remoteirc, numeric, target, modes)
else: else:
# Set hideoper on remote opers, to prevent inflating
# /lusers and various /stats
hideoper_mode = remoteirc.umodes.get('hideoper')
modes = getSupportedUmodes(irc, remoteirc, modes) modes = getSupportedUmodes(irc, remoteirc, modes)
if hideoper_mode:
if ('+o', None) in modes:
modes.append(('+%s' % hideoper_mode, None))
elif ('-o', None) in modes:
modes.append(('-%s' % hideoper_mode, None))
remoteuser = getRemoteUser(irc, remoteirc, target, spawnIfMissing=False) remoteuser = getRemoteUser(irc, remoteirc, target, spawnIfMissing=False)
if remoteuser is None: if remoteuser is None:
continue continue