@singbox-iac/cli 0.1.17 → 0.1.19
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README-en.md +117 -20
- package/README.md +54 -2
- package/dist/cli/commands/apply.js +3 -0
- package/dist/cli/commands/apply.js.map +1 -1
- package/dist/cli/commands/build.js +15 -1
- package/dist/cli/commands/build.js.map +1 -1
- package/dist/cli/commands/diagnose.js +21 -5
- package/dist/cli/commands/diagnose.js.map +1 -1
- package/dist/cli/commands/proxifier.js +13 -4
- package/dist/cli/commands/proxifier.js.map +1 -1
- package/dist/cli/commands/reload.js +14 -1
- package/dist/cli/commands/reload.js.map +1 -1
- package/dist/cli/commands/restart.js +52 -8
- package/dist/cli/commands/restart.js.map +1 -1
- package/dist/cli/commands/rollback.js +1 -0
- package/dist/cli/commands/rollback.js.map +1 -1
- package/dist/cli/commands/setup.js +2 -1
- package/dist/cli/commands/setup.js.map +1 -1
- package/dist/cli/commands/start.js +92 -11
- package/dist/cli/commands/start.js.map +1 -1
- package/dist/cli/commands/status.js +12 -6
- package/dist/cli/commands/status.js.map +1 -1
- package/dist/cli/commands/stop.js +24 -8
- package/dist/cli/commands/stop.js.map +1 -1
- package/dist/cli/commands/verify.js +20 -2
- package/dist/cli/commands/verify.js.map +1 -1
- package/dist/config/load-config.js +24 -1
- package/dist/config/load-config.js.map +1 -1
- package/dist/config/schema.d.ts +173 -29
- package/dist/config/schema.js +63 -1
- package/dist/config/schema.js.map +1 -1
- package/dist/domain/dns-plan.d.ts +11 -1
- package/dist/domain/intent.d.ts +2 -2
- package/dist/domain/verification-plan.d.ts +3 -3
- package/dist/modules/authoring/index.js +22 -2
- package/dist/modules/authoring/index.js.map +1 -1
- package/dist/modules/bundle-registry/index.d.ts +8 -2
- package/dist/modules/bundle-registry/index.js +54 -13
- package/dist/modules/bundle-registry/index.js.map +1 -1
- package/dist/modules/compiler/index.js +79 -12
- package/dist/modules/compiler/index.js.map +1 -1
- package/dist/modules/desktop-runtime/index.d.ts +50 -0
- package/dist/modules/desktop-runtime/index.js +236 -16
- package/dist/modules/desktop-runtime/index.js.map +1 -1
- package/dist/modules/diagnostics/index.js +93 -0
- package/dist/modules/diagnostics/index.js.map +1 -1
- package/dist/modules/dns-plan/index.js +73 -12
- package/dist/modules/dns-plan/index.js.map +1 -1
- package/dist/modules/doctor/index.js +41 -0
- package/dist/modules/doctor/index.js.map +1 -1
- package/dist/modules/intent/index.js +2 -2
- package/dist/modules/intent/index.js.map +1 -1
- package/dist/modules/layered-authoring/index.js +1 -1
- package/dist/modules/layered-authoring/index.js.map +1 -1
- package/dist/modules/manager/index.d.ts +3 -1
- package/dist/modules/manager/index.js +37 -2
- package/dist/modules/manager/index.js.map +1 -1
- package/dist/modules/natural-language/index.d.ts +3 -2
- package/dist/modules/natural-language/index.js +83 -35
- package/dist/modules/natural-language/index.js.map +1 -1
- package/dist/modules/proxifier/index.js +3 -4
- package/dist/modules/proxifier/index.js.map +1 -1
- package/dist/modules/runtime-mode/index.d.ts +1 -1
- package/dist/modules/runtime-mode/index.js +0 -5
- package/dist/modules/runtime-mode/index.js.map +1 -1
- package/dist/modules/runtime-watchdog/index.d.ts +10 -0
- package/dist/modules/runtime-watchdog/index.js +33 -0
- package/dist/modules/runtime-watchdog/index.js.map +1 -1
- package/dist/modules/status/index.d.ts +13 -0
- package/dist/modules/status/index.js +106 -9
- package/dist/modules/status/index.js.map +1 -1
- package/dist/modules/update/index.js +3 -1
- package/dist/modules/update/index.js.map +1 -1
- package/dist/modules/verification/index.d.ts +27 -5
- package/dist/modules/verification/index.js +542 -20
- package/dist/modules/verification/index.js.map +1 -1
- package/dist/modules/verification-plan/index.js +16 -6
- package/dist/modules/verification-plan/index.js.map +1 -1
- package/docs/natural-language-authoring.md +6 -0
- package/docs/runtime-modes.md +23 -7
- package/docs/runtime-on-macos.md +54 -9
- package/docs/sing-box-config-primer.md +10 -1
- package/package.json +1 -1
|
@@ -1,23 +1,39 @@
|
|
|
1
1
|
import path from "node:path";
|
|
2
|
-
import { defaultRuntimeLaunchAgentLabel, removeDesktopRuntimeAgent, } from "../../modules/desktop-runtime/index.js";
|
|
2
|
+
import { assertDesktopRuntimePrivileges, defaultRuntimeLaunchAgentLabel, defaultRuntimeLaunchDaemonLabel, removeDesktopRuntimeAgent, resolveDesktopRuntimeServiceKind, } from "../../modules/desktop-runtime/index.js";
|
|
3
3
|
import { defaultRuntimeWatchdogLaunchAgentLabel, removeRuntimeWatchdogAgent, } from "../../modules/runtime-watchdog/index.js";
|
|
4
4
|
import { resolveBuilderConfig } from "../command-helpers.js";
|
|
5
5
|
export function registerStopCommand(program) {
|
|
6
6
|
program
|
|
7
7
|
.command("stop")
|
|
8
|
-
.description("Stop the dedicated desktop sing-box runtime
|
|
8
|
+
.description("Stop the dedicated desktop sing-box runtime launchd service.")
|
|
9
9
|
.option("-c, --config <path>", "path to builder config YAML")
|
|
10
|
-
.option("--label <label>", "runtime
|
|
11
|
-
.option("--launch-agents-dir <path>", "override
|
|
12
|
-
.option("--no-unload", "remove the
|
|
10
|
+
.option("--label <label>", "runtime launchd label")
|
|
11
|
+
.option("--launch-agents-dir <path>", "override launchd plist directory")
|
|
12
|
+
.option("--no-unload", "remove the runtime plist without calling launchctl bootout")
|
|
13
13
|
.action(async (options) => {
|
|
14
14
|
const builderConfig = await resolveBuilderConfig(options);
|
|
15
|
+
const profile = builderConfig?.runtime.desktop.profile ?? "system-proxy";
|
|
16
|
+
const serviceKind = resolveDesktopRuntimeServiceKind(profile);
|
|
17
|
+
if (profile === "tun") {
|
|
18
|
+
assertDesktopRuntimePrivileges({
|
|
19
|
+
serviceKind,
|
|
20
|
+
action: "remove",
|
|
21
|
+
...(options.config ? { configPath: resolvePath(options.config) } : {}),
|
|
22
|
+
...(options.launchAgentsDir
|
|
23
|
+
? { launchAgentsDir: resolvePath(options.launchAgentsDir) }
|
|
24
|
+
: {}),
|
|
25
|
+
unload: options.unload !== false,
|
|
26
|
+
});
|
|
27
|
+
}
|
|
15
28
|
const watchdogLabel = builderConfig?.runtime.desktop.watchdog.launchAgentLabel ??
|
|
16
29
|
defaultRuntimeWatchdogLaunchAgentLabel;
|
|
17
30
|
const plistPath = await removeDesktopRuntimeAgent({
|
|
31
|
+
serviceKind,
|
|
18
32
|
label: options.label ??
|
|
19
|
-
|
|
20
|
-
|
|
33
|
+
(profile === "tun"
|
|
34
|
+
? (builderConfig?.runtime.desktop.tun.launchDaemonLabel ??
|
|
35
|
+
defaultRuntimeLaunchDaemonLabel)
|
|
36
|
+
: (builderConfig?.runtime.desktop.launchAgentLabel ?? defaultRuntimeLaunchAgentLabel)),
|
|
21
37
|
...(options.launchAgentsDir
|
|
22
38
|
? { launchAgentsDir: resolvePath(options.launchAgentsDir) }
|
|
23
39
|
: {}),
|
|
@@ -34,7 +50,7 @@ export function registerStopCommand(program) {
|
|
|
34
50
|
})
|
|
35
51
|
: undefined;
|
|
36
52
|
process.stdout.write(`${[
|
|
37
|
-
`Stopped desktop runtime LaunchAgent: ${plistPath}`,
|
|
53
|
+
`Stopped desktop runtime ${serviceKind === "launch-daemon" ? "LaunchDaemon" : "LaunchAgent"}: ${plistPath}`,
|
|
38
54
|
...(watchdogPlistPath
|
|
39
55
|
? [`Stopped runtime watchdog LaunchAgent: ${watchdogPlistPath}`]
|
|
40
56
|
: []),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stop.js","sourceRoot":"","sources":["../../../src/cli/commands/stop.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAI7B,OAAO,EACL,8BAA8B,EAC9B,yBAAyB,
|
|
1
|
+
{"version":3,"file":"stop.js","sourceRoot":"","sources":["../../../src/cli/commands/stop.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAI7B,OAAO,EACL,8BAA8B,EAC9B,8BAA8B,EAC9B,+BAA+B,EAC/B,yBAAyB,EACzB,gCAAgC,GACjC,MAAM,wCAAwC,CAAC;AAChD,OAAO,EACL,sCAAsC,EACtC,0BAA0B,GAC3B,MAAM,yCAAyC,CAAC;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAE7D,MAAM,UAAU,mBAAmB,CAAC,OAAgB;IAClD,OAAO;SACJ,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,8DAA8D,CAAC;SAC3E,MAAM,CAAC,qBAAqB,EAAE,6BAA6B,CAAC;SAC5D,MAAM,CAAC,iBAAiB,EAAE,uBAAuB,CAAC;SAClD,MAAM,CAAC,4BAA4B,EAAE,kCAAkC,CAAC;SACxE,MAAM,CAAC,aAAa,EAAE,4DAA4D,CAAC;SACnF,MAAM,CAAC,KAAK,EAAE,OAA2B,EAAE,EAAE;QAC5C,MAAM,aAAa,GAAG,MAAM,oBAAoB,CAAC,OAAO,CAAC,CAAC;QAC1D,MAAM,OAAO,GAAG,aAAa,EAAE,OAAO,CAAC,OAAO,CAAC,OAAO,IAAI,cAAc,CAAC;QACzE,MAAM,WAAW,GAAG,gCAAgC,CAAC,OAAO,CAAC,CAAC;QAC9D,IAAI,OAAO,KAAK,KAAK,EAAE,CAAC;YACtB,8BAA8B,CAAC;gBAC7B,WAAW;gBACX,MAAM,EAAE,QAAQ;gBAChB,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACtE,GAAG,CAAC,OAAO,CAAC,eAAe;oBACzB,CAAC,CAAC,EAAE,eAAe,EAAE,WAAW,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE;oBAC3D,CAAC,CAAC,EAAE,CAAC;gBACP,MAAM,EAAE,OAAO,CAAC,MAAM,KAAK,KAAK;aACjC,CAAC,CAAC;QACL,CAAC;QACD,MAAM,aAAa,GACjB,aAAa,EAAE,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,gBAAgB;YACxD,sCAAsC,CAAC;QACzC,MAAM,SAAS,GAAG,MAAM,yBAAyB,CAAC;YAChD,WAAW;YACX,KAAK,EACH,OAAO,CAAC,KAAK;gBACb,CAAC,OAAO,KAAK,KAAK;oBAChB,CAAC,CAAC,CAAC,aAAa,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB;wBACrD,+BAA+B,CAAC;oBAClC,CAAC,CAAC,CAAC,aAAa,EAAE,OAAO,CAAC,OAAO,CAAC,gBAAgB,IAAI,8BAA8B,CAAC,CAAC;YAC1F,GAAG,CAAC,OAAO,CAAC,eAAe;gBACzB,CAAC,CAAC,EAAE,eAAe,EAAE,WAAW,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE;gBAC3D,CAAC,CAAC,EAAE,CAAC;YACP,MAAM,EAAE,OAAO,CAAC,MAAM,KAAK,KAAK;SACjC,CAAC,CAAC;QACH,MAAM,iBAAiB,GACrB,aAAa,EAAE,OAAO,CAAC,OAAO,CAAC,OAAO,KAAK,cAAc;YACzD,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO;YAC5C,CAAC,CAAC,MAAM,0BAA0B,CAAC;gBAC/B,KAAK,EAAE,aAAa;gBACpB,GAAG,CAAC,OAAO,CAAC,eAAe;oBACzB,CAAC,CAAC,EAAE,eAAe,EAAE,WAAW,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE;oBAC3D,CAAC,CAAC,EAAE,CAAC;gBACP,MAAM,EAAE,OAAO,CAAC,MAAM,KAAK,KAAK;aACjC,CAAC;YACJ,CAAC,CAAC,SAAS,CAAC;QAEhB,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,GAAG;YACD,2BAA2B,WAAW,KAAK,eAAe,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,aAAa,KAAK,SAAS,EAAE;YAC3G,GAAG,CAAC,iBAAiB;gBACnB,CAAC,CAAC,CAAC,yCAAyC,iBAAiB,EAAE,CAAC;gBAChE,CAAC,CAAC,EAAE,CAAC;SACR,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CACjB,CAAC;IACJ,CAAC,CAAC,CAAC;AACP,CAAC;AASD,SAAS,WAAW,CAAC,QAAgB;IACnC,OAAO,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,CAAC,CAAC;AACrF,CAAC"}
|
|
@@ -3,7 +3,7 @@ import { readFile } from "node:fs/promises";
|
|
|
3
3
|
import { buildConfigArtifact, resolveEffectiveIntent } from "../../modules/build/index.js";
|
|
4
4
|
import { buildDnsPlan } from "../../modules/dns-plan/index.js";
|
|
5
5
|
import { buildVerificationPlan } from "../../modules/verification-plan/index.js";
|
|
6
|
-
import { assertVerificationReportPassed, verifyAppPlan, verifyConfigRoutes, verifyDnsPlan, verifyEgressPlan, verifyProtocolPlan, } from "../../modules/verification/index.js";
|
|
6
|
+
import { assertNativeProcessE2EPassed, assertVerificationReportPassed, verifyAppPlan, verifyConfigRoutes, verifyDnsPlan, verifyEgressPlan, verifyNativeProcessE2E, verifyProtocolPlan, } from "../../modules/verification/index.js";
|
|
7
7
|
import { resolveBuilderConfig } from "../command-helpers.js";
|
|
8
8
|
export function registerVerifyCommand(program) {
|
|
9
9
|
program
|
|
@@ -77,7 +77,22 @@ export function registerVerifyCommand(program) {
|
|
|
77
77
|
if (mode === "all" || mode === "app") {
|
|
78
78
|
lines.push("");
|
|
79
79
|
lines.push("App checks:");
|
|
80
|
-
lines.push(...verifyAppPlan(verificationPlan, rawConfig).map((check) => `- ${check.passed ? "PASS" : "FAIL"} ${check.app}: ${check.
|
|
80
|
+
lines.push(...verifyAppPlan(verificationPlan, rawConfig).map((check) => `- ${check.passed ? "PASS" : "FAIL"} ${check.app}: ${check.expectedCaptureBackend} -> ${check.expectedOutboundGroup}`));
|
|
81
|
+
const nativeProcessE2E = await verifyNativeProcessE2E({
|
|
82
|
+
configPath,
|
|
83
|
+
plan: verificationPlan,
|
|
84
|
+
...(options.singBoxBin
|
|
85
|
+
? { singBoxBinary: options.singBoxBin }
|
|
86
|
+
: builderConfig.runtime.dependencies.singBoxBinary
|
|
87
|
+
? { singBoxBinary: builderConfig.runtime.dependencies.singBoxBinary }
|
|
88
|
+
: {}),
|
|
89
|
+
});
|
|
90
|
+
if (nativeProcessE2E.length > 0) {
|
|
91
|
+
lines.push("");
|
|
92
|
+
lines.push("Native process e2e:");
|
|
93
|
+
lines.push(...formatNativeProcessE2EChecks(nativeProcessE2E));
|
|
94
|
+
assertNativeProcessE2EPassed(nativeProcessE2E);
|
|
95
|
+
}
|
|
81
96
|
}
|
|
82
97
|
if (mode === "all" || mode === "protocol") {
|
|
83
98
|
lines.push("");
|
|
@@ -110,4 +125,7 @@ function formatProtocolChecks(checks) {
|
|
|
110
125
|
function formatEgressChecks(checks) {
|
|
111
126
|
return checks.map((check) => `- ${check.passed ? "PASS" : "FAIL"} ${check.expectedOutboundGroup}: ${check.ip ?? "unknown-ip"} ${check.country ?? ""} ${check.asn ?? ""}`.trim());
|
|
112
127
|
}
|
|
128
|
+
function formatNativeProcessE2EChecks(checks) {
|
|
129
|
+
return checks.map((check) => `- ${check.status} ${check.app}${check.processName ? ` [${check.processName}]` : ""}: ${check.expectedOutboundGroup}`);
|
|
130
|
+
}
|
|
113
131
|
//# sourceMappingURL=verify.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verify.js","sourceRoot":"","sources":["../../../src/cli/commands/verify.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAI5C,OAAO,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AAC3F,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAC/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,0CAA0C,CAAC;AACjF,OAAO,
|
|
1
|
+
{"version":3,"file":"verify.js","sourceRoot":"","sources":["../../../src/cli/commands/verify.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,7 +6,15 @@ import { builderConfigSchema } from "./schema.js";
|
|
|
6
6
|
export async function loadConfig(filePath) {
|
|
7
7
|
const raw = await readFile(filePath, "utf8");
|
|
8
8
|
const parsed = YAML.parse(raw);
|
|
9
|
-
|
|
9
|
+
const expanded = expandBuilderPaths(parsed);
|
|
10
|
+
const result = builderConfigSchema.safeParse(expanded);
|
|
11
|
+
if (result.success) {
|
|
12
|
+
return result.data;
|
|
13
|
+
}
|
|
14
|
+
if (looksLikeSingBoxRuntimeConfig(expanded)) {
|
|
15
|
+
throw new Error(`Expected a singbox-iac builder config, but received a sing-box runtime config: ${filePath}\nUse the builder config instead, for example: ${defaultBuilderConfigPath()}`);
|
|
16
|
+
}
|
|
17
|
+
throw result.error;
|
|
10
18
|
}
|
|
11
19
|
function expandBuilderPaths(input) {
|
|
12
20
|
if (typeof input === "string") {
|
|
@@ -26,4 +34,19 @@ function expandHome(value) {
|
|
|
26
34
|
}
|
|
27
35
|
return path.join(homedir(), value.slice(2));
|
|
28
36
|
}
|
|
37
|
+
function looksLikeSingBoxRuntimeConfig(input) {
|
|
38
|
+
if (!input || typeof input !== "object" || Array.isArray(input)) {
|
|
39
|
+
return false;
|
|
40
|
+
}
|
|
41
|
+
const candidate = input;
|
|
42
|
+
return ("dns" in candidate &&
|
|
43
|
+
"inbounds" in candidate &&
|
|
44
|
+
"outbounds" in candidate &&
|
|
45
|
+
"route" in candidate &&
|
|
46
|
+
!("subscription" in candidate) &&
|
|
47
|
+
!("runtime" in candidate));
|
|
48
|
+
}
|
|
49
|
+
function defaultBuilderConfigPath() {
|
|
50
|
+
return path.join(homedir(), ".config", "singbox-iac", "builder.config.yaml");
|
|
51
|
+
}
|
|
29
52
|
//# sourceMappingURL=load-config.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"load-config.js","sourceRoot":"","sources":["../../src/config/load-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,IAAI,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"load-config.js","sourceRoot":"","sources":["../../src/config/load-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,IAAI,MAAM,MAAM,CAAC;AAGxB,OAAO,EAAsB,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAEtE,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,QAAgB;IAC/C,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC7C,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC/B,MAAM,QAAQ,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAC5C,MAAM,MAAM,GAAG,mBAAmB,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IACvD,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,OAAO,MAAM,CAAC,IAAI,CAAC;IACrB,CAAC;IAED,IAAI,6BAA6B,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC5C,MAAM,IAAI,KAAK,CACb,kFAAkF,QAAQ,kDAAkD,wBAAwB,EAAE,EAAE,CACzK,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,CAAC,KAAK,CAAC;AACrB,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAc;IACxC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC;IAC3B,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;IACvC,CAAC;IAED,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACvC,OAAO,MAAM,CAAC,WAAW,CACvB,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC,CAC9E,CAAC;IACJ,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,UAAU,CAAC,KAAa;IAC/B,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QAC5B,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9C,CAAC;AAED,SAAS,6BAA6B,CAAC,KAAc;IACnD,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAChE,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,SAAS,GAAG,KAAgC,CAAC;IACnD,OAAO,CACL,KAAK,IAAI,SAAS;QAClB,UAAU,IAAI,SAAS;QACvB,WAAW,IAAI,SAAS;QACxB,OAAO,IAAI,SAAS;QACpB,CAAC,CAAC,cAAc,IAAI,SAAS,CAAC;QAC9B,CAAC,CAAC,SAAS,IAAI,SAAS,CAAC,CAC1B,CAAC;AACJ,CAAC;AAED,SAAS,wBAAwB;IAC/B,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,aAAa,EAAE,qBAAqB,CAAC,CAAC;AAC/E,CAAC"}
|
package/dist/config/schema.d.ts
CHANGED
|
@@ -71,17 +71,77 @@ export declare const builderConfigSchema: z.ZodObject<{
|
|
|
71
71
|
autoRoute: z.ZodDefault<z.ZodBoolean>;
|
|
72
72
|
strictRoute: z.ZodDefault<z.ZodBoolean>;
|
|
73
73
|
interfaceName: z.ZodOptional<z.ZodString>;
|
|
74
|
+
dnsMode: z.ZodDefault<z.ZodEnum<["real-ip", "fake-ip"]>>;
|
|
75
|
+
launchDaemonLabel: z.ZodDefault<z.ZodString>;
|
|
74
76
|
addresses: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
77
|
+
processRouting: z.ZodDefault<z.ZodObject<{
|
|
78
|
+
enabled: z.ZodDefault<z.ZodBoolean>;
|
|
79
|
+
}, "strip", z.ZodTypeAny, {
|
|
80
|
+
enabled: boolean;
|
|
81
|
+
}, {
|
|
82
|
+
enabled?: boolean | undefined;
|
|
83
|
+
}>>;
|
|
84
|
+
fakeIp: z.ZodDefault<z.ZodObject<{
|
|
85
|
+
inet4Range: z.ZodDefault<z.ZodString>;
|
|
86
|
+
inet6Range: z.ZodDefault<z.ZodString>;
|
|
87
|
+
}, "strip", z.ZodTypeAny, {
|
|
88
|
+
inet4Range: string;
|
|
89
|
+
inet6Range: string;
|
|
90
|
+
}, {
|
|
91
|
+
inet4Range?: string | undefined;
|
|
92
|
+
inet6Range?: string | undefined;
|
|
93
|
+
}>>;
|
|
94
|
+
cache: z.ZodDefault<z.ZodObject<{
|
|
95
|
+
enabled: z.ZodDefault<z.ZodBoolean>;
|
|
96
|
+
path: z.ZodDefault<z.ZodString>;
|
|
97
|
+
storeFakeIp: z.ZodDefault<z.ZodBoolean>;
|
|
98
|
+
}, "strip", z.ZodTypeAny, {
|
|
99
|
+
enabled: boolean;
|
|
100
|
+
path: string;
|
|
101
|
+
storeFakeIp: boolean;
|
|
102
|
+
}, {
|
|
103
|
+
enabled?: boolean | undefined;
|
|
104
|
+
path?: string | undefined;
|
|
105
|
+
storeFakeIp?: boolean | undefined;
|
|
106
|
+
}>>;
|
|
75
107
|
}, "strip", z.ZodTypeAny, {
|
|
76
108
|
autoRoute: boolean;
|
|
77
109
|
strictRoute: boolean;
|
|
110
|
+
dnsMode: "real-ip" | "fake-ip";
|
|
111
|
+
launchDaemonLabel: string;
|
|
78
112
|
addresses: string[];
|
|
113
|
+
processRouting: {
|
|
114
|
+
enabled: boolean;
|
|
115
|
+
};
|
|
116
|
+
fakeIp: {
|
|
117
|
+
inet4Range: string;
|
|
118
|
+
inet6Range: string;
|
|
119
|
+
};
|
|
120
|
+
cache: {
|
|
121
|
+
enabled: boolean;
|
|
122
|
+
path: string;
|
|
123
|
+
storeFakeIp: boolean;
|
|
124
|
+
};
|
|
79
125
|
interfaceName?: string | undefined;
|
|
80
126
|
}, {
|
|
81
127
|
autoRoute?: boolean | undefined;
|
|
82
128
|
strictRoute?: boolean | undefined;
|
|
83
129
|
interfaceName?: string | undefined;
|
|
130
|
+
dnsMode?: "real-ip" | "fake-ip" | undefined;
|
|
131
|
+
launchDaemonLabel?: string | undefined;
|
|
84
132
|
addresses?: string[] | undefined;
|
|
133
|
+
processRouting?: {
|
|
134
|
+
enabled?: boolean | undefined;
|
|
135
|
+
} | undefined;
|
|
136
|
+
fakeIp?: {
|
|
137
|
+
inet4Range?: string | undefined;
|
|
138
|
+
inet6Range?: string | undefined;
|
|
139
|
+
} | undefined;
|
|
140
|
+
cache?: {
|
|
141
|
+
enabled?: boolean | undefined;
|
|
142
|
+
path?: string | undefined;
|
|
143
|
+
storeFakeIp?: boolean | undefined;
|
|
144
|
+
} | undefined;
|
|
85
145
|
}>>;
|
|
86
146
|
watchdog: z.ZodDefault<z.ZodObject<{
|
|
87
147
|
enabled: z.ZodDefault<z.ZodBoolean>;
|
|
@@ -100,7 +160,21 @@ export declare const builderConfigSchema: z.ZodObject<{
|
|
|
100
160
|
tun: {
|
|
101
161
|
autoRoute: boolean;
|
|
102
162
|
strictRoute: boolean;
|
|
163
|
+
dnsMode: "real-ip" | "fake-ip";
|
|
164
|
+
launchDaemonLabel: string;
|
|
103
165
|
addresses: string[];
|
|
166
|
+
processRouting: {
|
|
167
|
+
enabled: boolean;
|
|
168
|
+
};
|
|
169
|
+
fakeIp: {
|
|
170
|
+
inet4Range: string;
|
|
171
|
+
inet6Range: string;
|
|
172
|
+
};
|
|
173
|
+
cache: {
|
|
174
|
+
enabled: boolean;
|
|
175
|
+
path: string;
|
|
176
|
+
storeFakeIp: boolean;
|
|
177
|
+
};
|
|
104
178
|
interfaceName?: string | undefined;
|
|
105
179
|
};
|
|
106
180
|
launchAgentLabel: string;
|
|
@@ -115,7 +189,21 @@ export declare const builderConfigSchema: z.ZodObject<{
|
|
|
115
189
|
autoRoute?: boolean | undefined;
|
|
116
190
|
strictRoute?: boolean | undefined;
|
|
117
191
|
interfaceName?: string | undefined;
|
|
192
|
+
dnsMode?: "real-ip" | "fake-ip" | undefined;
|
|
193
|
+
launchDaemonLabel?: string | undefined;
|
|
118
194
|
addresses?: string[] | undefined;
|
|
195
|
+
processRouting?: {
|
|
196
|
+
enabled?: boolean | undefined;
|
|
197
|
+
} | undefined;
|
|
198
|
+
fakeIp?: {
|
|
199
|
+
inet4Range?: string | undefined;
|
|
200
|
+
inet6Range?: string | undefined;
|
|
201
|
+
} | undefined;
|
|
202
|
+
cache?: {
|
|
203
|
+
enabled?: boolean | undefined;
|
|
204
|
+
path?: string | undefined;
|
|
205
|
+
storeFakeIp?: boolean | undefined;
|
|
206
|
+
} | undefined;
|
|
119
207
|
} | undefined;
|
|
120
208
|
launchAgentLabel?: string | undefined;
|
|
121
209
|
profile?: "none" | "system-proxy" | "tun" | undefined;
|
|
@@ -144,7 +232,21 @@ export declare const builderConfigSchema: z.ZodObject<{
|
|
|
144
232
|
tun: {
|
|
145
233
|
autoRoute: boolean;
|
|
146
234
|
strictRoute: boolean;
|
|
235
|
+
dnsMode: "real-ip" | "fake-ip";
|
|
236
|
+
launchDaemonLabel: string;
|
|
147
237
|
addresses: string[];
|
|
238
|
+
processRouting: {
|
|
239
|
+
enabled: boolean;
|
|
240
|
+
};
|
|
241
|
+
fakeIp: {
|
|
242
|
+
inet4Range: string;
|
|
243
|
+
inet6Range: string;
|
|
244
|
+
};
|
|
245
|
+
cache: {
|
|
246
|
+
enabled: boolean;
|
|
247
|
+
path: string;
|
|
248
|
+
storeFakeIp: boolean;
|
|
249
|
+
};
|
|
148
250
|
interfaceName?: string | undefined;
|
|
149
251
|
};
|
|
150
252
|
launchAgentLabel: string;
|
|
@@ -175,7 +277,21 @@ export declare const builderConfigSchema: z.ZodObject<{
|
|
|
175
277
|
autoRoute?: boolean | undefined;
|
|
176
278
|
strictRoute?: boolean | undefined;
|
|
177
279
|
interfaceName?: string | undefined;
|
|
280
|
+
dnsMode?: "real-ip" | "fake-ip" | undefined;
|
|
281
|
+
launchDaemonLabel?: string | undefined;
|
|
178
282
|
addresses?: string[] | undefined;
|
|
283
|
+
processRouting?: {
|
|
284
|
+
enabled?: boolean | undefined;
|
|
285
|
+
} | undefined;
|
|
286
|
+
fakeIp?: {
|
|
287
|
+
inet4Range?: string | undefined;
|
|
288
|
+
inet6Range?: string | undefined;
|
|
289
|
+
} | undefined;
|
|
290
|
+
cache?: {
|
|
291
|
+
enabled?: boolean | undefined;
|
|
292
|
+
path?: string | undefined;
|
|
293
|
+
storeFakeIp?: boolean | undefined;
|
|
294
|
+
} | undefined;
|
|
179
295
|
} | undefined;
|
|
180
296
|
launchAgentLabel?: string | undefined;
|
|
181
297
|
profile?: "none" | "system-proxy" | "tun" | undefined;
|
|
@@ -408,19 +524,19 @@ export declare const builderConfigSchema: z.ZodObject<{
|
|
|
408
524
|
id: z.ZodString;
|
|
409
525
|
name: z.ZodString;
|
|
410
526
|
url: z.ZodString;
|
|
411
|
-
inbound: z.ZodEnum<["in-mixed", "in-proxifier"]>;
|
|
527
|
+
inbound: z.ZodEnum<["in-mixed", "in-proxifier", "in-tun"]>;
|
|
412
528
|
expectedOutbound: z.ZodString;
|
|
413
529
|
}, "strip", z.ZodTypeAny, {
|
|
414
530
|
id: string;
|
|
415
531
|
name: string;
|
|
416
532
|
url: string;
|
|
417
|
-
inbound: "in-mixed" | "in-proxifier";
|
|
533
|
+
inbound: "in-mixed" | "in-proxifier" | "in-tun";
|
|
418
534
|
expectedOutbound: string;
|
|
419
535
|
}, {
|
|
420
536
|
id: string;
|
|
421
537
|
name: string;
|
|
422
538
|
url: string;
|
|
423
|
-
inbound: "in-mixed" | "in-proxifier";
|
|
539
|
+
inbound: "in-mixed" | "in-proxifier" | "in-tun";
|
|
424
540
|
expectedOutbound: string;
|
|
425
541
|
}>, "many">;
|
|
426
542
|
}, "strip", z.ZodTypeAny, {
|
|
@@ -428,7 +544,7 @@ export declare const builderConfigSchema: z.ZodObject<{
|
|
|
428
544
|
id: string;
|
|
429
545
|
name: string;
|
|
430
546
|
url: string;
|
|
431
|
-
inbound: "in-mixed" | "in-proxifier";
|
|
547
|
+
inbound: "in-mixed" | "in-proxifier" | "in-tun";
|
|
432
548
|
expectedOutbound: string;
|
|
433
549
|
}[];
|
|
434
550
|
}, {
|
|
@@ -436,7 +552,7 @@ export declare const builderConfigSchema: z.ZodObject<{
|
|
|
436
552
|
id: string;
|
|
437
553
|
name: string;
|
|
438
554
|
url: string;
|
|
439
|
-
inbound: "in-mixed" | "in-proxifier";
|
|
555
|
+
inbound: "in-mixed" | "in-proxifier" | "in-tun";
|
|
440
556
|
expectedOutbound: string;
|
|
441
557
|
}[];
|
|
442
558
|
}>;
|
|
@@ -479,17 +595,6 @@ export declare const builderConfigSchema: z.ZodObject<{
|
|
|
479
595
|
timeoutMs?: number | undefined;
|
|
480
596
|
}>>;
|
|
481
597
|
}, "strip", z.ZodTypeAny, {
|
|
482
|
-
version: 1;
|
|
483
|
-
subscription: {
|
|
484
|
-
format: "base64-lines";
|
|
485
|
-
url: string;
|
|
486
|
-
protocols: "trojan"[];
|
|
487
|
-
};
|
|
488
|
-
output: {
|
|
489
|
-
stagingPath: string;
|
|
490
|
-
livePath: string;
|
|
491
|
-
backupPath: string;
|
|
492
|
-
};
|
|
493
598
|
runtime: {
|
|
494
599
|
checkCommand: string;
|
|
495
600
|
reload: {
|
|
@@ -509,7 +614,21 @@ export declare const builderConfigSchema: z.ZodObject<{
|
|
|
509
614
|
tun: {
|
|
510
615
|
autoRoute: boolean;
|
|
511
616
|
strictRoute: boolean;
|
|
617
|
+
dnsMode: "real-ip" | "fake-ip";
|
|
618
|
+
launchDaemonLabel: string;
|
|
512
619
|
addresses: string[];
|
|
620
|
+
processRouting: {
|
|
621
|
+
enabled: boolean;
|
|
622
|
+
};
|
|
623
|
+
fakeIp: {
|
|
624
|
+
inet4Range: string;
|
|
625
|
+
inet6Range: string;
|
|
626
|
+
};
|
|
627
|
+
cache: {
|
|
628
|
+
enabled: boolean;
|
|
629
|
+
path: string;
|
|
630
|
+
storeFakeIp: boolean;
|
|
631
|
+
};
|
|
513
632
|
interfaceName?: string | undefined;
|
|
514
633
|
};
|
|
515
634
|
launchAgentLabel: string;
|
|
@@ -521,6 +640,17 @@ export declare const builderConfigSchema: z.ZodObject<{
|
|
|
521
640
|
};
|
|
522
641
|
};
|
|
523
642
|
};
|
|
643
|
+
version: 1;
|
|
644
|
+
subscription: {
|
|
645
|
+
format: "base64-lines";
|
|
646
|
+
url: string;
|
|
647
|
+
protocols: "trojan"[];
|
|
648
|
+
};
|
|
649
|
+
output: {
|
|
650
|
+
stagingPath: string;
|
|
651
|
+
livePath: string;
|
|
652
|
+
backupPath: string;
|
|
653
|
+
};
|
|
524
654
|
listeners: {
|
|
525
655
|
mixed: {
|
|
526
656
|
enabled: boolean;
|
|
@@ -579,7 +709,7 @@ export declare const builderConfigSchema: z.ZodObject<{
|
|
|
579
709
|
id: string;
|
|
580
710
|
name: string;
|
|
581
711
|
url: string;
|
|
582
|
-
inbound: "in-mixed" | "in-proxifier";
|
|
712
|
+
inbound: "in-mixed" | "in-proxifier" | "in-tun";
|
|
583
713
|
expectedOutbound: string;
|
|
584
714
|
}[];
|
|
585
715
|
};
|
|
@@ -596,17 +726,6 @@ export declare const builderConfigSchema: z.ZodObject<{
|
|
|
596
726
|
} | undefined;
|
|
597
727
|
};
|
|
598
728
|
}, {
|
|
599
|
-
version: 1;
|
|
600
|
-
subscription: {
|
|
601
|
-
format: "base64-lines";
|
|
602
|
-
url: string;
|
|
603
|
-
protocols: "trojan"[];
|
|
604
|
-
};
|
|
605
|
-
output: {
|
|
606
|
-
stagingPath: string;
|
|
607
|
-
livePath: string;
|
|
608
|
-
backupPath: string;
|
|
609
|
-
};
|
|
610
729
|
runtime: {
|
|
611
730
|
checkCommand: string;
|
|
612
731
|
reload: {
|
|
@@ -627,7 +746,21 @@ export declare const builderConfigSchema: z.ZodObject<{
|
|
|
627
746
|
autoRoute?: boolean | undefined;
|
|
628
747
|
strictRoute?: boolean | undefined;
|
|
629
748
|
interfaceName?: string | undefined;
|
|
749
|
+
dnsMode?: "real-ip" | "fake-ip" | undefined;
|
|
750
|
+
launchDaemonLabel?: string | undefined;
|
|
630
751
|
addresses?: string[] | undefined;
|
|
752
|
+
processRouting?: {
|
|
753
|
+
enabled?: boolean | undefined;
|
|
754
|
+
} | undefined;
|
|
755
|
+
fakeIp?: {
|
|
756
|
+
inet4Range?: string | undefined;
|
|
757
|
+
inet6Range?: string | undefined;
|
|
758
|
+
} | undefined;
|
|
759
|
+
cache?: {
|
|
760
|
+
enabled?: boolean | undefined;
|
|
761
|
+
path?: string | undefined;
|
|
762
|
+
storeFakeIp?: boolean | undefined;
|
|
763
|
+
} | undefined;
|
|
631
764
|
} | undefined;
|
|
632
765
|
launchAgentLabel?: string | undefined;
|
|
633
766
|
profile?: "none" | "system-proxy" | "tun" | undefined;
|
|
@@ -638,6 +771,17 @@ export declare const builderConfigSchema: z.ZodObject<{
|
|
|
638
771
|
} | undefined;
|
|
639
772
|
} | undefined;
|
|
640
773
|
};
|
|
774
|
+
version: 1;
|
|
775
|
+
subscription: {
|
|
776
|
+
format: "base64-lines";
|
|
777
|
+
url: string;
|
|
778
|
+
protocols: "trojan"[];
|
|
779
|
+
};
|
|
780
|
+
output: {
|
|
781
|
+
stagingPath: string;
|
|
782
|
+
livePath: string;
|
|
783
|
+
backupPath: string;
|
|
784
|
+
};
|
|
641
785
|
listeners: {
|
|
642
786
|
mixed: {
|
|
643
787
|
enabled: boolean;
|
|
@@ -696,7 +840,7 @@ export declare const builderConfigSchema: z.ZodObject<{
|
|
|
696
840
|
id: string;
|
|
697
841
|
name: string;
|
|
698
842
|
url: string;
|
|
699
|
-
inbound: "in-mixed" | "in-proxifier";
|
|
843
|
+
inbound: "in-mixed" | "in-proxifier" | "in-tun";
|
|
700
844
|
expectedOutbound: string;
|
|
701
845
|
}[];
|
|
702
846
|
};
|
package/dist/config/schema.js
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { homedir } from "node:os";
|
|
2
|
+
import path from "node:path";
|
|
1
3
|
import { z } from "zod";
|
|
2
4
|
const listenerSchema = z.object({
|
|
3
5
|
enabled: z.boolean(),
|
|
@@ -20,7 +22,7 @@ const verificationScenarioSchema = z.object({
|
|
|
20
22
|
id: z.string().min(1),
|
|
21
23
|
name: z.string().min(1),
|
|
22
24
|
url: z.string().url(),
|
|
23
|
-
inbound: z.enum(["in-mixed", "in-proxifier"]),
|
|
25
|
+
inbound: z.enum(["in-mixed", "in-proxifier", "in-tun"]),
|
|
24
26
|
expectedOutbound: z.string().min(1),
|
|
25
27
|
});
|
|
26
28
|
const authoringSchema = z
|
|
@@ -61,15 +63,61 @@ const desktopTunRuntimeSchema = z
|
|
|
61
63
|
autoRoute: z.boolean().default(true),
|
|
62
64
|
strictRoute: z.boolean().default(false),
|
|
63
65
|
interfaceName: z.string().min(1).optional(),
|
|
66
|
+
dnsMode: z.enum(["real-ip", "fake-ip"]).default("fake-ip"),
|
|
67
|
+
launchDaemonLabel: z.string().min(1).default("org.singbox-iac.runtime.tun"),
|
|
64
68
|
addresses: z
|
|
65
69
|
.array(z.string().min(1))
|
|
66
70
|
.min(1)
|
|
67
71
|
.default(["172.19.0.1/30", "fdfe:dcba:9876::1/126"]),
|
|
72
|
+
processRouting: z
|
|
73
|
+
.object({
|
|
74
|
+
enabled: z.boolean().default(true),
|
|
75
|
+
})
|
|
76
|
+
.default({
|
|
77
|
+
enabled: true,
|
|
78
|
+
}),
|
|
79
|
+
fakeIp: z
|
|
80
|
+
.object({
|
|
81
|
+
inet4Range: z.string().min(1).default("198.18.0.0/15"),
|
|
82
|
+
inet6Range: z.string().min(1).default("fc00::/18"),
|
|
83
|
+
})
|
|
84
|
+
.default({
|
|
85
|
+
inet4Range: "198.18.0.0/15",
|
|
86
|
+
inet6Range: "fc00::/18",
|
|
87
|
+
}),
|
|
88
|
+
cache: z
|
|
89
|
+
.object({
|
|
90
|
+
enabled: z.boolean().default(true),
|
|
91
|
+
path: z
|
|
92
|
+
.string()
|
|
93
|
+
.min(1)
|
|
94
|
+
.default(path.join(homedir(), ".config", "singbox-iac", "runtime", "tun-cache.db")),
|
|
95
|
+
storeFakeIp: z.boolean().default(true),
|
|
96
|
+
})
|
|
97
|
+
.default({
|
|
98
|
+
enabled: true,
|
|
99
|
+
path: path.join(homedir(), ".config", "singbox-iac", "runtime", "tun-cache.db"),
|
|
100
|
+
storeFakeIp: true,
|
|
101
|
+
}),
|
|
68
102
|
})
|
|
69
103
|
.default({
|
|
70
104
|
autoRoute: true,
|
|
71
105
|
strictRoute: false,
|
|
106
|
+
dnsMode: "fake-ip",
|
|
107
|
+
launchDaemonLabel: "org.singbox-iac.runtime.tun",
|
|
72
108
|
addresses: ["172.19.0.1/30", "fdfe:dcba:9876::1/126"],
|
|
109
|
+
processRouting: {
|
|
110
|
+
enabled: true,
|
|
111
|
+
},
|
|
112
|
+
fakeIp: {
|
|
113
|
+
inet4Range: "198.18.0.0/15",
|
|
114
|
+
inet6Range: "fc00::/18",
|
|
115
|
+
},
|
|
116
|
+
cache: {
|
|
117
|
+
enabled: true,
|
|
118
|
+
path: path.join(homedir(), ".config", "singbox-iac", "runtime", "tun-cache.db"),
|
|
119
|
+
storeFakeIp: true,
|
|
120
|
+
},
|
|
73
121
|
});
|
|
74
122
|
const desktopRuntimeWatchdogSchema = z
|
|
75
123
|
.object({
|
|
@@ -95,7 +143,21 @@ const desktopRuntimeSchema = z
|
|
|
95
143
|
tun: {
|
|
96
144
|
autoRoute: true,
|
|
97
145
|
strictRoute: false,
|
|
146
|
+
dnsMode: "fake-ip",
|
|
147
|
+
launchDaemonLabel: "org.singbox-iac.runtime.tun",
|
|
98
148
|
addresses: ["172.19.0.1/30", "fdfe:dcba:9876::1/126"],
|
|
149
|
+
processRouting: {
|
|
150
|
+
enabled: true,
|
|
151
|
+
},
|
|
152
|
+
fakeIp: {
|
|
153
|
+
inet4Range: "198.18.0.0/15",
|
|
154
|
+
inet6Range: "fc00::/18",
|
|
155
|
+
},
|
|
156
|
+
cache: {
|
|
157
|
+
enabled: true,
|
|
158
|
+
path: path.join(homedir(), ".config", "singbox-iac", "runtime", "tun-cache.db"),
|
|
159
|
+
storeFakeIp: true,
|
|
160
|
+
},
|
|
99
161
|
},
|
|
100
162
|
watchdog: {
|
|
101
163
|
enabled: true,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9B,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE;IACpB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;IAClB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;CAClC,CAAC,CAAC;AAEH,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7B,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACtB,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;IAC3B,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;IACxB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;CACxB,CAAC,CAAC;AAEH,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3B,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;IACrC,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3C,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IAC3C,kBAAkB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;CACjD,CAAC,CAAC;AAEH,MAAM,0BAA0B,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACrB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACvB,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE;IACrB,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":"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"}
|