feat: Replace server domain with server directory domain
All checks were successful
Build site / Rust CI (push) Successful in 25s

Signed-off-by: Awiteb <a@4rs.nl>
This commit is contained in:
Awiteb 2024-10-13 21:12:17 +00:00
parent 296ff50075
commit bb1ff03ac2
Signed by: awiteb
GPG key ID: 3F6B55640AA6682F

View file

@ -44,45 +44,58 @@ add_toc = true
يتم وضع العنوان العام في رأس (Header) الطلب (Request) بأسم `X-OTMP-PUBLIC` ويجب
ان يكون نص [base58] صحيح مكون من 33 بايت (264 بت).
## أسم الخادم {#server-name}
## عنوان دليل الخوادم {#servers-dir-domain}
يكون أسم الخادم عنوان إلكتروني مثل `example.com` ولا يجب أن يكون الخادم نفسه، هو
أسم فقط يشير إلى الخادم، على سبيل المثال، أسم الخادم `example.com` ولكن الخادم
هو `otmp.example.com:443`، هكذا سوف يتم الإشارة لى مستخدمين هذا الخادم <snap
dir='ltr'><code>@becZJsZZqGR7qBG8t1Pm4uy62jDTzJsabxnkARhr2syo/example.com</code></snap>
ويمكن إختصاره بالواجهات الرسومية بأخذ أول ثلاث أحرف و أخر ثلاث أحرف ووضع `..`
بينهم، ليصبح بهذا الشكل <snap
dir='ltr'><code>@bec..syo/example.com</code></snap>.
عنوان دليل الخوادم هو نطاق عادي على سبيل المثال `example.com` يحتوي على المسار التالي <span dir='ltr'><code>/.well-known/oxidetalis/servers</code></span> ومحتوى هذا المسار ملف json يوجد به خادم او اكثر يستخدمونها مستخدمين هذا الدليل.
### كيفية الإشارة {#referencing}
الخادم الذي في هذا الدليل يكون اسمه خادماً إذا كان يقبل التواصل الداخلي، إذا كان يقبل التواصل الخارجي فقط حتى بين مستخدمينه، يصبح اسمه مُرحل.
يشير أسم الخادم إلى الخادم عبر المسار التالي <span
dir='ltr'><code>/.well-known/oxidetalis/server</code></span>
يمكن أن يكون هذا الدليل تابع لمستضيف معين ويضع به خوادمه أو عناوين لنفس الخادم (مثل عنوانه في شبكة Tor) أو يكون تابع لفرد ويضع به الخوادم التي يستخدمها. يجب لكل خادم في الدليل أن يصدر شهادة SSL/TLS من جهة موثوقة
لأن الإتصال سيكون HTTPS (يستثنى من هذا خدمات Tor).
سوف يتم إرسال طلب GET إلى هذا المسار و يجب أن يُرجع هذا المسار نص بتنسيق
`application/json` يحتوي على المفتاح `otmp_server` ولذي يحتوي على مكان إستضافة
الخادم والمنفذ الذي يستمع إليه، سوف يتم إرسال الطلب ببروتوكول https و يجب أن
يدعم الخادم https و يجب ان تكون الشهادة موقعة من جهة موثوقة وليست موقعة
ذاتياً[^1]
### مهمة هذا الدليل {#why-dir}
### مفتاح `otmp_server`
في الإتصال الخارجي يحتاج المُرسل معرفة خادم المُستقبل لإرسال الرسالة إليه، عبر هذا الدليل سيعرف المُرسل الخوادم التي يوجد بها المُستقبل.
محتوى هذا المفتاح يجب أن يكون نص، يتكون هذا النص من جزئين يفصل بينهم نقطتان
رأسيتان، الجزء الأول هو مكان الإستضافة و الجزء الثاني هو المنفذ على سبيل المثال
`"example.com:443"` و `"otmp.example.com:7294"` و `"93.184.215.14:7294"` و <snap
dir='ltr'><code>"[2606:2800:021f:cb07:6820:80da:af6b:8b2c]:7294"</code></snap>.
### الإشارة إلى مستخدمين الدليل {#mention-dir-users}
### مثال
للإشارة إلى المستخدمين في أي وسيلة نقل يكون بالطريقة التالية <snap dir='ltr'><code>@becZJsZZqGR7qBG8t1Pm4uy62jDTzJsabxnkARhr2syo/example.com</code></snap> علامة `@` متبوعة بعنوان المستخدم العام متبوعاً بخط مائل
وبعد ذلك عنوان الدليل. يمكن لمطوري عملاء OxideTalis إختصار إسم عنوان المستخدم بالشكل التالي عند الإشارة إليه <snap dir='ltr'><code>@bec..syo/example.com</code></snap> بأخذ ثلاث محرفات من البداية ومن النهاية و الفصل بينهم بنقطتين `..`.
### خوادم الدليل {#servers-dir}
يوجد نوعين من خوادم الدليل، النوع الأول الخوادم التي على شبكة الإنترنت العامة ولتي يتم جلب عنوانها من النطاق الخاص بها مثل `example.com`، سوف يتم التواصل مع هذه الخوادم بإتصال https و wss لذلك يجب أن يكون لديها شهادة SSL/TLS ويجب ان تكون
الشهادة موقعة من جهة موثوقة وليست موقعة ذاتياً[^1]، يتم الإشارة إلى هذا الخوادم بالنطاق الذي تستخدمه و المنفذ، على سبيل المثال `otmp.example.com:443` يتم الفصل بين النطاق الذي سوف يتم جلب العنوان منه و المنفذ بنقطتان رأسيتان.
النوع الثاني وهو خدمات شبكة Tor المخفية، سوف يتم الإتصال بها بـhttp و ws، يتم الإشارة إليها بوضع عنوانها في شبكة Tor فقط بدون المنفذ، على سبيل المثال <snap dir='ltr'><code>duckduckgogg42xjoc72x3sjasowoarfbgcmvfimaftt6twagswzczad.onion</code></snap>
يتم وضع خوادم الدليل في المفتاح `otmp_servers` وهي مصفوفة نصية يوجد بها الخوادم
#### أمثلة {#dir-example}
في المثال التالي مُخرج الدليل `example.com` في المسار <span dir='ltr'><code>/.well-known/oxidetalis/servers</code></span> ويتضح به انه لايوجد إلا خادم واحد
<div dir="ltr">
```json
{ "otmp_server": "otmp.example.com:443" }
{ "otmp_servers": ["otmp.example.com:443"] }
```
</div>
> يجب على الخوادم عدم تخزين اسماء خوادم المرسلين، ويتم تحديده في الطلب المرسل من
في المثال التالي مُخرج الدليل `example.net` في المسار <span dir='ltr'><code>/.well-known/oxidetalis/servers</code></span> ويتضح به انه يوجد خادمين، واحد في شبكة الإنترنت العالمية و الأخر في Tor
<div dir="ltr">
```json
{
"otmp_servers": [
"otmp.example.net:7294",
"duckduckgogg42xjoc72x3sjasowoarfbgcmvfimaftt6twagswzczad.onion"
]
}
```
</div>
> يجب على الخوادم عدم تخزين دلائل المرسلين، ويتم تحديدها في الطلب المرسل من
> قبلهم فقط، حيث أن المفتاح العام هو المعرف المشترك بين جميع الخوادم.
## مفتاح التشفير المشترك {#shared-encryption-key}
@ -112,10 +125,7 @@ dir="ltr"><code>LKGKeuV3SRu1n3fez4SdboM3FT48vbBxHai9MbuWxb3</code></span>
يتم جلب مفتاح الخادم العام من المسار <span
dir='ltr'><code>/api/info</code></span> سوف يتم إرسال طلب GET إلى هذا المسار و
يجب أن يُرجع هذا المسار نص بتنسيق `application/json` يحتوي على المفتاح
`public_key` ولذي قيمته نص المفتاح العام الخاص بالخادم بترميز [base58]، سوف يتم
إرسال الطلب ببروتوكول https و يجب أن يدعم الخادم https و يجب ان تكون الشهادة
موقعة من جهة موثوقة وليست موقعة ذاتياً[^1]
يجب أن يُرجع هذا المسار نص بتنسيق `application/json` يحتوي على المفتاح `public_key` ولذي قيمته نص المفتاح العام الخاص بالخادم بترميز [base58].
> تم توضيح المفتاح العام هنا ([العناوين العامة](#public-addresses))