Module
Chute prend en charge des fichiers de module externes (.sgmodule) permettant d'étendre la configuration avec des règles, des scripts, des hôtes MitM et des mappages DNS réutilisables et partageables. Les modules suivent le format de module Surge.
Les modules sont déclarés dans la section [Module] :
[Module]
https://example.com/my-module.sgmodule
/path/to/local-module.sgmodule
~/.chute/custom-module.sgmodule
Les URL sont récupérées à distance ; les chemins commençant par / ou ~ sont chargés depuis le système de fichiers local.
Structure d'un fichier de module
Un fichier .sgmodule suit la même syntaxe que le fichier de configuration principal. Sections prises en charge :
| Section | Rôle |
|---|---|
[MITM] |
Ajoute des noms d'hôte à la liste de déchiffrement MITM |
[Script] |
Enregistre des scripts JavaScript |
[URL Rewrite] |
Ajoute des règles de réécriture d'URL |
[Header Rewrite] |
Ajoute des règles de réécriture d'en-tête |
[Rule] |
Ajoute des règles de routage |
[Host] |
Ajoute des mappages DNS hôte-vers-IP |
Pour des raisons de compatibilité, une section
[DNS]dans un module est acceptée comme alias de[Host].
Métadonnées de module
Les modules peuvent inclure des directives de métadonnées (lignes commençant par #!) :
#!name = My Custom Module
#!desc = Blocks ads and trackers for example.com
#!system = ios,macos
| Directive | Description |
|---|---|
#!name |
Nom du module (affiché dans l'interface) |
#!desc |
Description du module |
#!system |
Filtre de plateforme : ios, macos (séparés par des virgules) |
#!arguments |
Déclare des variables de module avec des valeurs par défaut (par ex. #!arguments = var1:default1, var2:default2) |
#!system est une métadonnée informative affichée dans l'éditeur de modules ; elle ne conditionne pas actuellement le chargement — le module est appliqué sur toutes les plateformes.
#!arguments peut apparaître plusieurs fois ; les déclarations les plus récentes remplacent les précédentes. Les espaces réservés {{{variable}}} présents dans le corps du module sont remplacés par la valeur résolue : une valeur fournie par l'application l'emporte, puis la valeur par défaut de #!arguments, puis la chaîne vide.
Exemple de module
#!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
Les directives
%APPEND%/%INSERT%présentes dans la valeurhostnamed'un module sont supprimées et les noms d'hôte fusionnés dans la liste MitM ; un préfixe d'exclusion-en tête d'un nom d'hôte est conservé.
Cycle de vie d'un module
- Les modules sont chargés après l'analyse de la configuration principale.
- Les règles, scripts, hôtes MitM et hôtes DNS issus des modules sont ajoutés aux gestionnaires d'exécution.
- Lorsqu'un module est supprimé ou désactivé, toutes ses règles, ses scripts et ses hôtes sont désenregistrés.
- Le contenu des modules distants est récupéré au démarrage du tunnel, et retéléchargé uniquement lorsque la liste d'URL
[Module]change lors d'un rechargement de configuration.