slackbuilds_ponce/network/rss2email/4b36e28.patch
Alexander Verbovetsky a436d194f5 network/rss2email: Added (rss to email gateway).
Signed-off-by: Willy Sudiarto Raharjo <willysr@slackbuilds.org>
2020-09-19 00:54:17 +07:00

239 lines
10 KiB
Diff

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