From b43e6fe35acbf2584578ff6b142d1c0cd18dbb71 Mon Sep 17 00:00:00 2001 From: Christoph Egger Date: Mon, 24 Nov 2014 23:48:49 +0100 Subject: [PATCH] Tool with some features --- server.py | 55 ++++++++++++++++++++++++++++++++++++++++++++ templates/index.html | 35 ++++++++++++++++++++++++++++ 2 files changed, 90 insertions(+) create mode 100644 server.py create mode 100644 templates/index.html diff --git a/server.py b/server.py new file mode 100644 index 0000000..6b4350e --- /dev/null +++ b/server.py @@ -0,0 +1,55 @@ +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) diff --git a/templates/index.html b/templates/index.html new file mode 100644 index 0000000..295b383 --- /dev/null +++ b/templates/index.html @@ -0,0 +1,35 @@ + + + + + + + +

Key listing

+

Download Keyring

+ + {% for entry in data %} + + + + + + + + {% for uid in data[entry][1] %} + + + + {% endfor %} + {% endfor %} +
{{data[entry][1][0].data}} {{data[entry][0].fingerprint}}
+ {% if data[entry][2][0] %} + + {% endif %} + + {{data[entry][0].pub_algorithm_type}} + {{data[entry][0].creation_time}} + (expires {{data[entry][0].expiration_time}}) +
{{uid.data}}
+ + -- 2.39.2