From 256119a574fe37ba38a7aad0fd9952c9069ccfbf Mon Sep 17 00:00:00 2001 From: Emmanuel Gil Peyrot Date: Sat, 14 Oct 2017 18:26:58 +0100 Subject: Add an option to disable CSS parsing. Fixes #3340. --- data/default_config.cfg | 4 ++++ poezio/config.py | 1 + poezio/xhtml.py | 9 ++++++--- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/data/default_config.cfg b/data/default_config.cfg index db8b8170..01b03e9a 100644 --- a/data/default_config.cfg +++ b/data/default_config.cfg @@ -166,6 +166,10 @@ use_bookmarks_method = # colored text for example. #enable_xhtml_im = true +# If XHTML-IM is enabled, you may want to reject style parsing, to keep +# only semantic elements formatting. +#enable_css_parsing = true + # Stream Management (XEP-0198) is an extension designed to improve # the reliability of XMPP in unreliable network conditions (such # as mobile networks). It can however increase bandwidth usage. diff --git a/poezio/config.py b/poezio/config.py index fdcc5cc5..bef1c1a6 100644 --- a/poezio/config.py +++ b/poezio/config.py @@ -52,6 +52,7 @@ DEFAULT_CONFIG = { 'display_user_color_in_join_part': True, 'enable_avatars': False, 'enable_carbons': True, + 'enable_css_parsing': True, 'enable_user_activity': True, 'enable_user_gaming': True, 'enable_user_mood': True, diff --git a/poezio/xhtml.py b/poezio/xhtml.py index f5b35b71..836c3868 100644 --- a/poezio/xhtml.py +++ b/poezio/xhtml.py @@ -17,13 +17,15 @@ import hashlib import re from base64 import b64encode, b64decode from os import path -from slixmpp.xmlstream import ET from urllib.parse import unquote from io import BytesIO from xml import sax from xml.sax import saxutils +from slixmpp.xmlstream import ET +from poezio.config import config + digits = '0123456789' # never trust the modules XHTML_NS = 'http://www.w3.org/1999/xhtml' @@ -311,6 +313,7 @@ class XHTMLHandler(sax.ContentHandler): self.tmp_dir = tmp_dir self.extract_images = extract_images + self.enable_css_parsing = config.get('enable_css_parsing') @property def result(self): @@ -336,7 +339,7 @@ class XHTMLHandler(sax.ContentHandler): attrs = {name: value for ((ns, name), value) in attrs.items() if ns is None} self.attrs.append(attrs) - if 'style' in attrs: + if 'style' in attrs and self.enable_css_parsing: style = _parse_css(attrs['style']) self.append_formatting(style) @@ -420,7 +423,7 @@ class XHTMLHandler(sax.ContentHandler): builder.append('\n') self.is_pre = False - if 'style' in attrs: + if 'style' in attrs and self.enable_css_parsing: self.pop_formatting() if 'title' in attrs: -- cgit v1.2.3