77from base64 import urlsafe_b64decode , urlsafe_b64encode
88from datetime import datetime
99from functools import wraps
10- from json import dumps , loads
10+ from json import loads
1111from os import getenv , path
1212from 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
1717from requests .exceptions import ConnectionError
1818from urllib3 import disable_warnings
1919from 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-
5237def 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
10673def 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
11582def 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
136110def 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
160134def 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
184163def 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
205191def 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