모듈
Chute는 재사용 및 공유 가능한 규칙, 스크립트, MitM 호스트, DNS 매핑으로 구성을 확장하기 위해 외부 모듈 파일(.sgmodule)을 지원합니다. 모듈은 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 |
모듈 이름 (UI에 표시) |
#!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
모듈의
hostname값에 포함된%APPEND%/%INSERT%지시문은 제거되고 호스트명은 MitM 목록에 병합됩니다. 호스트명 앞에 붙은-제외 접두사는 유지됩니다.
모듈 생명주기
- 모듈은 기본 구성이 파싱된 후 로드됩니다.
- 모듈의 규칙, 스크립트, MitM 호스트 및 DNS 호스트가 런타임 관리자에 추가됩니다.
- 모듈이 제거되거나 비활성화되면 해당 모듈의 모든 규칙, 스크립트 및 호스트가 등록 해제됩니다.
- 원격 모듈 콘텐츠는 터널이 시작될 때 가져오며, 구성 다시 로드 시
[Module]URL 목록이 변경된 경우에만 다시 가져옵니다.
이 페이지는 영어판의 번역본입니다. 내용이 다를 경우 영어판이 우선합니다.