]> git.siccegge.de Git - ksp-webtool.git/blob - server.py
Tool with some features
[ksp-webtool.git] / server.py
1 from flask import Flask, request, render_template, make_response, Response
2 from flask import request
3 import hashlib
4 import pgpdump
5 import glob
6 import base64
7
8 app = Flask(__name__)
9
10 @app.template_filter('base64')
11 def base64_filter(arg):
12 return base64.b64encode(arg)
13
14 @app.route("/pks/add", methods=['POST'])
15 def add():
16 keytext = request.form['keytext']
17 pgp = pgpdump.AsciiData(keytext)
18 fingerprint = pgp.packets().next().fingerprint
19 with open('data/%s.asc' % fingerprint, 'w') as f:
20 f.write(keytext)
21 return Response("OK", mimetype="text/plain")
22
23 @app.route('/')
24 def index():
25 result = dict()
26 for entry in glob.glob('data/*.asc'):
27 pgp = pgpdump.AsciiData(file(entry).read())
28 uids = []
29 photoids = []
30 subkeys = []
31 public_key = None
32 for packet in pgp.packets():
33 if packet.name == 'Public Key Packet':
34 public_key = packet
35 elif packet.name == 'User ID Packet':
36 uids.append(packet)
37 elif packet.name == 'User Attribute Packet':
38 photoids.append(packet)
39 elif packet.name == 'Public Subkey Packet':
40 subkeys.append(packet)
41 result[public_key.fingerprint] = (public_key, uids, photoids, subkeys)
42 return render_template('index.html', data = result)
43
44 @app.route('/download/')
45 def download():
46 result = []
47 for entry in glob.glob('data/*.asc'):
48 with open(entry) as f:
49 result.append(f.read())
50
51 return Response('\n'.join(result), mimetype='application/pgp')
52
53
54 if __name__ == "__main__":
55 app.run(debug=True, port=11371)