Network Options

NetworkOptions.ca_rootsFunction
ca_roots() :: Union{Nothing, String}

تخبر دالة ca_roots() المتصل أين، إذا كان هناك مكان، يمكن العثور على ملف أو دليل لجذور سلطات الشهادات المشفرة بتنسيق PEM. بشكل افتراضي، على الأنظمة مثل ويندوز وmacOS حيث تعرف محركات TLS المدمجة كيفية التحقق من المضيفين باستخدام آلية التحقق من الشهادات المدمجة في النظام، ستعيد هذه الدالة nothing. في أنظمة UNIX الكلاسيكية (باستثناء macOS)، يتم عادةً تخزين الشهادات الجذرية في ملف في /etc: سيتم البحث في الأماكن الشائعة للنظام الحالي من UNIX وإذا كان أحد هذه المسارات موجودًا، فسيتم إرجاعه؛ إذا لم يكن أي من هذه المسارات الشائعة للشهادات الجذرية موجودًا، فسيتم إرجاع المسار إلى مجموعة الشهادات الجذرية المجمعة مع جوليا.

يمكن تجاوز القيمة الافتراضية التي تعيدها ca_roots() عن طريق تعيين متغيرات البيئة JULIA_SSL_CA_ROOTS_PATH أو SSL_CERT_DIR أو SSL_CERT_FILE، وفي هذه الحالة ستعيد هذه الدالة دائمًا قيمة أول من هذه المتغيرات التي تم تعيينها (سواء كان المسار موجودًا أم لا). إذا تم تعيين JULIA_SSL_CA_ROOTS_PATH إلى سلسلة فارغة، فسيتم تجاهل المتغيرات الأخرى (كما لو كانت غير محددة)؛ إذا تم تعيين المتغيرات الأخرى إلى سلسلة فارغة، فإنها تتصرف كما لو لم يتم تعيينها.

source
NetworkOptions.ca_roots_pathFunction
ca_roots_path() :: String

دالة ca_roots_path() مشابهة لدالة ca_roots() باستثناء أنها دائمًا تعيد مسارًا إلى ملف أو دليل يحتوي على جذور سلطات الشهادات المشفرة بتنسيق PEM. عند استدعائها على نظام مثل ويندوز أو macOS، حيث لا يتم تخزين شهادات الجذر النظامية في نظام الملفات، ستعيد حاليًا المسار إلى مجموعة شهادات الجذر المجمعة مع جوليا. (في المستقبل، قد تستخرج هذه الدالة بدلاً من ذلك شهادات الجذر من النظام وتخزنها في ملف سيتم إرجاع مساره.)

إذا كان من الممكن تكوين مكتبة تستخدم TLS لاستخدام شهادات النظام، فإن ذلك يُفضل عمومًا: أي أنه من الأفضل استخدام ca_roots() التي تعيد nothing للإشارة إلى أنه يجب استخدام شهادات النظام. يجب استخدام دالة ca_roots_path() فقط عند تكوين المكتبات التي تتطلب مسارًا إلى ملف أو دليل لشهادات الجذر.

يمكن تجاوز القيمة الافتراضية التي تعيدها ca_roots_path() عن طريق تعيين متغيرات البيئة JULIA_SSL_CA_ROOTS_PATH أو SSL_CERT_DIR أو SSL_CERT_FILE، وفي هذه الحالة ستعيد هذه الدالة دائمًا قيمة أول من هذه المتغيرات التي تم تعيينها (سواء كان المسار موجودًا أم لا). إذا تم تعيين JULIA_SSL_CA_ROOTS_PATH إلى سلسلة فارغة، فسيتم تجاهل المتغيرات الأخرى (كما لو كانت غير محددة)؛ إذا تم تعيين المتغيرات الأخرى إلى سلسلة فارغة، فإنها تتصرف كما لو لم يتم تعيينها.

source
NetworkOptions.ssh_dirFunction
ssh_dir() :: String

تُرجع دالة ssh_dir() موقع الدليل الذي يحتفظ فيه برنامج ssh بملفات التكوين أو يبحث عنها. بشكل افتراضي، يكون هذا ~/.ssh ولكن يمكن تجاوز ذلك عن طريق تعيين متغير البيئة SSH_DIR.

source
NetworkOptions.ssh_key_passFunction
ssh_key_pass() :: String

