You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
هذا المستند يطابق المواصفات الوظيفية التي طلبتها (Emulator Core، أدوات OSS، البصمة، API، Dashboard، DB، ميزات متقدمة، أمان، نشر) مع ما هو منفَّذ فعلياً في المستودع، وما هو مخطط للتوسعة. استخدمه كخريطة طريق للتطوير.
التقنية الحالية: Backend FastAPI (Python) + PostgreSQL + React (Vite) + Tailwind + Docker Compose + JWT.
لم يُبنَ النظام على Node/Express؛ يمكن إضافة خدمة جانبية لاحقاً دون كسر الواجهات.
إضافة GenymotionBackend + محوّل منفذ/سيريال مشابه لـ AVD + إعدادات في config.py
تثبيت APK
منفَّذ
POST /api/devices/{id}/install — يقبل .apk فقط حالياً
XAPK (أرشيف + OBB)
غير منفَّذ
مسار مقترح: فك XAPK مؤقتاً → adb install-multiple + دفع OBB إلى /sdcard/Android/obb/...
Multi-instance
منفَّذ
عدة صفوف devices؛ منافذ ADB/كونسول مخصصة لكل جهاز
تحكم CLI
جزئي
المحاكي يُدار عبر emulator CLI؛ أوامر كونسول المحاكي (telnet) مستخدمة داخل البصمة لـ GPS (FingerprintSpoofer + telnetlib)؛ لا يوجد بعد REST موحّد لـ network status / battery
2) Open Source Control Tools (دمج عبر طبقة خدمة)
الأداة
الحالة
التكامل
ADB
منفَّذ
core/tools/adb.py — تثبيت، shell، لقطات، logcat
Scrcpy
جزئي
core/tools/scrcpy.py موجود؛ لا توجد نقاط REST بعد لبدء/إيقاف الجلسة من الـ API (الواجهة تعتمد غالباً لقطات / WebSocket)
Frida
جزئي
core/tools/frida_tool.py — غير موصول بـ main.py / routes؛ يحتاج api/routes/frida.py + صلاحيات
Timeout: إن لم يصل CONFIG خلال 22 ثانية → تراجع تلقائي إلى JPEG
تنظيف كامل عند unmount أو تغيير التبويب
تعيين إحداثيات اللمس (Touch Mapping)
الـ canvas يُعرض بحجم CSS مختلف عن دقة الإطار (720×1280 افتراضي). useDeviceH264 يكشف frameWidth/frameHeight؛ دالة clientToDeviceSurface() في DeviceScreen.tsx
تحوّل إحداثيات المؤشر عبر نسبة frameW/canvasClientW × frameH/canvasClientH
لضمان الضغط على البكسل الصحيح في جميع حالات التكبير/ملء الشاشة.
8) Security
المتطلب
الحالة
حماية API (JWT)
منفَّذ
أدوار
جزئي (admin / user فقط)
Rate limiting
غير في backend/main.py (يوجد مثال منفصل تحت جذر api/ مع slowapi — ليس مسار التشغيل الرئيسي)
عزل محاكي (Sandbox)
تشغيلي (مجلدات INSTANCES_DIR لكل جهاز)؛ ليست حاويات Docker لكل جهاز
تنبيه: قد يوجد في جذر المستودع مجلد api/ أو main.py إضافي (CLI/نسخة قديمة)؛ مسار التشغيل الموصى به للمزرعة هو backend/ (uvicorn main:app من داخل backend).
11) أوامر التشغيل السريعة
# قاعدة البيانات (محلي أو Docker)# ثم الباكند (Python 3.11 أو 3.12)cd backend
python3.12 -m venv .venv &&source .venv/bin/activate
pip install -r requirements.txt -r requirements-dev.txt
export DATABASE_URL=postgresql+asyncpg://emulator:emulator@localhost:5432/emulatordb
uvicorn main:app --reload --host 0.0.0.0 --port 8000
# الفرونتندcd frontend && npm install && npm run dev
# Docker كامل
docker compose -f docker/docker-compose.yml up --build
Android SDK + محاكي:scripts/install_android_sdk.sh (يتطلب Java 17+). ضبط المسار:export ANDROID_HOME=... وAVD_SDK_PATH / اكتشاف تلقائي في config.py.
Rate limiting — slowapi أو middleware في backend/main.py + إعدادات من config.
توسيع RBAC — أدوار مثل operator / viewer وصلاحيات على مستوى الجهاز.
Network throttling — طبقة EmulatorConsole موحّدة.
Genymotion — backend اختياري عبر EMULATOR_BACKEND=genymotion.
WebRTC اختياري — بجانب scrcpy للعرض من المتصفح دون عميل سطح مكتب.
14) الترخيص والأدوات
حزم Android SDK / emulator / system images موزَّعة من Google (شروط Android SDK). بقية الأدوات (ADB, scrcpy, mitmproxy, Frida) مفتوحة المصدر؛ راجع ترخيص كل أداة عند التوزيع التجاري.
آخر تحديث: يُحدَّث هذا الملف مع كل دفعة توسعات رئيسية.