Hello community,

here is the log from the commit of package python-limnoria for openSUSE:Factory 
checked in at 2020-12-10 15:59:08
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-limnoria (Old)
 and      /work/SRC/openSUSE:Factory/.python-limnoria.new.2328 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-limnoria"

Thu Dec 10 15:59:08 2020 rev:19 rq:854512 version:2020.12.07

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-limnoria/python-limnoria.changes  
2020-10-15 13:50:58.221313675 +0200
+++ 
/work/SRC/openSUSE:Factory/.python-limnoria.new.2328/python-limnoria.changes    
    2020-12-10 15:59:09.718912297 +0100
@@ -1,0 +2,6 @@
+Thu Dec 10 00:09:12 UTC 2020 - Atri Bhattacharya <badshah...@gmail.com>
+
+- Update to version 2020-12-07:
+  * Try all IP addresses of a hostname.
+
+-------------------------------------------------------------------

Old:
----
  limnoria-2020.10.13.tar.gz

New:
----
  limnoria-2020.12.07.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ python-limnoria.spec ++++++
--- /var/tmp/diff_new_pack.cN2HCM/_old  2020-12-10 15:59:10.230912778 +0100
+++ /var/tmp/diff_new_pack.cN2HCM/_new  2020-12-10 15:59:10.234912782 +0100
@@ -18,9 +18,9 @@
 
 %define skip_python2 1
 %define appname limnoria
-%define srcver 2020-10-13
+%define srcver 2020-12-07
 Name:           python-limnoria
-Version:        2020.10.13
+Version:        2020.12.07
 Release:        0
 Summary:        A modified version of Supybot (an IRC bot and framework)
 License:        BSD-3-Clause

++++++ limnoria-2020.10.13.tar.gz -> limnoria-2020.12.07.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Limnoria-master-2020-10-13/plugins/Network/plugin.py 
new/Limnoria-master-2020-12-07/plugins/Network/plugin.py
--- old/Limnoria-master-2020-10-13/plugins/Network/plugin.py    2020-10-10 
11:51:56.000000000 +0200
+++ new/Limnoria-master-2020-12-07/plugins/Network/plugin.py    2020-12-05 
14:26:52.000000000 +0100
@@ -39,7 +39,7 @@
 import supybot.ircutils as ircutils
 import supybot.registry as registry
 import supybot.callbacks as callbacks
-from supybot.i18n import PluginInternationalization, internationalizeDocstring
+from supybot.i18n import PluginInternationalization
 _ = PluginInternationalization('Network')
 
 class Network(callbacks.Plugin):
@@ -54,7 +54,6 @@
         else:
             raise callbacks.Error('I\'m not currently connected to %s.' % 
network)
 
-    @internationalizeDocstring
     def connect(self, irc, msg, args, opts, network, server, password):
         """[--nossl] <network> [<host[:port]>] [<password>]
 
@@ -106,7 +105,6 @@
                              additional('something'),
                              additional('something', '')])
 
-    @internationalizeDocstring
     def disconnect(self, irc, msg, args, otherIrc, quitMsg):
         """<network> [<quit message>]
 
@@ -126,7 +124,6 @@
                              otherIrc.network)
     disconnect = wrap(disconnect, ['owner', ('networkIrc', True), 
additional('text')])
 
-    @internationalizeDocstring
     def reconnect(self, irc, msg, args, otherIrc, quitMsg):
         """[<network>] [<quit message>]
 
@@ -146,7 +143,6 @@
             irc.replySuccess()
     reconnect = wrap(reconnect, ['owner', 'networkIrc', additional('text')])
 
-    @internationalizeDocstring
     def command(self, irc, msg, args, otherIrc, commandAndArgs):
         """<network> <command> [<arg> ...]
 
@@ -217,7 +213,6 @@
     do401 = do402
     do406 = do402
 