تُرجع دالة ssh_key_pass() قيمة متغير البيئة SSH_KEY_PASS إذا تم تعيينه أو nothing إذا لم يتم تعيينه. في المستقبل، قد تتمكن هذه الدالة من العثور على كلمة مرور بوسائل أخرى، مثل التخزين الآمن للنظام، لذا يجب على الحزم التي تحتاج إلى كلمة مرور لفك تشفير مفتاح SSH الخاص استخدام واجهة برمجة التطبيقات هذه بدلاً من التحقق مباشرة من متغير البيئة حتى تتمكن من اكتساب هذه القدرات تلقائيًا عند إضافتها.

source
NetworkOptions.ssh_key_nameFunction
ssh_key_name() :: String

تُرجع دالة ssh_key_name() الاسم الأساسي لملفات المفاتيح التي يجب أن يستخدمها SSH عند إنشاء اتصال. عادةً لا يوجد سبب لاستدعاء هذه الدالة مباشرةً ويجب على المكتبات عمومًا استخدام دالتي ssh_key_path و ssh_pub_key_path للحصول على المسارات الكاملة. إذا تم تعيين متغير البيئة SSH_KEY_NAME، فإن هذه الدالة تُرجع ذلك؛ وإلا فإنها تُرجع id_rsa بشكل افتراضي.

source
NetworkOptions.ssh_key_pathFunction
ssh_key_path() :: String

تُرجع دالة ssh_key_path() مسار ملف مفتاح SSH الخاص الذي يجب استخدامه لاتصالات SSH. إذا تم تعيين متغير البيئة SSH_KEY_PATH، فستُرجع تلك القيمة. خلاف ذلك، فإنها تعود افتراضيًا إلى

joinpath(ssh_dir(), ssh_key_name())

تعتمد هذه القيمة الافتراضية بدورها على متغيرات البيئة SSH_DIR و SSH_KEY_NAME.

source
NetworkOptions.ssh_pub_key_pathFunction
ssh_pub_key_path() :: String

تُرجع دالة ssh_pub_key_path() مسار ملف مفتاح SSH العام الذي يجب استخدامه لاتصالات SSH. إذا تم تعيين متغير البيئة SSH_PUB_KEY_PATH، فستُرجع تلك القيمة. إذا لم يتم تعيين ذلك ولكن تم تعيين SSH_KEY_PATH، فستُرجع ذلك المسار مع إضافة اللاحقة .pub. إذا لم يتم تعيين أي منهما، فستعود القيمة الافتراضية

joinpath(ssh_dir(), ssh_key_name() * ".pub")

تعتمد هذه القيمة الافتراضية بدورها على متغيرات البيئة SSH_DIR و SSH_KEY_NAME.

source
NetworkOptions.ssh_known_hosts_filesFunction
ssh_known_hosts_files() :: Vector{String}

تُرجع دالة ssh_known_hosts_files() متجهًا من مسارات ملفات المضيفين المعروفين SSH التي يجب استخدامها عند إنشاء هويات الخوادم البعيدة لعمليات SSH. بشكل افتراضي، تُرجع هذه الدالة

[joinpath(ssh_dir(), "known_hosts"), bundled_known_hosts]

حيث أن bundled_known_hosts هو مسار نسخة من ملف المضيفين المعروفين المدمج مع هذه الحزمة (الذي يحتوي على مفاتيح المضيفين المعروفين لـ github.com و gitlab.com). إذا تم تعيين متغير البيئة SSH_KNOWN_HOSTS_FILES، فإن قيمته تُقسم إلى مسارات على حرف : (أو على ; في نظام ويندوز) ويتم إرجاع هذا المتجه من المسارات بدلاً من ذلك. إذا كان أي مكون من هذا المتجه فارغًا، فإنه يتم توسيعه إلى مسارات المضيفين المعروفين الافتراضية.

يجب على الحزم التي تستخدم ssh_known_hosts_files() أن تبحث عن إدخالات مطابقة من خلال مقارنة اسم المضيف وأنواع المفاتيح، مع اعتبار الإدخال الأول في أي من الملفات الذي يتطابق هو الهوية النهائية للمضيف. إذا لم يتمكن المتصل من مقارنة نوع المفتاح (على سبيل المثال، لأنه تم تجزئته) فيجب عليه تقريب الخوارزمية أعلاه من خلال البحث عن جميع الإدخالات المطابقة لمضيف في كل ملف: إذا كان لدى ملف أي إدخالات لمضيف، فيجب أن يتطابق أحدها؛ يجب على المتصل أن يستمر في البحث عن ملفات المضيفين المعروفين الأخرى فقط إذا لم يكن هناك أي إدخالات للمضيف المعني في ملف سابق.

