import os, subprocess, threading, time, psutil
from flask import Flask, render_template_string, request, jsonify
app = Flask(__name__)
# دالة لجلب معلومات النظام (RAM, CPU, Network)
def get_system_stats():
try:
ram = psutil.virtual_memory()
# [span_1](start_span)حساب الرام المتوفرة والمستخدمة[span_1](end_span)
ram_usage = f"{ram.used / (1024**3):.2f}/{ram.total / (1024**3):.2f} GB ({ram.percent}%)"
cpu_usage = f"{psutil.cpu_percent(interval=None)}%"
# [span_2](start_span)قياس سرعة الشبكة في السيرفر[span_2](end_span)
net_io_1 = psutil.net_io_counters()
time.sleep(0.2)
net_io_2 = psutil.net_io_counters()
download_speed = (net_io_2.bytes_recv - net_io_1.bytes_recv) * 5 / (1024 * 1024) # MB/s
upload_speed = (net_io_2.bytes_sent - net_io_1.bytes_sent) * 5 / (1024 * 1024) # MB/s
return {
"ram": ram_usage,
"cpu": cpu_usage,
"down": f"{download_speed:.2f} MB/s",
"up": f"{upload_speed:.2f} MB/s"
}
except:
return {"ram": "N/A", "cpu": "N/A", "down": "0 MB/s", "up": "0 MB/s"}
@app.route('/')
def index():
return render_template_string("""
AJIJ Terminal V3 - Pro
RAM: --
CPU: --
Net Down: 0 MB/s
Net Up: 0 MB/s
💻 AJIJ SUPER TERMINAL v3.0.1
Connecting to 16GB RAM Cluster... [OK]
[span_3](start_span)
Environment: Python 3.10-slim / Debian[span_3](end_span)
Type 'help' or any Linux command to start.
$
""")
@app.route('/stats')
def stats():
return jsonify(get_system_stats())
@app.route('/exec', methods=['POST'])
def execute():
data = request.json
command = data.get('command')
# حماية من الأوامر الفارغة
if not command.strip():
return jsonify({'output': ''})
try:
# [span_4](start_span)تنفيذ الأمر في بيئة السيرفر مع دمج الأخطاء والمخرجات[span_4](end_span)
process = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, text=True)
output, _ = process.communicate(timeout=60) # مهلة دقيقة للأوامر الطويلة
except subprocess.TimeoutExpired:
output = "Error: Command timed out (60s limit)."
except Exception as e:
output = str(e)
if not output: output = "(Done / No Output)"
return jsonify({'output': output})
if __name__ == "__main__":
# [span_5](start_span)تشغيل السيرفر على البورت الخاص بـ Hugging Face[span_5](end_span)
app.run(host='0.0.0.0', port=7860)