lycheex-system 1.2.0 → 1.3.0
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/dist/index.d.ts +5 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +158 -179
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -55,6 +55,10 @@ export declare class SystemConfigClient {
|
|
|
55
55
|
* 配置系统
|
|
56
56
|
*/
|
|
57
57
|
configure(configCode?: string): Promise<ConfigResult>;
|
|
58
|
+
/**
|
|
59
|
+
* 验证License文件并提取数据
|
|
60
|
+
*/
|
|
61
|
+
private verifyAndExtractLicenseData;
|
|
58
62
|
/**
|
|
59
63
|
* 检查状态
|
|
60
64
|
*/
|
|
@@ -67,13 +71,6 @@ export declare class SystemConfigClient {
|
|
|
67
71
|
* 在线检查
|
|
68
72
|
*/
|
|
69
73
|
checkOnline(): Promise<StatusResult>;
|
|
70
|
-
/**
|
|
71
|
-
* 停用配置
|
|
72
|
-
*/
|
|
73
|
-
disable(reason?: string): Promise<{
|
|
74
|
-
success: boolean;
|
|
75
|
-
error?: string;
|
|
76
|
-
}>;
|
|
77
74
|
/**
|
|
78
75
|
* 生成机器码 - 包含实例唯一性防止批量部署
|
|
79
76
|
*/
|
|
@@ -115,7 +112,7 @@ export declare class SystemConfigClient {
|
|
|
115
112
|
*/
|
|
116
113
|
private removeConfigFile;
|
|
117
114
|
/**
|
|
118
|
-
* 解密配置文件 -
|
|
115
|
+
* 解密配置文件 - 已验证的license数据
|
|
119
116
|
*/
|
|
120
117
|
private decryptConfigFile;
|
|
121
118
|
}
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAYA,MAAM,WAAW,YAAY;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,IAAI,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,OAAO,CAAC;IACf,SAAS,CAAC,EAAE,IAAI,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,eAAe,CAAuB;IAC9C,OAAO,CAAC,SAAS,CAAuB;IACxC,OAAO,CAAC,oBAAoB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAYA,MAAM,WAAW,YAAY;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,IAAI,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,OAAO,CAAC;IACf,SAAS,CAAC,EAAE,IAAI,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,eAAe,CAAuB;IAC9C,OAAO,CAAC,SAAS,CAAuB;IACxC,OAAO,CAAC,oBAAoB,CACyC;gBAEzD,MAAM,GAAE,YAAiB;IAQrC;;OAEG;YACW,aAAa;IAiC3B;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC;IAqCrC;;OAEG;IACG,iBAAiB,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAKjD;;OAEG;IACG,kBAAkB,IAAI,OAAO,CAAC,MAAM,CAAC;IAuC3C;;OAEG;IACG,SAAS,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IA4D3D;;OAEG;YACW,2BAA2B;IAoFzC;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,YAAY,CAAC;IAoB1C;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC,YAAY,CAAC;IA6B3C;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,YAAY,CAAC;IA0C1C;;OAEG;IACG,mBAAmB,IAAI,OAAO,CAAC,MAAM,CAAC;IA6B5C;;OAEG;YACW,sBAAsB;IAwBpC;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAmB3B;;OAEG;IACH,OAAO,CAAC,cAAc;IA2BtB;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAkB7B;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAchC;;OAEG;IACG,cAAc,IAAI,OAAO,CAAC,WAAW,CAAC;IA6B5C;;OAEG;YACW,cAAc;IAqD5B;;OAEG;YACW,cAAc;IA4D5B;;OAEG;YACW,gBAAgB;IAQ9B;;OAEG;YACW,iBAAiB;CAKhC;AAMD,eAAe,kBAAkB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -40,7 +40,7 @@ exports.SystemConfigClient = void 0;
|
|
|
40
40
|
/**
|
|
41
41
|
* 系统配置客户端 - 设备管理和配置验证
|
|
42
42
|
*/
|
|
43
|
-
const { machineId } = require(
|
|
43
|
+
const { machineId } = require("node-machine-id");
|
|
44
44
|
const si = __importStar(require("systeminformation"));
|
|
45
45
|
const fs = __importStar(require("fs"));
|
|
46
46
|
const path = __importStar(require("path"));
|
|
@@ -52,35 +52,37 @@ class SystemConfigClient {
|
|
|
52
52
|
constructor(config = {}) {
|
|
53
53
|
this.serverPublicKey = null;
|
|
54
54
|
this.serverUrl = null;
|
|
55
|
-
this.defaultDecryptionKey =
|
|
55
|
+
this.defaultDecryptionKey = "RAU9ZYEIZSG67RSMGGHF8DL069GGXUT8MOUO0FDEZHK94XP74MZD1386JPWRE7T7";
|
|
56
56
|
this.config = config;
|
|
57
|
-
this.configFilePath =
|
|
58
|
-
|
|
57
|
+
this.configFilePath =
|
|
58
|
+
config.configFilePath || path.join(process.cwd(), "License");
|
|
59
|
+
this.publicKeyPath =
|
|
60
|
+
config.publicKeyPath || path.join(process.cwd(), ".public_key.pem");
|
|
59
61
|
}
|
|
60
62
|
/**
|
|
61
63
|
* 读取和解析.env文件
|
|
62
64
|
*/
|
|
63
65
|
async loadEnvConfig() {
|
|
64
|
-
const envPath = this.config.envPath || path.join(process.cwd(),
|
|
66
|
+
const envPath = this.config.envPath || path.join(process.cwd(), ".env");
|
|
65
67
|
try {
|
|
66
|
-
const envContent = await fs.promises.readFile(envPath,
|
|
68
|
+
const envContent = await fs.promises.readFile(envPath, "utf8");
|
|
67
69
|
const envConfig = {};
|
|
68
|
-
envContent.split(
|
|
70
|
+
envContent.split("\n").forEach((line) => {
|
|
69
71
|
const trimmedLine = line.trim();
|
|
70
|
-
if (trimmedLine && !trimmedLine.startsWith(
|
|
71
|
-
const [key, ...valueParts] = trimmedLine.split(
|
|
72
|
+
if (trimmedLine && !trimmedLine.startsWith("#")) {
|
|
73
|
+
const [key, ...valueParts] = trimmedLine.split("=");
|
|
72
74
|
if (key && valueParts.length > 0) {
|
|
73
|
-
envConfig[key.trim()] = valueParts.join(
|
|
75
|
+
envConfig[key.trim()] = valueParts.join("=").trim();
|
|
74
76
|
}
|
|
75
77
|
}
|
|
76
78
|
});
|
|
77
79
|
return {
|
|
78
80
|
activationCode: envConfig.ACTIVATION_CODE,
|
|
79
|
-
activationServer: envConfig.ACTIVATION_SERVER
|
|
81
|
+
activationServer: envConfig.ACTIVATION_SERVER,
|
|
80
82
|
};
|
|
81
83
|
}
|
|
82
84
|
catch (error) {
|
|
83
|
-
console.warn(
|
|
85
|
+
console.warn("Failed to read .env file:", error instanceof Error ? error.message : "Unknown error");
|
|
84
86
|
return {};
|
|
85
87
|
}
|
|
86
88
|
}
|
|
@@ -99,16 +101,16 @@ class SystemConfigClient {
|
|
|
99
101
|
// 从.env文件读取加密的服务器URL
|
|
100
102
|
const envConfig = await this.loadEnvConfig();
|
|
101
103
|
if (!envConfig.activationServer) {
|
|
102
|
-
throw new Error(
|
|
104
|
+
throw new Error("ACTIVATION_SERVER not found in .env file and no serverUrl provided in config");
|
|
103
105
|
}
|
|
104
106
|
try {
|
|
105
107
|
const decryptionKey = this.config.decryptionKey || this.defaultDecryptionKey;
|
|
106
108
|
this.serverUrl = device_utils_1.CryptoUtils.decrypt(envConfig.activationServer, decryptionKey);
|
|
107
|
-
console.log(
|
|
109
|
+
console.log("🔓 Decrypted server URL successfully");
|
|
108
110
|
return this.serverUrl;
|
|
109
111
|
}
|
|
110
112
|
catch (error) {
|
|
111
|
-
throw new Error(`Failed to decrypt ACTIVATION_SERVER: ${error instanceof Error ? error.message :
|
|
113
|
+
throw new Error(`Failed to decrypt ACTIVATION_SERVER: ${error instanceof Error ? error.message : "Unknown error"}`);
|
|
112
114
|
}
|
|
113
115
|
}
|
|
114
116
|
/**
|
|
@@ -127,7 +129,7 @@ class SystemConfigClient {
|
|
|
127
129
|
}
|
|
128
130
|
// 尝试从本地文件读取
|
|
129
131
|
try {
|
|
130
|
-
const publicKey = await fs.promises.readFile(this.publicKeyPath,
|
|
132
|
+
const publicKey = await fs.promises.readFile(this.publicKeyPath, "utf8");
|
|
131
133
|
this.serverPublicKey = publicKey;
|
|
132
134
|
return publicKey;
|
|
133
135
|
}
|
|
@@ -137,16 +139,16 @@ class SystemConfigClient {
|
|
|
137
139
|
try {
|
|
138
140
|
const serverUrl = await this.getServerUrl();
|
|
139
141
|
const response = await axios_1.default.get(`${serverUrl}/api/public-key`, {
|
|
140
|
-
timeout: this.config.timeout || 30000
|
|
142
|
+
timeout: this.config.timeout || 30000,
|
|
141
143
|
});
|
|
142
144
|
if (response.data.success) {
|
|
143
145
|
this.serverPublicKey = response.data.publicKey;
|
|
144
146
|
// 保存到本地文件
|
|
145
|
-
await fs.promises.writeFile(this.publicKeyPath, this.serverPublicKey,
|
|
147
|
+
await fs.promises.writeFile(this.publicKeyPath, this.serverPublicKey, "utf8");
|
|
146
148
|
return this.serverPublicKey;
|
|
147
149
|
}
|
|
148
150
|
else {
|
|
149
|
-
throw new Error(
|
|
151
|
+
throw new Error("Failed to get public key from server");
|
|
150
152
|
}
|
|
151
153
|
}
|
|
152
154
|
catch (error) {
|
|
@@ -163,7 +165,7 @@ class SystemConfigClient {
|
|
|
163
165
|
if (!envConfigCode) {
|
|
164
166
|
return {
|
|
165
167
|
success: false,
|
|
166
|
-
error:
|
|
168
|
+
error: "Config code not provided and ACTIVATION_CODE not found in .env file",
|
|
167
169
|
};
|
|
168
170
|
}
|
|
169
171
|
configCode = envConfigCode;
|
|
@@ -176,33 +178,96 @@ class SystemConfigClient {
|
|
|
176
178
|
const response = await axios_1.default.post(`${serverUrl}/api/activate`, {
|
|
177
179
|
licenseCode: configCode,
|
|
178
180
|
machineCode,
|
|
179
|
-
machineInfo
|
|
181
|
+
machineInfo,
|
|
180
182
|
}, {
|
|
181
|
-
timeout: this.config.timeout || 30000
|
|
183
|
+
timeout: this.config.timeout || 30000,
|
|
182
184
|
});
|
|
183
185
|
if (response.data.success) {
|
|
184
|
-
//
|
|
185
|
-
|
|
186
|
+
// 验证并保存配置文件
|
|
187
|
+
const licenseFile = response.data.data.licenseFile;
|
|
188
|
+
const verifiedData = await this.verifyAndExtractLicenseData(licenseFile);
|
|
189
|
+
await this.saveConfigFile(verifiedData);
|
|
186
190
|
return {
|
|
187
191
|
success: true,
|
|
188
192
|
configId: response.data.data.activationId,
|
|
189
|
-
expiresAt: new Date(response.data.data.expiresAt)
|
|
193
|
+
expiresAt: new Date(response.data.data.expiresAt),
|
|
190
194
|
};
|
|
191
195
|
}
|
|
192
196
|
else {
|
|
193
197
|
return {
|
|
194
198
|
success: false,
|
|
195
|
-
error: response.data.message
|
|
199
|
+
error: response.data.message,
|
|
196
200
|
};
|
|
197
201
|
}
|
|
198
202
|
}
|
|
199
203
|
catch (error) {
|
|
200
204
|
return {
|
|
201
205
|
success: false,
|
|
202
|
-
error: error.message ||
|
|
206
|
+
error: error.message || "Activation failed",
|
|
203
207
|
};
|
|
204
208
|
}
|
|
205
209
|
}
|
|
210
|
+
/**
|
|
211
|
+
* 验证License文件并提取数据
|
|
212
|
+
*/
|
|
213
|
+
async verifyAndExtractLicenseData(licenseFile) {
|
|
214
|
+
if (licenseFile.header?.version !== "2.0") {
|
|
215
|
+
throw new Error("Unsupported license file version");
|
|
216
|
+
}
|
|
217
|
+
const { payload, signature, integrity } = licenseFile;
|
|
218
|
+
if (!payload || !signature) {
|
|
219
|
+
throw new Error("Invalid license file structure");
|
|
220
|
+
}
|
|
221
|
+
// 第一层验证:文件完整性验证
|
|
222
|
+
if (integrity && this.serverPublicKey) {
|
|
223
|
+
console.log("🔍 Performing file integrity verification...");
|
|
224
|
+
// 重建基础license文件进行哈希计算
|
|
225
|
+
const baseLicense = {
|
|
226
|
+
header: licenseFile.header,
|
|
227
|
+
payload: licenseFile.payload,
|
|
228
|
+
signature: licenseFile.signature,
|
|
229
|
+
};
|
|
230
|
+
const licenseString = JSON.stringify(baseLicense, null, 2);
|
|
231
|
+
const calculatedHash = crypto
|
|
232
|
+
.createHash("sha256")
|
|
233
|
+
.update(licenseString, "utf8")
|
|
234
|
+
.digest("hex");
|
|
235
|
+
if (calculatedHash !== integrity.fileHash) {
|
|
236
|
+
throw new Error("File integrity check failed: hash mismatch");
|
|
237
|
+
}
|
|
238
|
+
// 验证完整性签名
|
|
239
|
+
const integrityData = {
|
|
240
|
+
fileHash: integrity.fileHash,
|
|
241
|
+
timestamp: licenseFile.header.timestamp,
|
|
242
|
+
version: licenseFile.header.version,
|
|
243
|
+
};
|
|
244
|
+
const integrityValid = crypto.verify("sha256", Buffer.from(JSON.stringify(integrityData)), {
|
|
245
|
+
key: this.serverPublicKey,
|
|
246
|
+
padding: crypto.constants.RSA_PKCS1_PSS_PADDING,
|
|
247
|
+
}, Buffer.from(integrity.signature, "base64"));
|
|
248
|
+
if (!integrityValid) {
|
|
249
|
+
throw new Error("File integrity signature verification failed");
|
|
250
|
+
}
|
|
251
|
+
console.log("✅ File integrity verification passed");
|
|
252
|
+
}
|
|
253
|
+
// Base64解码
|
|
254
|
+
const decodedPayload = Buffer.from(payload, "base64").toString("utf8");
|
|
255
|
+
const licenseData = JSON.parse(decodedPayload);
|
|
256
|
+
// 第二层验证:RSA签名验证(对原始payload数据)
|
|
257
|
+
if (this.serverPublicKey) {
|
|
258
|
+
console.log("🔍 Performing RSA signature verification...");
|
|
259
|
+
const isValid = crypto.verify("sha256", Buffer.from(decodedPayload), {
|
|
260
|
+
key: this.serverPublicKey,
|
|
261
|
+
padding: crypto.constants.RSA_PKCS1_PSS_PADDING,
|
|
262
|
+
}, Buffer.from(signature, "base64"));
|
|
263
|
+
if (!isValid) {
|
|
264
|
+
throw new Error("RSA signature verification failed");
|
|
265
|
+
}
|
|
266
|
+
console.log("✅ RSA signature verification passed");
|
|
267
|
+
}
|
|
268
|
+
console.log("🛡️ All security verifications passed");
|
|
269
|
+
return licenseData;
|
|
270
|
+
}
|
|
206
271
|
/**
|
|
207
272
|
* 检查状态
|
|
208
273
|
*/
|
|
@@ -221,7 +286,7 @@ class SystemConfigClient {
|
|
|
221
286
|
catch (error) {
|
|
222
287
|
return {
|
|
223
288
|
valid: false,
|
|
224
|
-
error: error.message ||
|
|
289
|
+
error: error.message || "Validation failed",
|
|
225
290
|
};
|
|
226
291
|
}
|
|
227
292
|
}
|
|
@@ -231,22 +296,22 @@ class SystemConfigClient {
|
|
|
231
296
|
async checkOffline() {
|
|
232
297
|
const configFile = await this.readConfigFile();
|
|
233
298
|
if (!configFile) {
|
|
234
|
-
return { valid: false, error:
|
|
299
|
+
return { valid: false, error: "Config file not found" };
|
|
235
300
|
}
|
|
236
301
|
const configData = await this.decryptConfigFile(configFile);
|
|
237
302
|
const currentMachineCode = await this.generateMachineCode();
|
|
238
303
|
if (configData.machineCode !== currentMachineCode) {
|
|
239
|
-
return { valid: false, error:
|
|
304
|
+
return { valid: false, error: "Machine code mismatch" };
|
|
240
305
|
}
|
|
241
306
|
const expiresAt = new Date(configData.expiresAt);
|
|
242
307
|
if (new Date() > expiresAt) {
|
|
243
|
-
return { valid: false, error:
|
|
308
|
+
return { valid: false, error: "Config expired" };
|
|
244
309
|
}
|
|
245
310
|
const remainingDays = Math.ceil((expiresAt.getTime() - new Date().getTime()) / (1000 * 60 * 60 * 24));
|
|
246
311
|
return {
|
|
247
312
|
valid: true,
|
|
248
313
|
expiresAt,
|
|
249
|
-
remainingDays
|
|
314
|
+
remainingDays,
|
|
250
315
|
};
|
|
251
316
|
}
|
|
252
317
|
/**
|
|
@@ -256,68 +321,38 @@ class SystemConfigClient {
|
|
|
256
321
|
try {
|
|
257
322
|
const configFile = await this.readConfigFile();
|
|
258
323
|
if (!configFile) {
|
|
259
|
-
return { valid: false, error:
|
|
324
|
+
return { valid: false, error: "Config file not found" };
|
|
260
325
|
}
|
|
261
326
|
const configData = await this.decryptConfigFile(configFile);
|
|
262
327
|
const machineCode = await this.generateMachineCode();
|
|
263
328
|
const serverUrl = await this.getServerUrl();
|
|
264
329
|
const response = await axios_1.default.post(`${serverUrl}/api/validate`, {
|
|
265
330
|
activationId: configData.activationId,
|
|
266
|
-
machineCode
|
|
331
|
+
machineCode,
|
|
267
332
|
}, {
|
|
268
|
-
timeout: this.config.timeout || 30000
|
|
333
|
+
timeout: this.config.timeout || 30000,
|
|
269
334
|
});
|
|
270
335
|
if (response.data.success && response.data.data.valid) {
|
|
271
336
|
return {
|
|
272
337
|
valid: true,
|
|
273
338
|
expiresAt: new Date(response.data.data.expiresAt),
|
|
274
|
-
remainingDays: response.data.data.remainingDays
|
|
339
|
+
remainingDays: response.data.data.remainingDays,
|
|
275
340
|
};
|
|
276
341
|
}
|
|
277
342
|
else {
|
|
278
343
|
return {
|
|
279
344
|
valid: false,
|
|
280
|
-
error: response.data.message ||
|
|
345
|
+
error: response.data.message || "Online check failed",
|
|
281
346
|
};
|
|
282
347
|
}
|
|
283
348
|
}
|
|
284
349
|
catch (error) {
|
|
285
350
|
return {
|
|
286
351
|
valid: false,
|
|
287
|
-
error: error.message ||
|
|
352
|
+
error: error.message || "Online check failed",
|
|
288
353
|
};
|
|
289
354
|
}
|
|
290
355
|
}
|
|
291
|
-
/**
|
|
292
|
-
* 停用配置
|
|
293
|
-
*/
|
|
294
|
-
async disable(reason) {
|
|
295
|
-
try {
|
|
296
|
-
const configFile = await this.readConfigFile();
|
|
297
|
-
if (!configFile) {
|
|
298
|
-
return { success: false, error: 'Config file not found' };
|
|
299
|
-
}
|
|
300
|
-
const configData = await this.decryptConfigFile(configFile);
|
|
301
|
-
const machineCode = await this.generateMachineCode();
|
|
302
|
-
const serverUrl = await this.getServerUrl();
|
|
303
|
-
const response = await axios_1.default.post(`${serverUrl}/api/deactivate`, {
|
|
304
|
-
activationId: configData.activationId,
|
|
305
|
-
machineCode,
|
|
306
|
-
reason
|
|
307
|
-
});
|
|
308
|
-
if (response.data.success) {
|
|
309
|
-
// 删除本地配置文件
|
|
310
|
-
await this.removeConfigFile();
|
|
311
|
-
return { success: true };
|
|
312
|
-
}
|
|
313
|
-
else {
|
|
314
|
-
return { success: false, error: response.data.message };
|
|
315
|
-
}
|
|
316
|
-
}
|
|
317
|
-
catch (error) {
|
|
318
|
-
return { success: false, error: error.message || 'Disable failed' };
|
|
319
|
-
}
|
|
320
|
-
}
|
|
321
356
|
/**
|
|
322
357
|
* 生成机器码 - 包含实例唯一性防止批量部署
|
|
323
358
|
*/
|
|
@@ -327,16 +362,17 @@ class SystemConfigClient {
|
|
|
327
362
|
const combinedData = {
|
|
328
363
|
hardware: hardwareFingerprint,
|
|
329
364
|
instance: instanceIdentity,
|
|
330
|
-
timestamp: this.getInstallationTimestamp()
|
|
365
|
+
timestamp: this.getInstallationTimestamp(),
|
|
331
366
|
};
|
|
332
367
|
const dataString = JSON.stringify(combinedData, Object.keys(combinedData).sort());
|
|
333
|
-
const machineCode = crypto
|
|
368
|
+
const machineCode = crypto
|
|
369
|
+
.createHash("sha256")
|
|
334
370
|
.update(dataString)
|
|
335
|
-
.digest(
|
|
371
|
+
.digest("hex")
|
|
336
372
|
.substring(0, 32);
|
|
337
|
-
console.log(
|
|
373
|
+
console.log("🔧 Machine code generated:");
|
|
338
374
|
console.log(`📁 Directory: ${instanceIdentity.workingDirectory}`);
|
|
339
|
-
console.log(`🐳 Container: ${instanceIdentity.containerId ||
|
|
375
|
+
console.log(`🐳 Container: ${instanceIdentity.containerId || "host"}`);
|
|
340
376
|
console.log(`🔖 Instance: ${instanceIdentity.instanceName}`);
|
|
341
377
|
console.log(`🆔 Code: ${machineCode}`);
|
|
342
378
|
return machineCode;
|
|
@@ -349,18 +385,19 @@ class SystemConfigClient {
|
|
|
349
385
|
const [cpu, osInfo, system] = await Promise.all([
|
|
350
386
|
si.cpu(),
|
|
351
387
|
si.osInfo(),
|
|
352
|
-
si.system()
|
|
388
|
+
si.system(),
|
|
353
389
|
]);
|
|
354
390
|
const hardwareInfo = {
|
|
355
391
|
machineId: deviceId,
|
|
356
392
|
cpu: `${cpu.manufacturer}-${cpu.brand}-${cpu.cores}`,
|
|
357
393
|
os: `${osInfo.platform}-${osInfo.arch}-${osInfo.distro}`,
|
|
358
394
|
system: `${system.manufacturer}-${system.model}`,
|
|
359
|
-
networkInterfaces: this.getNetworkFingerprint()
|
|
395
|
+
networkInterfaces: this.getNetworkFingerprint(),
|
|
360
396
|
};
|
|
361
|
-
return crypto
|
|
397
|
+
return crypto
|
|
398
|
+
.createHash("sha256")
|
|
362
399
|
.update(JSON.stringify(hardwareInfo))
|
|
363
|
-
.digest(
|
|
400
|
+
.digest("hex")
|
|
364
401
|
.substring(0, 16);
|
|
365
402
|
}
|
|
366
403
|
/**
|
|
@@ -370,12 +407,12 @@ class SystemConfigClient {
|
|
|
370
407
|
const identity = {
|
|
371
408
|
workingDirectory: process.cwd(),
|
|
372
409
|
containerId: this.getContainerId(),
|
|
373
|
-
instanceName: this.config.instanceId || process.env.INSTANCE_ID ||
|
|
374
|
-
listenPort: parseInt(process.env.PORT ||
|
|
410
|
+
instanceName: this.config.instanceId || process.env.INSTANCE_ID || "default",
|
|
411
|
+
listenPort: parseInt(process.env.PORT || "") || undefined,
|
|
375
412
|
};
|
|
376
413
|
// 生成实例UUID
|
|
377
|
-
const instanceData = `${identity.workingDirectory}-${identity.containerId ||
|
|
378
|
-
const namespace =
|
|
414
|
+
const instanceData = `${identity.workingDirectory}-${identity.containerId || "host"}-${identity.instanceName}`;
|
|
415
|
+
const namespace = "6ba7b810-9dad-11d1-80b4-00c04fd430c8";
|
|
379
416
|
identity.instanceUUID = (0, uuid_1.v5)(instanceData, namespace);
|
|
380
417
|
return identity;
|
|
381
418
|
}
|
|
@@ -388,16 +425,16 @@ class SystemConfigClient {
|
|
|
388
425
|
return process.env.CONTAINER_ID;
|
|
389
426
|
}
|
|
390
427
|
// 检查 /.dockerenv 文件
|
|
391
|
-
if (fs.existsSync(
|
|
392
|
-
const os = require(
|
|
428
|
+
if (fs.existsSync("/.dockerenv")) {
|
|
429
|
+
const os = require("os");
|
|
393
430
|
const hostname = os.hostname();
|
|
394
431
|
if (hostname.length === 12 && /^[a-f0-9]+$/.test(hostname)) {
|
|
395
432
|
return hostname;
|
|
396
433
|
}
|
|
397
434
|
}
|
|
398
435
|
// 读取 /proc/self/cgroup (Linux)
|
|
399
|
-
if (fs.existsSync(
|
|
400
|
-
const cgroup = fs.readFileSync(
|
|
436
|
+
if (fs.existsSync("/proc/self/cgroup")) {
|
|
437
|
+
const cgroup = fs.readFileSync("/proc/self/cgroup", "utf8");
|
|
401
438
|
const containerMatch = cgroup.match(/\/docker\/([a-f0-9]{64})/);
|
|
402
439
|
if (containerMatch) {
|
|
403
440
|
return containerMatch[1].substring(0, 12);
|
|
@@ -409,32 +446,32 @@ class SystemConfigClient {
|
|
|
409
446
|
* 获取网络接口指纹
|
|
410
447
|
*/
|
|
411
448
|
getNetworkFingerprint() {
|
|
412
|
-
const os = require(
|
|
449
|
+
const os = require("os");
|
|
413
450
|
const interfaces = os.networkInterfaces();
|
|
414
451
|
const macs = [];
|
|
415
452
|
Object.values(interfaces).forEach((iface) => {
|
|
416
453
|
if (iface) {
|
|
417
454
|
iface.forEach((config) => {
|
|
418
|
-
if (config.mac && config.mac !==
|
|
455
|
+
if (config.mac && config.mac !== "00:00:00:00:00:00") {
|
|
419
456
|
macs.push(config.mac);
|
|
420
457
|
}
|
|
421
458
|
});
|
|
422
459
|
}
|
|
423
460
|
});
|
|
424
|
-
return macs.sort().join(
|
|
461
|
+
return macs.sort().join("-");
|
|
425
462
|
}
|
|
426
463
|
/**
|
|
427
464
|
* 获取首次安装时间戳(持久化)
|
|
428
465
|
*/
|
|
429
466
|
getInstallationTimestamp() {
|
|
430
|
-
const os = require(
|
|
431
|
-
const timestampFile = path.join(os.tmpdir(),
|
|
467
|
+
const os = require("os");
|
|
468
|
+
const timestampFile = path.join(os.tmpdir(), ".lycheex-install-time");
|
|
432
469
|
if (fs.existsSync(timestampFile)) {
|
|
433
|
-
const timestamp = fs.readFileSync(timestampFile,
|
|
470
|
+
const timestamp = fs.readFileSync(timestampFile, "utf8");
|
|
434
471
|
return parseInt(timestamp);
|
|
435
472
|
}
|
|
436
473
|
const now = Date.now();
|
|
437
|
-
fs.writeFileSync(timestampFile, now.toString(),
|
|
474
|
+
fs.writeFileSync(timestampFile, now.toString(), "utf8");
|
|
438
475
|
return now;
|
|
439
476
|
}
|
|
440
477
|
/**
|
|
@@ -445,7 +482,7 @@ class SystemConfigClient {
|
|
|
445
482
|
const [cpu, osInfo, mem] = await Promise.all([
|
|
446
483
|
si.cpu(),
|
|
447
484
|
si.osInfo(),
|
|
448
|
-
si.mem()
|
|
485
|
+
si.mem(),
|
|
449
486
|
]);
|
|
450
487
|
return {
|
|
451
488
|
os: `${osInfo.platform} ${osInfo.release}`,
|
|
@@ -453,18 +490,18 @@ class SystemConfigClient {
|
|
|
453
490
|
memory: `${Math.round(mem.total / 1024 / 1024 / 1024)}GB`,
|
|
454
491
|
platform: osInfo.platform,
|
|
455
492
|
arch: osInfo.arch,
|
|
456
|
-
nodeVersion: process.version
|
|
493
|
+
nodeVersion: process.version,
|
|
457
494
|
};
|
|
458
495
|
}
|
|
459
496
|
catch (error) {
|
|
460
|
-
const os = require(
|
|
497
|
+
const os = require("os");
|
|
461
498
|
return {
|
|
462
499
|
os: `${os.platform()} ${os.release()}`,
|
|
463
500
|
cpu: os.cpus()[0].model,
|
|
464
501
|
memory: `${Math.round(os.totalmem() / 1024 / 1024 / 1024)}GB`,
|
|
465
502
|
platform: os.platform(),
|
|
466
503
|
arch: os.arch(),
|
|
467
|
-
nodeVersion: process.version
|
|
504
|
+
nodeVersion: process.version,
|
|
468
505
|
};
|
|
469
506
|
}
|
|
470
507
|
}
|
|
@@ -477,40 +514,41 @@ class SystemConfigClient {
|
|
|
477
514
|
const machineCode = await this.generateMachineCode();
|
|
478
515
|
// 生成加密密钥(结合机器码和默认密钥)
|
|
479
516
|
const keyMaterial = `${this.defaultDecryptionKey}-${machineCode}`;
|
|
480
|
-
const encryptionKey = crypto
|
|
517
|
+
const encryptionKey = crypto
|
|
518
|
+
.createHash("sha256")
|
|
481
519
|
.update(keyMaterial)
|
|
482
520
|
.digest();
|
|
483
521
|
// 生成随机初始化向量
|
|
484
522
|
const iv = crypto.randomBytes(16);
|
|
485
523
|
// 创建加密器
|
|
486
|
-
const cipher = crypto.createCipheriv(
|
|
524
|
+
const cipher = crypto.createCipheriv("aes-256-cbc", encryptionKey, iv);
|
|
487
525
|
// 加密数据
|
|
488
526
|
const jsonData = JSON.stringify(configFile);
|
|
489
527
|
const encrypted = Buffer.concat([
|
|
490
|
-
cipher.update(jsonData,
|
|
491
|
-
cipher.final()
|
|
528
|
+
cipher.update(jsonData, "utf8"),
|
|
529
|
+
cipher.final(),
|
|
492
530
|
]);
|
|
493
531
|
// 生成HMAC用于完整性验证
|
|
494
|
-
const hmac = crypto.createHmac(
|
|
532
|
+
const hmac = crypto.createHmac("sha256", encryptionKey);
|
|
495
533
|
hmac.update(encrypted);
|
|
496
534
|
const authTag = hmac.digest();
|
|
497
535
|
// 组合最终的加密文件格式
|
|
498
536
|
// [魔术字节(4)] [版本(1)] [IV(16)] [认证标签(32)] [加密数据]
|
|
499
|
-
const magicBytes = Buffer.from(
|
|
537
|
+
const magicBytes = Buffer.from("SYCF", "utf8"); // System Config File
|
|
500
538
|
const version = Buffer.from([0x01]); // 版本1
|
|
501
539
|
const encryptedFile = Buffer.concat([
|
|
502
540
|
magicBytes,
|
|
503
541
|
version,
|
|
504
542
|
iv,
|
|
505
543
|
authTag,
|
|
506
|
-
encrypted
|
|
544
|
+
encrypted,
|
|
507
545
|
]);
|
|
508
546
|
// 保存为二进制文件
|
|
509
547
|
await fs.promises.writeFile(this.configFilePath, encryptedFile);
|
|
510
|
-
console.log(
|
|
548
|
+
console.log("🔐 配置文件已加密保存");
|
|
511
549
|
}
|
|
512
550
|
catch (error) {
|
|
513
|
-
console.error(
|
|
551
|
+
console.error("保存加密配置文件失败:", error);
|
|
514
552
|
throw error;
|
|
515
553
|
}
|
|
516
554
|
}
|
|
@@ -522,14 +560,14 @@ class SystemConfigClient {
|
|
|
522
560
|
// 读取二进制文件
|
|
523
561
|
const encryptedFile = await fs.promises.readFile(this.configFilePath);
|
|
524
562
|
// 验证文件格式
|
|
525
|
-
const magicBytes = encryptedFile.slice(0, 4).toString(
|
|
526
|
-
if (magicBytes !==
|
|
527
|
-
throw new Error(
|
|
563
|
+
const magicBytes = encryptedFile.slice(0, 4).toString("utf8");
|
|
564
|
+
if (magicBytes !== "SYCF") {
|
|
565
|
+
throw new Error("Invalid config file format");
|
|
528
566
|
}
|
|
529
567
|
// 读取版本
|
|
530
568
|
const version = encryptedFile[4];
|
|
531
569
|
if (version !== 0x01) {
|
|
532
|
-
throw new Error(
|
|
570
|
+
throw new Error("Unsupported config file version");
|
|
533
571
|
}
|
|
534
572
|
// 提取各部分
|
|
535
573
|
const iv = encryptedFile.slice(5, 21);
|
|
@@ -539,37 +577,28 @@ class SystemConfigClient {
|
|
|
539
577
|
const machineCode = await this.generateMachineCode();
|
|
540
578
|
// 生成解密密钥
|
|
541
579
|
const keyMaterial = `${this.defaultDecryptionKey}-${machineCode}`;
|
|
542
|
-
const decryptionKey = crypto
|
|
580
|
+
const decryptionKey = crypto
|
|
581
|
+
.createHash("sha256")
|
|
543
582
|
.update(keyMaterial)
|
|
544
583
|
.digest();
|
|
545
584
|
// 验证HMAC
|
|
546
|
-
const hmac = crypto.createHmac(
|
|
585
|
+
const hmac = crypto.createHmac("sha256", decryptionKey);
|
|
547
586
|
hmac.update(encrypted);
|
|
548
587
|
const calculatedTag = hmac.digest();
|
|
549
588
|
if (!authTag.equals(calculatedTag)) {
|
|
550
|
-
throw new Error(
|
|
589
|
+
throw new Error("Config file integrity check failed");
|
|
551
590
|
}
|
|
552
591
|
// 解密数据
|
|
553
|
-
const decipher = crypto.createDecipheriv(
|
|
592
|
+
const decipher = crypto.createDecipheriv("aes-256-cbc", decryptionKey, iv);
|
|
554
593
|
const decrypted = Buffer.concat([
|
|
555
594
|
decipher.update(encrypted),
|
|
556
|
-
decipher.final()
|
|
595
|
+
decipher.final(),
|
|
557
596
|
]);
|
|
558
597
|
// 解析JSON
|
|
559
|
-
const jsonData = decrypted.toString(
|
|
598
|
+
const jsonData = decrypted.toString("utf8");
|
|
560
599
|
return JSON.parse(jsonData);
|
|
561
600
|
}
|
|
562
601
|
catch (error) {
|
|
563
|
-
// 如果是新格式解密失败,尝试读取旧格式(向后兼容)
|
|
564
|
-
if (error.message === 'Invalid config file format') {
|
|
565
|
-
try {
|
|
566
|
-
const data = await fs.promises.readFile(this.configFilePath, 'utf8');
|
|
567
|
-
return JSON.parse(data);
|
|
568
|
-
}
|
|
569
|
-
catch {
|
|
570
|
-
return null;
|
|
571
|
-
}
|
|
572
|
-
}
|
|
573
602
|
return null;
|
|
574
603
|
}
|
|
575
604
|
}
|
|
@@ -585,62 +614,12 @@ class SystemConfigClient {
|
|
|
585
614
|
}
|
|
586
615
|
}
|
|
587
616
|
/**
|
|
588
|
-
* 解密配置文件 -
|
|
617
|
+
* 解密配置文件 - 已验证的license数据
|
|
589
618
|
*/
|
|
590
619
|
async decryptConfigFile(configFile) {
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
const { payload, signature, integrity } = configFile;
|
|
595
|
-
if (!payload || !signature) {
|
|
596
|
-
throw new Error('Invalid config file structure');
|
|
597
|
-
}
|
|
598
|
-
// 第一层验证:文件完整性验证
|
|
599
|
-
if (integrity && this.serverPublicKey) {
|
|
600
|
-
console.log('🔍 Performing file integrity verification...');
|
|
601
|
-
// 重建基础license文件进行哈希计算
|
|
602
|
-
const baseLicense = {
|
|
603
|
-
header: configFile.header,
|
|
604
|
-
payload: configFile.payload,
|
|
605
|
-
signature: configFile.signature
|
|
606
|
-
};
|
|
607
|
-
const licenseString = JSON.stringify(baseLicense, null, 2);
|
|
608
|
-
const calculatedHash = require('crypto').createHash('sha256').update(licenseString, 'utf8').digest('hex');
|
|
609
|
-
if (calculatedHash !== integrity.fileHash) {
|
|
610
|
-
throw new Error('File integrity check failed: hash mismatch');
|
|
611
|
-
}
|
|
612
|
-
// 验证完整性签名
|
|
613
|
-
const integrityData = {
|
|
614
|
-
fileHash: integrity.fileHash,
|
|
615
|
-
timestamp: configFile.header.timestamp,
|
|
616
|
-
version: configFile.header.version
|
|
617
|
-
};
|
|
618
|
-
const integrityValid = require('crypto').verify('sha256', Buffer.from(JSON.stringify(integrityData)), {
|
|
619
|
-
key: this.serverPublicKey,
|
|
620
|
-
padding: require('crypto').constants.RSA_PKCS1_PSS_PADDING
|
|
621
|
-
}, Buffer.from(integrity.signature, 'base64'));
|
|
622
|
-
if (!integrityValid) {
|
|
623
|
-
throw new Error('File integrity signature verification failed');
|
|
624
|
-
}
|
|
625
|
-
console.log('✅ File integrity verification passed');
|
|
626
|
-
}
|
|
627
|
-
// Base64解码
|
|
628
|
-
const decodedPayload = Buffer.from(payload, 'base64').toString('utf8');
|
|
629
|
-
const licenseData = JSON.parse(decodedPayload);
|
|
630
|
-
// 第二层验证:RSA签名验证(对原始payload数据)
|
|
631
|
-
if (this.serverPublicKey) {
|
|
632
|
-
console.log('🔍 Performing RSA signature verification...');
|
|
633
|
-
const isValid = require('crypto').verify('sha256', Buffer.from(decodedPayload), {
|
|
634
|
-
key: this.serverPublicKey,
|
|
635
|
-
padding: require('crypto').constants.RSA_PKCS1_PSS_PADDING
|
|
636
|
-
}, Buffer.from(signature, 'base64'));
|
|
637
|
-
if (!isValid) {
|
|
638
|
-
throw new Error('RSA signature verification failed');
|
|
639
|
-
}
|
|
640
|
-
console.log('✅ RSA signature verification passed');
|
|
641
|
-
}
|
|
642
|
-
console.log('🛡️ All security verifications passed');
|
|
643
|
-
return licenseData;
|
|
620
|
+
// 现在configFile是从readConfigFile()中AES解密得到的已验证license数据
|
|
621
|
+
// 不需要再次进行RSA验证,因为在保存时已经验证过了
|
|
622
|
+
return configFile;
|
|
644
623
|
}
|
|
645
624
|
}
|
|
646
625
|
exports.SystemConfigClient = SystemConfigClient;
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|