From: Fredrik Unger Date: Fri, 30 Aug 2013 12:12:00 +0000 (+0200) Subject: page: added ability to encrypt linktargets X-Git-Url: https://source.tree.se/git?p=treecutter.git;a=commitdiff_plain;h=e334f4bd5cbfd4ac928333c78dbfae3afe0c3a6a page: added ability to encrypt linktargets Links with attribute 'security'=='encrypt' will be encrypted with gpg using symetric key. This to ease sharing of sensitive documents. --- diff --git a/treecutter/page.py b/treecutter/page.py index 22d380e..b14ccdf 100644 --- a/treecutter/page.py +++ b/treecutter/page.py @@ -3,6 +3,8 @@ import os import subprocess import tempfile import re +import getpass +import gnupg from lxml import etree from Cheetah.Template import Template from pkg_resources import resource_filename, resource_listdir @@ -87,6 +89,14 @@ class Page(): for r in self._doc.xpath(u"//db:link[@xlink:href]",namespaces=const.XPATH): rf = os.path.join(dirname,r.get(const.XLINK+'href')) if os.path.isfile(rf): + if r.get('security')=='encrypt': + with open(rf, 'rb') as f: + gpg = gnupg.GPG() + status = gpg.encrypt_file( + f, None, passphrase=getpass.getpass(rf+' password:'), symmetric=True, + output=rf+'.gpg') + r.set(const.XLINK+'href', r.get(const.XLINK+'href')+'.gpg') + rf=rf+'.gpg' self._resources.append(rf) for i in self._doc.xpath(u"//db:imagedata[@fileref]",namespaces=const.XPATH): im = os.path.join(dirname,i.get('fileref'))