xray-manager 1.8.4 → 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,462 +0,0 @@
1
- "use strict";
2
- /**
3
- * Unified Error Code Definitions
4
- * @module constants/error-codes
5
- *
6
- * Error code format: E + Category + Number
7
- * - E1xx: Configuration errors
8
- * - E2xx: User management errors
9
- * - E3xx: Quota management errors
10
- * - E4xx: Service management errors
11
- * - E5xx: Network errors
12
- * - E6xx: File operation errors
13
- * - E7xx: Validation errors
14
- * - E8xx: VLESS/Protocol parsing errors
15
- * - E9xx: System/Permission errors
16
- */
17
- Object.defineProperty(exports, "__esModule", { value: true });
18
- exports.SystemErrors = exports.ProtocolErrors = exports.ValidationErrors = exports.FileErrors = exports.NetworkErrors = exports.ServiceErrors = exports.QuotaErrors = exports.UserErrors = exports.ConfigErrors = void 0;
19
- exports.findErrorByCode = findErrorByCode;
20
- exports.getAllErrorCodes = getAllErrorCodes;
21
- /**
22
- * Configuration Errors (E1xx)
23
- */
24
- exports.ConfigErrors = {
25
- CONFIG_NOT_FOUND: {
26
- code: 'E101',
27
- title: '配置文件不存在',
28
- causes: ['Xray 尚未安装', '配置文件被删除或移动', '路径配置错误'],
29
- solutions: [
30
- '运行安装脚本重新安装 Xray',
31
- '检查配置文件路径: /usr/local/etc/xray/config.json',
32
- "使用 'xray-manager config --restore' 从备份恢复",
33
- ],
34
- },
35
- CONFIG_NO_READ_PERMISSION: {
36
- code: 'E102',
37
- title: '配置文件无读取权限',
38
- causes: ['当前用户权限不足', '文件权限设置错误', '未使用 sudo 运行'],
39
- solutions: [
40
- "使用 sudo 运行: 'sudo xray-manager' 或 'sudo xm'",
41
- "检查文件权限: 'ls -la /usr/local/etc/xray/config.json'",
42
- "修改权限: 'sudo chmod 644 /usr/local/etc/xray/config.json'",
43
- ],
44
- },
45
- CONFIG_NO_WRITE_PERMISSION: {
46
- code: 'E103',
47
- title: '配置文件无写入权限',
48
- causes: ['当前用户权限不足', '文件系统只读', '磁盘空间不足'],
49
- solutions: ["使用 sudo 运行: 'sudo xray-manager' 或 'sudo xm'", "检查磁盘空间: 'df -h'", '检查文件系统状态'],
50
- },
51
- CONFIG_INVALID_JSON: {
52
- code: 'E104',
53
- title: '配置文件 JSON 格式错误',
54
- causes: ['JSON 语法错误', '文件被损坏', '编辑时引入错误'],
55
- solutions: [
56
- "使用 JSON 验证工具检查: 'cat config.json | jq .'",
57
- "从备份恢复: 'xray-manager config --restore'",
58
- '手动检查 JSON 语法(引号、逗号、括号匹配)',
59
- ],
60
- },
61
- CONFIG_INVALID_STRUCTURE: {
62
- code: 'E105',
63
- title: '配置文件结构无效',
64
- causes: ['缺少必要字段 (inbounds/outbounds)', 'Xray 版本不兼容', '配置格式过时'],
65
- solutions: [
66
- '确保配置包含 inbounds 和 outbounds 数组',
67
- '参考 Xray 官方文档检查配置格式',
68
- '使用模板重新生成配置文件',
69
- ],
70
- },
71
- CONFIG_BACKUP_FAILED: {
72
- code: 'E106',
73
- title: '配置备份失败',
74
- causes: ['目标目录不存在', '磁盘空间不足', '权限不足'],
75
- solutions: ['确保备份目录存在', "检查磁盘空间: 'df -h'", '使用 sudo 运行程序'],
76
- },
77
- CONFIG_RESTORE_FAILED: {
78
- code: 'E107',
79
- title: '配置恢复失败',
80
- causes: ['备份文件不存在', '备份文件已损坏', '权限不足'],
81
- solutions: [
82
- "列出可用备份: 'xray-manager config --list-backups'",
83
- '选择一个有效的备份文件',
84
- '确保有足够权限写入配置文件',
85
- ],
86
- },
87
- };
88
- /**
89
- * User Management Errors (E2xx)
90
- */
91
- exports.UserErrors = {
92
- INVALID_EMAIL: {
93
- code: 'E201',
94
- title: '邮箱地址格式无效',
95
- causes: ['邮箱格式不正确', '包含非法字符', '缺少必要部分 (@, 域名)'],
96
- solutions: [
97
- '使用标准邮箱格式: user@example.com',
98
- '确保邮箱只包含字母、数字和允许的特殊字符',
99
- '检查是否有多余的空格',
100
- ],
101
- },
102
- EMAIL_EXISTS: {
103
- code: 'E202',
104
- title: '邮箱地址已存在',
105
- causes: ['该邮箱已被其他用户使用', '尝试创建重复用户'],
106
- solutions: [
107
- "使用 'xray-manager user list' 查看现有用户",
108
- '选择一个不同的邮箱地址',
109
- "如需更新用户,使用 'xray-manager user update' 命令",
110
- ],
111
- },
112
- USER_NOT_FOUND: {
113
- code: 'E203',
114
- title: '用户不存在',
115
- causes: ['用户已被删除', '邮箱地址输入错误', '用户从未创建'],
116
- solutions: [
117
- "使用 'xray-manager user list' 查看所有用户",
118
- '检查邮箱地址是否正确(区分大小写)',
119
- "使用 'xray-manager user add' 创建新用户",
120
- ],
121
- },
122
- INVALID_UUID: {
123
- code: 'E204',
124
- title: 'UUID 格式无效',
125
- causes: ['UUID 格式不正确', '不是有效的 UUID v4', '复制时丢失部分字符'],
126
- solutions: [
127
- 'UUID 应为 36 字符格式: xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx',
128
- '使用系统生成的 UUID,不要手动编辑',
129
- "可使用 'uuidgen' 命令生成新 UUID",
130
- ],
131
- },
132
- KEY_GENERATION_FAILED: {
133
- code: 'E205',
134
- title: '密钥生成失败',
135
- causes: ['xray 命令不可用', 'x25519 算法不支持', '系统随机数生成器问题'],
136
- solutions: [
137
- "确保 Xray 已正确安装: 'xray version'",
138
- '检查 Xray 版本是否支持 x25519',
139
- '重新安装 Xray',
140
- ],
141
- },
142
- };
143
- /**
144
- * Quota Management Errors (E3xx)
145
- */
146
- exports.QuotaErrors = {
147
- QUOTA_CONFIG_NOT_FOUND: {
148
- code: 'E301',
149
- title: '配额配置文件不存在',
150
- causes: ['配额功能未初始化', '文件被删除', '路径配置错误'],
151
- solutions: [
152
- "运行 'xray-manager quota init' 初始化配额系统",
153
- '检查文件路径: /usr/local/etc/xray/quota.json',
154
- '确保 Xray 配置目录存在',
155
- ],
156
- },
157
- INVALID_QUOTA_VALUE: {
158
- code: 'E302',
159
- title: '配额值无效',
160
- causes: ['数值不是有效数字', '数值为负数(非 -1)', '超出允许范围'],
161
- solutions: [
162
- '配额值必须为 -1(无限制)或 >= 0 的整数',
163
- '使用字节为单位或带单位的格式(如 10GB)',
164
- "设置无限制配额使用 '-1'",
165
- ],
166
- },
167
- USER_QUOTA_NOT_FOUND: {
168
- code: 'E303',
169
- title: '用户配额不存在',
170
- causes: ['用户未设置配额', '用户邮箱错误', '用户已被删除'],
171
- solutions: [
172
- "使用 'xray-manager quota list' 查看所有配额",
173
- "使用 'xray-manager quota set <email> <limit>' 设置配额",
174
- '确认用户邮箱地址正确',
175
- ],
176
- },
177
- TRAFFIC_UPDATE_FAILED: {
178
- code: 'E304',
179
- title: '流量统计更新失败',
180
- causes: ['配额文件写入失败', '并发访问冲突', '数据格式错误'],
181
- solutions: ['检查配额文件写入权限', '确保没有其他进程正在修改配额文件', '重新初始化配额系统'],
182
- },
183
- QUOTA_EXCEEDED: {
184
- code: 'E305',
185
- title: '用户流量配额已超限',
186
- causes: ['用户流量使用超过限制', '配额设置过低'],
187
- solutions: [
188
- "使用 'xray-manager quota set <email> <new_limit>' 增加配额",
189
- "使用 'xray-manager quota reset <email>' 重置流量统计",
190
- '考虑设置无限制配额 (-1)',
191
- ],
192
- },
193
- };
194
- /**
195
- * Service Management Errors (E4xx)
196
- */
197
- exports.ServiceErrors = {
198
- SERVICE_NOT_RUNNING: {
199
- code: 'E401',
200
- title: 'Xray 服务未运行',
201
- causes: ['服务未启动', '服务启动后崩溃', '配置错误导致启动失败'],
202
- solutions: [
203
- "启动服务: 'sudo systemctl start xray'",
204
- "查看服务状态: 'sudo systemctl status xray'",
205
- "检查日志: 'sudo journalctl -u xray -n 50'",
206
- ],
207
- },
208
- SERVICE_START_FAILED: {
209
- code: 'E402',
210
- title: '服务启动失败',
211
- causes: ['配置文件错误', '端口被占用', '权限不足'],
212
- solutions: [
213
- "验证配置: 'xray run -test -c /usr/local/etc/xray/config.json'",
214
- "检查端口占用: 'ss -tlnp | grep <port>'",
215
- "查看详细日志: 'sudo journalctl -u xray -n 100'",
216
- ],
217
- },
218
- SERVICE_STOP_FAILED: {
219
- code: 'E403',
220
- title: '服务停止失败',
221
- causes: ['服务进程僵死', '权限不足', 'systemd 问题'],
222
- solutions: [
223
- "强制停止: 'sudo systemctl kill xray'",
224
- "检查进程: 'ps aux | grep xray'",
225
- "手动终止: 'sudo kill -9 <pid>'",
226
- ],
227
- },
228
- INVALID_SERVICE_NAME: {
229
- code: 'E404',
230
- title: '服务名称无效',
231
- causes: ['包含非法字符', '路径遍历尝试', '名称为空'],
232
- solutions: [
233
- '服务名只能包含字母、数字和 @._- 字符',
234
- '默认服务名为 "xray"',
235
- '不要在服务名中使用路径分隔符',
236
- ],
237
- },
238
- SYSTEMD_NOT_AVAILABLE: {
239
- code: 'E405',
240
- title: 'systemd 不可用',
241
- causes: ['系统未使用 systemd', '在容器中运行', 'systemd 服务未启动'],
242
- solutions: [
243
- '确保系统使用 systemd 作为 init 系统',
244
- "检查 systemd 状态: 'systemctl --version'",
245
- '如在容器中,需手动管理进程',
246
- ],
247
- },
248
- };
249
- /**
250
- * Network Errors (E5xx)
251
- */
252
- exports.NetworkErrors = {
253
- CONNECTION_REFUSED: {
254
- code: 'E501',
255
- title: '连接被拒绝',
256
- causes: ['目标服务未运行', '端口未开放', '防火墙阻止'],
257
- solutions: [
258
- '检查目标服务是否运行',
259
- "检查防火墙规则: 'sudo ufw status'",
260
- "开放端口: 'sudo ufw allow <port>'",
261
- ],
262
- },
263
- CONNECTION_TIMEOUT: {
264
- code: 'E502',
265
- title: '连接超时',
266
- causes: ['网络不稳定', '服务器无响应', '防火墙丢弃数据包'],
267
- solutions: ['检查网络连接', "测试网络: 'ping <server_ip>'", '检查服务器端防火墙设置'],
268
- },
269
- PUBLIC_IP_FAILED: {
270
- code: 'E503',
271
- title: '无法获取公网 IP',
272
- causes: ['网络连接问题', 'IP 检测服务不可用', 'DNS 解析失败'],
273
- solutions: [
274
- "检查网络连接: 'curl -s https://api.ipify.org'",
275
- '手动指定服务器 IP 地址',
276
- '检查 DNS 设置',
277
- ],
278
- },
279
- INVALID_PORT: {
280
- code: 'E504',
281
- title: '端口号无效',
282
- causes: ['端口号超出范围', '端口号不是数字', '使用了保留端口'],
283
- solutions: [
284
- '端口号必须在 1-65535 之间',
285
- '建议使用 1024 以上的端口',
286
- '确保端口未被其他服务占用',
287
- ],
288
- },
289
- PORT_IN_USE: {
290
- code: 'E505',
291
- title: '端口已被占用',
292
- causes: ['其他程序正在使用该端口', 'Xray 已在运行', '系统服务占用'],
293
- solutions: [
294
- "查看端口占用: 'ss -tlnp | grep <port>'",
295
- '选择其他未使用的端口',
296
- '停止占用端口的服务后重试',
297
- ],
298
- },
299
- };
300
- /**
301
- * File Operation Errors (E6xx)
302
- */
303
- exports.FileErrors = {
304
- FILE_NOT_FOUND: {
305
- code: 'E601',
306
- title: '文件不存在',
307
- causes: ['文件已被删除', '路径错误', '从未创建'],
308
- solutions: ['检查文件路径是否正确', '确认文件是否已创建', '检查父目录是否存在'],
309
- },
310
- DIRECTORY_NOT_FOUND: {
311
- code: 'E602',
312
- title: '目录不存在',
313
- causes: ['目录已被删除', '路径错误', '父目录不存在'],
314
- solutions: ["创建目录: 'mkdir -p <path>'", '检查路径拼写', '确保有创建目录的权限'],
315
- },
316
- FILE_READ_FAILED: {
317
- code: 'E603',
318
- title: '文件读取失败',
319
- causes: ['权限不足', '文件被锁定', '文件已损坏'],
320
- solutions: ['使用 sudo 运行', '检查文件是否被其他进程占用', '检查文件权限设置'],
321
- },
322
- FILE_WRITE_FAILED: {
323
- code: 'E604',
324
- title: '文件写入失败',
325
- causes: ['权限不足', '磁盘空间不足', '文件系统只读'],
326
- solutions: ['使用 sudo 运行', "检查磁盘空间: 'df -h'", '检查文件系统挂载状态'],
327
- },
328
- };
329
- /**
330
- * Validation Errors (E7xx)
331
- */
332
- exports.ValidationErrors = {
333
- REQUIRED_FIELD_EMPTY: {
334
- code: 'E701',
335
- title: '必填字段不能为空',
336
- causes: ['未提供必要的输入', '输入只包含空白字符'],
337
- solutions: ['请提供所有必填字段的值', '检查输入是否包含有效内容'],
338
- },
339
- INVALID_FORMAT: {
340
- code: 'E702',
341
- title: '输入格式不正确',
342
- causes: ['输入不符合预期格式', '包含非法字符'],
343
- solutions: ['检查输入格式要求', '参考示例输入'],
344
- },
345
- VALUE_OUT_OF_RANGE: {
346
- code: 'E703',
347
- title: '值超出有效范围',
348
- causes: ['数值过大或过小', '超出允许的限制'],
349
- solutions: ['检查允许的值范围', '使用范围内的值重试'],
350
- },
351
- };
352
- /**
353
- * VLESS/Protocol Parsing Errors (E8xx)
354
- */
355
- exports.ProtocolErrors = {
356
- INVALID_VLESS_LINK: {
357
- code: 'E801',
358
- title: 'VLESS 链接格式无效',
359
- causes: ['链接格式不正确', '不是 vless:// 协议', '链接不完整'],
360
- solutions: ['确保链接以 vless:// 开头', '检查链接是否完整复制', '验证链接来源是否可靠'],
361
- },
362
- VLESS_MISSING_UUID: {
363
- code: 'E802',
364
- title: 'VLESS 链接缺少 UUID',
365
- causes: ['链接格式错误', 'UUID 部分被截断'],
366
- solutions: ['检查链接是否完整', '重新获取正确的分享链接'],
367
- },
368
- VLESS_MISSING_HOST: {
369
- code: 'E803',
370
- title: 'VLESS 链接缺少服务器地址',
371
- causes: ['链接格式错误', '服务器地址部分缺失'],
372
- solutions: ['检查链接格式', '确保包含服务器地址和端口'],
373
- },
374
- VLESS_INVALID_PORT: {
375
- code: 'E804',
376
- title: 'VLESS 链接端口无效',
377
- causes: ['端口不是数字', '端口超出范围'],
378
- solutions: ['端口必须是 1-65535 之间的数字', '检查链接格式是否正确'],
379
- },
380
- VLESS_MISSING_REALITY_PBK: {
381
- code: 'E805',
382
- title: 'Reality 链接缺少公钥参数',
383
- causes: ['链接缺少 pbk 参数', 'Reality 配置不完整'],
384
- solutions: ['Reality 链接必须包含 pbk (公钥) 参数', '重新生成包含完整参数的链接'],
385
- },
386
- };
387
- /**
388
- * System/Permission Errors (E9xx)
389
- */
390
- exports.SystemErrors = {
391
- ROOT_REQUIRED: {
392
- code: 'E901',
393
- title: '需要管理员权限',
394
- causes: ['当前用户不是 root', '未使用 sudo 运行'],
395
- solutions: ["使用 sudo 运行: 'sudo xray-vpn'", "切换到 root 用户: 'su -'"],
396
- },
397
- UNSUPPORTED_OS: {
398
- code: 'E902',
399
- title: '不支持的操作系统',
400
- causes: ['操作系统不兼容', '系统版本过低'],
401
- solutions: [
402
- '支持的系统: Ubuntu 18+, Debian 10+, CentOS 7+, Fedora 30+',
403
- '考虑使用 Docker 容器运行',
404
- ],
405
- },
406
- DEPENDENCY_MISSING: {
407
- code: 'E903',
408
- title: '缺少必要的依赖',
409
- causes: ['系统工具未安装', 'Node.js 版本不兼容'],
410
- solutions: [
411
- '运行安装脚本自动安装依赖',
412
- '确保 Node.js >= 18.0.0',
413
- "检查 xray 是否安装: 'xray version'",
414
- ],
415
- },
416
- PREFLIGHT_FAILED: {
417
- code: 'E904',
418
- title: '启动预检查失败',
419
- causes: ['系统环境不满足要求', '必要服务未运行', '配置存在问题'],
420
- solutions: ['运行诊断命令检查问题', '检查上述错误信息并逐一解决', '确保所有必要服务已启动'],
421
- },
422
- };
423
- /**
424
- * Find error info by error code string
425
- */
426
- function findErrorByCode(code) {
427
- const allErrors = {
428
- ...exports.ConfigErrors,
429
- ...exports.UserErrors,
430
- ...exports.QuotaErrors,
431
- ...exports.ServiceErrors,
432
- ...exports.NetworkErrors,
433
- ...exports.FileErrors,
434
- ...exports.ValidationErrors,
435
- ...exports.ProtocolErrors,
436
- ...exports.SystemErrors,
437
- };
438
- for (const error of Object.values(allErrors)) {
439
- if (error.code === code) {
440
- return error;
441
- }
442
- }
443
- return undefined;
444
- }
445
- /**
446
- * Get all error codes list
447
- */
448
- function getAllErrorCodes() {
449
- const allErrors = {
450
- ...exports.ConfigErrors,
451
- ...exports.UserErrors,
452
- ...exports.QuotaErrors,
453
- ...exports.ServiceErrors,
454
- ...exports.NetworkErrors,
455
- ...exports.FileErrors,
456
- ...exports.ValidationErrors,
457
- ...exports.ProtocolErrors,
458
- ...exports.SystemErrors,
459
- };
460
- return Object.values(allErrors).map((e) => e.code);
461
- }
462
- //# sourceMappingURL=error-codes.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"error-codes.js","sourceRoot":"","sources":["../../src/constants/error-codes.ts"],"names":[],"mappings":"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"}
@@ -1,49 +0,0 @@
1
- /**
2
- * 标准化退出代码
3
- * @module constants/exit-codes
4
- */
5
- /**
6
- * CLI 工具退出代码常量
7
- * 遵循 Unix/Linux 退出代码规范
8
- */
9
- export declare const ExitCode: {
10
- /** 成功 */
11
- readonly SUCCESS: 0;
12
- /** 通用错误 */
13
- readonly GENERAL_ERROR: 1;
14
- /** 参数错误 - 无效的命令行参数或选项 */
15
- readonly INVALID_ARGUMENT: 2;
16
- /** 配置错误 - 配置文件错误、缺失或无法解析 */
17
- readonly CONFIG_ERROR: 3;
18
- /** 权限错误 - 需要 root/sudo 权限但未提供 */
19
- readonly PERMISSION_ERROR: 4;
20
- /** 服务错误 - systemd 服务操作失败 */
21
- readonly SERVICE_ERROR: 5;
22
- /** 网络错误 - 网络连接失败或超时 */
23
- readonly NETWORK_ERROR: 6;
24
- /** 文件错误 - 文件读写操作失败 */
25
- readonly FILE_ERROR: 7;
26
- /** 验证错误 - 输入验证失败(邮箱、UUID 等) */
27
- readonly VALIDATION_ERROR: 8;
28
- /** 未找到 - 资源不存在(用户、服务等) */
29
- readonly NOT_FOUND: 9;
30
- /** 用户中断 - Ctrl+C 中断程序执行 */
31
- readonly SIGINT: 130;
32
- };
33
- /**
34
- * 退出代码类型
35
- */
36
- export type ExitCodeType = (typeof ExitCode)[keyof typeof ExitCode];
37
- /**
38
- * 退出代码到描述的映射
39
- */
40
- export declare const ExitCodeDescription: Record<number, string>;
41
- /**
42
- * 根据错误类型获取退出代码
43
- */
44
- export declare function getExitCodeForError(error: Error): ExitCodeType;
45
- /**
46
- * 优雅退出(清理资源后退出)
47
- */
48
- export declare function gracefulExit(code: ExitCodeType, cleanup?: () => Promise<void>): Promise<never>;
49
- //# sourceMappingURL=exit-codes.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"exit-codes.d.ts","sourceRoot":"","sources":["../../src/constants/exit-codes.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;GAGG;AACH,eAAO,MAAM,QAAQ;IACnB,SAAS;;IAGT,WAAW;;IAGX,yBAAyB;;IAGzB,4BAA4B;;IAG5B,iCAAiC;;IAGjC,4BAA4B;;IAG5B,uBAAuB;;IAGvB,sBAAsB;;IAGtB,+BAA+B;;IAG/B,0BAA0B;;IAG1B,2BAA2B;;CAEnB,CAAC;AAEX;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,QAAQ,CAAC,CAAC,MAAM,OAAO,QAAQ,CAAC,CAAC;AAEpE;;GAEG;AACH,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAYtD,CAAC;AAEF;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,KAAK,GAAG,YAAY,CA4B9D;AAED;;GAEG;AACH,wBAAsB,YAAY,CAChC,IAAI,EAAE,YAAY,EAClB,OAAO,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAC5B,OAAO,CAAC,KAAK,CAAC,CAUhB"}
@@ -1,100 +0,0 @@
1
- "use strict";
2
- /**
3
- * 标准化退出代码
4
- * @module constants/exit-codes
5
- */
6
- Object.defineProperty(exports, "__esModule", { value: true });
7
- exports.ExitCodeDescription = exports.ExitCode = void 0;
8
- exports.getExitCodeForError = getExitCodeForError;
9
- exports.gracefulExit = gracefulExit;
10
- /**
11
- * CLI 工具退出代码常量
12
- * 遵循 Unix/Linux 退出代码规范
13
- */
14
- exports.ExitCode = {
15
- /** 成功 */
16
- SUCCESS: 0,
17
- /** 通用错误 */
18
- GENERAL_ERROR: 1,
19
- /** 参数错误 - 无效的命令行参数或选项 */
20
- INVALID_ARGUMENT: 2,
21
- /** 配置错误 - 配置文件错误、缺失或无法解析 */
22
- CONFIG_ERROR: 3,
23
- /** 权限错误 - 需要 root/sudo 权限但未提供 */
24
- PERMISSION_ERROR: 4,
25
- /** 服务错误 - systemd 服务操作失败 */
26
- SERVICE_ERROR: 5,
27
- /** 网络错误 - 网络连接失败或超时 */
28
- NETWORK_ERROR: 6,
29
- /** 文件错误 - 文件读写操作失败 */
30
- FILE_ERROR: 7,
31
- /** 验证错误 - 输入验证失败(邮箱、UUID 等) */
32
- VALIDATION_ERROR: 8,
33
- /** 未找到 - 资源不存在(用户、服务等) */
34
- NOT_FOUND: 9,
35
- /** 用户中断 - Ctrl+C 中断程序执行 */
36
- SIGINT: 130,
37
- };
38
- /**
39
- * 退出代码到描述的映射
40
- */
41
- exports.ExitCodeDescription = {
42
- [exports.ExitCode.SUCCESS]: '成功',
43
- [exports.ExitCode.GENERAL_ERROR]: '通用错误',
44
- [exports.ExitCode.INVALID_ARGUMENT]: '参数错误',
45
- [exports.ExitCode.CONFIG_ERROR]: '配置错误',
46
- [exports.ExitCode.PERMISSION_ERROR]: '权限不足',
47
- [exports.ExitCode.SERVICE_ERROR]: '服务操作失败',
48
- [exports.ExitCode.NETWORK_ERROR]: '网络错误',
49
- [exports.ExitCode.FILE_ERROR]: '文件错误',
50
- [exports.ExitCode.VALIDATION_ERROR]: '输入验证失败',
51
- [exports.ExitCode.NOT_FOUND]: '资源未找到',
52
- [exports.ExitCode.SIGINT]: '用户中断',
53
- };
54
- /**
55
- * 根据错误类型获取退出代码
56
- */
57
- function getExitCodeForError(error) {
58
- const errorName = error.name.toLowerCase();
59
- const errorMessage = error.message.toLowerCase();
60
- // 根据错误名称或消息判断退出代码
61
- if (errorName.includes('permission') || errorMessage.includes('eacces')) {
62
- return exports.ExitCode.PERMISSION_ERROR;
63
- }
64
- if (errorName.includes('validation') || errorMessage.includes('invalid')) {
65
- return exports.ExitCode.VALIDATION_ERROR;
66
- }
67
- if (errorName.includes('notfound') || errorMessage.includes('not found')) {
68
- return exports.ExitCode.NOT_FOUND;
69
- }
70
- if (errorName.includes('config') || errorMessage.includes('config')) {
71
- return exports.ExitCode.CONFIG_ERROR;
72
- }
73
- if (errorName.includes('service') || errorMessage.includes('systemctl')) {
74
- return exports.ExitCode.SERVICE_ERROR;
75
- }
76
- if (errorName.includes('file') || errorMessage.includes('enoent')) {
77
- return exports.ExitCode.FILE_ERROR;
78
- }
79
- if (errorName.includes('network') || errorMessage.includes('timeout')) {
80
- return exports.ExitCode.NETWORK_ERROR;
81
- }
82
- return exports.ExitCode.GENERAL_ERROR;
83
- }
84
- /**
85
- * 优雅退出(清理资源后退出)
86
- */
87
- async function gracefulExit(code, cleanup) {
88
- try {
89
- if (cleanup) {
90
- await cleanup();
91
- }
92
- }
93
- catch (error) {
94
- console.error('清理资源时出错:', error);
95
- }
96
- finally {
97
- process.exit(code);
98
- }
99
- }
100
- //# sourceMappingURL=exit-codes.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"exit-codes.js","sourceRoot":"","sources":["../../src/constants/exit-codes.ts"],"names":[],"mappings":"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"}