95 lines
2.9 KiB
Python
95 lines
2.9 KiB
Python
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()
|