import requests import json from flask import Flask, render_template, url_for, redirect, request, json import hashlib app = Flask(__name__) app.secret_key = '%TGHUI8uyFGHI(*&^5rUIO9i*&^TRfvgbHNJKLKJnhgfDE3WedFGhjKOlIuyTRe4567ioP:liuytr56&8()IuGTfrEdsXcghuy6' print("OPEN YOUR ESP SERIAL PORT READER A AND ENDER IP") ip = input() def hash_data(data): hashpass = hashlib.sha256() hashpass.update(bytes(password, encoding='utf8')) passw = hashpass.hexdigest() return passw def create_account(login, password): passw = hash_data(password) data = {'username': login, 'password': passw} with open('accounts.json', 'rw') as f: for entry in json.load(f): if entry['username'] == login: return 0 json.dump(data, f) return 1 def login_into_account(session, login, password): passw = hash_data(password) with open('accounts.json', 'r') as f: for entry in json.load(f): if entry['username'] == login and entry["password"] == password: session['loggedin'], session['username'] = True, login return 1 return 0 def get_status(): return requests.get("http://"+ip+"/status").text @app.route('/', methods = ["GET", "POST"]) def index(): if session["loggedin"] == True: stat = get_status().split() led_status = int(stat[0]) led_brightness = int(stat[1]) if request.method == "POST": if request.form.get("slide"): brightness = request.form.get("slide") print(brightness) led_britghtness = change(brightness) return render_template("index.html", led_status = led_status, led_brightness = led_brightness) else: return render_template("unauthorized.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") else: data = request.args login = data['login'] passw = data['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") else: data = request.args login = data['login'] passw = data['passw'] if login_into_account(session, login, passw): return redirect('/') else: return render_template("login.html", err="Неверный логин/пароль") if __name__ == '__main__': app.ru()