-    @internationalizeDocstring
     def whois(self, irc, msg, args, otherIrc, nick):
         """[<network>] <nick>
 
@@ -231,7 +226,6 @@
         self._whois[(otherIrc, nick)] = (irc, msg, {}, 'whois')
     whois = wrap(whois, ['networkIrc', 'nick'])
 
-    @internationalizeDocstring
     def whowas(self, irc, msg, args, otherIrc, nick):
         """[<network>] <nick>
 
@@ -245,7 +239,6 @@
         self._whois[(otherIrc, nick)] = (irc, msg, {}, 'whowas')
     whowas = wrap(whowas, ['networkIrc', 'nick'])
 
-    @internationalizeDocstring
     def networks(self, irc, msg, args, opts):
         """[--all]
 
@@ -269,7 +262,6 @@
             (replyIrc, when) = self._latency.pop(irc)
             replyIrc.reply(_('%.2f seconds.') % (now-when))
 
-    @internationalizeDocstring
     def latency(self, irc, msg, args, otherIrc):
         """[<network>]
 
@@ -283,7 +275,6 @@
         irc.noReply()
     latency = wrap(latency, ['networkIrc'])
 
-    @internationalizeDocstring
     def driver(self, irc, msg, args, otherIrc):
         """[<network>]
 
@@ -294,7 +285,6 @@
         irc.reply(otherIrc.driver.__class__.__module__[8:])
     driver = wrap(driver, ['networkIrc'])
 
-    @internationalizeDocstring
     def uptime(self, irc, msg, args, otherIrc):
         """[<network>]
 
@@ -307,6 +297,15 @@
                             (network, utils.timeElapsed(now - started)))
     uptime = wrap(uptime, ['networkIrc'])
 
+    def capabilities(self, irc, msg, args, otherIrc):
+        """[<network>]
+
+        Returns the list of IRCv3 capabilities available on the network.
+        """
+        irc.reply(format("%L", sorted(otherIrc.state.capabilities_ls)))
+    capabilities = wrap(capabilities, ['networkIrc'])
+
+
 Class = Network
 
 # vim:set shiftwidth=4 softtabstop=4 expandtab textwidth=79:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Limnoria-master-2020-10-13/plugins/RSS/plugin.py 
new/Limnoria-master-2020-12-07/plugins/RSS/plugin.py
--- old/Limnoria-master-2020-10-13/plugins/RSS/plugin.py        2020-10-10 
11:51:56.000000000 +0200
+++ new/Limnoria-master-2020-12-07/plugins/RSS/plugin.py        2020-12-05 
14:26:52.000000000 +0100
@@ -338,15 +338,21 @@
 
     @only_one_at_once
     def update_feeds(self):
-        announced_feeds = set()
+        announced_feeds = {}
         for irc in world.ircs:
             for channel in irc.state.channels:
-                announced_feeds |= self.registryValue('announce', channel, 
irc.network)
-        for name in announced_feeds:
+                channel_feed_names = self.registryValue(
+                    'announce', channel, irc.network)
+                for name in channel_feed_names:
+                    announced_feeds[name] = (channel, irc.network)
+        for (name, (channel, network)) in announced_feeds.items():
             feed = self.get_feed(name)
             if not feed:
-                self.log.warning('Feed %s is announced but does not exist.',
-                        name)
+                self.log.warning(
+                    'Feed %s is announced in %s@%s, but does not exist. '
+                    'Use "rss announce remove %s %s" to remove it from '
+                    'announcements.',
+                    name, channel, network, channel, name)
                 continue
             self.update_feed_if_needed(feed)
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/Limnoria-master-2020-10-13/plugins/SedRegex/constants.py 
new/Limnoria-master-2020-12-07/plugins/SedRegex/constants.py
--- old/Limnoria-master-2020-10-13/plugins/SedRegex/constants.py        
2020-10-10 11:51:56.000000000 +0200
+++ new/Limnoria-master-2020-12-07/plugins/SedRegex/constants.py        
2020-12-05 14:26:52.000000000 +0100
@@ -2,6 +2,9 @@
 
 import re
 
