This repository has been archived by the owner on Apr 22, 2020. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathserve.py
99 lines (76 loc) · 2.68 KB
/
serve.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
#!/usr/bin/python
from flask import Flask
from flask import make_response
from flask import request
from server.kerborsrv import KerborAuthenticationServer, KerborTicketGrantingServer, KerborServiceServer
from server.userserver import UserServer
from server.storage import SimpleKVStorage
app = Flask(__name__)
store = SimpleKVStorage()
us = UserServer(store)
kerbor_as = KerborAuthenticationServer(us)
kerbor_tgs = KerborTicketGrantingServer(us)
kerbor_service = KerborServiceServer(us)
@app.before_request
def log_request():
logfile.write('{} {}\n'.format(request.method, request.path))
logfile.write('{}\n\n->\n\n'.format(request.get_data()))
@app.after_request
def log_response(response):
logfile.write('{}\n\n---\n\n'.format(response.get_data()))
return response
@app.route('/')
def hello():
resp = make_response("""Kerbor Srv
/ - help
/newuser - Register a new user (web only)
/logmein - Step1
/getmeticket - Step2
/getmeservice - Step3""")
resp.headers['Content-Type'] = 'text/plain'
return resp
@app.route('/logmein', methods=['POST', 'GET'])
def log_me_in():
if request.method == 'GET':
return 'I expect AuthenticateMeMessage to be POSTed'
json_obj = kerbor_as.handle(request.get_data())
resp = make_response(json_obj)
resp.headers['Content-Type'] = 'application/json'
return resp
@app.route('/getmeticket', methods=['POST', 'GET'])
def get_me_ticket():
if request.method == 'GET':
return 'I expect TicketRequestMessage to be POSTed'
json_obj = kerbor_tgs.handle(request.get_data())
resp = make_response(json_obj)
resp.headers['Content-Type'] = 'application/json'
return resp
@app.route('/getmeservice', methods=['POST', 'GET'])
def get_me_service():
if request.method == 'GET':
return 'I expect ServiceRequestMessage to be POSTed'
json_obj = kerbor_service.handle(request.get_data())
resp = make_response(json_obj)
resp.headers['Content-Type'] = 'application/json'
return resp
@app.route('/newuser', methods=['POST', 'GET'])
def new_user():
if request.method == 'GET':
return """<form method=post>
<input type=text placeholder=Username name=username><br>
<input type=password placeholder=Password name=password><br>
<input type=submit value=Submit>
</form>"""
else:
if 'username' in request.form and 'password' in request.form:
us.register(
request.form['username'],
request.form['password']
)
return 'Success'
else:
return 'Failure'
if __name__ == '__main__':
logfile = open('reqs.log', 'w')
app.run()
logfile.close()