> ## Documentation Index
> Fetch the complete documentation index at: https://docs.plato.ae/llms.txt
> Use this file to discover all available pages before exploring further.

# HTTPS وشبكة

> العلبة الوكيل العكسي وإشارات شبكة PeerJS.

# HTTPS وشبكة

يمكن لبرنامج تشغيل الطابعة بالكمبيوتر كشف HTTPS من خلال إشارات Caddy وPeerJS من خلال `/mesh`.

## شروط HTTPS

يبدأ HTTPS فقط عندما تكون كل هذه الأمور صحيحة:

* `features.httpsEnabled` هو `true`.
* `caddy.enabled` هو `true`.
* منصة وقت التشغيل هي Windows.
* الشهادات موجودة في `assets/certs`.
* يمكن تركيب العلبة أو إعادة استخدامها.

إذا فشل إعداد HTTPS، يقوم برنامج التشغيل بتسجيل الخطأ ويستمر مع HTTP.

## ملفات الشهادة

الملفات المطلوبة:

```txt theme={null}
assets/certs/ca.crt
assets/certs/server.crt
assets/certs/server.key
```

يقوم برنامج التشغيل بنسخها إلى مجلد عمل Caddy:

```txt theme={null}
assets/caddy/ca.crt
assets/caddy/server.crt
assets/caddy/server.key
```

يمكن تنزيل شهادة CA من:

```txt theme={null}
http://<driver-ip>:8080/ca.crt
```

## تثبيت العلبة

يستخدم إعداد العلبة هذا الترتيب:

1. أعد استخدام `assets/caddy/bin/caddy.exe` إذا كان مثبتًا بالفعل مع `.installed`.
2. انسخ `caddy.exe` المجمعة من المسارات المحلية المعروفة.
3. قم بتنزيل Caddy من إصدار GitHub URL.

إصدار Caddy الذي تم تكوينه افتراضيًا هو `2.6.4`.

## تم إنشاء ملف Caddyfile

يكتب السائق ملف Caddyfile مثل:

```txt theme={null}
{
  auto_https disable_redirects
}

plato-printer.local {
  reverse_proxy localhost:8080

  handle /mesh/* {
    reverse_proxy localhost:8080 {
      header_up Connection {http.request.header.Connection}
      header_up Upgrade {http.request.header.Upgrade}
    }
  }

  tls "assets/caddy/server.crt" "assets/caddy/server.key"
}
```

إذا لم يكن `caddy.httpsPort` `443`، فإن عنوان الموقع يتضمن المنفذ.

## وقت تشغيل العلبة

يعمل Caddy كعملية فرعية مع:

* تم ضبط `XDG_DATA_HOME` على `assets/caddy/data`
* تم ضبط `XDG_CONFIG_HOME` على `assets/caddy/config`
* تم ضبط دليل العمل على `assets/caddy`

إذا خرجت العلبة بشكل غير متوقع، فسيقوم السائق بإعادة المحاولة حتى 5 مرات مع تأخير `2000ms`.

## شبكة الإشارات

عندما يكون `features.meshEnabled` صحيحًا، يقوم برنامج التشغيل بتثبيت PeerJS على:

```txt theme={null}
ws://<driver-host>:8080/mesh
wss://plato-printer.local/mesh
```

عوائد `GET /mesh-status`:

* ما إذا تم تمكين الشبكة
* مسار شبكي
* ميناء
* معرفات الأقران المتصلة
* عدد الأقران

الشبكة تعمل على الإشارة فقط. لا تزال مهام الطباعة تستخدم نقاط النهاية HTTP.

## مشاكل HTTPS الشائعة

| أعراض                                      | السبب المحتمل                        | يصلح                                                   |
| ------------------------------------------ | ------------------------------------ | ------------------------------------------------------ |
| يحظر المتصفح برنامج تشغيل HTTPS URL        | شهادة CA غير موثوقة                  | قم بتثبيت `ca.crt` على جهاز POS.                       |
| لم يتم حل `https://plato-printer.local`    | DNS/المضيفون مفقودون                 | أضف إدخال DNS المحلي أو المضيفين إلى IP الخاص بالسائق. |
| المنفذ 443 غير متاح                        | خدمة أخرى تستخدمها                   | أوقف الخدمة الأخرى أو قم بتغيير `caddy.httpsPort`.     |
| تم تخطي HTTPS على نظام التشغيل macOS/Linux | الكود مخصص لنظام التشغيل Windows فقط | استخدم HTTP في التطوير أو اختبر Caddy بشكل منفصل.      |
| خطأ في بدء تشغيل ويندوز 7                  | نسخة العلبة ليست `2.6.4`             | اضبط `caddy.version` مرة أخرى على `2.6.4`.             |
