2023-04-13 09:52:51 +00:00
|
|
|
from flask import Flask, flash, make_response, redirect, send_file, jsonify, request, render_template, url_for
|
2023-04-07 11:25:24 +00:00
|
|
|
import db
|
|
|
|
import os
|
|
|
|
from werkzeug.utils import secure_filename
|
2023-04-12 13:49:11 +00:00
|
|
|
import subprocess
|
2023-04-12 13:53:05 +00:00
|
|
|
import threading
|
2023-04-12 13:46:10 +00:00
|
|
|
|
2023-04-06 12:07:13 +00:00
|
|
|
app = Flask(__name__)
|
2023-04-07 11:25:24 +00:00
|
|
|
app.config['UPLOAD_FOLDER'] = "configs/squash"
|
|
|
|
app.config['MAX_CONTENT_LENGTH'] = 1024 * 1024 * 512 #512MB
|
|
|
|
|
2023-04-12 13:53:05 +00:00
|
|
|
def ssh_thread_function():
|
|
|
|
subprocess.run(['wssh','--fbidhttp=False'])
|
|
|
|
|
|
|
|
ssh_thread = threading.Thread(target=ssh_thread_function)
|
|
|
|
ssh_thread.start()
|
|
|
|
|
2023-04-13 09:52:51 +00:00
|
|
|
@app.route('/')
|
|
|
|
def main():
|
|
|
|
auth_token = request.cookies.get('auth_token')
|
|
|
|
if auth_token != "" and auth_token is not None:
|
|
|
|
if db.get_user_bytoken(auth_token) is None:
|
|
|
|
return render_template('template/login.html')
|
|
|
|
return render_template('template/index.html')
|
|
|
|
|
|
|
|
@app.route('/api/login', methods=['POST'])
|
|
|
|
def login_post():
|
|
|
|
username = request.form['username']
|
|
|
|
password = request.form['password']
|
|
|
|
|
|
|
|
auth_token = db.login()
|
|
|
|
if auth_token is None:
|
|
|
|
flash('Nieprawidłowa nazwa użytkownika lub hasło.', 'error')
|
|
|
|
return redirect(url_for('login'))
|
|
|
|
|
|
|
|
response = make_response(render_template('template/index.html'))
|
|
|
|
response.set_cookie('auth_token', auth_token)
|
|
|
|
|
|
|
|
return response
|
|
|
|
|
|
|
|
|
2023-04-07 11:28:20 +00:00
|
|
|
@app.route("/api/addimage", methods=['POST'])
|
2023-04-07 11:25:24 +00:00
|
|
|
def add_image():
|
|
|
|
db.Connect()
|
|
|
|
name = None
|
|
|
|
try:
|
|
|
|
file = request.files['file']
|
|
|
|
if file is None or file == "":
|
|
|
|
return jsonify(message="nofile")
|
|
|
|
except Exception as e:
|
|
|
|
return jsonify(message="nofile")
|
|
|
|
|
|
|
|
try:
|
|
|
|
token = request.form['token']
|
|
|
|
if token is None or token == "":
|
|
|
|
return jsonify(message="notoken")
|
|
|
|
except:
|
|
|
|
if token is None:
|
|
|
|
return jsonify(message="notoken")
|
|
|
|
|
|
|
|
incorrect = True
|
|
|
|
while incorrect:
|
|
|
|
if db.GetVPNImage(token) is not None:
|
|
|
|
if name[-1:].isdigit():
|
|
|
|
name = name[:-1] + str(int(name[-1:])+1)
|
|
|
|
else:
|
|
|
|
name = name+"1"
|
|
|
|
else:
|
|
|
|
incorrect = False
|
|
|
|
|
|
|
|
filename = secure_filename(file.filename)
|
|
|
|
while os.path.exists(os.path.join(app.config['UPLOAD_FOLDER'], filename)):
|
|
|
|
if filename[0].isdigit():
|
|
|
|
filename = str(int(filename[0])+1)+filename[1:]
|
|
|
|
else:
|
|
|
|
filename = "1"+filename
|
|
|
|
file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename))
|
2023-04-13 09:52:51 +00:00
|
|
|
db.add_conf_image(filename, token)
|
2023-04-07 11:25:24 +00:00
|
|
|
|
|
|
|
return jsonify(message="ok")
|
|
|
|
|
2023-04-06 12:07:13 +00:00
|
|
|
|
2023-04-13 09:52:51 +00:00
|
|
|
@app.route("/api/getconf")
|
2023-04-07 11:25:24 +00:00
|
|
|
def get_image():
|
2023-04-13 09:52:51 +00:00
|
|
|
filename = db.get_conf_image(request.headers['token'])
|
2023-04-07 11:25:24 +00:00
|
|
|
if filename is None or filename == "":
|
|
|
|
filename = "default.squashfs"
|
|
|
|
|
2023-04-12 13:50:21 +00:00
|
|
|
return send_file(os.path.join(app.config['UPLOAD_FOLDER'], filename))
|