import requests, random, hashlib, json, os from esplistener.esplistener import * from flask import session, Flask, request, render_template, url_for, redirect initialize_data = initialize() socket, data = initialize_data[0], initialize_data[1] #get_smth(socket, "Temperature") #send_command(socket, "Temperature", "GetValue") app = Flask(__name__) app.secret_key = '%TGHUI8uyFGHI(*&^5rUIO9i*&^TRfvgbHNJKLKJnhgfDE3WedFGhjKOlIuyTRe4567ioP:liuytr56&8()IuGTfrEdsXcghuy6' def hash_data(data): hashpass = hashlib.sha256() hashpass.update(bytes(data, encoding='utf8')) passw = hashpass.hexdigest() return passw def create_account(login, password): login, password = str(login), str(password) if not os.path.exists('accounts.json'): data = [] else: try: with open('accounts.json', 'r') as file: data = json.load(file) for i in data: if i['username'] == login: print("found") return 0 except json.JSONDecodeError: data = [] password_entry = {'username': login, 'password': hash_data(password)} data.append(password_entry) with open('accounts.json', 'w') as file: json.dump(data, file, indent=4) return 1 def login_into_account(session, login, password): if not os.path.exists('accounts.json'): return None try: with open('accounts.json', 'r') as file: data = json.load(file) except json.JSONDecodeError: data = [] for entry in data: if entry['username'] == login and entry['password'] == hash_data(password): session['loggedin'], session['username'] = True, login return 1 return 0 def define_session(session): if 'loggedin' not in session.keys(): session['loggedin'] = False def get_cur_speed(session): if session['loggedin']: return random.randint(1, 100) return "no rights" #return int(requests.post("http://"+ip+"/get_speed")) #Основные страницы, индекс, и страницы лабораторий, авторизация @app.route("/", methods = ["GET", "POST"]) def index(): define_session(session) if session['loggedin'] == True: cur_speed = 25 if request.method == "POST": cur_speed = request.form.get("slide") return render_template("mashinka.html", cur_speed = cur_speed) return render_template("mashinka.html", cur_speed = cur_speed) else: return render_template("index.html") @app.route('/register', methods = ["POST", "GET"]) def register(): if request.method == "GET": if session['loggedin'] == True: return redirect('/') else: return render_template("register.html", err = '') else: login = request.form.get('login') passw = request.form.get('password') if create_account(login, passw): return redirect('/') else: return render_template("register.html", err='Такой пользователь уже существует') @app.route('/login', methods = ["POST", "GET"]) def login(): if request.method == 'GET': if session['loggedin'] == True: return redirect('/') else: return render_template("login.html", err = '') else: login = request.form.get('login') passw = request.form.get('password') print(passw) if login_into_account(session, login, passw): return redirect('/') else: return render_template("login.html", err="Неверный логин/пароль") #Общение с ЕСП @app.route("/sos_check", methods = ["POST"]) def sos_check(): if random.randint(0,1): return check_sos(socket) else: return '' @app.route("/mashinka_go", methods = ["POST"]) def mashinka_go(): if session['loggedin']: return '' else: return "" @app.route("/mashinka_stop", methods = ["POST"]) def mashinka_stop(): if session['loggedin']: return '' else: return "" @app.route("/get_temperature", methods = ["POST"]) def get_temperature(): if session['loggedin']: return 1 else: return '' if __name__ == '__main__': app.run()