tuyoo-devflow 0.1.6 → 0.1.9
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/CHANGELOG.md +12 -0
- package/README.md +1 -0
- package/dist/commands/agent/doctor.js +3 -1
- package/dist/commands/agent/doctor.js.map +1 -1
- package/dist/commands/agent/shared.d.ts +4 -2
- package/dist/commands/agent/shared.js +16 -0
- package/dist/commands/agent/shared.js.map +1 -1
- package/dist/core/precheck/network.d.ts +2 -2
- package/dist/core/precheck/network.js +21 -4
- package/dist/core/precheck/network.js.map +1 -1
- package/dist/core/precheck/networkReport.d.ts +10 -0
- package/dist/core/precheck/networkReport.js +91 -0
- package/dist/core/precheck/networkReport.js.map +1 -0
- package/dist/types.d.ts +4 -0
- package/package.json +7 -2
package/CHANGELOG.md
CHANGED
|
@@ -6,6 +6,18 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
|
|
|
6
6
|
|
|
7
7
|
## [Unreleased]
|
|
8
8
|
|
|
9
|
+
## [0.1.9] - 2026-04-22
|
|
10
|
+
|
|
11
|
+
### Changed
|
|
12
|
+
|
|
13
|
+
- `agent doctor` 生成白名单失败 OA 报告时,外网 IP 会优先通过 `curl ip.sb` 自动获取,拿不到时再回落为 `待补充`。
|
|
14
|
+
|
|
15
|
+
## [0.1.7] - 2026-04-22
|
|
16
|
+
|
|
17
|
+
### Changed
|
|
18
|
+
|
|
19
|
+
- `agent doctor` 在网络白名单检查失败时,会额外生成仅包含失败项的 OA 申请报告,并写入 `~/.tuyoo-devflow/reports/doctor-whitelist-failures.txt`。
|
|
20
|
+
|
|
9
21
|
## [0.1.6] - 2026-04-13
|
|
10
22
|
|
|
11
23
|
### Added
|
package/README.md
CHANGED
|
@@ -7,7 +7,7 @@ import { checkRequiredTools } from "../../core/precheck/tools.js";
|
|
|
7
7
|
import { collectSystemInfoResults } from "../../core/precheck/systemInfo.js";
|
|
8
8
|
import { CheckReport } from "../../ui/CheckReport.js";
|
|
9
9
|
import { renderOnce } from "../../ui/renderOnce.js";
|
|
10
|
-
import { getFailedToolChecks, hasLinuxOrNetworkFailure, printCheckSummary, runDoctorChecks, } from "./shared.js";
|
|
10
|
+
import { getFailedToolChecks, hasLinuxOrNetworkFailure, printCheckSummary, printFailedWhitelistReport, runDoctorChecks, } from "./shared.js";
|
|
11
11
|
export function registerDoctorCommand(agentCommand) {
|
|
12
12
|
agentCommand
|
|
13
13
|
.command("doctor")
|
|
@@ -33,6 +33,7 @@ export function registerDoctorCommand(agentCommand) {
|
|
|
33
33
|
let checks = await runDoctorChecks(platform, jenkinsUrl);
|
|
34
34
|
await printCheckSummary(checks);
|
|
35
35
|
if (hasLinuxOrNetworkFailure(checks)) {
|
|
36
|
+
await printFailedWhitelistReport(checks);
|
|
36
37
|
process.exitCode = 1;
|
|
37
38
|
console.error("系统/网络前置检查未通过,请修复后重试。");
|
|
38
39
|
return;
|
|
@@ -55,6 +56,7 @@ export function registerDoctorCommand(agentCommand) {
|
|
|
55
56
|
checks = await runDoctorChecks(platform, jenkinsUrl);
|
|
56
57
|
}
|
|
57
58
|
if (hasLinuxOrNetworkFailure(checks)) {
|
|
59
|
+
await printFailedWhitelistReport(checks);
|
|
58
60
|
process.exitCode = 1;
|
|
59
61
|
console.error("复检发现系统/网络检查失败,请修复后重试。");
|
|
60
62
|
return;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../../src/commands/agent/doctor.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../../src/commands/agent/doctor.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,13 @@
|
|
|
1
|
-
import { CheckResult, SupportedPlatform } from "../../types.js";
|
|
1
|
+
import { CheckResult, NetworkCheckResult, SupportedPlatform } from "../../types.js";
|
|
2
2
|
export interface DoctorCheckResult {
|
|
3
3
|
linuxResults: CheckResult[];
|
|
4
|
-
networkResults:
|
|
4
|
+
networkResults: NetworkCheckResult[];
|
|
5
5
|
toolResults: CheckResult[];
|
|
6
6
|
}
|
|
7
7
|
export declare function runDoctorChecks(platform: SupportedPlatform, jenkinsBaseUrl: string): Promise<DoctorCheckResult>;
|
|
8
8
|
export declare function hasBlockingFailure(checks: DoctorCheckResult): boolean;
|
|
9
9
|
export declare function hasLinuxOrNetworkFailure(checks: DoctorCheckResult): boolean;
|
|
10
10
|
export declare function getFailedToolChecks(checks: DoctorCheckResult): CheckResult[];
|
|
11
|
+
export declare function getFailedNetworkChecks(checks: DoctorCheckResult): NetworkCheckResult[];
|
|
11
12
|
export declare function printCheckSummary(checks: DoctorCheckResult): Promise<void>;
|
|
13
|
+
export declare function printFailedWhitelistReport(checks: DoctorCheckResult): Promise<string | null>;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import { checkLinuxGuards } from "../../core/precheck/linuxGuard.js";
|
|
3
3
|
import { checkWhitelistConnectivity } from "../../core/precheck/network.js";
|
|
4
|
+
import { formatWhitelistFailureReport, saveWhitelistFailureReport, } from "../../core/precheck/networkReport.js";
|
|
4
5
|
import { checkRequiredTools } from "../../core/precheck/tools.js";
|
|
5
6
|
import { CheckReport } from "../../ui/CheckReport.js";
|
|
6
7
|
import { renderOnce } from "../../ui/renderOnce.js";
|
|
@@ -23,6 +24,9 @@ export function hasLinuxOrNetworkFailure(checks) {
|
|
|
23
24
|
export function getFailedToolChecks(checks) {
|
|
24
25
|
return checks.toolResults.filter((item) => item.status === "fail");
|
|
25
26
|
}
|
|
27
|
+
export function getFailedNetworkChecks(checks) {
|
|
28
|
+
return checks.networkResults.filter((item) => item.status === "fail");
|
|
29
|
+
}
|
|
26
30
|
export async function printCheckSummary(checks) {
|
|
27
31
|
if (checks.linuxResults.length > 0) {
|
|
28
32
|
await renderOnce(_jsx(CheckReport, { title: "Linux \u524D\u7F6E\u68C0\u67E5", results: checks.linuxResults }));
|
|
@@ -30,4 +34,16 @@ export async function printCheckSummary(checks) {
|
|
|
30
34
|
await renderOnce(_jsx(CheckReport, { title: "\u7F51\u7EDC\u767D\u540D\u5355\u68C0\u67E5", results: checks.networkResults }));
|
|
31
35
|
await renderOnce(_jsx(CheckReport, { title: "\u5DE5\u5177\u4E0E\u7248\u672C\u68C0\u67E5", results: checks.toolResults }));
|
|
32
36
|
}
|
|
37
|
+
export async function printFailedWhitelistReport(checks) {
|
|
38
|
+
const failedNetworkChecks = getFailedNetworkChecks(checks);
|
|
39
|
+
if (failedNetworkChecks.length === 0) {
|
|
40
|
+
return null;
|
|
41
|
+
}
|
|
42
|
+
const report = await formatWhitelistFailureReport(failedNetworkChecks);
|
|
43
|
+
const reportPath = await saveWhitelistFailureReport(report);
|
|
44
|
+
console.error("\n以下为网络白名单未通过项的 OA 申请报告:");
|
|
45
|
+
console.error(report);
|
|
46
|
+
console.error(`报告已写入: ${reportPath}`);
|
|
47
|
+
return reportPath;
|
|
48
|
+
}
|
|
33
49
|
//# sourceMappingURL=shared.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared.js","sourceRoot":"","sources":["../../../src/commands/agent/shared.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AACrE,OAAO,EAAE,0BAA0B,EAAE,MAAM,gCAAgC,CAAC;AAC5E,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAClE,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAQpD,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,QAA2B,EAC3B,cAAsB;IAEtB,MAAM,YAAY,GAAG,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,MAAM,gBAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAC1E,MAAM,cAAc,GAAG,MAAM,0BAA0B,CAAC,cAAc,CAAC,CAAC;IACxE,MAAM,WAAW,GAAG,MAAM,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IACvD,OAAO;QACL,YAAY;QACZ,cAAc;QACd,WAAW;KACZ,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,MAAyB;IAC1D,OAAO,CAAC,GAAG,MAAM,CAAC,YAAY,EAAE,GAAG,MAAM,CAAC,cAAc,EAAE,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,CACnF,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,MAAM,CACjC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,MAAyB;IAChE,OAAO,CAAC,GAAG,MAAM,CAAC,YAAY,EAAE,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC;AACnG,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,MAAyB;IAC3D,OAAO,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC;AACrE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,MAAyB;IAC/D,IAAI,MAAM,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACnC,MAAM,UAAU,CAAC,KAAC,WAAW,IAAC,KAAK,EAAC,gCAAY,EAAC,OAAO,EAAE,MAAM,CAAC,YAAY,GAAI,CAAC,CAAC;IACrF,CAAC;IACD,MAAM,UAAU,CAAC,KAAC,WAAW,IAAC,KAAK,EAAC,4CAAS,EAAC,OAAO,EAAE,MAAM,CAAC,cAAc,GAAI,CAAC,CAAC;IAClF,MAAM,UAAU,CAAC,KAAC,WAAW,IAAC,KAAK,EAAC,4CAAS,EAAC,OAAO,EAAE,MAAM,CAAC,WAAW,GAAI,CAAC,CAAC;AACjF,CAAC"}
|
|
1
|
+
{"version":3,"file":"shared.js","sourceRoot":"","sources":["../../../src/commands/agent/shared.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AACrE,OAAO,EAAE,0BAA0B,EAAE,MAAM,gCAAgC,CAAC;AAC5E,OAAO,EACL,4BAA4B,EAC5B,0BAA0B,GAC3B,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAClE,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAQpD,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,QAA2B,EAC3B,cAAsB;IAEtB,MAAM,YAAY,GAAG,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,MAAM,gBAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAC1E,MAAM,cAAc,GAAG,MAAM,0BAA0B,CAAC,cAAc,CAAC,CAAC;IACxE,MAAM,WAAW,GAAG,MAAM,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IACvD,OAAO;QACL,YAAY;QACZ,cAAc;QACd,WAAW;KACZ,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,MAAyB;IAC1D,OAAO,CAAC,GAAG,MAAM,CAAC,YAAY,EAAE,GAAG,MAAM,CAAC,cAAc,EAAE,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,CACnF,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,MAAM,CACjC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,MAAyB;IAChE,OAAO,CAAC,GAAG,MAAM,CAAC,YAAY,EAAE,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC;AACnG,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,MAAyB;IAC3D,OAAO,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC;AACrE,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,MAAyB;IAC9D,OAAO,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC;AACxE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,MAAyB;IAC/D,IAAI,MAAM,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACnC,MAAM,UAAU,CAAC,KAAC,WAAW,IAAC,KAAK,EAAC,gCAAY,EAAC,OAAO,EAAE,MAAM,CAAC,YAAY,GAAI,CAAC,CAAC;IACrF,CAAC;IACD,MAAM,UAAU,CAAC,KAAC,WAAW,IAAC,KAAK,EAAC,4CAAS,EAAC,OAAO,EAAE,MAAM,CAAC,cAAc,GAAI,CAAC,CAAC;IAClF,MAAM,UAAU,CAAC,KAAC,WAAW,IAAC,KAAK,EAAC,4CAAS,EAAC,OAAO,EAAE,MAAM,CAAC,WAAW,GAAI,CAAC,CAAC;AACjF,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAAC,MAAyB;IACxE,MAAM,mBAAmB,GAAG,sBAAsB,CAAC,MAAM,CAAC,CAAC;IAC3D,IAAI,mBAAmB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,4BAA4B,CAAC,mBAAmB,CAAC,CAAC;IACvE,MAAM,UAAU,GAAG,MAAM,0BAA0B,CAAC,MAAM,CAAC,CAAC;IAE5D,OAAO,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAC1C,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACtB,OAAO,CAAC,KAAK,CAAC,UAAU,UAAU,EAAE,CAAC,CAAC;IAEtC,OAAO,UAAU,CAAC;AACpB,CAAC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export declare function checkWhitelistConnectivity(jenkinsBaseUrl: string): Promise<
|
|
1
|
+
import { NetworkCheckResult } from "../../types.js";
|
|
2
|
+
export declare function checkWhitelistConnectivity(jenkinsBaseUrl: string): Promise<NetworkCheckResult[]>;
|
|
@@ -1,32 +1,49 @@
|
|
|
1
|
+
import dns from "node:dns/promises";
|
|
1
2
|
import net from "node:net";
|
|
2
3
|
import { getWhitelistTargets } from "../../constants/whitelist.js";
|
|
4
|
+
async function resolveTargetAddresses(host) {
|
|
5
|
+
if (net.isIP(host)) {
|
|
6
|
+
return [host];
|
|
7
|
+
}
|
|
8
|
+
try {
|
|
9
|
+
const records = await dns.lookup(host, { all: true });
|
|
10
|
+
return Array.from(new Set(records.map((item) => item.address)));
|
|
11
|
+
}
|
|
12
|
+
catch {
|
|
13
|
+
return [];
|
|
14
|
+
}
|
|
15
|
+
}
|
|
3
16
|
async function checkTcpTarget(target) {
|
|
4
17
|
return await new Promise((resolve) => {
|
|
5
18
|
const socket = new net.Socket();
|
|
6
19
|
const timeoutMs = target.timeoutMs ?? 4000;
|
|
7
20
|
let resolved = false;
|
|
8
|
-
const
|
|
21
|
+
const addressPromise = resolveTargetAddresses(target.host);
|
|
22
|
+
const finish = async (status, detail, hint) => {
|
|
9
23
|
if (resolved) {
|
|
10
24
|
return;
|
|
11
25
|
}
|
|
12
26
|
resolved = true;
|
|
13
27
|
socket.destroy();
|
|
28
|
+
const resolvedAddresses = await addressPromise;
|
|
14
29
|
resolve({
|
|
15
30
|
name: `网络连通: ${target.name}`,
|
|
16
31
|
status,
|
|
17
32
|
detail,
|
|
18
33
|
hint,
|
|
34
|
+
target,
|
|
35
|
+
resolvedAddresses,
|
|
19
36
|
});
|
|
20
37
|
};
|
|
21
38
|
socket.setTimeout(timeoutMs);
|
|
22
39
|
socket.on("connect", () => {
|
|
23
|
-
finish("pass", `${target.host}:${target.port} 可访问`);
|
|
40
|
+
void finish("pass", `${target.host}:${target.port} 可访问`);
|
|
24
41
|
});
|
|
25
42
|
socket.on("timeout", () => {
|
|
26
|
-
finish("fail", `${target.host}:${target.port} 连接超时`, "请确认白名单和网络策略。");
|
|
43
|
+
void finish("fail", `${target.host}:${target.port} 连接超时`, "请确认白名单和网络策略。");
|
|
27
44
|
});
|
|
28
45
|
socket.on("error", (error) => {
|
|
29
|
-
finish("fail", `${target.host}:${target.port} 连接失败 (${error.message})`, "请确认 DNS、防火墙、代理与白名单。");
|
|
46
|
+
void finish("fail", `${target.host}:${target.port} 连接失败 (${error.message})`, "请确认 DNS、防火墙、代理与白名单。");
|
|
30
47
|
});
|
|
31
48
|
socket.connect(target.port, target.host);
|
|
32
49
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"network.js","sourceRoot":"","sources":["../../../src/core/precheck/network.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,UAAU,CAAC;AAC3B,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAGnE,KAAK,UAAU,cAAc,CAAC,MAAqB;IACjD,OAAO,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QACnC,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;QAChC,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,IAAI,CAAC;QAC3C,IAAI,QAAQ,GAAG,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"network.js","sourceRoot":"","sources":["../../../src/core/precheck/network.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { NetworkCheckResult } from "../../types.js";
|
|
2
|
+
export interface WhitelistFailureReportOptions {
|
|
3
|
+
machineName?: string;
|
|
4
|
+
internalIp?: string;
|
|
5
|
+
externalIp?: string;
|
|
6
|
+
disableExternalIpLookup?: boolean;
|
|
7
|
+
}
|
|
8
|
+
export declare function formatWhitelistFailureReport(failedResults: NetworkCheckResult[], options?: WhitelistFailureReportOptions): Promise<string>;
|
|
9
|
+
export declare function getWhitelistFailureReportPath(): string;
|
|
10
|
+
export declare function saveWhitelistFailureReport(report: string): Promise<string>;
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import { execFile } from "node:child_process";
|
|
2
|
+
import fs from "fs-extra";
|
|
3
|
+
import os from "node:os";
|
|
4
|
+
import path from "node:path";
|
|
5
|
+
import { promisify } from "node:util";
|
|
6
|
+
import { getConfigDir } from "../platform.js";
|
|
7
|
+
const execFileAsync = promisify(execFile);
|
|
8
|
+
function unique(items) {
|
|
9
|
+
return Array.from(new Set(items));
|
|
10
|
+
}
|
|
11
|
+
function pickPrimaryInternalIp() {
|
|
12
|
+
const interfaces = os.networkInterfaces();
|
|
13
|
+
for (const entries of Object.values(interfaces)) {
|
|
14
|
+
for (const item of entries ?? []) {
|
|
15
|
+
if (item.family === "IPv4" && !item.internal) {
|
|
16
|
+
return item.address;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
return undefined;
|
|
21
|
+
}
|
|
22
|
+
function resolveMachineName(options) {
|
|
23
|
+
return options.machineName?.trim() || process.env.TDF_MACHINE_NAME || os.hostname();
|
|
24
|
+
}
|
|
25
|
+
function resolveInternalIp(options) {
|
|
26
|
+
return (options.internalIp?.trim() ||
|
|
27
|
+
process.env.TDF_INTERNAL_IP ||
|
|
28
|
+
pickPrimaryInternalIp() ||
|
|
29
|
+
"待补充");
|
|
30
|
+
}
|
|
31
|
+
function normalizeIpCandidate(value) {
|
|
32
|
+
const candidate = value?.trim();
|
|
33
|
+
if (!candidate) {
|
|
34
|
+
return undefined;
|
|
35
|
+
}
|
|
36
|
+
const ipv4Pattern = /^(?:\d{1,3}\.){3}\d{1,3}$/;
|
|
37
|
+
const ipv6Pattern = /^[0-9a-f:]+$/i;
|
|
38
|
+
if (ipv4Pattern.test(candidate) || ipv6Pattern.test(candidate)) {
|
|
39
|
+
return candidate;
|
|
40
|
+
}
|
|
41
|
+
return undefined;
|
|
42
|
+
}
|
|
43
|
+
async function fetchExternalIpViaCurl() {
|
|
44
|
+
try {
|
|
45
|
+
const { stdout } = await execFileAsync("curl", ["-fsSL", "--max-time", "5", "ip.sb"], {
|
|
46
|
+
timeout: 6000,
|
|
47
|
+
});
|
|
48
|
+
return normalizeIpCandidate(stdout);
|
|
49
|
+
}
|
|
50
|
+
catch {
|
|
51
|
+
return undefined;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
async function resolveExternalIp(options) {
|
|
55
|
+
const explicit = normalizeIpCandidate(options.externalIp) ?? normalizeIpCandidate(process.env.TDF_EXTERNAL_IP);
|
|
56
|
+
if (explicit) {
|
|
57
|
+
return explicit;
|
|
58
|
+
}
|
|
59
|
+
if (options.disableExternalIpLookup) {
|
|
60
|
+
return "待补充";
|
|
61
|
+
}
|
|
62
|
+
return (await fetchExternalIpViaCurl()) ?? "待补充";
|
|
63
|
+
}
|
|
64
|
+
function formatFailureEndpoint(result) {
|
|
65
|
+
const addresses = result.resolvedAddresses.length > 0 ? result.resolvedAddresses : [result.target.host];
|
|
66
|
+
return unique(addresses).map((address) => {
|
|
67
|
+
const hostNote = address === result.target.host ? "" : `, 域名: ${result.target.host}`;
|
|
68
|
+
return `${address}:${result.target.port}(${result.target.name}${hostNote})`;
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
export async function formatWhitelistFailureReport(failedResults, options = {}) {
|
|
72
|
+
const machineName = resolveMachineName(options);
|
|
73
|
+
const internalIp = resolveInternalIp(options);
|
|
74
|
+
const externalIp = await resolveExternalIp(options);
|
|
75
|
+
const endpoints = unique(failedResults.flatMap((item) => formatFailureEndpoint(item)));
|
|
76
|
+
const lines = endpoints.map((item, index) => `${index + 1}. ${item}`);
|
|
77
|
+
return [
|
|
78
|
+
`${machineName}(内网IP:${internalIp},外网IP:${externalIp})需要访问以下服务或者端口:`,
|
|
79
|
+
...lines,
|
|
80
|
+
].join("\n");
|
|
81
|
+
}
|
|
82
|
+
export function getWhitelistFailureReportPath() {
|
|
83
|
+
return path.join(getConfigDir(), "reports", "doctor-whitelist-failures.txt");
|
|
84
|
+
}
|
|
85
|
+
export async function saveWhitelistFailureReport(report) {
|
|
86
|
+
const filePath = getWhitelistFailureReportPath();
|
|
87
|
+
await fs.ensureDir(path.dirname(filePath));
|
|
88
|
+
await fs.writeFile(filePath, `${report}\n`, "utf8");
|
|
89
|
+
return filePath;
|
|
90
|
+
}
|
|
91
|
+
//# sourceMappingURL=networkReport.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"networkReport.js","sourceRoot":"","sources":["../../../src/core/precheck/networkReport.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -12,6 +12,10 @@ export interface NetworkTarget {
|
|
|
12
12
|
port: number;
|
|
13
13
|
timeoutMs?: number;
|
|
14
14
|
}
|
|
15
|
+
export interface NetworkCheckResult extends CheckResult {
|
|
16
|
+
target: NetworkTarget;
|
|
17
|
+
resolvedAddresses: string[];
|
|
18
|
+
}
|
|
15
19
|
export interface ParsedAgentCommand {
|
|
16
20
|
mode: "url" | "jnlpUrl";
|
|
17
21
|
curlLine: string;
|
package/package.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "tuyoo-devflow",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.9",
|
|
4
4
|
"description": "Tuyoo DevFlow CLI for Jenkins and pipeline automation",
|
|
5
5
|
"private": false,
|
|
6
6
|
"type": "module",
|
|
7
7
|
"main": "dist/cli.js",
|
|
8
8
|
"bin": {
|
|
9
|
-
"tdf": "
|
|
9
|
+
"tdf": "dist/cli.js"
|
|
10
10
|
},
|
|
11
11
|
"files": [
|
|
12
12
|
"dist",
|
|
@@ -23,6 +23,11 @@
|
|
|
23
23
|
"typecheck": "tsc -p tsconfig.json --noEmit",
|
|
24
24
|
"verify": "npm run build && npm test",
|
|
25
25
|
"pack:dry": "npm pack --dry-run",
|
|
26
|
+
"release:check": "npm run verify && npm run pack:dry",
|
|
27
|
+
"release:patch": "npm run release:check && npm version patch",
|
|
28
|
+
"release:minor": "npm run release:check && npm version minor",
|
|
29
|
+
"release:major": "npm run release:check && npm version major",
|
|
30
|
+
"release:push": "git push origin main --follow-tags",
|
|
26
31
|
"prepack": "npm run verify",
|
|
27
32
|
"test": "vitest run",
|
|
28
33
|
"test:watch": "vitest"
|