-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathauth.py
87 lines (70 loc) · 1.92 KB
/
auth.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
import uuid
import hashlib
import json
import os
import sys
from datetime import datetime, date
from bottle import response, request, redirect
import auth_pin
class auth_session:
session_timeout = 20
__session_data={}
def __init__(self, **kwarg):
self.save_session()
return
def save_session(self):
with open(".session", "w+") as (sf):
json.dump(self.__session_data,sf)
def login(self, client_secret):
pin_hash = hashlib.sha256(client_secret.encode()).hexdigest()
if client_secret==auth.CLIENT_SECRET or pin_hash == auth_pin.CLIENT_SECRET:
#create UUID
sid = str(uuid.uuid1())
dt = str (datetime.now())
#create cookie
response.set_cookie("sid",sid)
#insert UUID:timestamp to .session file
self.__session_data[sid]=dt
self.save_session()
return True
else:
return False
@property
def is_logged_in(self):
#get cookie
sid = request.get_cookie("sid")
#read timestamp
try:
session_date = self.__session_data[sid]
except KeyError:
return False
dt= datetime.strptime(session_date,'%Y-%m-%d %H:%M:%S.%f')
if dt:
date_diff = datetime.now()-dt
session_age=(date_diff.days * 1440) + (date_diff.seconds/60) #convert days to minutes + convert seconds to minutes
if session_age<self.session_timeout:
return True
self.logout()
return False
def logout(self):
#get cookie
sid = request.get_cookie("sid")
del self.__session_data[sid]
self.save_session()
return
def genhash(pin):
APP_PATH = os.path.dirname(os.path.abspath(__file__))
#print (pin)
pinhash = hashlib.sha256(pin.encode()).hexdigest()
print (pinhash)
s = 'CLIENT_SECRET = "' + pinhash + '"'
with open(APP_PATH + "/auth_pin.py", "w+") as pin_code_file:
pin_code_file.write(s)
if (__name__=="__main__"):
if (len(sys.argv)>2):
pin = sys.argv[2]
if (sys.argv[1]=='genhash' and pin!=''):
genhash(pin)
else:
print ("")
print ("use genhash <pin> to generate/mofigy pin hash")