Skip to content

Commit 8c52539

Browse files
author
Nicolas Beguier
committed
[CASSH WEBUI] Upgrade to 1.5.0
1 parent 1cf9cf4 commit 8c52539

File tree

1 file changed

+47
-54
lines changed

1 file changed

+47
-54
lines changed

server/web/cassh_web.py

Lines changed: 47 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,13 @@
77
from base64 import urlsafe_b64decode, urlsafe_b64encode
88
from datetime import datetime
99
from functools import wraps
10-
from json import dumps, loads
10+
from json import loads
1111
from os import getenv, path
1212
from ssl import PROTOCOL_TLSv1_2, SSLContext
1313

1414
# Third party library imports
15-
from flask import Flask, render_template, request, Response, redirect, url_for, send_from_directory
16-
from requests import get, post, put
15+
from flask import Flask, render_template, request, Response, redirect, send_from_directory
16+
from requests import post, put
1717
from requests.exceptions import ConnectionError
1818
from urllib3 import disable_warnings
1919
from werkzeug import secure_filename
@@ -34,21 +34,6 @@ def allowed_file(filename):
3434
return '.' in filename and \
3535
filename.rsplit('.', 1)[1] in APP.config['ALLOWED_EXTENSIONS']
3636

37-
def check_auth_by_status(auth):
38-
try:
39-
req = get(APP.config['CASSH_URL'] + '/client' +
40-
auth_url(auth.username, password=auth.password), verify=False)
41-
except ConnectionError:
42-
return Response('Connection error : %s' % APP.config['CASSH_URL'])
43-
# If there is no account
44-
if req.text == 'None':
45-
return True
46-
try:
47-
result = loads(req.text)
48-
except:
49-
return False
50-
return True
51-
5237
def decode(key, enc):
5338
dec = []
5439
enc = urlsafe_b64decode(enc).decode()
@@ -83,62 +68,51 @@ def decorated(*args, **kwargs):
8368
return func(current_user=current_user, *args, **kwargs)
8469
return decorated
8570

86-
def auth_url(realname, password=None, prefix=None):
87-
"""
88-
Return a ?xxx=xxx to put at the end of a GET request.
89-
"""
90-
if APP.config['ENABLE_LDAP']:
91-
if prefix is None:
92-
return '?realname=%s&password=%s'\
93-
% (realname, password)
94-
else:
95-
return prefix + '&realname=%s&password=%s'\
96-
% (realname, password)
97-
else:
98-
if prefix is None:
99-
return ''
100-
else:
101-
return prefix
102-
103-
10471
@APP.route('/')
10572
@requires_auth
10673
def index(current_user=None):
10774
""" Display home page """
10875
return render_template('homepage.html', username=current_user['name'], \
10976
logged_in=current_user['is_authenticated'], \
110-
display_error=request.cookies.get('last_attempt_error')=='True', \
77+
display_error=request.cookies.get('last_attempt_error') == 'True', \
11178
login_banner=APP.config['LOGIN_BANNER'])
11279

11380
@APP.route('/login', methods=['POST'])
11481
@requires_auth
11582
def login(current_user=None):
83+
"""
84+
Authentication
85+
"""
86+
del current_user
11687
username = request.form['username']
11788
password = request.form['password']
11889
last_attempt_error = False
11990
redirect_to_index = redirect('/')
12091
response = APP.make_response(redirect_to_index)
12192
try:
122-
req = get(APP.config['CASSH_URL'] + '/test_auth' +
123-
auth_url(username, password=password), verify=False)
93+
payload = {}
94+
payload.update({'realname': username, 'password': password})
95+
req = post(APP.config['CASSH_URL'] + '/test_auth', \
96+
data=payload, \
97+
verify=False)
12498
except:
12599
return Response('Connection error : %s' % APP.config['CASSH_URL'])
126100
if 'OK' in req.text:
127-
response.set_cookie('username',value=username)
128-
response.set_cookie('password',value=encode(APP.config['ENCRYPTION_KEY'], password))
101+
response.set_cookie('username', value=username)
102+
response.set_cookie('password', value=encode(APP.config['ENCRYPTION_KEY'], password))
129103
else:
130104
last_attempt_error = True
131-
response.set_cookie('last_attempt_error',value=str(last_attempt_error))
105+
response.set_cookie('last_attempt_error', value=str(last_attempt_error))
132106
return response
133107