+TAG_SEEN = 'SedRegex.seen'
+TAG_IS_REGEX = 'SedRegex.isRegex'
+
 SED_REGEX = re.compile(
     # This part matches an optional nick followed by ":" or ",", used to 
direct replacement
     # at a particular user.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/Limnoria-master-2020-10-13/plugins/SedRegex/plugin.py 
new/Limnoria-master-2020-12-07/plugins/SedRegex/plugin.py
--- old/Limnoria-master-2020-10-13/plugins/SedRegex/plugin.py   2020-10-10 
11:51:56.000000000 +0200
+++ new/Limnoria-master-2020-12-07/plugins/SedRegex/plugin.py   2020-12-05 
14:26:52.000000000 +0100
@@ -52,12 +52,12 @@
                       'supports Python 2, consult the python2-legacy branch at 
'
                       
'https://github.com/jlu5/SupyPlugins/tree/python2-legacy')
 
-from .constants import *
+from .constants import SED_REGEX, TAG_SEEN, TAG_IS_REGEX
 
 # Replace newlines and friends with things like literal "\n" (backslash and 
"n")
 axe_spaces = utils.str.MultipleReplacer({'\n': '\\n', '\t': '\\t', '\r': 
'\\r'})
 
-class SearchNotFound(Exception):
+class SearchNotFoundError(Exception):
     pass
 
 class SedRegex(callbacks.PluginRegexp):
@@ -110,11 +110,30 @@
 
         return (pattern, replacement, count, raw_flags)
 
+    # Tag all messages that SedRegex has seen before. This slightly optimizes 
the ignoreRegex
+    # feature as all messages tagged with SedRegex.seen but not 
SedRegex.isRegex is NOT a regexp.
+    # If we didn't have this tag, we'd have to run a regexp match on each 
message in the history
+    # to check if it's a regexp, as there could've been regexp-like messages 
sent before
+    # SedRegex was enabled.
+    def doNotice(self, irc, msg):
+        if self.registryValue('enable', msg.channel, irc.network):
+            msg.tag(TAG_SEEN)
+
+    def doPrivmsg(self, irc, msg):
+       # callbacks.PluginRegexp works by defining doPrivmsg(), we don't want 
to overwrite
+       # its behaviour
+       super().doPrivmsg(irc, msg)
+       self.doNotice(irc, msg)
+
+    # SedRegex main routine. This is called automatically by 
callbacks.PluginRegexp on every
+    # message that matches the SED_REGEX expression defined in constants.py
+    # The actual regexp is passed into PluginRegexp by setting __doc__ equal 
to the regexp.
     def replacer(self, irc, msg, regex):
         if not self.registryValue('enable', msg.channel, irc.network):
             return
+        self.log.debug("SedRegex: running on %s/%s for %s", irc.network, 
msg.channel, regex)
         iterable = reversed(irc.state.history)
-        msg.tag('Replacer')
+        msg.tag(TAG_IS_REGEX)
 
         try:
             (pattern, replacement, count, flags) = 
self._unpack_sed(msg.args[1])
@@ -129,7 +148,7 @@
             target = msg.nick
         else:
             target = regex.group('nick')
-        if not ircutils.isNick(str(target), strictRfc=True):
+        if not ircutils.isNick(str(target)):
             return
 
         regex_timeout = self.registryValue('processTimeout')
@@ -139,8 +158,8 @@
                     timeout=regex_timeout, pn=self.name(), cn='replacer')
         except ProcessTimeoutError:
             irc.error(_("Search timed out."))
-        except SearchNotFound:
-            irc.error(_("Search not found in the last %i messages.") %
+        except SearchNotFoundError:
+            irc.error(_("Search not found in the last %i IRC messages on this 
network.") %
                 len(irc.state.history))
         except Exception as e:
             self.log.warning(_("SedRegex replacer error: %s"), e, 
exc_info=True)
@@ -149,6 +168,7 @@
                     e.__class__.__name__, e))
         else:
             irc.reply(message, prefixNick=False)
+    replacer.__doc__ = SED_REGEX.pattern
 
     def _replacer_process(self, irc, msg, target, pattern, replacement, count, 
messages):
         for m in messages:
