5
5
import hashlib
6
6
import json
7
7
import logging
8
+ import google .cloud .logging
8
9
import random
9
10
import requests
10
11
import urllib .parse
21
22
app = Flask (__name__ )
22
23
app .wsgi_app = wrap_wsgi_app (app .wsgi_app )
23
24
dbclient = ndb .Client ()
24
-
25
+ logging .basicConfig (level = logging .INFO )
26
+ client = google .cloud .logging .Client ()
27
+ client .setup_logging ()
25
28
26
29
def find_provider_and_service (id ):
27
30
providers = [n for n in settings .SERVICES if n ['id' ] == id ]
28
31
if len (providers ) != 1 :
29
- raise Exception ('No such provider: ' + id )
32
+ raise Exception (f 'No such provider: { id } ' )
30
33
31
34
provider = providers [0 ]
32
35
return provider , settings .LOOKUP [provider ['type' ]]
@@ -249,7 +252,7 @@ def login():
249
252
data = urllib .parse .urlencode (request_params )
250
253
251
254
if settings .TESTING :
252
- logging .info ('REQ RAW:' + data )
255
+ logging .info (f 'REQ RAW: { data } ' )
253
256
254
257
headers = {'Content-Type' : 'application/x-www-form-urlencoded' }
255
258
@@ -263,8 +266,9 @@ def login():
263
266
response .raise_for_status ()
264
267
content = response .content
265
268
except requests .HTTPError as err :
266
- logging .info ('ERR-CODE: ' + str (err .response .status_code ))
267
- logging .info ('ERR-BODY: ' + err .response .text )
269
+ logging .error (f'PROVIDER: { service ['id' ]} , { url } ' )
270
+ logging .error (f'ERR-CODE: { err .response .status_code } ' )
271
+ logging .error (f'ERR-BODY: { err .response .text } ' )
268
272
raise err
269
273
270
274
if settings .TESTING :
@@ -300,7 +304,7 @@ def login():
300
304
if 'deauthlink' in provider :
301
305
template_values = {
302
306
'service' : display ,
303
- 'authid' : 'Server error, you must de-authorize ' + settings .APP_NAME ,
307
+ 'authid' : f 'Server error, you must de-authorize { settings .APP_NAME } ' ,
304
308
'showdeauthlink' : 'true' ,
305
309
'deauthlink' : provider ['deauthlink' ],
306
310
'fetchtoken' : ''
@@ -362,7 +366,7 @@ def login():
362
366
return render_template ('logged-in.html' , ** template_values )
363
367
364
368
except :
365
- logging .exception ('handler error for ' + display )
369
+ logging .exception (f 'handler error for { display } ' )
366
370
error_code = request .args .get ('error' , None )
367
371
error_desc = request .args .get ('error_description' , None )
368
372
if error_code is not None :
@@ -463,7 +467,7 @@ def cli_token_login():
463
467
return render_template ('logged-in.html' , ** template_values )
464
468
465
469
except :
466
- logging .exception ('handler error for ' + display )
470
+ logging .exception (f 'handler error for { display } ' )
467
471
468
472
template_values = {
469
473
'service' : display ,
@@ -490,17 +494,17 @@ def fetch():
490
494
491
495
with dbclient .context ():
492
496
entry = ndb .Key (dbmodel .FetchToken , fetchtoken ).get ()
493
- if entry is None :
494
- return jsonify ({'error' : 'No such entry' })
497
+ if entry is None :
498
+ return jsonify ({'error' : 'No such entry' })
495
499
496
- if entry .expires < datetime .datetime .now (datetime .timezone .utc ):
497
- return jsonify ({'error' : 'No such entry' })
500
+ if entry .expires < datetime .datetime .now (datetime .timezone .utc ):
501
+ return jsonify ({'error' : 'No such entry' })
498
502
499
- if entry .authid is None or entry .authid == '' :
500
- return jsonify ({'wait' : 'Not ready' })
503
+ if entry .authid is None or entry .authid == '' :
504
+ return jsonify ({'wait' : 'Not ready' })
501
505
502
- entry .fetched = True
503
- entry .put ()
506
+ entry .fetched = True
507
+ entry .put ()
504
508
505
509
return jsonify ({'authid' : entry .authid })
506
510
except :
@@ -672,8 +676,9 @@ def refresh_handler():
672
676
req .raise_for_status ()
673
677
content = req .content
674
678
except requests .HTTPError as err :
675
- logging .info ('ERR-CODE: ' + str (err .response .status_code ))
676
- logging .info ('ERR-BODY: ' + err .response .text )
679
+ logging .error (f'PROVIDER: { service ['id' ]} , { url } ' )
680
+ logging .error (f'ERR-CODE: { err .response .status_code } ' )
681
+ logging .error (f'ERR-BODY: { err .response .text } ' )
677
682
raise err
678
683
679
684
# Store the old refresh_token as some servers do not send it again
@@ -706,7 +711,7 @@ def refresh_handler():
706
711
'v2_authid' : 'v2:' + entry .service + ':' + rt
707
712
})
708
713
except :
709
- logging .exception ('handler error for ' + servicetype )
714
+ logging .exception (f 'handler error for { servicetype } ' )
710
715
response = jsonify ({'error' : 'Server error' })
711
716
response .headers ['X-Reason' ] = 'Server error'
712
717
response .status_code = 500
@@ -735,7 +740,7 @@ def refresh_handle_v2(inputfragment):
735
740
if refresh_token is None or len (refresh_token .strip ()) == 0 :
736
741
raise Exception ('No token provided' )
737
742
738
- tokenhash = hashlib .md5 (refresh_token ).hexdigest ()
743
+ tokenhash = hashlib .sha256 (refresh_token . encode ( 'utf-8' ) ).hexdigest ()
739
744
740
745
if settings .RATE_LIMIT > 0 :
741
746
@@ -786,9 +791,10 @@ def refresh_handle_v2(inputfragment):
786
791
req = requests .post (url , data = data , timeout = 20 )
787
792
req .raise_for_status ()
788
793
content = req .content
789
- except requests .HTTPError as err :
790
- logging .info ('ERR-CODE: ' + str (err .response .status_code ))
791
- logging .info ('ERR-BODY: ' + err .response .text )
794
+ except requests .HTTPError as err :
795
+ logging .error (f'PROVIDER: { service ['id' ]} , { url } ' )
796
+ logging .error (f'ERR-CODE: { err .response .status_code } ' )
797
+ logging .error (f'ERR-BODY: { err .response .text } ' )
792
798
raise err
793
799
794
800
resp = json .loads (content )
@@ -812,7 +818,7 @@ def refresh_handle_v2(inputfragment):
812
818
})
813
819
814
820
except :
815
- logging .exception ('handler error for ' + servicetype )
821
+ logging .exception (f 'handler error for { servicetype } ' )
816
822
response = jsonify ({'error' : 'Server error' })
817
823
response .headers ['X-Reason' ] = 'Server error'
818
824
response .status_code = 500
0 commit comments