3
0
mirror of https://github.com/jlu5/PyLink.git synced 2024-11-27 13:09:23 +01:00

relay_clientbot: normalize sender names to the senders' home networks

This should work for most messages, except NICK changes and MODE targets.
This commit is contained in:
James Lu 2019-05-18 19:38:47 -07:00
parent 50e9d2d959
commit 1c0ea24acd

View File

@ -110,8 +110,19 @@ def cb_relay_core(irc, source, command, args):
except (AttributeError, KeyError): except (AttributeError, KeyError):
return return
log.debug('(%s) relay_cb_core: Original sender found as %s', irc.name, origuser)
sourcenet, realsource = 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 try: # Try to get the full network name
netname = conf.conf['servers'][sourcenet]['netname'] netname = conf.conf['servers'][sourcenet]['netname']
@ -143,9 +154,9 @@ def cb_relay_core(irc, source, command, args):
identhost = '' identhost = ''
if source in irc.users: if source in irc.users:
try: try:
identhost = irc.get_hostmask(source).split('!')[-1] identhost = irc.get_hostmask(source).split('!', 1)[-1]
except KeyError: # User got removed due to quit 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 # This is specifically spaced so that ident@host is only shown for users that have
# one, and not servers. # one, and not servers.
identhost = ' (%s)' % identhost identhost = ' (%s)' % identhost