Modul
Chute unterstützt externe Moduldateien (.sgmodule), um die Konfiguration mit wiederverwendbaren, gemeinsam nutzbaren Regeln, Skripten, MitM-Hosts und DNS-Zuordnungen zu erweitern. Module folgen dem Surge-Modulformat.
Module werden im Abschnitt [Module] definiert:
[Module]
https://example.com/my-module.sgmodule
/path/to/local-module.sgmodule
~/.chute/custom-module.sgmodule
URLs werden remote abgerufen; Pfade, die mit / oder ~ beginnen, werden aus dem lokalen Dateisystem geladen.
Moduldateistruktur
Eine .sgmodule-Datei folgt derselben Syntax wie die Hauptkonfigurationsdatei. Unterstützte Abschnitte:
| Abschnitt | Zweck |
|---|---|
[MITM] |
Hostnamen zur MITM-Entschlüsselungsliste hinzufügen |
[Script] |
JavaScript-Skripte registrieren |
[URL Rewrite] |
URL-Umschreibungsregeln hinzufügen |
[Header Rewrite] |
Header-Umschreibungsregeln hinzufügen |
[Rule] |
Routing-Regeln hinzufügen |
[Host] |
DNS-Host-zu-IP-Zuordnungen hinzufügen |
Aus Kompatibilitätsgründen wird ein
[DNS]-Abschnitt in einem Modul als Alias für[Host]akzeptiert.
Modulmetadaten
Module können Metadaten-Direktiven enthalten (Zeilen, die mit #! beginnen):
#!name = My Custom Module
#!desc = Blocks ads and trackers for example.com
#!system = ios,macos
| Direktive | Beschreibung |
|---|---|
#!name |
Modulname (in der UI angezeigt) |
#!desc |
Modulbeschreibung |
#!system |
Plattformfilter: ios, macos (durch Kommas getrennt) |
#!arguments |
Deklariert Modulvariablen mit Standardwerten (z.B. #!arguments = var1:default1, var2:default2) |
#!system ist informative Metadaten, die im Moduleditor angezeigt werden; es steuert das Laden derzeit nicht — das Modul wird auf allen Plattformen angewendet.
#!arguments darf mehrfach vorkommen; spätere Deklarationen überschreiben frühere. {{{variable}}}-Platzhalter im Modulinhalt werden durch den aufgelösten Wert ersetzt: Ein von der App bereitgestellter Override hat Vorrang, danach der Standardwert aus #!arguments, danach die leere Zeichenkette.
Modulbeispiel
#!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%-Direktiven innerhalb deshostname-Werts eines Moduls werden entfernt und die Hostnamen in die MitM-Liste zusammengeführt; ein vorangestelltes-als Ausschluss-Präfix an einem Hostnamen bleibt erhalten.
Modullebenszyklus
- Module werden geladen, nachdem die Hauptkonfiguration geparst wurde.
- Regeln, Skripte, MitM-Hosts und DNS-Hosts aus Modulen werden zu den Laufzeit-Managern hinzugefügt.
- Wenn ein Modul entfernt oder deaktiviert wird, werden alle seine Regeln, Skripte und Hosts abgemeldet.
- Remote-Modulinhalte werden beim Start des Tunnels abgerufen und nur dann erneut abgerufen, wenn sich die
[Module]-URL-Liste bei einem Konfigurations-Reload ändert.
Diese Seite ist eine Übersetzung der englischen Version. Bei Abweichungen ist die englische Version maßgeblich.