summaryrefslogtreecommitdiffstats
path: root/network/rss2email/4b36e28.patch
diff options
context:
space:
mode:
author Alexander Verbovetsky2020-09-18 19:54:17 +0200
committer Willy Sudiarto Raharjo2020-09-18 19:54:17 +0200
commita436d194f572e8ec475c4e2c6d1f2ff9d4179c4f (patch)
tree31a5446cf5620add550baf59d2d99d602be8885e /network/rss2email/4b36e28.patch
parent3b97d8ee65fbbb4163f3b5ebd93ee832b0f82396 (diff)
downloadslackbuilds-a436d194f572e8ec475c4e2c6d1f2ff9d4179c4f.tar.gz
network/rss2email: Added (rss to email gateway).
Signed-off-by: Willy Sudiarto Raharjo <willysr@slackbuilds.org>
Diffstat (limited to 'network/rss2email/4b36e28.patch')
-rw-r--r--network/rss2email/4b36e28.patch239
1 files changed, 239 insertions, 0 deletions
diff --git a/network/rss2email/4b36e28.patch b/network/rss2email/4b36e28.patch
new file mode 100644
index 0000000000..5b6a050c7e
--- /dev/null
+++ b/network/rss2email/4b36e28.patch
@@ -0,0 +1,239 @@
+diff -Naur orig/CHANGELOG new/CHANGELOG
+--- orig/CHANGELOG 2020-08-31 18:03:24.000000000 +0300
++++ new/CHANGELOG 2020-09-05 16:09:45.000000000 +0300
+@@ -1,4 +1,7 @@
+ UNRELEASED
++ * Improve log messages
++ * Remove documentation of `smtp-ssl-protocol` as this option was dropped in 2016
++ * Stop forging SMTP and sendmail envelope sender (#134)
+
+ v3.12.2 (2020-08-31)
+ * Fix bug `AttributeError: 'NoneType' object has no attribute 'close'` (#126)
+diff -Naur orig/r2e.1 new/r2e.1
+--- orig/r2e.1 2020-08-31 18:03:24.000000000 +0300
++++ new/r2e.1 2020-09-05 16:09:45.000000000 +0300
+@@ -253,8 +253,6 @@
+ SMTP server
+ .IP smtp-ssl
+ Connect to the SMTP server using SSL
+-.IP smtp-ssl-protocol
+-TLS/SSL version to use on STARTTLS when not using 'smtp-ssl'.
+ .RE
+ .SS IMAP configuration
+ .IP imap-auth
+diff -Naur orig/rss2email/__init__.py new/rss2email/__init__.py
+--- orig/rss2email/__init__.py 2020-08-31 18:03:24.000000000 +0300
++++ new/rss2email/__init__.py 2020-09-05 16:09:45.000000000 +0300
+@@ -26,7 +26,7 @@
+ import sys as _sys
+
+
+-__version__ = '3.12.2'
++__version__ = '3.12.1'
+ __url__ = 'https://github.com/rss2email/rss2email'
+ __author__ = 'The rss2email maintainers'
+ __email__ = 'rss2email@tremily.us'
+diff -Naur orig/rss2email/config.py new/rss2email/config.py
+--- orig/rss2email/config.py 2020-08-31 18:03:24.000000000 +0300
++++ new/rss2email/config.py 2020-09-05 16:09:45.000000000 +0300
+@@ -83,11 +83,11 @@
+ # Transfer-Encoding. For local mailing it is safe and
+ # convenient to use 8bit.
+ ('use-8bit', str(False)),
+- # True: Only use the 'from' address.
++ # True: Only use the 'from' address. Overrides the use-publisher-email setting.
+ # False: Use the email address specified by the feed, when possible.
+ ('force-from', str(False)),
+- # True: Use the publisher's email if you can't find the author's.
+- # False: Just use the 'from' email instead.
++ # True: Use author's email if found, or use publisher's email if found, or use the 'from' setting.
++ # False: Use author's email if found, or use the 'from' setting.
+ ('use-publisher-email', str(False)),
+ # If empty, only use the feed email address rather than
+ # friendly name plus email address. Available attributes may
+@@ -132,7 +132,7 @@
+ # because the old entries will not be recorded under their new
+ # link-based ids.
+ ('trust-link', str(False)),
+- # If 'trust-guid' or 'trust-link' is True, this settings allows to receive
++ # If 'trust-guid' or 'trust-link' is True, this setting allows to receive
+ # a new email message in reply to the previous one when the post changes.
+ ('reply-changes', str(False)),
+ # To most correctly encode emails with international
+diff -Naur orig/rss2email/email.py new/rss2email/email.py
+--- orig/rss2email/email.py 2020-08-31 18:03:24.000000000 +0300
++++ new/rss2email/email.py 2020-09-05 16:09:45.000000000 +0300
+@@ -151,7 +151,7 @@
+ message[key] = _Header(value, encoding)
+ return message
+
+-def smtp_send(sender, recipient, message, config=None, section='DEFAULT'):
++def smtp_send(recipient, message, config=None, section='DEFAULT'):
+ if config is None:
+ config = _config.CONFIG
+ server = config.get(section, 'smtp-server')
+@@ -190,7 +190,7 @@
+ except Exception as e:
+ raise _error.SMTPAuthenticationError(
+ server=server, username=username)
+- smtp.send_message(message, sender, recipient.split(','))
++ smtp.send_message(message, config.get(section, 'from'), recipient.split(','))
+ smtp.quit()
+
+ def imap_send(message, config=None, section='DEFAULT'):
+@@ -345,12 +345,12 @@
+ else:
+ return bytesio.getvalue()
+
+-def sendmail_send(sender, recipient, message, config=None, section='DEFAULT'):
++def sendmail_send(recipient, message, config=None, section='DEFAULT'):
+ if config is None:
+ config = _config.CONFIG
+ message_bytes = _flatten(message)
+ sendmail = config.get(section, 'sendmail')
+- sender_name,sender_addr = _parseaddr(sender)
++ sender_name,sender_addr = _parseaddr(config.get(section, 'from'))
+ _LOG.debug(
+ 'sending message to {} via {}'.format(recipient, sendmail))
+ try:
+@@ -366,11 +366,11 @@
+ except Exception as e:
+ raise _error.SendmailError() from e
+
+-def send(sender, recipient, message, config=None, section='DEFAULT'):
++def send(recipient, message, config=None, section='DEFAULT'):
+ protocol = config.get(section, 'email-protocol')
+ if protocol == 'smtp':
+ smtp_send(
+- sender=sender, recipient=recipient, message=message,
++ recipient=recipient, message=message,
+ config=config, section=section)
+ elif protocol == 'imap':
+ imap_send(message=message, config=config, section=section)
+@@ -378,5 +378,5 @@
+ maildir_send(message=message, config=config, section=section)
+ else:
+ sendmail_send(
+- sender=sender, recipient=recipient, message=message,
++ recipient=recipient, message=message,
+ config=config, section=section)
+diff -Naur orig/rss2email/error.py new/rss2email/error.py
+--- orig/rss2email/error.py 2020-08-31 18:03:24.000000000 +0300
++++ new/rss2email/error.py 2020-09-05 16:09:45.000000000 +0300
+@@ -42,15 +42,14 @@
+
+
+ class TimeoutError (RSS2EmailError):
+- def __init__(self, time_limited_function, message=None):
+- if message is None:
+- if time_limited_function.error is not None:
+- message = (
+- 'error while running time limited function: {}'.format(
+- time_limited_function.error[1]))
+- else:
+- message = '{} second timeout exceeded'.format(
+- time_limited_function.timeout)
++ def __init__(self, time_limited_function):
++ if time_limited_function.error is not None:
++ message = (
++ 'error while running time limited function in {}: {}'.format(
++ time_limited_function.name, time_limited_function.error[1]))
++ else:
++ message = '{} second timeout exceeded in {}'.format(
++ time_limited_function.timeout, time_limited_function.name)
+ super(TimeoutError, self).__init__(message=message)
+ self.time_limited_function = time_limited_function
+
+@@ -148,8 +147,9 @@
+ class InvalidFeedConfig (FeedError):
+ def __init__(self, setting, feed, message=None, **kwargs):
+ if not message:
+- message = "invalid feed configuration {}".format(
+- {setting: getattr(feed, setting)})
++ message = (
++ "invalid feed configuration '{setting}' in {feed}".format(
++ setting=getattr(feed, setting), feed=feed))
+ super(InvalidFeedConfig, self).__init__(
+ feed=feed, message=message, **kwargs)
+ self.setting = setting
+diff -Naur orig/rss2email/feed.py new/rss2email/feed.py
+--- orig/rss2email/feed.py 2020-08-31 18:03:24.000000000 +0300
++++ new/rss2email/feed.py 2020-09-05 16:09:45.000000000 +0300
+@@ -373,7 +373,7 @@
+ kwargs = {}
+ if proxy:
+ kwargs['handlers'] = [_urllib_request.ProxyHandler({'http':proxy})]
+- f = _util.TimeLimitedFunction(timeout, _feedparser.parse)
++ f = _util.TimeLimitedFunction('feed {}'.format(self.name), timeout, _feedparser.parse)
+ return f(self.url, self.etag, modified=self.modified, **kwargs)
+
+ def _process(self, parsed):
+@@ -773,9 +773,9 @@
+ if entry.get('summary_detail', None):
+ contents.append(entry.summary_detail)
+ if self.html_mail:
+- types = ['text/html', 'text/plain']
++ types = ['application/xhtml+xml', 'text/html', 'text/plain']
+ else:
+- types = ['text/plain', 'text/html']
++ types = ['text/plain', 'text/html', 'application/xhtml+xml']
+ for content_type in types:
+ for content in contents:
+ if content['type'] == content_type:
+@@ -871,7 +871,7 @@
+ section = self.section
+ if section not in self.config:
+ section = 'DEFAULT'
+- _email.send(sender=sender, recipient=self.to, message=message,
++ _email.send(recipient=self.to, message=message,
+ config=self.config, section=section)
+
+ def run(self, send=True):
+diff -Naur orig/rss2email/feeds.py new/rss2email/feeds.py
+--- orig/rss2email/feeds.py 2020-08-31 18:03:24.000000000 +0300
++++ new/rss2email/feeds.py 2020-09-05 16:09:45.000000000 +0300
+@@ -239,11 +239,10 @@
+ def load(self, require=False):
+ _LOG.debug('load feed configuration from {}'.format(self.configfiles))
+ if self.configfiles:
+- self.read_configfiles = self.config.read(self.configfiles)
++ read_configfiles = self.config.read(self.configfiles)
+ else:
+- self.read_configfiles = []
+- _LOG.debug('loaded configuration from {}'.format(
+- self.read_configfiles))
++ read_configfiles = []
++ _LOG.debug('loaded configuration from {}'.format(read_configfiles))
+ self._load_feeds(require=require)
+
+ def _load_feeds(self, require):
+diff -Naur orig/rss2email/util.py new/rss2email/util.py
+--- orig/rss2email/util.py 2020-08-31 18:03:24.000000000 +0300
++++ new/rss2email/util.py 2020-09-05 16:09:45.000000000 +0300
+@@ -35,19 +35,20 @@
+ >>> def sleeping_return(sleep, x):
+ ... time.sleep(sleep)
+ ... return x
+- >>> TimeLimitedFunction(0.5, sleeping_return)(0.1, 'x')
++ >>> TimeLimitedFunction('sleeping', 0.5, sleeping_return)(0.1, 'x')
+ 'x'
+- >>> TimeLimitedFunction(0.5, sleeping_return)(10, 'y')
++ >>> TimeLimitedFunction('sleeping', 0.5, sleeping_return)(10, 'y')
+ Traceback (most recent call last):
+ ...
+- rss2email.error.TimeoutError: 0.5 second timeout exceeded
+- >>> TimeLimitedFunction(0.5, time.sleep)('x')
++ rss2email.error.TimeoutError: 0.5 second timeout exceeded in sleeping
++ >>> TimeLimitedFunction('sleep', 0.5, time.sleep)('x')
+ Traceback (most recent call last):
+ ...
+- rss2email.error.TimeoutError: error while running time limited function: a float is required
++ rss2email.error.TimeoutError: error while running time limited function in sleep: a float is required
+ """
+- def __init__(self, timeout, target, **kwargs):
++ def __init__(self, name, timeout, target, **kwargs):
+ super(TimeLimitedFunction, self).__init__(target=target, daemon=True, **kwargs)
++ self.name = name
+ self.timeout = timeout
+ self.result = None
+ self.error = None