+from flask import Flask, request, render_template, make_response, Response
+from flask import request
+import hashlib
+import pgpdump
+import glob
+import base64
+
+app = Flask(__name__)
+
+@app.template_filter('base64')
+def base64_filter(arg):
+ return base64.b64encode(arg)
+
+@app.route("/pks/add", methods=['POST'])
+def add():
+ keytext = request.form['keytext']
+ pgp = pgpdump.AsciiData(keytext)
+ fingerprint = pgp.packets().next().fingerprint
+ with open('data/%s.asc' % fingerprint, 'w') as f:
+ f.write(keytext)
+ return Response("OK", mimetype="text/plain")
+
+@app.route('/')
+def index():
+ result = dict()
+ for entry in glob.glob('data/*.asc'):
+ pgp = pgpdump.AsciiData(file(entry).read())
+ uids = []
+ photoids = []
+ subkeys = []
+ public_key = None
+ for packet in pgp.packets():
+ if packet.name == 'Public Key Packet':
+ public_key = packet
+ elif packet.name == 'User ID Packet':
+ uids.append(packet)
+ elif packet.name == 'User Attribute Packet':
+ photoids.append(packet)
+ elif packet.name == 'Public Subkey Packet':
+ subkeys.append(packet)
+ result[public_key.fingerprint] = (public_key, uids, photoids, subkeys)
+ return render_template('index.html', data = result)
+
+@app.route('/download/')
+def download():
+ result = []
+ for entry in glob.glob('data/*.asc'):
+ with open(entry) as f:
+ result.append(f.read())
+
+ return Response('\n'.join(result), mimetype='application/pgp')
+
+
+if __name__ == "__main__":
+ app.run(debug=True, port=11371)