واجهة رسومية Electron متعددة المنصات لإطار عمل Sliver C2، توفر لوحات تحكم للجلسات والمنارات، وتوليد الحمولات، والمستمعين، والغنائم، وإدارة النشر السحابي.
واجهة Sliver الرسومية هي تطبيق سطح مكتب متعدد المنصات مبني على Electron لـ Sliver. وهي تجمع بين اتصالات الواجهة الخلفية، وعروض الحالة المباشرة، ومساحات عمل مخصصة، ووحدة تحكم Sliver أصلية في واجهة React مبنية باستخدام HeroUI وHeroUI Pro و Font Awesome.
لا تنفذ الواجهة الرسومية كل أمر أو خيار في المنبع. تستخدم اتصالات المشغّل mTLS؛ يتم التعرف على تكوينات مشغّل WireGuard ولكن لا يمكنها الاتصال. راجع تقرير تكافؤ المشغّل للتغطية المتتبعة ومستندات الميزات أدناه للحدود المحددة.
يتم تسجيل الإصدارات المدعومة والتبعيات المقفلة في package.json وpackage-lock.json. يستخدم كود التطبيق TypeScript الصارم؛ وتستخدم مساعدات البناء وحدات Node.js ES.
npm ci --strict-allow-scripts
npx heroui-pro login
npx heroui-pro install --yes
npm run dev
خطوات تسجيل الدخول/التثبيت الخاصة بـ HeroUI مطلوبة لإعداد محطة العمل الأولي؛ يمكن
تخطيها عندما يكون HEROUI_AUTH_TOKEN مُكوَّنًا بالفعل للتثبيت.
أبقِ بيانات الاعتماد خارج الملفات المتتبعة.
يقوم npm run dev ببناء التطبيق الثابت وتشغيله على
sliver://app/index.html، باستخدام سياسة أمان المحتوى الخاصة بالإنتاج.
أعد تشغيل الأمر بعد تغييرات المصدر؛ لا تستخدم سير العمل هذا HMR.
يتم تثبيت عميل TypeScript من حزمة npm المثبتة sliver-script.
لا حاجة إلى نسخة عميل مجاورة. لا يتطلب تطوير التطبيق العادي نسخة مصدرية من Sliver؛
أما بناء وحدة التحكم الأصلية فيتطلب ذلك.
جذر عميل Sliver الافتراضي هو ~/.sliver-client؛ ويمكن لـ SLIVER_CLIENT_ROOT_DIR
اختيار جذر آخر. يتم حفظ تفضيلات التطبيق، بما في ذلك خيارات رسم Overview البياني، في
gui/application-settings.json؛ ويتم حفظ تكبير مساحة العمل في
gui/workspace-zoom.json، وتفضيلات محرر النصوص في
gui/text-editor-settings.json تحت ذلك الجذر. تكتشف الواجهة الرسومية تكوينات
المشغّل الموجودة في configs/ وتحدّث
محدد الفتح عند حفظ تكوين صالح هناك. وتحفظ التكوينات المختارة
عبر Import كمراجع ملفات خاصة في gui/operator-configs.json.
لا يقوم Import وForget بنسخ أو حذف التكوينات المصدرية.
يتم تكوين ألوان الطرفية المتوافقة مع Ghostty في Settings → Terminal وحفظها
في gui/ghostty/config. تنتمي السمات المخصصة إلى gui/ghostty/themes/؛
ويتم اكتشاف سمات Ghostty الأصلية المثبتة تلقائيًا. راجع
مظهر الطرفية وسمات Ghostty لمشاركة التكوين، ومحرر Monaco،
ودعم الشفافية على المنصات، وحدود وقت التشغيل.
| الأمر | الغرض |
|---|---|
npm run typecheck | فحص مشاريع TypeScript الخاصة بالعملية الرئيسية/preload والعرض. |
npm test | تشغيل اختبارات الوحدة والمكونات عبر Vitest. |
npm run test:watch | تشغيل Vitest تفاعليًا. |
npm run test:e2e:electron | بناء Electron واختباره عبر العرض وpreload وIPC. |
npm run protocol:check | التحقق من العميل المثبت وخط الأساس في المنبع ومصنوعات التكافؤ. |
npm run build | فحص الأنواع وبناء مخرجات التطبيق في dist/. |
npm run build:console | بناء وحدة تحكم Sliver الأصلية المثبتة. |
npm run package | إنشاء تطبيق غير محزوم تحت release/. |
npm run dist | إنشاء مثبتات المنصات تحت release/. |
npm run test:e2e:packaged | التحقق من تطبيق غير محزوم موجود واختباره مقابل fixture محلي. |
توجد اختبارات الوحدة والمكونات بجانب ملفات المصدر؛ وتوجد سيناريوهات Electron في
src/e2e/. اختبارات الخادم الفعلي منفصلة، وهي فحوصات اختيارية تتطلب بنية تحتية
قابلة للتخلص منها ومُكوَّنة. لا يثبت اختبار fixture التوافق مع خادم مباشر أو
حزمة مثبتة.
يستخدم فحص البروتوكول Go ويجلب المصدر المثبت من المنبع إلى دليل مؤقت. راجع توثيق البروتوكول لفحوصات المصدر واستخدام خط أساس محلي محدد صراحةً.
تتطلب عمليات بناء وحدة التحكم والتوزيع Go 1.27.1 ونسخة Sliver نظيفة
عند الالتزام والشجرة المسجلين في
مصدر وحدة تحكم Sliver. ضعها في
sliver/ أو عيّن SLIVER_SOURCE_DIR. يتحقق بناء وحدة التحكم من المصدر؛
ولا يجلب أو يعدّل تلك النسخة.
يعطّل البناء التبديل التلقائي لسلسلة أدوات Go. ضع ملف Go الثنائي المطلوب
على PATH أو عيّن SLIVER_GO_BINARY إلى مساره المطلق. تتطلب عمليات بناء وحدة تحكم
macOS الشاملة نظام macOS و/usr/bin/lipo.
يقوم npm run package وnpm run dist بتحضير وقت التشغيل الأصلي ووحدة التحكم
وجرد التراخيص قبل الحزم. يتم تجاهل المخرجات المُنشأة تحت dist/ وrelease/
وnative/sliver-console/ و.e2e-dist/ بواسطة Git.
مصفوفة الحزم في CI هي:
| المنصة | الحزم | التحديثات التلقائية |
|---|---|---|
| macOS universal | DMG وZIP | يقوم التطبيق المثبت بتنزيل تحديث ZIP. |
| Windows x64 | مثبت NSIS وEXE محمول | عمليات تثبيت NSIS فقط؛ تُحدَّث البنيات المحمولة يدويًا. |
| Linux x64 | AppImage وDEB | AppImage فقط؛ تُحدَّث حزم DEB يدويًا. |
الحزم المدعومة مُكوَّنة للتحقق من GitHub Releases، وتنزيل التحديثات في الخلفية، والتثبيت عند Restart to update أو عند الخروج العادي من التطبيق. لا تقبل البنيات المستقرة تحديثات الإصدارات الأولية. لا يتم تضمين أي رمز GitHub في التطبيق.
يستخدم الإصدار الأولي v0.0.1 شهادات توقيع كود ذاتية التوقيع دائمة.
يعرض Check for Updates على macOS حوار الثقة بالشهادة الأصلية قبل
أول فحص للتحديثات؛ ويجب أولًا السماح للتطبيق بالتشغيل عبر
Gatekeeper. تتطلب عمليات تثبيت Windows أن تكون شهادة التوقيع العامة موثوقة
على الجهاز الهدف. راجع التثبيت والتحديثات ذاتية التوقيع
لتمهيد الثقة، والبصمات العامة، وسياسة مفاتيح الإصدار.
أهداف البناء وشهادة الحد الأدنى لوقت التشغيل منفصلة. راجع ADR دعم المنصات لمتطلبات وقت التشغيل، وحالة الشهادة، وسياسة التوقيع/التحديث.
تشغّل سير عمل البناء فحوصات البروتوكول
والتكافؤ، وElectron E2E، ومهام الحزم الأصلية. تحتاج مهام التطبيق إلى
سر الإجراءات HEROUI_AUTH_TOKEN؛ وتشغّل طلبات السحب من الشوكات العامة فقط
مهمة البروتوكول/التكافؤ غير السرية. تختبر المهام الأصلية التطبيقات غير المحزومة مقابل
fixture mTLS على loopback.
يبدأ النشر المستقر بوسم vX.Y.Z موقّع ومُعلَّق عند التزام
origin/main الحالي. يرسل سير عمل وسم خالٍ من بيانات الاعتماد سير عمل الإصدار
على main؛ وتتوفر أسرار توقيع الإصدار فقط من بيئة GitHub
المخصصة لـ main فقط. يتطلب النشر مستودعًا عامًا مع
تفعيل الإصدارات غير القابلة للتغيير، وتوقيعات macOS وWindows صالحة تطابق
الشهادات العامة المثبتة، وأصولًا موثقة قبل النشر عبر
إصدار مسودة. يتخطى ملف التعريف ذاتي التوقيع هذا صراحةً توثيق Apple؛
ويحتفظ ملف تعريف Developer ID المنفصل بمتطلبات توقيع Apple الخاصة به.
تنتج بنيات طلبات السحب وmain والبنيات المُرسلة يدويًا غير الخاصة بالإصدار
مصنوعات CI. راجع سير العمل لمدخلات التوقيع وبوابات النشر، و
سير عمل المُحدِّث الخاص لاختبار
تكامل التحديث المنفصل.