summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEmmanuel Gil Peyrot <linkmauve@linkmauve.fr>2017-10-14 18:26:58 +0100
committerEmmanuel Gil Peyrot <linkmauve@linkmauve.fr>2017-10-14 18:26:58 +0100
commit256119a574fe37ba38a7aad0fd9952c9069ccfbf (patch)
tree294e564cbc7c69f1df5e0ad7a911afe03cc93d8d
parent8af1a39d7eb95a18a2feddc53badb458798cc0de (diff)
downloadpoezio-256119a574fe37ba38a7aad0fd9952c9069ccfbf.tar.gz
poezio-256119a574fe37ba38a7aad0fd9952c9069ccfbf.tar.bz2
poezio-256119a574fe37ba38a7aad0fd9952c9069ccfbf.tar.xz
poezio-256119a574fe37ba38a7aad0fd9952c9069ccfbf.zip
Add an option to disable CSS parsing.
Fixes #3340.
-rw-r--r--data/default_config.cfg4
-rw-r--r--poezio/config.py1
-rw-r--r--poezio/xhtml.py9
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: