import os import subprocess import urllib.request import zipfile # 1. تحميل الـ Xray Core الـ Binary xray_url = "https://github.com/XTLS/Xray-core/releases/latest/download/Xray-linux-64.zip" zip_path = "xray.zip" bin_dir = "./xray_bin" if not os.path.exists(bin_dir): os.makedirs(bin_dir) print("Downloading Xray...") urllib.request.urlretrieve(xray_url, zip_path) print("Extracting Xray...") with zipfile.ZipFile(zip_path, 'r') as zip_ref: zip_ref.extractall(bin_dir) # إعطاء صلاحيات التشغيل للـ binary os.chmod(f"{bin_dir}/xray", 0o755) # تنظيف الملف المضغوط if os.path.exists(zip_path): os.remove(zip_path) # 2. تشغيل واجهة Gradio وهمية على بورت مختلف تماماً (7861) عشان الـ Space يفضل شغال خضرا print("Starting fake Gradio interface...") with open("dummy.py", "w") as f: f.write("import gradio as gr\nwith gr.Blocks() as demo:\n gr.Markdown('# Config Running')\ndemo.launch(server_name='0.0.0.0', server_port=7861, prevent_thread_lock=True)") # تشغيل الـ interface في الخلفية subprocess.Popen(["python", "dummy.py"]) # 3. تشغيل الـ XrayCore باستخدام الـ config.json على البورت الأساسي للمنصة 7860 print("Starting Xray Core...") subprocess.run([f"{bin_dir}/xray", "-config", "config.json"])