import os
import base64
import datetime
from flask import Flask, request, jsonify, send_from_directory
from flask_cors import CORS

# ========== 配置 ==========
UPLOAD_FOLDER = 'uploads'
CERT_FILE = '/etc/letsencrypt/live/idandan.love/fullchain.pem'
KEY_FILE = '/etc/letsencrypt/live/idandan.love/privkey.pem'
PORT = 443

# ========== 初始化 ==========
os.makedirs(UPLOAD_FOLDER, exist_ok=True)
app = Flask(__name__, static_url_path='', static_folder='.')
CORS(app)

# ========== 路由 ==========
@app.route('/')
def index():
    return app.send_static_file('up.html')

@app.route('/status')
def status():
    return "OK", 200

@app.route('/upload', methods=['POST'])
def upload():
    try:
        data = request.get_json()
        filename = data.get("filename")
        base64_data = data.get("base64")

        if not filename or not base64_data:
            return jsonify({"error": "Missing filename or base64"}), 400

        if "base64," in base64_data:
            base64_data = base64_data.split("base64,", 1)[1]

        file_bytes = base64.b64decode(base64_data)
        safe_filename = os.path.basename(filename)
        file_path = os.path.join(UPLOAD_FOLDER, safe_filename)

        with open(file_path, "wb") as f:
            f.write(file_bytes)

        now = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
        print(f"[{now}] ✅ Received: {safe_filename}")

        return jsonify({"status": "ok", "filename": safe_filename})
    except Exception as e:
        return jsonify({"error": str(e)}), 500

# ========== 启动 ==========
if __name__ == '__main__':
    print(f"🚀 HTTPS 服务启动中: https://0.0.0.0:{PORT}/up.html")
    app.run(host='0.0.0.0', port=PORT, ssl_context=(CERT_FILE, KEY_FILE))
