Limit the svg generation by detecting svg by content

remotes/origin/live-notifications
Jesús Espino 2017-03-28 15:52:58 +02:00
parent 84dfbbd0b0
commit 3b617946e0
2 changed files with 9 additions and 5 deletions

View File

@ -37,6 +37,7 @@ netaddr==0.7.19
serpy==0.1.1 serpy==0.1.1
psd-tools==1.4 psd-tools==1.4
CairoSVG==2.0.1 CairoSVG==2.0.1
python-magic==0.4.13
cryptography==1.7.1 cryptography==1.7.1
PyJWT==1.4.2 PyJWT==1.4.2
asana==0.6.2 asana==0.6.2

View File

@ -33,17 +33,20 @@ from io import BytesIO
# SVG thumbnail generator # SVG thumbnail generator
try: try:
from cairosvg.surface import PNGSurface from cairosvg.surface import PNGSurface
import magic
def _accept(prefix): def svg_image_factory(fp, filename):
return "svg" in str(prefix.lower()) mime_type = magic.from_buffer(fp.read(1024), mime=True)
if mime_type != "image/svg+xml":
raise TypeError
def svg_image_factory(data, *args): fp.seek(0)
png_data = PNGSurface.convert(data.read()) png_data = PNGSurface.convert(fp.read())
return PngImageFile(BytesIO(png_data)) return PngImageFile(BytesIO(png_data))
Image.register_mime("SVG", "image/svg+xml") Image.register_mime("SVG", "image/svg+xml")
Image.register_extension("SVG", ".svg") Image.register_extension("SVG", ".svg")
Image.register_open("SVG", svg_image_factory, _accept) Image.register_open("SVG", svg_image_factory)
except Exception: except Exception:
pass pass