@@ -168,8 +188,15 @@
                 else:
                     text = m.args[1]
 
-                if self.registryValue('ignoreRegex', msg.channel, irc.network) 
and \
-                        m.tagged('Replacer'):
+                # Test messages sent before SedRegex was activated. Mark them 
all as seen
+                # so we only need to do this check once per message.
+                if not m.tagged(TAG_SEEN):
+                    m.tag(TAG_SEEN)
+                    if SED_REGEX.match(m.args[1]):
+                        m.tag(TAG_IS_REGEX)
+                # Ignore messages containing a regexp if ignoreRegex is on.
+                if self.registryValue('ignoreRegex', msg.channel, irc.network) 
and m.tagged(TAG_IS_REGEX):
+                    self.log.debug("Skipping message %s because it is tagged 
as isRegex", m.args[1])
                     continue
                 if m.nick == msg.nick:
                     messageprefix = msg.nick
@@ -196,8 +223,7 @@
 
         self.log.debug(_("SedRegex: Search %r not found in the last %i 
messages of %s."),
                          msg.args[1], len(irc.state.history), msg.args[0])
-        raise SearchNotFound()
-    replacer.__doc__ = SED_REGEX.pattern
+        raise SearchNotFoundError()
 
 Class = SedRegex
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Limnoria-master-2020-10-13/plugins/SedRegex/test.py 
new/Limnoria-master-2020-12-07/plugins/SedRegex/test.py
--- old/Limnoria-master-2020-10-13/plugins/SedRegex/test.py     2020-10-10 
11:51:56.000000000 +0200
+++ new/Limnoria-master-2020-12-07/plugins/SedRegex/test.py     2020-12-05 
14:26:52.000000000 +0100
@@ -51,13 +51,22 @@
         m = self.getMsg(' ')
         self.assertIn('Abcd testefgh', str(m))
 
+    def testNoMatch(self):
+        self.feedMsg('hello world')
+        self.feedMsg('s/goodbye//')
+        m = self.getMsg(' ')
+        self.assertIn('Search not found', str(m))
+        self.feedMsg('s/Hello/hi/')  # wrong case
+        m = self.getMsg(' ')
+        self.assertIn('Search not found', str(m))
+
     def testCaseInsensitiveReplace(self):
         self.feedMsg('Aliens Are Invading, Help!')
         self.feedMsg('s/a/e/i')
         m = self.getMsg(' ')
         self.assertIn('eliens', str(m))
 
-    def testIgnoreRegexpWithBadCase(self):
+    def testIgnoreRegexWithBadCase(self):
         self.feedMsg('aliens are invading, help!')
         self.assertSnarfNoResponse('S/aliens/monsters/')
 
@@ -100,10 +109,16 @@
         self.feedMsg('ouch', frm=self.__class__.other2)
         self.feedMsg('poof', frm=self.__class__.other)
         self.feedMsg('wow!')
+
+        # This should work regardless of whether we use "nick," or "nick:" as 
prefix
         self.feedMsg('%s: s/^/p/' % 
ircutils.nickFromHostmask(self.__class__.other2))
         m = self.getMsg(' ')
         self.assertIn('pouch', str(m))
 
+        self.feedMsg('%s, s/^/c/' % 
ircutils.nickFromHostmask(self.__class__.other2))
+        m = self.getMsg(' ')
+        self.assertIn('couch', str(m))
+
     @unittest.skipUnless(sys.version_info[0] >= 3, 'Test fails on Python 2.')
     def testBoldReplacement(self):
         with conf.supybot.plugins.sedregex.boldReplacementText.context(True):
@@ -216,6 +231,53 @@
         m = self.getMsg(' ')
         self.assertIn('see you later, bye', str(m))
 
+    def testIgnoreRegexOnMessagesBeforeEnable(self):
+        # Before 2020-10-12 SedRegex used a single msg.tag() to track and 
ignore messages parsed as a regexp.
+        # However, a common complaint is that this doesn't catch regexps sent 
before SedRegex was loaded/enabled...
+        with conf.supybot.plugins.sedregex.enable.context(False):
+            self.feedMsg('foo')
+            self.feedMsg('barbell')
+            self.feedMsg('s/foo/bar/')
+            self.feedMsg('abcdef')
+        self.feedMsg('s/bar/door/')
+        m = self.getMsg(' ')
+        # The INCORRECT response would be "s/foo/door/"
+        self.assertIn('doorbell', str(m))
+
+    def testSeparatorPresentInNick(self):
+        # Check that replacement doesn't break if the target's nick contains 
the sed separator.
+        frm = 'hello|world!~he...@clk-12345678.example.com'
+        with conf.supybot.protocols.irc.strictRfc.context(False):
+            self.feedMsg('the quick brown fox jumps over the lazy hog', 
frm=frm)
+            # self replace
+            self.feedMsg('s|hog|dog', frm=frm)
+            m = self.getMsg(' ')
+            self.assertIn('the lazy dog', str(m))
+            # other replace
+            self.feedMsg('%s: s| hog| dog' % ircutils.nickFromHostmask(frm), 
frm=self.__class__.other2)
+            m = self.getMsg(' ')
+            self.assertIn('the lazy dog', str(m))
+
+    def testSlashInNicks(self):
+        # Slash in nicks should be accepted when strictRfc is off
+        frm = 'nick/othernet!hello@othernet.internal'
+        with conf.supybot.protocols.irc.strictRfc.context(False):
+            self.feedMsg('hello world', frm=frm)
+            self.feedMsg('abc 123', frm=frm)
+            # self replace
+            self.feedMsg('s/world/everyone/', frm=frm)
+            m = self.getMsg(' ')
+            self.assertIn('hello everyone', str(m))
+            # other replace
+            self.feedMsg('%s: s/123/321/' % ircutils.nickFromHostmask(frm), 
frm=self.__class__.other2)
+            m = self.getMsg(' ')
+            self.assertIn('abc 321', str(m))
+
+        # When strictRfc is on, nicks for explicit reference are checked but 
not
+        # the sender's own nick
+        with conf.supybot.protocols.irc.strictRfc.context(True):
+            self.assertSnarfNoResponse('%s: s/123/321/' % 
ircutils.nickFromHostmask(frm), frm=self.__class__.other2)
+
     # TODO: test ignores
 
 # vim:set shiftwidth=4 tabstop=4 expandtab textwidth=79:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Limnoria-master-2020-10-13/plugins/Web/plugin.py 
new/Limnoria-master-2020-12-07/plugins/Web/plugin.py
--- old/Limnoria-master-2020-10-13/plugins/Web/plugin.py        2020-10-10 
11:51:56.000000000 +0200
+++ new/Limnoria-master-2020-12-07/plugins/Web/plugin.py        2020-12-05 
14:26:52.000000000 +0100
@@ -275,6 +275,21 @@
         finally:
             fd.close()
 
+    @wrap(['httpUrl'])
+    @catch_web_errors
+    @fetch_sandbox
+    def location(self, irc, msg, args, url):
+        """<url>
+
+        If the <url> is redirected to another page, returns the URL of that
+        page. This works even if there are multiple redirects.
+        Only HTTP urls are valid.
+        Useful to "un-tinify" URLs."""
+        timeout = self.registryValue('timeout')
+        (target, text) = utils.web.getUrlTargetAndContent(url, size=60,
+            timeout=timeout)
+        irc.reply(target)
+
     _doctypeRe = re.compile(r'(<!DOCTYPE[^>]+>)', re.M)
     @wrap(['httpUrl'])
     @catch_web_errors
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Limnoria-master-2020-10-13/plugins/Web/test.py 
new/Limnoria-master-2020-12-07/plugins/Web/test.py
--- old/Limnoria-master-2020-10-13/plugins/Web/test.py  2020-10-10 
11:51:56.000000000 +0200
+++ new/Limnoria-master-2020-12-07/plugins/Web/test.py  2020-12-05 
14:26:52.000000000 +0100
@@ -37,6 +37,13 @@
             self.assertError('headers ftp://ftp.cdrom.com/pub/linux')
             self.assertNotError('headers http://www.slashdot.org/')
 
+        def testLocation(self):
+            self.assertError('location ftp://ftp.cdrom.com/pub/linux')
+            self.assertResponse(
+                'location http://limnoria.net/', 'https://limnoria.net/')
+            self.assertResponse(
+                'location https://www.limnoria.net/', 'https://limnoria.net/')
+
         def testDoctype(self):
             self.assertError('doctype ftp://ftp.cdrom.com/pub/linux')
             self.assertNotError('doctype http://www.slashdot.org/')
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Limnoria-master-2020-10-13/scripts/supybot-adduser 
new/Limnoria-master-2020-12-07/scripts/supybot-adduser
--- old/Limnoria-master-2020-10-13/scripts/supybot-adduser      2020-10-10 
11:51:56.000000000 +0200
+++ new/Limnoria-master-2020-12-07/scripts/supybot-adduser      2020-12-05 
14:26:52.000000000 +0100
@@ -56,7 +56,7 @@
                       help='capability the user should have; '
                            'this option may be given multiple times.')
     (options, args) = parser.parse_args()
-    if len(args) is not 1:
+    if len(args) != 1:
         parser.error('Specify the users.conf file you\'d like to use.  '
                      'Be sure *not* to specify your registry file, generated '
                      'by supybot-wizard.  This is not the file you want.  '
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/Limnoria-master-2020-10-13/scripts/supybot-reset-password 
new/Limnoria-master-2020-12-07/scripts/supybot-reset-password
--- old/Limnoria-master-2020-10-13/scripts/supybot-reset-password       
2020-10-10 11:51:56.000000000 +0200
+++ new/Limnoria-master-2020-12-07/scripts/supybot-reset-password       
2020-12-05 14:26:52.000000000 +0100
@@ -52,7 +52,7 @@
                       dest='password',
                       help='password for the user.')
     (options, args) = parser.parse_args()
-    if len(args) is not 1:
+    if len(args) != 1:
         parser.error('Specify the users.conf file you\'d like to use.  '
                      'Be sure *not* to specify your registry file, generated '
                      'by supybot-wizard.  This is not the file you want.  '
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Limnoria-master-2020-10-13/src/drivers/Socket.py 
new/Limnoria-master-2020-12-07/src/drivers/Socket.py
--- old/Limnoria-master-2020-10-13/src/drivers/Socket.py        2020-10-10 
11:51:56.000000000 +0200
+++ new/Limnoria-master-2020-12-07/src/drivers/Socket.py        2020-12-05 
14:26:52.000000000 +0100
@@ -267,7 +267,7 @@
             socks_proxy = ''
         else:
             try:
-                hostname = utils.net.getAddressFromHostname(
+                address = utils.net.getAddressFromHostname(
                     self.currentServer.hostname,
                     attempt=self._attempt)
             except (socket.gaierror, socket.error) as e:
@@ -277,7 +277,7 @@
         drivers.log.connect(self.currentServer)
         try:
             self.conn = utils.net.getSocket(
-                    self.currentServer.hostname,
+                    address,
                     port=self.currentServer.port,
                     socks_proxy=socks_proxy,
                     vhost=conf.supybot.protocols.irc.vhost(),
@@ -294,20 +294,19 @@
             # Connect before SSL, otherwise SSL is disabled if we use SOCKS.
             # See http://stackoverflow.com/q/16136916/539465
             self.conn.connect(
-                (self.currentServer.hostname, self.currentServer.port))
+                (address, self.currentServer.port))
             if network_config.ssl() or \
                     self.currentServer.force_tls_verification:
                 self.starttls()
 
             # Suppress this warning for loopback IPs.
-            targetip = hostname
             if sys.version_info[0] < 3:
                 # Backported Python 2 ipaddress demands unicode instead of str
-                targetip = targetip.decode('utf-8')
+                address = address.decode('utf-8')
             elif (not network_config.requireStarttls()) and \
                     (not network_config.ssl()) and \
                     (not self.currentServer.force_tls_verification) and \
-                    (ipaddress is None or not 
ipaddress.ip_address(targetip).is_loopback):
+                    (ipaddress is None or not 
ipaddress.ip_address(address).is_loopback):
                 drivers.log.warning(('Connection to network %s '
                     'does not use SSL/TLS, which makes it vulnerable to '
                     'man-in-the-middle attacks and passive eavesdropping. '
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Limnoria-master-2020-10-13/src/ircdb.py 
new/Limnoria-master-2020-12-07/src/ircdb.py
--- old/Limnoria-master-2020-10-13/src/ircdb.py 2020-10-10 11:51:56.000000000 
+0200
+++ new/Limnoria-master-2020-12-07/src/ircdb.py 2020-12-05 14:26:52.000000000 
+0100
@@ -1172,18 +1172,24 @@
     try:
         id = users.getUserId(hostmask)
         user = users.getUser(id)
-        if user._checkCapability('trusted'):
-            # Trusted users (including owners) shouldn't ever be ignored.
-            return False
-        elif user.ignore:
-            log.debug('Ignoring %s due to their IrcUser ignore flag.', 
hostmask)
-            return True
     except KeyError:
         # If there's no user...
         if conf.supybot.defaultIgnore():
             log.debug('Ignoring %s due to conf.supybot.defaultIgnore',
                      hostmask)
             return True
+    else:
+        try:
+            if user._checkCapability('trusted'):
+                # Trusted users (including owners) shouldn't ever be ignored.
+                return False
+        except KeyError:
+            # neither explicitly trusted or -trusted -> consider them not
+            # trusted
+            pass
+        if user.ignore:
+            log.debug('Ignoring %s due to their IrcUser ignore flag.', 
hostmask)
+            return True
     if ignores.checkIgnored(hostmask):
         log.debug('Ignoring %s due to ignore database.', hostmask)
         return True
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Limnoria-master-2020-10-13/src/irclib.py 
new/Limnoria-master-2020-12-07/src/irclib.py
--- old/Limnoria-master-2020-10-13/src/irclib.py        2020-10-10 
11:51:56.000000000 +0200
+++ new/Limnoria-master-2020-12-07/src/irclib.py        2020-12-05 
14:26:52.000000000 +0100
@@ -186,11 +186,11 @@
         if not self.echoMessage and not self.echo_message \
                 and msg.command in ('PRIVMSG', 'NOTICE', 'TAGMSG') \
                 and ('label' in msg.server_tags
-                     or not msg.tagged('receivedAt')):
+                     or msg.tagged('emulatedEcho')):
             # This is an echo of a message we sent; and the plugin didn't
             # opt-in to receiving echos; ignoring it.
             # `'label' in msg.server_tags` detects echos when labeled-response
-            # is enabled; and `not msg.tag('receivedAt')` detects simulated
+            # is enabled; and `msg.tag('emulatedEcho')` detects simulated
             # echos. As we don't enable real echo-message unless
             # labeled-response is enabled; this is an exhaustive check of echos
             # in all cases.
@@ -1305,6 +1305,9 @@
                 # echo-message is not implemented by server; let's emulate it
                 # here, just before sending it to the driver.
                 assert not msg.tagged('receivedAt')
+                if not world.testing:
+                    assert not msg.tagged('emulatedEcho')
+                msg.tag('emulatedEcho', True)
                 self.feedMsg(msg, tag=False)
             else:
                 # I don't think we should do this.  Why should it matter?  If 
it's
_______________________________________________
openSUSE Commits mailing list -- commit@lists.opensuse.org
To unsubscribe, email commit-le...@lists.opensuse.org
List Netiquette: https://en.opensuse.org/openSUSE:Mailing_list_netiquette
List Archives: 
https://lists.opensuse.org/archives/list/commit@lists.opensuse.org

Reply via email to