144 lines
4.2 KiB
Python
144 lines
4.2 KiB
Python
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()
|
||
|
||
|