From e334f4bd5cbfd4ac928333c78dbfae3afe0c3a6a Mon Sep 17 00:00:00 2001 From: Fredrik Unger Date: Fri, 30 Aug 2013 14:12:00 +0200 Subject: [PATCH] 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. --- treecutter/page.py | 10 ++++++++++ 1 file changed, 10 insertions(+) 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')) -- 2.30.2