|
from flask import Flask, request, render_template_string, send_from_directory, jsonify, render_template |
|
from flask import render_template |
|
import sqlite3 |
|
import os |
|
import uuid |
|
import shutil |
|
|
|
|
|
from datetime import datetime |
|
import pytz |
|
|
|
|
|
app = Flask(__name__, template_folder="./") |
|
|
|
app.config['DEBUG'] = True |
|
|
|
UPLOAD_FOLDER = 'static' |
|
HTML_FOLDER = 'html' |
|
|
|
|
|
if not os.path.exists(UPLOAD_FOLDER): |
|
os.makedirs(UPLOAD_FOLDER) |
|
|
|
if not os.path.exists(HTML_FOLDER): |
|
os.makedirs(HTML_FOLDER) |
|
|
|
|
|
|
|
|
|
@app.route('/get_current_time', methods=['GET']) |
|
def get_current_time(): |
|
utc_now = datetime.utcnow() |
|
msk_tz = pytz.timezone('Europe/Moscow') |
|
msk_now = utc_now.replace(tzinfo=pytz.utc).astimezone(msk_tz) |
|
current_time = msk_now.strftime('%Y-%m-%d %H:%M:%S') |
|
return jsonify({'current_time': current_time}) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@app.route('/upload', methods=['POST']) |
|
def upload_file(): |
|
if 'file' not in request.files: |
|
return "No file part", 400 |
|
file = request.files['file'] |
|
if file.filename == '': |
|
return "No selected file", 400 |
|
|
|
|
|
unique_filename = str(uuid.uuid4()) + os.path.splitext(file.filename)[1] |
|
save_path = os.path.join(UPLOAD_FOLDER, unique_filename) |
|
file.save(save_path) |
|
|
|
|
|
full_url = request.url_root.replace('http://', 'https://') + 'uploads/' + unique_filename |
|
return f"File uploaded successfully and saved to {full_url}", 200 |
|
|
|
@app.route('/uploads/<filename>', methods=['GET']) |
|
def uploaded_file(filename): |
|
return send_from_directory(UPLOAD_FOLDER, filename) |
|
|
|
@app.route('/up_fa', methods=['GET']) |
|
def up_fa(): |
|
return render_template('up_fa.html') |
|
|
|
@app.route('/up_page', methods=['POST']) |
|
def upload_page(): |
|
if 'file' not in request.files: |
|
return "No file part", 400 |
|
file = request.files['file'] |
|
if file.filename == '': |
|
return "No selected file", 400 |
|
|
|
filename = request.form.get('filename') |
|
if not filename: |
|
return "Filename is required", 400 |
|
|
|
save_path = os.path.join(HTML_FOLDER, filename + '.html') |
|
file.save(save_path) |
|
|
|
|
|
full_url = request.url_root.replace('http://', 'https://') + filename |
|
return f"Page uploaded successfully and saved to {full_url}", 200 |
|
|
|
@app.route('/<path:filename>', methods=['GET']) |
|
def serve_html(filename): |
|
if not filename.endswith('.html'): |
|
filename += '.html' |
|
return send_from_directory(HTML_FOLDER, filename) |
|
|
|
@app.route('/up_page', methods=['GET']) |
|
def up_page(): |
|
return render_template('up_page.html') |
|
|
|
@app.route('/monitor', methods=['GET']) |
|
def monitor(): |
|
|
|
files = os.listdir(UPLOAD_FOLDER) |
|
html_files = os.listdir(HTML_FOLDER) |
|
|
|
|
|
total, used, free = shutil.disk_usage("/") |
|
|
|
|
|
total_gb = total // (2**30) |
|
used_gb = used // (2**30) |
|
free_gb = free // (2**30) |
|
|
|
return render_template('monitor.html', |
|
uploaded_files=files, |
|
uploaded_html_files=html_files, |
|
disk_space={ |
|
'total': f"{total_gb} GB", |
|
'used': f"{used_gb} GB", |
|
'free': f"{free_gb} GB" |
|
}) |
|
|
|
if __name__ == '__main__': |
|
app.run(host='0.0.0.0', port=int(os.environ.get('PORT', 7860))) |