Модули
Chute поддерживает внешние файлы модулей (.sgmodule) для расширения конфигурации с помощью переиспользуемых, общих правил, скриптов, хостов MitM и сопоставлений DNS. Модули следуют формату модулей Surge.
Модули определяются в разделе [Module]:
[Module]
https://example.com/my-module.sgmodule
/path/to/local-module.sgmodule
~/.chute/custom-module.sgmodule
URL загружаются удаленно; пути, начинающиеся с / или ~, загружаются из локальной файловой системы.
Структура файла модуля
Файл .sgmodule следует тому же синтаксису, что и основной файл конфигурации. Поддерживаемые разделы:
| Раздел | Назначение |
|---|---|
[MITM] |
Добавление имен хостов в список расшифровки MITM |
[Script] |
Регистрация скриптов JavaScript |
[URL Rewrite] |
Добавление правил перезаписи URL |
[Header Rewrite] |
Добавление правил перезаписи заголовков |
[Rule] |
Добавление правил маршрутизации |
[Host] |
Добавление сопоставлений DNS хост-IP |
Для совместимости раздел
[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 — это информационные метаданные, отображаемые в редакторе модулей; в настоящее время они не ограничивают загрузку — модуль применяется на всех платформах.
#!arguments может встречаться несколько раз; более поздние объявления переопределяют более ранние. Плейсхолдеры {{{variable}}} в теле модуля заменяются вычисленным значением: сначала используется переопределение, заданное приложением, затем значение по умолчанию из #!arguments, затем пустая строка.
Пример модуля
#!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; префикс исключения-в начале имени хоста сохраняется.
Жизненный цикл модуля
- Модули загружаются после разбора основной конфигурации.
- Правила, скрипты, хосты MitM и хосты DNS из модулей добавляются в менеджеры времени выполнения.
- Когда модуль удален или отключен, все его правила, скрипты и хосты отменяются.
- Содержимое удаленных модулей загружается при запуске туннеля и повторно загружается только при изменении списка URL в
[Module]при перезагрузке конфигурации.
Эта страница — перевод английской версии. При расхождениях приоритет имеет английская версия.