xray-manager 1.8.5 → 2.0.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.
Files changed (324) hide show
  1. package/README.md +102 -42
  2. package/dist/cli.mjs +8587 -0
  3. package/dist/cli.mjs.map +7 -0
  4. package/package.json +13 -5
  5. package/dist/cli.d.ts +0 -11
  6. package/dist/cli.d.ts.map +0 -1
  7. package/dist/cli.js +0 -134
  8. package/dist/cli.js.map +0 -1
  9. package/dist/commands/clash.d.ts +0 -20
  10. package/dist/commands/clash.d.ts.map +0 -1
  11. package/dist/commands/clash.js +0 -156
  12. package/dist/commands/clash.js.map +0 -1
  13. package/dist/commands/config.d.ts +0 -56
  14. package/dist/commands/config.d.ts.map +0 -1
  15. package/dist/commands/config.js +0 -461
  16. package/dist/commands/config.js.map +0 -1
  17. package/dist/commands/interactive.d.ts +0 -55
  18. package/dist/commands/interactive.d.ts.map +0 -1
  19. package/dist/commands/interactive.js +0 -418
  20. package/dist/commands/interactive.js.map +0 -1
  21. package/dist/commands/logs.d.ts +0 -62
  22. package/dist/commands/logs.d.ts.map +0 -1
  23. package/dist/commands/logs.js +0 -389
  24. package/dist/commands/logs.js.map +0 -1
  25. package/dist/commands/quota.d.ts +0 -54
  26. package/dist/commands/quota.d.ts.map +0 -1
  27. package/dist/commands/quota.js +0 -661
  28. package/dist/commands/quota.js.map +0 -1
  29. package/dist/commands/review.d.ts +0 -8
  30. package/dist/commands/review.d.ts.map +0 -1
  31. package/dist/commands/review.js +0 -79
  32. package/dist/commands/review.js.map +0 -1
  33. package/dist/commands/service.d.ts +0 -43
  34. package/dist/commands/service.d.ts.map +0 -1
  35. package/dist/commands/service.js +0 -202
  36. package/dist/commands/service.js.map +0 -1
  37. package/dist/commands/user.d.ts +0 -49
  38. package/dist/commands/user.d.ts.map +0 -1
  39. package/dist/commands/user.js +0 -371
  40. package/dist/commands/user.js.map +0 -1
  41. package/dist/components/dashboard-widget.d.ts +0 -21
  42. package/dist/components/dashboard-widget.d.ts.map +0 -1
  43. package/dist/components/dashboard-widget.js +0 -234
  44. package/dist/components/dashboard-widget.js.map +0 -1
  45. package/dist/components/progress-bar.d.ts +0 -67
  46. package/dist/components/progress-bar.d.ts.map +0 -1
  47. package/dist/components/progress-bar.js +0 -138
  48. package/dist/components/progress-bar.js.map +0 -1
  49. package/dist/components/user-table.d.ts +0 -8
  50. package/dist/components/user-table.d.ts.map +0 -1
  51. package/dist/components/user-table.js +0 -91
  52. package/dist/components/user-table.js.map +0 -1
  53. package/dist/config/i18n.d.ts +0 -136
  54. package/dist/config/i18n.d.ts.map +0 -1
  55. package/dist/config/i18n.js +0 -323
  56. package/dist/config/i18n.js.map +0 -1
  57. package/dist/constants/error-codes.d.ts +0 -344
  58. package/dist/constants/error-codes.d.ts.map +0 -1
  59. package/dist/constants/error-codes.js +0 -462
  60. package/dist/constants/error-codes.js.map +0 -1
  61. package/dist/constants/exit-codes.d.ts +0 -49
  62. package/dist/constants/exit-codes.d.ts.map +0 -1
  63. package/dist/constants/exit-codes.js +0 -100
  64. package/dist/constants/exit-codes.js.map +0 -1
  65. package/dist/constants/paths.d.ts +0 -63
  66. package/dist/constants/paths.d.ts.map +0 -1
  67. package/dist/constants/paths.js +0 -78
  68. package/dist/constants/paths.js.map +0 -1
  69. package/dist/constants/quota.d.ts +0 -126
  70. package/dist/constants/quota.d.ts.map +0 -1
  71. package/dist/constants/quota.js +0 -135
  72. package/dist/constants/quota.js.map +0 -1
  73. package/dist/constants/review.d.ts +0 -14
  74. package/dist/constants/review.d.ts.map +0 -1
  75. package/dist/constants/review.js +0 -33
  76. package/dist/constants/review.js.map +0 -1
  77. package/dist/constants/supported-distros.d.ts +0 -17
  78. package/dist/constants/supported-distros.d.ts.map +0 -1
  79. package/dist/constants/supported-distros.js +0 -68
  80. package/dist/constants/supported-distros.js.map +0 -1
  81. package/dist/constants/theme.d.ts +0 -34
  82. package/dist/constants/theme.d.ts.map +0 -1
  83. package/dist/constants/theme.js +0 -52
  84. package/dist/constants/theme.js.map +0 -1
  85. package/dist/constants/timeouts.d.ts +0 -84
  86. package/dist/constants/timeouts.d.ts.map +0 -1
  87. package/dist/constants/timeouts.js +0 -111
  88. package/dist/constants/timeouts.js.map +0 -1
  89. package/dist/constants/ui-symbols.d.ts +0 -47
  90. package/dist/constants/ui-symbols.d.ts.map +0 -1
  91. package/dist/constants/ui-symbols.js +0 -48
  92. package/dist/constants/ui-symbols.js.map +0 -1
  93. package/dist/services/clash-config.d.ts +0 -16
  94. package/dist/services/clash-config.d.ts.map +0 -1
  95. package/dist/services/clash-config.js +0 -107
  96. package/dist/services/clash-config.js.map +0 -1
  97. package/dist/services/config-manager.d.ts +0 -90
  98. package/dist/services/config-manager.d.ts.map +0 -1
  99. package/dist/services/config-manager.js +0 -307
  100. package/dist/services/config-manager.js.map +0 -1
  101. package/dist/services/layout-manager.d.ts +0 -94
  102. package/dist/services/layout-manager.d.ts.map +0 -1
  103. package/dist/services/layout-manager.js +0 -192
  104. package/dist/services/layout-manager.js.map +0 -1
  105. package/dist/services/log-manager.d.ts +0 -157
  106. package/dist/services/log-manager.d.ts.map +0 -1
  107. package/dist/services/log-manager.js +0 -397
  108. package/dist/services/log-manager.js.map +0 -1
  109. package/dist/services/navigation-manager.d.ts +0 -23
  110. package/dist/services/navigation-manager.d.ts.map +0 -1
  111. package/dist/services/navigation-manager.js +0 -39
  112. package/dist/services/navigation-manager.js.map +0 -1
  113. package/dist/services/platform-detector.d.ts +0 -10
  114. package/dist/services/platform-detector.d.ts.map +0 -1
  115. package/dist/services/platform-detector.js +0 -106
  116. package/dist/services/platform-detector.js.map +0 -1
  117. package/dist/services/public-ip-manager.d.ts +0 -78
  118. package/dist/services/public-ip-manager.d.ts.map +0 -1
  119. package/dist/services/public-ip-manager.js +0 -296
  120. package/dist/services/public-ip-manager.js.map +0 -1
  121. package/dist/services/quota-enforcer.d.ts +0 -86
  122. package/dist/services/quota-enforcer.d.ts.map +0 -1
  123. package/dist/services/quota-enforcer.js +0 -151
  124. package/dist/services/quota-enforcer.js.map +0 -1
  125. package/dist/services/quota-manager.d.ts +0 -101
  126. package/dist/services/quota-manager.d.ts.map +0 -1
  127. package/dist/services/quota-manager.js +0 -257
  128. package/dist/services/quota-manager.js.map +0 -1
  129. package/dist/services/review/areas/community.d.ts +0 -9
  130. package/dist/services/review/areas/community.d.ts.map +0 -1
  131. package/dist/services/review/areas/community.js +0 -59
  132. package/dist/services/review/areas/community.js.map +0 -1
  133. package/dist/services/review/areas/contribution.d.ts +0 -9
  134. package/dist/services/review/areas/contribution.d.ts.map +0 -1
  135. package/dist/services/review/areas/contribution.js +0 -107
  136. package/dist/services/review/areas/contribution.js.map +0 -1
  137. package/dist/services/review/areas/documentation.d.ts +0 -9
  138. package/dist/services/review/areas/documentation.d.ts.map +0 -1
  139. package/dist/services/review/areas/documentation.js +0 -110
  140. package/dist/services/review/areas/documentation.js.map +0 -1
  141. package/dist/services/review/areas/license.d.ts +0 -9
  142. package/dist/services/review/areas/license.d.ts.map +0 -1
  143. package/dist/services/review/areas/license.js +0 -86
  144. package/dist/services/review/areas/license.js.map +0 -1
  145. package/dist/services/review/areas/quality.d.ts +0 -9
  146. package/dist/services/review/areas/quality.d.ts.map +0 -1
  147. package/dist/services/review/areas/quality.js +0 -84
  148. package/dist/services/review/areas/quality.js.map +0 -1
  149. package/dist/services/review/areas/security.d.ts +0 -9
  150. package/dist/services/review/areas/security.d.ts.map +0 -1
  151. package/dist/services/review/areas/security.js +0 -64
  152. package/dist/services/review/areas/security.js.map +0 -1
  153. package/dist/services/review/evidence.d.ts +0 -10
  154. package/dist/services/review/evidence.d.ts.map +0 -1
  155. package/dist/services/review/evidence.js +0 -40
  156. package/dist/services/review/evidence.js.map +0 -1
  157. package/dist/services/review/recommendations-filter.d.ts +0 -12
  158. package/dist/services/review/recommendations-filter.d.ts.map +0 -1
  159. package/dist/services/review/recommendations-filter.js +0 -20
  160. package/dist/services/review/recommendations-filter.js.map +0 -1
  161. package/dist/services/review/repo-scanner.d.ts +0 -8
  162. package/dist/services/review/repo-scanner.d.ts.map +0 -1
  163. package/dist/services/review/repo-scanner.js +0 -15
  164. package/dist/services/review/repo-scanner.js.map +0 -1
  165. package/dist/services/review/report-renderer.d.ts +0 -15
  166. package/dist/services/review/report-renderer.d.ts.map +0 -1
  167. package/dist/services/review/report-renderer.js +0 -120
  168. package/dist/services/review/report-renderer.js.map +0 -1
  169. package/dist/services/review/review-engine.d.ts +0 -15
  170. package/dist/services/review/review-engine.d.ts.map +0 -1
  171. package/dist/services/review/review-engine.js +0 -61
  172. package/dist/services/review/review-engine.js.map +0 -1
  173. package/dist/services/review/summary-builder.d.ts +0 -8
  174. package/dist/services/review/summary-builder.d.ts.map +0 -1
  175. package/dist/services/review/summary-builder.js +0 -26
  176. package/dist/services/review/summary-builder.js.map +0 -1
  177. package/dist/services/screen-manager.d.ts +0 -13
  178. package/dist/services/screen-manager.d.ts.map +0 -1
  179. package/dist/services/screen-manager.js +0 -42
  180. package/dist/services/screen-manager.js.map +0 -1
  181. package/dist/services/stats-config-manager.d.ts +0 -110
  182. package/dist/services/stats-config-manager.d.ts.map +0 -1
  183. package/dist/services/stats-config-manager.js +0 -443
  184. package/dist/services/stats-config-manager.js.map +0 -1
  185. package/dist/services/systemd-manager.d.ts +0 -197
  186. package/dist/services/systemd-manager.d.ts.map +0 -1
  187. package/dist/services/systemd-manager.js +0 -458
  188. package/dist/services/systemd-manager.js.map +0 -1
  189. package/dist/services/traffic-manager.d.ts +0 -106
  190. package/dist/services/traffic-manager.d.ts.map +0 -1
  191. package/dist/services/traffic-manager.js +0 -368
  192. package/dist/services/traffic-manager.js.map +0 -1
  193. package/dist/services/user-manager.d.ts +0 -90
  194. package/dist/services/user-manager.d.ts.map +0 -1
  195. package/dist/services/user-manager.js +0 -347
  196. package/dist/services/user-manager.js.map +0 -1
  197. package/dist/services/user-metadata-manager.d.ts +0 -85
  198. package/dist/services/user-metadata-manager.d.ts.map +0 -1
  199. package/dist/services/user-metadata-manager.js +0 -181
  200. package/dist/services/user-metadata-manager.js.map +0 -1
  201. package/dist/types/config.d.ts +0 -340
  202. package/dist/types/config.d.ts.map +0 -1
  203. package/dist/types/config.js +0 -7
  204. package/dist/types/config.js.map +0 -1
  205. package/dist/types/layout.d.ts +0 -119
  206. package/dist/types/layout.d.ts.map +0 -1
  207. package/dist/types/layout.js +0 -142
  208. package/dist/types/layout.js.map +0 -1
  209. package/dist/types/platform.d.ts +0 -72
  210. package/dist/types/platform.d.ts.map +0 -1
  211. package/dist/types/platform.js +0 -38
  212. package/dist/types/platform.js.map +0 -1
  213. package/dist/types/quota.d.ts +0 -158
  214. package/dist/types/quota.d.ts.map +0 -1
  215. package/dist/types/quota.js +0 -26
  216. package/dist/types/quota.js.map +0 -1
  217. package/dist/types/review.d.ts +0 -62
  218. package/dist/types/review.d.ts.map +0 -1
  219. package/dist/types/review.js +0 -8
  220. package/dist/types/review.js.map +0 -1
  221. package/dist/types/server-config.d.ts +0 -53
  222. package/dist/types/server-config.d.ts.map +0 -1
  223. package/dist/types/server-config.js +0 -19
  224. package/dist/types/server-config.js.map +0 -1
  225. package/dist/types/service.d.ts +0 -96
  226. package/dist/types/service.d.ts.map +0 -1
  227. package/dist/types/service.js +0 -7
  228. package/dist/types/service.js.map +0 -1
  229. package/dist/types/terminal.d.ts +0 -35
  230. package/dist/types/terminal.d.ts.map +0 -1
  231. package/dist/types/terminal.js +0 -20
  232. package/dist/types/terminal.js.map +0 -1
  233. package/dist/types/ui-components.d.ts +0 -53
  234. package/dist/types/ui-components.d.ts.map +0 -1
  235. package/dist/types/ui-components.js +0 -3
  236. package/dist/types/ui-components.js.map +0 -1
  237. package/dist/types/user-metadata.d.ts +0 -43
  238. package/dist/types/user-metadata.d.ts.map +0 -1
  239. package/dist/types/user-metadata.js +0 -17
  240. package/dist/types/user-metadata.js.map +0 -1
  241. package/dist/types/user.d.ts +0 -134
  242. package/dist/types/user.d.ts.map +0 -1
  243. package/dist/types/user.js +0 -7
  244. package/dist/types/user.js.map +0 -1
  245. package/dist/utils/clipboard.d.ts +0 -21
  246. package/dist/utils/clipboard.d.ts.map +0 -1
  247. package/dist/utils/clipboard.js +0 -45
  248. package/dist/utils/clipboard.js.map +0 -1
  249. package/dist/utils/error-formatter.d.ts +0 -60
  250. package/dist/utils/error-formatter.d.ts.map +0 -1
  251. package/dist/utils/error-formatter.js +0 -244
  252. package/dist/utils/error-formatter.js.map +0 -1
  253. package/dist/utils/errors.d.ts +0 -92
  254. package/dist/utils/errors.d.ts.map +0 -1
  255. package/dist/utils/errors.js +0 -143
  256. package/dist/utils/errors.js.map +0 -1
  257. package/dist/utils/firewall.d.ts +0 -14
  258. package/dist/utils/firewall.d.ts.map +0 -1
  259. package/dist/utils/firewall.js +0 -78
  260. package/dist/utils/firewall.js.map +0 -1
  261. package/dist/utils/format.d.ts +0 -93
  262. package/dist/utils/format.d.ts.map +0 -1
  263. package/dist/utils/format.js +0 -240
  264. package/dist/utils/format.js.map +0 -1
  265. package/dist/utils/icons.d.ts +0 -53
  266. package/dist/utils/icons.d.ts.map +0 -1
  267. package/dist/utils/icons.js +0 -143
  268. package/dist/utils/icons.js.map +0 -1
  269. package/dist/utils/layout.d.ts +0 -142
  270. package/dist/utils/layout.d.ts.map +0 -1
  271. package/dist/utils/layout.js +0 -381
  272. package/dist/utils/layout.js.map +0 -1
  273. package/dist/utils/logger.d.ts +0 -160
  274. package/dist/utils/logger.d.ts.map +0 -1
  275. package/dist/utils/logger.js +0 -351
  276. package/dist/utils/logger.js.map +0 -1
  277. package/dist/utils/network.d.ts +0 -39
  278. package/dist/utils/network.d.ts.map +0 -1
  279. package/dist/utils/network.js +0 -227
  280. package/dist/utils/network.js.map +0 -1
  281. package/dist/utils/os-detection.d.ts +0 -10
  282. package/dist/utils/os-detection.d.ts.map +0 -1
  283. package/dist/utils/os-detection.js +0 -86
  284. package/dist/utils/os-detection.js.map +0 -1
  285. package/dist/utils/preflight.d.ts +0 -57
  286. package/dist/utils/preflight.d.ts.map +0 -1
  287. package/dist/utils/preflight.js +0 -215
  288. package/dist/utils/preflight.js.map +0 -1
  289. package/dist/utils/repo-scan.d.ts +0 -54
  290. package/dist/utils/repo-scan.d.ts.map +0 -1
  291. package/dist/utils/repo-scan.js +0 -165
  292. package/dist/utils/repo-scan.js.map +0 -1
  293. package/dist/utils/report-output.d.ts +0 -13
  294. package/dist/utils/report-output.d.ts.map +0 -1
  295. package/dist/utils/report-output.js +0 -33
  296. package/dist/utils/report-output.js.map +0 -1
  297. package/dist/utils/review-id.d.ts +0 -8
  298. package/dist/utils/review-id.d.ts.map +0 -1
  299. package/dist/utils/review-id.js +0 -17
  300. package/dist/utils/review-id.js.map +0 -1
  301. package/dist/utils/splash.d.ts +0 -21
  302. package/dist/utils/splash.d.ts.map +0 -1
  303. package/dist/utils/splash.js +0 -179
  304. package/dist/utils/splash.js.map +0 -1
  305. package/dist/utils/terminal.d.ts +0 -32
  306. package/dist/utils/terminal.d.ts.map +0 -1
  307. package/dist/utils/terminal.js +0 -93
  308. package/dist/utils/terminal.js.map +0 -1
  309. package/dist/utils/traffic-formatter.d.ts +0 -45
  310. package/dist/utils/traffic-formatter.d.ts.map +0 -1
  311. package/dist/utils/traffic-formatter.js +0 -131
  312. package/dist/utils/traffic-formatter.js.map +0 -1
  313. package/dist/utils/validator.d.ts +0 -102
  314. package/dist/utils/validator.d.ts.map +0 -1
  315. package/dist/utils/validator.js +0 -238
  316. package/dist/utils/validator.js.map +0 -1
  317. package/dist/utils/vless-link.d.ts +0 -27
  318. package/dist/utils/vless-link.d.ts.map +0 -1
  319. package/dist/utils/vless-link.js +0 -69
  320. package/dist/utils/vless-link.js.map +0 -1
  321. package/dist/utils/which.d.ts +0 -13
  322. package/dist/utils/which.d.ts.map +0 -1
  323. package/dist/utils/which.js +0 -28
  324. package/dist/utils/which.js.map +0 -1
