Spaces:
Paused
Paused
File size: 1,628 Bytes
be71427 e469fa8 be71427 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 | from flask import Flask, render_template, request, jsonify, send_from_directory
from flask_cors import CORS
import os
app = Flask(__name__)
CORS(app)
ISO_PATH = "/home/user/iso/nyarch.iso"
ISO_DIR = "/home/user/iso"
NOVNC_PATH = "/usr/share/novnc"
@app.route("/")
def index():
return send_from_directory(NOVNC_PATH, "vnc.html")
@app.route("/upload", methods=["POST"])
def upload_chunk():
chunk = request.files.get("chunk")
chunk_number = int(request.form.get("chunkNumber", 0))
total_chunks = int(request.form.get("totalChunks", 1))
if chunk:
os.makedirs(ISO_DIR, exist_ok=True)
mode = "wb" if chunk_number == 0 else "ab"
with open(ISO_PATH, mode) as f:
f.write(chunk.read())
if chunk_number + 1 >= total_chunks:
return jsonify({"status": "complete"})
progress = int((chunk_number + 1) / total_chunks * 100)
return jsonify({"status": "uploading", "progress": progress})
return jsonify({"status": "error"}), 400
@app.route("/status")
def status():
iso_exists = os.path.exists(ISO_PATH)
iso_size = os.path.getsize(ISO_PATH) if iso_exists else 0
return jsonify(
{
"iso_exists": iso_exists,
"iso_size": iso_size,
"iso_size_mb": round(iso_size / 1024 / 1024, 2),
}
)
@app.route("/novnc/")
@app.route("/novnc/<path:filename>")
def serve_novnc(filename="vnc.html"):
return send_from_directory(NOVNC_PATH, filename)
if __name__ == "__main__":
os.makedirs(ISO_DIR, exist_ok=True)
app.run(host="0.0.0.0", port=7860, debug=False, threaded=True)
|