From 1c0ea24acdd2d1fbba36073cf62907bf0e1a84c3 Mon Sep 17 00:00:00 2001 From: James Lu Date: Sat, 18 May 2019 19:38:47 -0700 Subject: [PATCH] relay_clientbot: normalize sender names to the senders' home networks This should work for most messages, except NICK changes and MODE targets. --- plugins/relay_clientbot.py | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/plugins/relay_clientbot.py b/plugins/relay_clientbot.py index 9eebf0d..e394285 100644 --- a/plugins/relay_clientbot.py +++ b/plugins/relay_clientbot.py @@ -110,8 +110,19 @@ def cb_relay_core(irc, source, command, args): except (AttributeError, KeyError): return - log.debug('(%s) relay_cb_core: Original sender found as %s', irc.name, origuser) sourcenet, realsource = origuser + log.debug('(%s) relay_cb_core: Original sender found as %s', irc.name, origuser) + if 'newnick' not in args: # XXX: we can't really normalize sender names for nick changes, because we'll always see the new nick + try: + sourcename = world.networkobjects[sourcenet].get_friendly_name(realsource) + except LookupError: + # Fallbacks for users that have just quit / servers that have just split + if args.get('serverdata'): + sourcename = args['serverdata'].name + elif args.get('userdata'): + sourcename = args['userdata'].nick + else: + log.debug('(%s) relay_cb_core: could not get original name of sender %s/%s', irc.name, realsource, sourcenet, exc_info=True) try: # Try to get the full network name netname = conf.conf['servers'][sourcenet]['netname'] @@ -143,9 +154,9 @@ def cb_relay_core(irc, source, command, args): identhost = '' if source in irc.users: try: - identhost = irc.get_hostmask(source).split('!')[-1] + identhost = irc.get_hostmask(source).split('!', 1)[-1] except KeyError: # User got removed due to quit - identhost = '%s@%s' % (args['olduser'].ident, args['olduser'].host) + identhost = '%s@%s' % (args['userdata'].ident, args['userdata'].host) # This is specifically spaced so that ident@host is only shown for users that have # one, and not servers. identhost = ' (%s)' % identhost