الطرفية عبر الويب (Web Terminal)
يتميز Vapor بواجهة طرفية مدمجة وآمنة عبر الويب، مما يتيح للمسؤولين تنفيذ أوامر الغلاف (shell) مباشرة على نظام تشغيل المضيف دون الحاجة إلى وصول عبر عميل SSH خارج النطاق.
الوصول إلى الطرفية
- انتقل إلى Host Management > Terminal في وحدة تحكم الويب.
- سيتم إنشاء اتصال WebSocket تلقائيًا بنقطة نهاية غلاف المضيف.
- بشكل افتراضي، يتم تنفيذ جلسة الغلاف كمستخدم
rootأو تحت سياق مستخدم النظام لشيطان Vapor الشغال.
بروتوكول WebSocket ودورة حياة الجلسة
بالنسبة لعملاء API المخصصين، أو تكاملات محاكي الطرفية، أو الأدوات المئتمتة، يعرض Vapor الخلفية البرمجية للطرفية عبر WebSockets:
- عنوان URL لـ WebSocket:
ws://<host>:8080/ws/terminal(أو المنفذ8081بناءً على تهيئة الشبكة). - بروتوكول الاتصال: جميع الرسائل المتبادلة عبر اتصال WebSocket هي إطارات JSON مهيكلة.
الخطوة 1: المصادقة
عند إنشاء الاتصال، يجب على العميل إرسال إطار مصادقة يحتوي على رمز JWT أو رمز API صالح:
{
"type": "auth",
"payload": {
"token": "<auth_token>"
}
}الخطوة 2: الاشتراك في القناة
بعد المصادقة الناجحة، يجب على العميل الاشتراك في قناة الطرفية، وتحديد الأبعاد الأولية للشبكة ومسار الغلاف:
{
"type": "subscribe",
"payload": {
"channel": "terminal",
"cols": 80,
"rows": 24,
"shell": "/bin/bash"
}
}الخطوة 3: المدخلات والمخرجات التفاعلية
- مدخلات العميل: إرسال المدخلات (بما في ذلك ضغطات المفاتيح، والرموز التحكمية، وفواصل الأسطر) باستخدام إطارات نوع المدخلات:json
{ "type": "input", "data": "ls -la\n" } - مخرجات الخادم: يقوم الخادم بتدفق إطارات مخرجات الطرفية الخام التي تحتوي على تدفقات stdout/stderr.
الخطوة 4: تغيير حجم النافذة
يحدث Vapor ديناميكيًا أبعاد الطرفية الزائفة (PTY) على المضيف عندما يتغير حجم نافذة العميل. يرسل العميل إطار إعادة حجم يحتوي على الأعداد المحدثة للأسطر والأعمدة:
{
"type": "resize",
"payload": {
"rows": 40,
"cols": 120
}
}الخطوة 5: إنهاء الجلسة
لإغلاق الجلسة بشكل نظيف، يمكن للعميل إرسال أمر خروج داخل إطار المدخلات:
{
"type": "input",
"data": "exit\n"
}أو بدلاً من ذلك، يؤدي قطع اتصال مأخذ WebSocket تلقائيًا إلى إنهاء عملية PTY للمضيف المرتبطة بها.
CAUTION
تمنح الطرفية عبر الويب وصول root إداري غير مقيد لنظام ملفات المضيف ونظام التشغيل. لا تنطبق أغلِفة أمان API القياسية وسياسات الموارد الخاصة بـ Vapor على أوامر الغلاف المنفذة داخل هذه الطرفية. استخدمها بحذر شديد.