diff options
author | Magnus Hagander | 2019-01-03 10:59:40 +0000 |
---|---|---|
committer | Magnus Hagander | 2019-01-04 11:24:06 +0000 |
commit | 1e173c362aa105ab4397fb77f8c693a1e01efa11 (patch) | |
tree | f08a58205afdcec2605ec872089ddc6dc40c8c89 /django/archives/auth.py | |
parent | fa36dc94bbd0bc86bf63458d8f00da04785ac669 (diff) |
Update django app to python 3
Diffstat (limited to 'django/archives/auth.py')
-rw-r--r-- | django/archives/auth.py | 28 |
1 files changed, 14 insertions, 14 deletions
diff --git a/django/archives/auth.py b/django/archives/auth.py index b3af1a5..c24faa1 100644 --- a/django/archives/auth.py +++ b/django/archives/auth.py @@ -28,8 +28,8 @@ from django.conf import settings import base64 import json import socket -import urlparse -import urllib +from urllib.parse import urlparse, urlencode, parse_qs +import urllib.request from Crypto.Cipher import AES from Crypto.Hash import SHA from Crypto import Random @@ -57,17 +57,17 @@ def login(request): # Put together an url-encoded dict of parameters we're getting back, # including a small nonce at the beginning to make sure it doesn't # encrypt the same way every time. - s = "t=%s&%s" % (int(time.time()), urllib.urlencode({'r': request.GET['next']})) + s = "t=%s&%s" % (int(time.time()), urlencode({'r': request.GET['next']})) # Now encrypt it r = Random.new() iv = r.read(16) - encryptor = AES.new(SHA.new(settings.SECRET_KEY).digest()[:16], AES.MODE_CBC, iv) + encryptor = AES.new(SHA.new(settings.SECRET_KEY.encode('ascii')).digest()[:16], AES.MODE_CBC, iv) cipher = encryptor.encrypt(s + ' ' * (16-(len(s) % 16))) # pad to 16 bytes return HttpResponseRedirect("%s?d=%s$%s" % ( settings.PGAUTH_REDIRECT, - base64.b64encode(iv, "-_"), - base64.b64encode(cipher, "-_"), + base64.b64encode(iv, b"-_").decode('utf8'), + base64.b64encode(cipher, b"-_").decode('utf8'), )) else: return HttpResponseRedirect(settings.PGAUTH_REDIRECT) @@ -95,11 +95,11 @@ def auth_receive(request): decryptor = AES.new(base64.b64decode(settings.PGAUTH_KEY), AES.MODE_CBC, base64.b64decode(str(request.GET['i']), "-_")) - s = decryptor.decrypt(base64.b64decode(str(request.GET['d']), "-_")).rstrip(' ') + s = decryptor.decrypt(base64.b64decode(str(request.GET['d']), "-_")).rstrip(b' ').decode('utf8') # Now un-urlencode it try: - data = urlparse.parse_qs(s, strict_parsing=True) + data = parse_qs(s, strict_parsing=True) except ValueError: return HttpResponse("Invalid encrypted data received.", status=400) @@ -172,12 +172,12 @@ We apologize for the inconvenience. # redirect the user. if 'd' in data: (ivs, datas) = data['d'][0].split('$') - decryptor = AES.new(SHA.new(settings.SECRET_KEY).digest()[:16], + decryptor = AES.new(SHA.new(settings.SECRET_KEY.encode('ascii')).digest()[:16], AES.MODE_CBC, - base64.b64decode(ivs, "-_")) - s = decryptor.decrypt(base64.b64decode(datas, "-_")).rstrip(' ') + base64.b64decode(ivs, b"-_")) + s = decryptor.decrypt(base64.b64decode(datas, "-_")).rstrip(b' ').decode('utf8') try: - rdata = urlparse.parse_qs(s, strict_parsing=True) + rdata = parse_qs(s, strict_parsing=True) except ValueError: return HttpResponse("Invalid encrypted data received.", status=400) if 'r' in rdata: @@ -205,9 +205,9 @@ def user_search(searchterm=None, userid=None): else: q = {'s': searchterm} - u = urllib.urlopen('%ssearch/?%s' % ( + u = urllib.request.urlopen('%ssearch/?%s' % ( settings.PGAUTH_REDIRECT, - urllib.urlencode(q), + urlencode(q), )) (ivs, datas) = u.read().split('&') u.close() |