الوحدات
يدعم Chute ملفات الوحدات الخارجية (.sgmodule) لتوسيع الإعدادات بقواعد، سكريبتات، مضيفي MitM، وتعيينات DNS قابلة لإعادة الاستخدام والمشاركة. تتبع الوحدات تنسيق وحدات Surge.
تعرف الوحدات في القسم [Module]:
[Module]
https://example.com/my-module.sgmodule
/Users/me/.chute/custom-module.sgmodule
~/.chute/another-module.sgmodule
وحدات http:// و https:// تُجلب عن بعد؛ أما الملف المحلي فيُكتب مساراً مجرّداً — /path/to/local-module.sgmodule أو ~/.chute/local-module.sgmodule — وهو أيضاً الشكل الذي تُحفظ به الإعدادات. ويعمل رابط بصيغة file:/// أيضاً. أما ملف الوحدة المحلي الذي يتعذّر قراءته فيُتخطّى مع تحذير في السجل.
هيكل ملف الوحدة
ملف .sgmodule يتبع نفس صيغة ملف الإعدادات الرئيسي. الأقسام المدعومة:
| القسم | الغرض |
|---|---|
[MITM] |
إضافة أسماء مضيفين إلى قائمة مضيفي MitM |
[Script] |
تسجيل سكريبتات JavaScript |
[URL Rewrite] |
إضافة قواعد إعادة كتابة الرابط |
[Header Rewrite] |
إضافة قواعد إعادة كتابة الترويسات |
[Rule] |
إضافة قواعد التوجيه |
[Host] |
إضافة تعيينات DNS من المضيف إلى IP |
[Map Local] |
إضافة قواعد الاستجابة الوهمية |
[Body Rewrite] |
إضافة قواعد إعادة كتابة المحتوى |
[General] |
توسيع بعض الخيارات من نوع القائمة (انظر أدناه) |
للتوافق، يُقبل القسم
[DNS]داخل الوحدة كاسم بديل لـ[Host].
بيانات الوحدة الوصفية
يمكن للوحدات تضمين توجيهات بيانات وصفية (أسطر تبدأ بـ #!):
#!name = My Custom Module
#!desc = Blocks ads and trackers for example.com
#!system = ios,macos
| التوجيه | الوصف |
|---|---|
#!name |
اسم الوحدة (يعرض في واجهة المستخدم) |
#!desc |
وصف الوحدة |
#!system |
مرشح المنصة: ios, macos (مفصولة بفواصل) |
#!arguments |
يعلن متغيرات الوحدة بقيم افتراضية (مثل #!arguments = var1:default1, var2:default2) |
#!system_version |
الحد الأدنى لإصدار النظام في Surge؛ يُحتفظ به كمعلومة ولا يُفرض |
#!REQUIREMENT |
متطلب الإصدار في Surge (ويُكتب أيضاً //!REQUIREMENT)؛ يُسجَّل ويُتجاهل |
#!system بيانات وصفية إعلامية تُعرض في محرر الوحدات؛ ولا يقيّد التحميل حالياً — تُطبق الوحدة على جميع المنصات.
يمكن أن يظهر #!arguments عدة مرات؛ والإعلانات اللاحقة تلغي السابقة. وتُستبدل العناصر النائبة {{{variable}}} في متن الوحدة بالقيمة الافتراضية التي يعلنها #!arguments للمتغير، أو بالسلسلة الفارغة إن لم يعلن قيمة. ولا يوفّر أي تطبيق حالياً طريقة لتجاوز وسائط الوحدة، فالقيم الافتراضية المعلنة هي التي تسري دائماً.
السطر الذي يسبقه #!IOS-ONLY أو #!MACOS-ONLY أو #!TVOS-ONLY لا يُطبَّق إلا على تلك المنصة ويُحذف في غيرها، أينما ظهر — في الوحدة وفي ملف الإعدادات نفسه:
[Rule]
#!IOS-ONLY DOMAIN-SUFFIX,mobile-ads.example,REJECT
#!MACOS-ONLY PROCESS-NAME,Updater,REJECT
عندما يحفظ التطبيق الإعدادات تبقى البادئة كما كُتبت: السطر المستبعد على هذه المنصة لا يُحذف من الملف ولا يتحول إلى تعليق، فيبقى الملف نفسه صالحاً على المنصات الأخرى.
مثال وحدة
#!name = Ad Block Module
#!desc = Block common ad domains
#!system = ios,macos
[Rule]
DOMAIN-SUFFIX,doubleclick.net,REJECT
DOMAIN-SUFFIX,googlesyndication.com,REJECT
DOMAIN-SUFFIX,googleadservices.com,REJECT
[Host]
localhost = 127.0.0.1
[MITM]
hostname = *.google-analytics.com
[URL Rewrite]
^https://example\.com/old-api https://example.com/new-api 302
تُزال التوجيهات
%APPEND%/%INSERT%الموجودة داخل قيمةhostnameفي الوحدة وتُدمج أسماء المضيفين في قائمة MitM؛ أما بادئة الاستبعاد-في بداية اسم المضيف فتبقى محفوظة.
يمكن لقسم [General] في الوحدة أن يوسّع خمسة خيارات من نوع القائمة في الإعدادات الجارية — skip-proxy و tun-excluded-routes و tun-included-routes و dns-server و always-real-ip — باستخدام %APPEND% (الإضافة في النهاية) أو %INSERT% (الإضافة في البداية). ويجري الدمج للخمسة جميعاً؛ أما المنصات التي تقرأ أنفاقُها قائمتَي المسارات فمذكورة في المسارات المضمنة والمسارات المستبعدة. تُدمج القيم عند تطبيق الوحدة وتُسحب عند إزالتها أو تعطيلها. والقيمة التي لا تسبقها أي من هاتين التوجيهتين تُضاف في النهاية أيضاً مع تنبيه، لأن استبدال القائمة كاملة غير مدعوم؛ أما أي مفتاح آخر في [General] فيُتجاهل مع تنبيه.
[General]
skip-proxy = %APPEND% *.corp.example, 10.20.0.0/16
دورة حياة الوحدة
- تحمل الوحدات بعد تحليل الإعدادات الرئيسية.
- تضاف القواعد، السكريبتات، مضيفو MitM، ومضيفو DNS من الوحدات إلى مديري وقت التشغيل.
- تُنفَّذ أسطر
[Rule]في الوحدات بعد قواعد Tailscale التلقائية وقبل قواعد الإعدادات نفسها، بترتيب تحميل الوحدات — كما في Surge، فلا تحجب قاعدةٌ سابقة في الإعدادات قاعدةَ REJECT في وحدة حجب الإعلانات. - يُعاد تطبيق دمج
[Map Local]و[Body Rewrite]و[General]القادم من الوحدات بعد إعادة تحميل الإعدادات. - عند إزالة وحدة أو تعطيلها، يتم إلغاء تسجيل جميع قواعدها، سكريبتاتها، ومضيفيها.
- يُجلب محتوى الوحدات البعيدة عند بدء النفق، ولا يعاد جلبه إلا عند تغيّر قائمة روابط
[Module]عند إعادة تحميل الإعدادات.
هذه الصفحة ترجمة للنسخة الإنجليزية. في حال وجود اختلاف، يُعتمد على النسخة الإنجليزية.
ملاحظة: التطبيق لا يدعم اللغة العربية حاليًا.