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