@@ -1,461 +0,0 @@
1
- "use strict";
2
- /**
3
- * Config Command Handler
4
- *
5
- * Handles configuration-related commands (view, backup, restore, modify)
6
- *
7
- * @module commands/config
8
- */
9
- var __importDefault = (this && this.__importDefault) || function (mod) {
10
- return (mod && mod.__esModule) ? mod : { "default": mod };
11
- };
12
- Object.defineProperty(exports, "__esModule", { value: true });
13
- exports.viewConfig = viewConfig;
14
- exports.backupConfig = backupConfig;
15
- exports.listBackups = listBackups;
16
- exports.restoreConfig = restoreConfig;
17
- exports.modifyConfig = modifyConfig;
18
- exports.showConfigMenu = showConfigMenu;
19
- const config_manager_1 = require("../services/config-manager");
20
- const systemd_manager_1 = require("../services/systemd-manager");
21
- const logger_1 = __importDefault(require("../utils/logger"));
22
- const chalk_1 = __importDefault(require("chalk"));
23
- const ora_1 = __importDefault(require("ora"));
24
- const prompts_1 = require("@inquirer/prompts");
25
- const path_1 = require("path");
26
- const ui_symbols_1 = require("../constants/ui-symbols");
27
- const i18n_1 = require("../config/i18n");
28
- /**
29
- * Display current configuration
30
- *
31
- * @param options - Command options
32
- */
33
- async function viewConfig(options = {}) {
34
- try {
35
- const manager = new config_manager_1.ConfigManager(options.configPath);
36
- const config = await manager.readConfig();
37
- if (options.json) {
38
- console.log(JSON.stringify(config, null, 2));
39
- return;
40
- }
41
- logger_1.default.newline();
42
- logger_1.default.separator();
43
- console.log(chalk_1.default.bold.cyan(`${ui_symbols_1.menuIcons.CONFIG} 当前配置`));
44
- logger_1.default.separator();
45
- logger_1.default.newline();
46
- // Display main config sections
47
- console.log(chalk_1.default.cyan(' 日志配置:'));
48
- if (config.log) {
49
- console.log(chalk_1.default.gray(` 级别: ${config.log.loglevel || 'warning'}`));
50
- console.log(chalk_1.default.gray(` 路径: ${config.log.access || 'none'}`));
51
- }
52
- else {
53
- console.log(chalk_1.default.gray(' 未配置'));
54
- }
55
- logger_1.default.newline();
56
- console.log(chalk_1.default.cyan(' 入站配置:'));
57
- for (const inbound of config.inbounds || []) {
58
- console.log(chalk_1.default.gray(` 协议: ${inbound.protocol}`));
59
- console.log(chalk_1.default.gray(` 端口: ${inbound.port}`));
60
- console.log(chalk_1.default.gray(` 标签: ${inbound.tag || 'default'}`));
61
- if (inbound.settings?.clients) {
62
- console.log(chalk_1.default.gray(` 用户数: ${inbound.settings.clients.length}`));
63
- }
64
- logger_1.default.newline();
65
- }
66
- console.log(chalk_1.default.cyan(' 出站配置:'));
67
- for (const outbound of config.outbounds || []) {
68
- console.log(chalk_1.default.gray(` 协议: ${outbound.protocol}`));
69
- console.log(chalk_1.default.gray(` 标签: ${outbound.tag || 'default'}`));
70
- logger_1.default.newline();
71
- }
72
- }
73
- catch (error) {
74
- logger_1.default.error(error.message);
75
- process.exit(1);
76
- }
77
- }
78
- /**
79
- * Create a configuration backup
80
- *
81
- * @param options - Command options
82
- */
83
- async function backupConfig(options = {}) {
84
- try {
85
- const manager = new config_manager_1.ConfigManager(options.configPath);
86
- const spinner = (0, ora_1.default)('正在备份配置...').start();
87
- const backupPath = await manager.backupConfig();
88
- spinner.succeed(chalk_1.default.green('配置备份成功!'));
89
- logger_1.default.newline();
90
- console.log(chalk_1.default.cyan(' 备份文件: ') + chalk_1.default.white(backupPath));
91
- logger_1.default.newline();
92
- }
93
- catch (error) {
94
- logger_1.default.error(error.message);
95
- process.exit(1);
96
- }
97
- }
98
- /**
99
- * List all configuration backups
100
- *
101
- * @param options - Command options
102
- */
103
- async function listBackups(options = {}) {
104
- try {
105
- const manager = new config_manager_1.ConfigManager(options.configPath);
106
- const backups = await manager.listBackups();
107
- if (options.json) {
108
- console.log(JSON.stringify(backups, null, 2));
109
- return;
110
- }
111
- logger_1.default.newline();
112
- logger_1.default.separator();
113
- console.log(chalk_1.default.bold.cyan(`💾 配置备份列表 (共 ${backups.length} 个备份)`));
114
- logger_1.default.separator();
115
- logger_1.default.newline();
116
- if (backups.length === 0) {
117
- console.log(chalk_1.default.gray(' 暂无备份'));
118
- logger_1.default.newline();
119
- return;
120
- }
121
- // Display backups
122
- for (let i = 0; i < backups.length; i++) {
123
- const backup = backups[i];
124
- const filename = (0, path_1.basename)(backup);
125
- // Extract timestamp from filename (config.YYYY-MM-DDTHH-MM-SS-sssZ.json)
126
- const timestampMatch = filename.match(/config\.(.+)\.json/);
127
- const timestamp = timestampMatch
128
- ? timestampMatch[1].replace(/-/g, ':').replace(/T(\d{2}):(\d{2}):(\d{2})/, 'T$1-$2-$3')
129
- : 'unknown';
130
- console.log(chalk_1.default.cyan(` ${i + 1}. ${filename}`));
131
- console.log(chalk_1.default.gray(` 时间: ${timestamp}`));
132
- console.log(chalk_1.default.gray(` 路径: ${backup}`));
133
- logger_1.default.newline();
134
- }
135
- }
136
- catch (error) {
137
- logger_1.default.error(error.message);
138
- process.exit(1);
139
- }
140
- }
141
- /**
142
- * Restore configuration from backup
143
- *
144
- * @param options - Command options
145
- */
146
- async function restoreConfig(options = {}) {
147
- try {
148
- const manager = new config_manager_1.ConfigManager(options.configPath);
149
- const systemdManager = new systemd_manager_1.SystemdManager(options.serviceName || 'xray');
150
- // List backups first
151
- const backups = await manager.listBackups();
152
- if (backups.length === 0) {
153
- logger_1.default.warn('暂无备份可恢复');
154
- return;
155
- }
156
- logger_1.default.newline();
157
- console.log(chalk_1.default.bold('📋 可用备份:'));
158
- backups.forEach((backup, i) => {
159
- const filename = (0, path_1.basename)(backup);
160
- console.log(` ${i + 1}. ${filename}`);
161
- });
162
- logger_1.default.newline();
163
- // Prompt for backup selection
164
- const backupInput = await (0, prompts_1.input)({
165
- message: '请输入要恢复的备份序号或完整路径:',
166
- });
167
- // Check if input is a number (index)
168
- let targetBackup = backupInput;
169
- const index = parseInt(backupInput, 10) - 1;
170
- if (!isNaN(index) && index >= 0 && index < backups.length) {
171
- targetBackup = backups[index];
172
- }
173
- // Confirm restoration
174
- const confirmed = await (0, prompts_1.confirm)({
175
- message: chalk_1.default.yellow(`确定要从备份恢复配置吗?当前配置将被覆盖(会先自动备份)。`),
176
- default: false,
177
- });
178
- if (!confirmed) {
179
- logger_1.default.info('已取消恢复操作');
180
- return;
181
- }
182
- const spinner = (0, ora_1.default)('正在恢复配置...').start();
183
- await manager.restoreConfig(targetBackup);
184
- spinner.succeed(chalk_1.default.green('配置恢复成功!'));
185
- logger_1.default.newline();
186
- // Ask if user wants to restart service
187
- const shouldRestart = await (0, prompts_1.confirm)({
188
- message: chalk_1.default.yellow('是否立即重启服务以应用新配置?'),
189
- default: true,
190
- });
191
- if (shouldRestart) {
192
- const restartSpinner = (0, ora_1.default)('正在重启服务...').start();
193
- await systemdManager.restart();
194
- restartSpinner.succeed(chalk_1.default.green('服务重启成功!'));
195
- }
196
- else {
197
- logger_1.default.hint('请记得手动重启服务以应用新配置');
198
- }
199
- }
200
- catch (error) {
201
- logger_1.default.error(error.message);
202
- process.exit(1);
203
- }
204
- }
205
- /**
206
- * Modify configuration item
207
- *
208
- * @param options - Command options
209
- */
210
- async function modifyConfig(options = {}) {
211
- try {
212
- const manager = new config_manager_1.ConfigManager(options.configPath);
213
- const systemdManager = new systemd_manager_1.SystemdManager(options.serviceName || 'xray');
214
- logger_1.default.newline();
215
- console.log(chalk_1.default.bold(`${ui_symbols_1.menuIcons.CONFIG} 配置修改`));
216
- logger_1.default.newline();
217
- // Common config items
218
- const configItems = [
219
- { name: '日志级别 (log.loglevel)', value: 'log.loglevel' },
220
- { name: '访问日志路径 (log.access)', value: 'log.access' },
221
- { name: '错误日志路径 (log.error)', value: 'log.error' },
222
- { name: '自定义路径', value: 'custom' },
223
- ];
224
- const itemChoice = await (0, prompts_1.select)({
225
- message: '请选择要修改的配置项:',
226
- choices: configItems,
227
- });
228
- let path = itemChoice;
229
- if (itemChoice === 'custom') {
230
- path = await (0, prompts_1.input)({
231
- message: '请输入配置项路径 (例如: log.loglevel):',
232
- validate: (value) => {
233
- if (!value || value.trim().length === 0) {
234
- return '配置项路径不能为空';
235
- }
236
- return true;
237
- },
238
- });
239
- }
240
- // Get current value
241
- const currentConfig = await manager.readConfig();
242
- const parts = path.split('.');
243
- let currentValue = currentConfig;
244
- for (const part of parts) {
245
- if (currentValue && typeof currentValue === 'object' && part in currentValue) {
246
- currentValue = currentValue[part];
247
- }
248
- else {
249
- currentValue = undefined;
250
- break;
251
- }
252
- }
253
- console.log(chalk_1.default.gray(` 当前值: ${currentValue !== undefined ? currentValue : '(未设置)'}`));
254
- logger_1.default.newline();
255
- // Prompt for new value
256
- const newValueStr = await (0, prompts_1.input)({
257
- message: '请输入新值:',
258
- });
259
- // Try to parse as JSON for non-string values
260
- let newValue = newValueStr;
261
- try {
262
- newValue = JSON.parse(newValueStr);
263
- }
264
- catch {
265
- // Keep as string
266
- }
267
- // Confirm modification
268
- const confirmed = await (0, prompts_1.confirm)({
269
- message: chalk_1.default.yellow(`确定要修改配置项 "${path}" 吗?`),
270
- default: false,
271
- });
272
- if (!confirmed) {
273
- logger_1.default.info('已取消修改操作');
274
- return;
275
- }
276
- const spinner = (0, ora_1.default)('正在修改配置...').start();
277
- // Backup first
278
- await manager.backupConfig();
279
- // Modify
280
- await manager.modifyConfigItem(path, newValue);
281
- spinner.succeed(chalk_1.default.green('配置修改成功!'));
282
- logger_1.default.newline();
283
- // Ask if user wants to restart service
284
- const shouldRestart = await (0, prompts_1.confirm)({
285
- message: chalk_1.default.yellow('是否立即重启服务以应用新配置?'),
286
- default: true,
287
- });
288
- if (shouldRestart) {
289
- const restartSpinner = (0, ora_1.default)('正在重启服务...').start();
290
- await systemdManager.restart();
291
- restartSpinner.succeed(chalk_1.default.green('服务重启成功!'));
292
- }
293
- else {
294
- logger_1.default.hint('请记得手动重启服务以应用新配置');
295
- }
296
- }
297
- catch (error) {
298
- logger_1.default.error(error.message);
299
- process.exit(1);
300
- }
301
- }
302
- /**
303
- * Show config management submenu
304
- *
305
- * @param options - Command options
306
- * @returns Selected action result
307
- */
308
- async function showConfigMenu(options = {}) {
309
- const translations = (0, i18n_1.t)();
310
- while (true) {
311
- try {
312
- logger_1.default.newline();
313
- console.log(chalk_1.default.bold.cyan(`${ui_symbols_1.menuIcons.CONFIG} ${translations.config.title}`));
314
- logger_1.default.newline();
315
- const action = await (0, prompts_1.select)({
316
- message: translations.actions.selectAction,
317
- choices: [
318
- { name: `${ui_symbols_1.menuIcons.VIEW} ${translations.config.viewConfig}`, value: 'view' },
319
- { name: `💾 ${translations.config.backupConfig}`, value: 'backup' },
320
- { name: `🔄 ${translations.config.restoreConfig}`, value: 'restore' },
321
- { name: chalk_1.default.gray(`${ui_symbols_1.menuIcons.BACK} ${translations.actions.back}`), value: 'back' },
322
- ],
323
- });
324
- if (action === 'back') {
325
- return;
326
- }
327
- switch (action) {
328
- case 'view':
329
- await viewConfigFormatted(options);
330
- break;
331
- case 'backup':
332
- await createBackup(options);
333
- break;
334
- case 'restore':
335
- await restoreFromBackup(options);
336
- break;
337
- }
338
- // Wait for user to press enter before showing menu again
339
- await (0, prompts_1.input)({
340
- message: chalk_1.default.gray('按 Enter 继续...'),
341
- });
342
- }
343
- catch (error) {
344
- // Handle Ctrl+C or other interrupts
345
- if (error.name === 'ExitPromptError') {
346
- return;
347
- }
348
- throw error;
349
- }
350
- }
351
- }
352
- /**
353
- * View formatted configuration
354
- *
355
- * @param options - Command options
356
- */
357
- async function viewConfigFormatted(options = {}) {
358
- const translations = (0, i18n_1.t)();
359
- try {
360
- const manager = new config_manager_1.ConfigManager(options.configPath);
361
- const formattedConfig = await manager.getFormattedConfig();
362
- logger_1.default.newline();
363
- logger_1.default.separator();
364
- console.log(chalk_1.default.bold.cyan(`${ui_symbols_1.menuIcons.CONFIG} ${translations.config.viewConfig}`));
365
- logger_1.default.separator();
366
- logger_1.default.newline();
367
- // Display formatted JSON with syntax highlighting
368
- const lines = formattedConfig.split('\n');
369
- for (const line of lines) {
370
- // Simple syntax highlighting
371
- const highlighted = line
372
- .replace(/"([^"]+)":/g, chalk_1.default.cyan('"$1":'))
373
- .replace(/: "([^"]+)"/g, ': ' + chalk_1.default.green('"$1"'))
374
- .replace(/: (\d+)/g, ': ' + chalk_1.default.yellow('$1'))
375
- .replace(/: (true|false)/g, ': ' + chalk_1.default.magenta('$1'));
376
- console.log(highlighted);
377
- }
378
- logger_1.default.newline();
379
- }
380
- catch (error) {
381
- logger_1.default.error(error.message);
382
- }
383
- }
384
- /**
385
- * Create configuration backup
386
- *
387
- * @param options - Command options
388
- */
389
- async function createBackup(options = {}) {
390
- const translations = (0, i18n_1.t)();
391
- try {
392
- const manager = new config_manager_1.ConfigManager(options.configPath);
393
- const spinner = (0, ora_1.default)(translations.config.backupConfig + '...').start();
394
- const backupPath = await manager.backupConfig();
395
- spinner.succeed(chalk_1.default.green(translations.config.backupSuccess.replace('{path}', backupPath)));
396
- logger_1.default.newline();
397
- }
398
- catch (error) {
399
- logger_1.default.error(error.message);
400
- }
401
- }
402
- /**
403
- * Restore configuration from backup with menu selection
404
- *
405
- * @param options - Command options
406
- */
407
- async function restoreFromBackup(options = {}) {
408
- const translations = (0, i18n_1.t)();
409
- try {
410
- const manager = new config_manager_1.ConfigManager(options.configPath);
411
- // List backups with info
412
- const backups = await manager.listBackupsWithInfo();
413
- if (backups.length === 0) {
414
- logger_1.default.warn(translations.config.noBackups);
415
- return;
416
- }
417
- logger_1.default.newline();
418
- console.log(chalk_1.default.bold(`💾 ${translations.config.selectBackup}`));
419
- logger_1.default.newline();
420
- // Create choices from backups
421
- const choices = backups.map((backup, index) => {
422
- const date = backup.createdAt.toLocaleString('zh-CN');
423
- const size = (backup.size / 1024).toFixed(1) + ' KB';
424
- return {
425
- name: `${index + 1}. ${backup.filename} (${date}, ${size})`,
426
- value: backup.path,
427
- };
428
- });
429
- choices.push({
430
- name: chalk_1.default.gray(`${ui_symbols_1.menuIcons.BACK} ${translations.actions.back}`),
431
- value: 'back',
432
- });
433
- const selectedBackup = await (0, prompts_1.select)({
434
- message: translations.config.selectBackup,
435
- choices,
436
- });
437
- if (selectedBackup === 'back') {
438
- return;
439
- }
440
- // Confirm restoration
441
- logger_1.default.newline();
442
- console.log(chalk_1.default.yellow(`⚠️ ${translations.config.restoreWarning}`));
443
- logger_1.default.newline();
444
- const confirmed = await (0, prompts_1.confirm)({
445
- message: translations.config.confirmRestore,
446
- default: false,
447
- });
448
- if (!confirmed) {
449
- logger_1.default.info('已取消恢复操作');
450
- return;
451
- }
452
- const spinner = (0, ora_1.default)('正在恢复配置...').start();
453
- await manager.restoreFromBackup(selectedBackup, true);
454
- spinner.succeed(chalk_1.default.green(translations.config.restoreSuccess));
455
- logger_1.default.newline();
456
- }
457
- catch (error) {
458
- logger_1.default.error(error.message);
459
- }
460
- }
461
- //# sourceMappingURL=config.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"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"}
@@ -1,55 +0,0 @@
1
- /**
2
- * Interactive Menu Implementation
3
- *
4
- * Provides the main interactive menu system for the CLI tool
5
- *
6
- * @module commands/interactive
7
- */
8
- import { Separator } from '@inquirer/prompts';
9
- /**
10
- * Menu options configuration
11
- */
12
- export interface MenuOptions {
13
- /** Config file path */
14
- configPath?: string;
15
- /** Service name */
16
- serviceName?: string;
17
- /** JSON output mode */
18
- jsonOutput?: boolean;
19
- /** Verbose mode */
20
- verbose?: boolean;
21
- }
22
- /**
23
- * Menu choice item
24
- */
25
- export interface MenuChoice {
26
- /** Display name */
27
- name: string;
28
- /** Value to return when selected */
29
- value: string;
30
- }
31
- /**
32
- * Menu choice type (can be a choice or separator)
33
- */
34
- export type MenuChoiceItem = MenuChoice | Separator;
35
- /**
36
- * Get main menu options
37
- */
38
- export declare function getMainMenuOptions(): MenuChoiceItem[];
39
- /**
40
- * Show a menu and get user selection
41
- */
42
- export declare function showMenu(options: MenuChoiceItem[], message?: string): Promise<string>;
43
- /**
44
- * Handle menu selection
45
- */
46
- export declare function handleMenuSelection(selection: string, options: MenuOptions): Promise<boolean>;
47
- /**
48
- * Handle SIGINT (Ctrl+C)
49
- */
50
- export declare function handleSigInt(): Promise<boolean>;
51
- /**
52
- * Main interactive menu loop
53
- */
54
- export declare function startInteractiveMenu(options: MenuOptions): Promise<void>;
55
- //# sourceMappingURL=interactive.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"interactive.d.ts","sourceRoot":"","sources":["../../src/commands/interactive.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAA0B,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAyBtE;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,uBAAuB;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,mBAAmB;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,uBAAuB;IACvB,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB,mBAAmB;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,mBAAmB;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,oCAAoC;IACpC,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,UAAU,GAAG,SAAS,CAAC;AAOpD;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,cAAc,EAAE,CAmDrD;AAED;;GAEG;AACH,wBAAsB,QAAQ,CAAC,OAAO,EAAE,cAAc,EAAE,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAQ3F;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,OAAO,CAAC,CAmFlB;AAoMD;;GAEG;AACH,wBAAsB,YAAY,IAAI,OAAO,CAAC,OAAO,CAAC,CAQrD;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAoE9E"}