42 lines
1.2 KiB
Python
42 lines
1.2 KiB
Python
import json
|
|
import hashlib
|
|
import modules.constants as constants
|
|
|
|
from os.path import exists
|
|
|
|
|
|
def auth_list_to_dict(auth_list):
|
|
auth_dict = {}
|
|
for auth_data in auth_list:
|
|
if 'user' in auth_data:
|
|
if 'hash' in auth_data:
|
|
auth_dict |= {auth_data['user']: auth_data['hash']}
|
|
elif 'pass' in auth_data:
|
|
auth_dict |= {auth_data['user']: hashlib.sha256(bytes(auth_data['pass'], encoding='utf-8')).hexdigest()}
|
|
return auth_dict
|
|
|
|
|
|
def load_auth_data(filename=None):
|
|
auth_dict = None
|
|
if filename != None and exists(filename):
|
|
with open(filename, encoding='utf-8') as auth_file:
|
|
try:
|
|
auth_obj = json.load(auth_file)
|
|
if isinstance(auth_obj, list) and len(auth_obj) > 0:
|
|
auth_dict = auth_list_to_dict(auth_obj)
|
|
except Exception as e:
|
|
print('load_auth_data, e: ' + str(e))
|
|
return auth_dict
|
|
|
|
|
|
auth_dict = load_auth_data(constants.AUTH_FILENAME)
|
|
|
|
auth_enabled = auth_dict != None
|
|
|
|
|
|
def check_auth(user, password):
|
|
if user not in auth_dict:
|
|
return False
|
|
else:
|
|
return hashlib.sha256(bytes(password, encoding='utf-8')).hexdigest() == auth_dict[user]
|