Add an option to disable CSS parsing.

Fixes #3340.
This commit is contained in:
Emmanuel Gil Peyrot 2017-10-14 18:26:58 +01:00
parent 8af1a39d7e
commit 256119a574
3 changed files with 11 additions and 3 deletions

View file

@ -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.

View file

@ -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,

View file

@ -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: