page: added ability to encrypt linktargets
authorFredrik Unger <fred@tree.se>
Fri, 30 Aug 2013 12:12:00 +0000 (14:12 +0200)
committerFredrik Unger <fred@tree.se>
Fri, 30 Aug 2013 12:12:00 +0000 (14:12 +0200)
Links with attribute 'security'=='encrypt' will be encrypted
with gpg using symetric key. This to ease sharing of sensitive
documents.

treecutter/page.py

index 22d380ec033562358c0d01562af3d4544f5b87e7..b14ccdfec1a1522383e29227357de1555ae8e713 100644 (file)
@@ -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'))