134108
@APP.route('/logout', methods=['POST'])
135109
@requires_auth
136110
def logout(current_user=None):
137111
redirect_to_index = redirect('/')
138112
response = APP.make_response(redirect_to_index)
139-
response.set_cookie('username',value='Unknown')
140-
response.set_cookie('password',value='Unknown')
141-
response.set_cookie('last_attempt_error',value='False')
113+
response.set_cookie('username', value='Unknown')
114+
response.set_cookie('password', value='Unknown')
115+
response.set_cookie('last_attempt_error', value='False')
142116
return response
143117

144118
@APP.route('/add/')
@@ -158,10 +132,15 @@ def cassh_sign(current_user=None):
158132
@APP.route('/status/')
159133
@requires_auth
160134
def cassh_status(current_user=None):
161-
""" Display status page """
135+
"""
136+
CASSH status
137+
"""
162138
try:
163-
req = get(APP.config['CASSH_URL'] + '/client' +
164-
auth_url(current_user['name'], password=current_user['password']), verify=False)
139+
payload = {}
140+
payload.update({'realname': current_user['name'], 'password': current_user['password']})
141+
req = post(APP.config['CASSH_URL'] + '/client/status', \
142+
data=payload, \
143+
verify=False)
165144
except ConnectionError:
166145
return Response('Connection error : %s' % APP.config['CASSH_URL'])
167146
try:
@@ -182,12 +161,19 @@ def cassh_status(current_user=None):
182161
@APP.route('/sign/upload', methods=['POST'])
183162
@requires_auth
184163
def upload(current_user=None):
164+
"""
165+
CASSH sign
166+
"""
185167
pubkey = request.files['file']
186168
username = request.form['username']
169+
payload = {}
170+
payload.update({'realname': current_user['name'], 'password': current_user['password']})
171+
payload.update({'username': username})
172+
payload.update({'pubkey': pubkey.read().decode('UTF-8').replace(' ', '%20')})
187173
try:
188-
req = post(APP.config['CASSH_URL'] + '/client' +
189-
auth_url(current_user['name'], password=current_user['password'], \
190-
prefix='?username=%s' % username), data=pubkey, verify=False)
174+
req = post(APP.config['CASSH_URL'] + '/client', \
175+
data=payload, \
176+
verify=False)
191177
except ConnectionError:
192178
return Response('Connection error : %s' % APP.config['CASSH_URL'])
193179
if 'Error' in req.text:
@@ -203,12 +189,19 @@ def upload(current_user=None):
203189
@APP.route('/add/send', methods=['POST'])
204190
@requires_auth
205191
def send(current_user=None):
192+
"""
193+
CASSH add
194+
"""
206195
pubkey = request.files['file']
207196
username = request.form['username']
197+
payload = {}
198+
payload.update({'realname': current_user['name'], 'password': current_user['password']})
199+
payload.update({'username': username})
200+
payload.update({'pubkey': pubkey.read().decode('UTF-8').replace(' ', '%20')})
208201
try:
209-
req = put(APP.config['CASSH_URL'] + '/client' +
210-
auth_url(current_user['name'], password=current_user['password'], \
211-
prefix='?username=%s' % username), data=pubkey, verify=False)
202+
req = put(APP.config['CASSH_URL'] + '/client', \
203+
data=payload, \
204+
verify=False)
212205
except ConnectionError:
213206
return Response('Connection error : %s' % APP.config['CASSH_URL'])
214207
if 'Error' in req.text:

0 commit comments

Comments
 (0)