source
NetworkOptions.ssh_known_hosts_fileFunction
ssh_known_hosts_file() :: String

تُرجع دالة ssh_known_hosts_file() مسارًا واحدًا لملف معروفة المضيفين SSH الذي يجب استخدامه عند إنشاء هويات الخوادم البعيدة لاتصالات SSH. تُرجع أول مسار تم إرجاعه بواسطة ssh_known_hosts_files والذي يوجد فعليًا. يجب على المتصلين الذين يمكنهم النظر في أكثر من ملف معروفة المضيفين استخدام ssh_known_hosts_files بدلاً من ذلك والبحث عن تطابقات المضيفين في جميع الملفات التي تم إرجاعها كما هو موضح في وثائق تلك الدالة.

source
NetworkOptions.verify_hostFunction
verify_host(url::AbstractString, [transport::AbstractString]) :: Bool

تخبر دالة verify_host المتصل ما إذا كان يجب التحقق من هوية المضيف عند التواصل عبر وسائل النقل الآمنة مثل TLS أو SSH. قد يكون وسيط url:

  1. عنوان URL صحيح يبدأ بـ proto://
  2. اسم مضيف عاري على طراز ssh أو اسم مضيف مسبوق بـ user@
  3. مضيف على طراز scp كما هو مذكور أعلاه، يتبعه : وموقع المسار

في كل حالة، يتم استخراج جزء اسم المضيف ويتم اتخاذ القرار بشأن ما إذا كان يجب التحقق أم لا بناءً فقط على اسم المضيف، وليس أي شيء آخر عن عنوان URL المدخل. على وجه الخصوص، لا يهم بروتوكول عنوان URL (المزيد أدناه).

تشير وسيطة transport إلى نوع النقل الذي يتعلق به الاستعلام. القيم المعروفة حاليًا هي SSL/ssl (مرادف لـ TLS/tls) و SSH/ssh. إذا تم حذف النقل، سيعيد الاستعلام true فقط إذا كان يجب عدم التحقق من اسم المضيف بغض النظر عن النقل.

يتم مطابقة اسم المضيف مع أنماط المضيف في متغيرات البيئة ذات الصلة اعتمادًا على ما إذا كانت transport قد تم توفيرها وما هي قيمتها:

  • JULIA_NO_VERIFY_HOSTS — المضيفون الذين يجب عدم التحقق منهم لأي نقل
  • JULIA_SSL_NO_VERIFY_HOSTS — المضيفون الذين يجب عدم التحقق منهم لـ SSL/TLS
  • JULIA_SSH_NO_VERIFY_HOSTS — المضيفون الذين يجب عدم التحقق منهم لـ SSH
  • JULIA_ALWAYS_VERIFY_HOSTS — المضيفون الذين يجب التحقق منهم دائمًا

قيم كل من هذه المتغيرات هي قائمة مفصولة بفواصل من أنماط أسماء المضيفين مع الصيغة التالية — يتم تقسيم كل نمط على . إلى أجزاء ويجب أن يكون كل جزء واحدًا من:

  1. مكون اسم نطاق حرفي يتكون من حرف أو أكثر من ASCII، رقم، شرطة، أو خط سفلية (تقنيًا ليس جزءًا من اسم مضيف قانوني، ولكن يتم استخدامه أحيانًا). يتطابق مكون اسم النطاق الحرفي مع نفسه فقط.
  2. **، الذي يتطابق مع صفر أو أكثر من مكونات اسم النطاق.
  3. *، الذي يتطابق مع أي مكون واحد من اسم النطاق.

عند مطابقة اسم المضيف مع قائمة الأنماط في أحد هذه المتغيرات، يتم تقسيم اسم المضيف على . إلى مكونات ويتم مطابقة تلك السلسلة من الكلمات مع النمط: يتطابق نمط حرفي تمامًا مع مكون اسم مضيف واحد بتلك القيمة؛ يتطابق نمط * تمامًا مع مكون اسم مضيف واحد بأي قيمة؛ يتطابق نمط ** مع أي عدد من مكونات اسم المضيف. على سبيل المثال:

  • ** يتطابق مع أي اسم مضيف
  • **.org يتطابق مع أي اسم مضيف في النطاق الأعلى .org
  • example.com يتطابق فقط مع اسم المضيف الدقيق example.com
  • *.example.com يتطابق مع api.example.com ولكن ليس مع example.com أو v1.api.example.com
  • **.example.com يتطابق مع أي نطاق تحت example.com، بما في ذلك example.com نفسه، و api.example.com و v1.api.example.com
source