cloudisk 1.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 (189) hide show
  1. package/.env.example +17 -0
  2. package/README.md +120 -0
  3. package/dist/config/index.d.ts +27 -0
  4. package/dist/config/index.d.ts.map +1 -0
  5. package/dist/config/index.js +45 -0
  6. package/dist/config/index.js.map +1 -0
  7. package/dist/dto/auth.dto.d.ts +14 -0
  8. package/dist/dto/auth.dto.d.ts.map +1 -0
  9. package/dist/dto/auth.dto.js +16 -0
  10. package/dist/dto/auth.dto.js.map +1 -0
  11. package/dist/dto/user.dto.d.ts +76 -0
  12. package/dist/dto/user.dto.d.ts.map +1 -0
  13. package/dist/dto/user.dto.js +70 -0
  14. package/dist/dto/user.dto.js.map +1 -0
  15. package/dist/handlers/auth.handler.d.ts +10 -0
  16. package/dist/handlers/auth.handler.d.ts.map +1 -0
  17. package/dist/handlers/auth.handler.js +41 -0
  18. package/dist/handlers/auth.handler.js.map +1 -0
  19. package/dist/handlers/disk.handler.d.ts +12 -0
  20. package/dist/handlers/disk.handler.d.ts.map +1 -0
  21. package/dist/handlers/disk.handler.js +61 -0
  22. package/dist/handlers/disk.handler.js.map +1 -0
  23. package/dist/handlers/samba.handler.d.ts +16 -0
  24. package/dist/handlers/samba.handler.d.ts.map +1 -0
  25. package/dist/handlers/samba.handler.js +120 -0
  26. package/dist/handlers/samba.handler.js.map +1 -0
  27. package/dist/handlers/share.handler.d.ts +11 -0
  28. package/dist/handlers/share.handler.d.ts.map +1 -0
  29. package/dist/handlers/share.handler.js +52 -0
  30. package/dist/handlers/share.handler.js.map +1 -0
  31. package/dist/handlers/system.handler.d.ts +17 -0
  32. package/dist/handlers/system.handler.d.ts.map +1 -0
  33. package/dist/handlers/system.handler.js +210 -0
  34. package/dist/handlers/system.handler.js.map +1 -0
  35. package/dist/handlers/user.handler.d.ts +16 -0
  36. package/dist/handlers/user.handler.d.ts.map +1 -0
  37. package/dist/handlers/user.handler.js +101 -0
  38. package/dist/handlers/user.handler.js.map +1 -0
  39. package/dist/index.d.ts +3 -0
  40. package/dist/index.d.ts.map +1 -0
  41. package/dist/index.js +799 -0
  42. package/dist/index.js.map +1 -0
  43. package/dist/lib/errors.d.ts +13 -0
  44. package/dist/lib/errors.d.ts.map +1 -0
  45. package/dist/lib/errors.js +35 -0
  46. package/dist/lib/errors.js.map +1 -0
  47. package/dist/lib/log-buffer.d.ts +20 -0
  48. package/dist/lib/log-buffer.d.ts.map +1 -0
  49. package/dist/lib/log-buffer.js +75 -0
  50. package/dist/lib/log-buffer.js.map +1 -0
  51. package/dist/lib/response.d.ts +5 -0
  52. package/dist/lib/response.d.ts.map +1 -0
  53. package/dist/lib/response.js +19 -0
  54. package/dist/lib/response.js.map +1 -0
  55. package/dist/lib/shell.d.ts +9 -0
  56. package/dist/lib/shell.d.ts.map +1 -0
  57. package/dist/lib/shell.js +32 -0
  58. package/dist/lib/shell.js.map +1 -0
  59. package/dist/middleware/auth.d.ts +17 -0
  60. package/dist/middleware/auth.d.ts.map +1 -0
  61. package/dist/middleware/auth.js +43 -0
  62. package/dist/middleware/auth.js.map +1 -0
  63. package/dist/middleware/error-handler.d.ts +3 -0
  64. package/dist/middleware/error-handler.d.ts.map +1 -0
  65. package/dist/middleware/error-handler.js +14 -0
  66. package/dist/middleware/error-handler.js.map +1 -0
  67. package/dist/middleware/logger.d.ts +3 -0
  68. package/dist/middleware/logger.d.ts.map +1 -0
  69. package/dist/middleware/logger.js +25 -0
  70. package/dist/middleware/logger.js.map +1 -0
  71. package/dist/middleware/validate.d.ts +3 -0
  72. package/dist/middleware/validate.d.ts.map +1 -0
  73. package/dist/middleware/validate.js +28 -0
  74. package/dist/middleware/validate.js.map +1 -0
  75. package/dist/operators/disk.operator.d.ts +29 -0
  76. package/dist/operators/disk.operator.d.ts.map +1 -0
  77. package/dist/operators/disk.operator.js +70 -0
  78. package/dist/operators/disk.operator.js.map +1 -0
  79. package/dist/operators/linux-user.operator.d.ts +13 -0
  80. package/dist/operators/linux-user.operator.d.ts.map +1 -0
  81. package/dist/operators/linux-user.operator.js +47 -0
  82. package/dist/operators/linux-user.operator.js.map +1 -0
  83. package/dist/operators/quota.operator.d.ts +18 -0
  84. package/dist/operators/quota.operator.d.ts.map +1 -0
  85. package/dist/operators/quota.operator.js +54 -0
  86. package/dist/operators/quota.operator.js.map +1 -0
  87. package/dist/operators/samba.operator.d.ts +41 -0
  88. package/dist/operators/samba.operator.d.ts.map +1 -0
  89. package/dist/operators/samba.operator.js +274 -0
  90. package/dist/operators/samba.operator.js.map +1 -0
  91. package/dist/operators/share.operator.d.ts +21 -0
  92. package/dist/operators/share.operator.d.ts.map +1 -0
  93. package/dist/operators/share.operator.js +67 -0
  94. package/dist/operators/share.operator.js.map +1 -0
  95. package/dist/repositories/admin.repo.d.ts +30 -0
  96. package/dist/repositories/admin.repo.d.ts.map +1 -0
  97. package/dist/repositories/admin.repo.js +20 -0
  98. package/dist/repositories/admin.repo.js.map +1 -0
  99. package/dist/repositories/user.repo.d.ts +44 -0
  100. package/dist/repositories/user.repo.d.ts.map +1 -0
  101. package/dist/repositories/user.repo.js +3 -0
  102. package/dist/repositories/user.repo.js.map +1 -0
  103. package/dist/repositories/user.repo.sqlite.d.ts +16 -0
  104. package/dist/repositories/user.repo.sqlite.d.ts.map +1 -0
  105. package/dist/repositories/user.repo.sqlite.js +47 -0
  106. package/dist/repositories/user.repo.sqlite.js.map +1 -0
  107. package/dist/routes/auth.routes.d.ts +4 -0
  108. package/dist/routes/auth.routes.d.ts.map +1 -0
  109. package/dist/routes/auth.routes.js +15 -0
  110. package/dist/routes/auth.routes.js.map +1 -0
  111. package/dist/routes/disk.routes.d.ts +4 -0
  112. package/dist/routes/disk.routes.d.ts.map +1 -0
  113. package/dist/routes/disk.routes.js +16 -0
  114. package/dist/routes/disk.routes.js.map +1 -0
  115. package/dist/routes/index.d.ts +4 -0
  116. package/dist/routes/index.d.ts.map +1 -0
  117. package/dist/routes/index.js +64 -0
  118. package/dist/routes/index.js.map +1 -0
  119. package/dist/routes/samba.routes.d.ts +4 -0
  120. package/dist/routes/samba.routes.d.ts.map +1 -0
  121. package/dist/routes/samba.routes.js +20 -0
  122. package/dist/routes/samba.routes.js.map +1 -0
  123. package/dist/routes/share.routes.d.ts +4 -0
  124. package/dist/routes/share.routes.d.ts.map +1 -0
  125. package/dist/routes/share.routes.js +15 -0
  126. package/dist/routes/share.routes.js.map +1 -0
  127. package/dist/routes/system.routes.d.ts +4 -0
  128. package/dist/routes/system.routes.d.ts.map +1 -0
  129. package/dist/routes/system.routes.js +20 -0
  130. package/dist/routes/system.routes.js.map +1 -0
  131. package/dist/routes/user.routes.d.ts +5 -0
  132. package/dist/routes/user.routes.d.ts.map +1 -0
  133. package/dist/routes/user.routes.js +44 -0
  134. package/dist/routes/user.routes.js.map +1 -0
  135. package/dist/services/auth.service.d.ts +23 -0
  136. package/dist/services/auth.service.d.ts.map +1 -0
  137. package/dist/services/auth.service.js +62 -0
  138. package/dist/services/auth.service.js.map +1 -0
  139. package/dist/services/disk.service.d.ts +12 -0
  140. package/dist/services/disk.service.d.ts.map +1 -0
  141. package/dist/services/disk.service.js +34 -0
  142. package/dist/services/disk.service.js.map +1 -0
  143. package/dist/services/init.service.d.ts +8 -0
  144. package/dist/services/init.service.d.ts.map +1 -0
  145. package/dist/services/init.service.js +47 -0
  146. package/dist/services/init.service.js.map +1 -0
  147. package/dist/services/quota.service.d.ts +14 -0
  148. package/dist/services/quota.service.d.ts.map +1 -0
  149. package/dist/services/quota.service.js +32 -0
  150. package/dist/services/quota.service.js.map +1 -0
  151. package/dist/services/samba.service.d.ts +45 -0
  152. package/dist/services/samba.service.d.ts.map +1 -0
  153. package/dist/services/samba.service.js +61 -0
  154. package/dist/services/samba.service.js.map +1 -0
  155. package/dist/services/share.service.d.ts +18 -0
  156. package/dist/services/share.service.d.ts.map +1 -0
  157. package/dist/services/share.service.js +29 -0
  158. package/dist/services/share.service.js.map +1 -0
  159. package/dist/services/user.service.d.ts +48 -0
  160. package/dist/services/user.service.d.ts.map +1 -0
  161. package/dist/services/user.service.js +196 -0
  162. package/dist/services/user.service.js.map +1 -0
  163. package/dist/types/index.d.ts +7 -0
  164. package/dist/types/index.d.ts.map +1 -0
  165. package/dist/types/index.js +23 -0
  166. package/dist/types/index.js.map +1 -0
  167. package/dist/types/service.interfaces.d.ts +45 -0
  168. package/dist/types/service.interfaces.d.ts.map +1 -0
  169. package/dist/types/service.interfaces.js +3 -0
  170. package/dist/types/service.interfaces.js.map +1 -0
  171. package/package.json +63 -0
  172. package/prisma/schema.prisma +53 -0
  173. package/public/assets/Dashboard-BupoWE_7.js +1 -0
  174. package/public/assets/DiskManage-BY6Sy7T6.js +1 -0
  175. package/public/assets/InitWizard-CA9epEkr.css +1 -0
  176. package/public/assets/InitWizard-D5Xj7dX0.js +1 -0
  177. package/public/assets/Layout-D-CPXnPP.js +1 -0
  178. package/public/assets/Layout-DaQY8YzE.css +1 -0
  179. package/public/assets/LogViewer-CIJZzoXw.css +1 -0
  180. package/public/assets/LogViewer-DDAIjW9J.js +1 -0
  181. package/public/assets/Login-D92i6dQA.js +1 -0
  182. package/public/assets/Login-DimFYijw.css +1 -0
  183. package/public/assets/ServiceManage-CIWLurL_.css +1 -0
  184. package/public/assets/ServiceManage-D-ZWP7Ry.js +1 -0
  185. package/public/assets/ShareManage-BMsFoGea.js +1 -0
  186. package/public/assets/UserList-CqeA7r2Y.js +1 -0
  187. package/public/assets/index-B-crAlzg.css +1 -0
  188. package/public/assets/index-CfC5GCM9.js +100 -0
  189. package/public/index.html +14 -0
@@ -0,0 +1,120 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SambaHandler = void 0;
4
+ const response_1 = require("../lib/response");
5
+ class SambaHandler {
6
+ sambaService;
7
+ constructor(sambaService) {
8
+ this.sambaService = sambaService;
9
+ }
10
+ status = async (_req, res, next) => {
11
+ try {
12
+ const status = await this.sambaService.status();
13
+ (0, response_1.ok)(res, status);
14
+ }
15
+ catch (err) {
16
+ next(err);
17
+ }
18
+ };
19
+ install = async (_req, res, next) => {
20
+ try {
21
+ const status = await this.sambaService.install();
22
+ (0, response_1.ok)(res, status, 'Samba 安装完成');
23
+ }
24
+ catch (err) {
25
+ next(err);
26
+ }
27
+ };
28
+ installStream = async (_req, res, _next) => {
29
+ res.writeHead(200, {
30
+ 'Content-Type': 'text/event-stream',
31
+ 'Cache-Control': 'no-cache',
32
+ Connection: 'keep-alive',
33
+ });
34
+ const sendLog = (msg) => {
35
+ res.write(`data: ${JSON.stringify({ type: 'log', msg })}\n\n`);
36
+ };
37
+ try {
38
+ sendLog('开始安装 Samba...');
39
+ const status = await this.sambaService.install(sendLog);
40
+ res.write(`data: ${JSON.stringify({ type: 'done', status })}\n\n`);
41
+ }
42
+ catch (err) {
43
+ res.write(`data: ${JSON.stringify({ type: 'error', msg: err.message })}\n\n`);
44
+ }
45
+ finally {
46
+ res.write(`data: ${JSON.stringify({ type: 'close' })}\n\n`);
47
+ res.end();
48
+ }
49
+ };
50
+ uninstallStream = async (_req, res, _next) => {
51
+ res.writeHead(200, {
52
+ 'Content-Type': 'text/event-stream',
53
+ 'Cache-Control': 'no-cache',
54
+ Connection: 'keep-alive',
55
+ });
56
+ const sendLog = (msg) => {
57
+ res.write(`data: ${JSON.stringify({ type: 'log', msg })}\n\n`);
58
+ };
59
+ try {
60
+ sendLog('开始卸载 Samba...');
61
+ const status = await this.sambaService.uninstall(sendLog);
62
+ res.write(`data: ${JSON.stringify({ type: 'done', status })}\n\n`);
63
+ }
64
+ catch (err) {
65
+ res.write(`data: ${JSON.stringify({ type: 'error', msg: err.message })}\n\n`);
66
+ }
67
+ finally {
68
+ res.write(`data: ${JSON.stringify({ type: 'close' })}\n\n`);
69
+ res.end();
70
+ }
71
+ };
72
+ start = async (_req, res, next) => {
73
+ try {
74
+ const status = await this.sambaService.start();
75
+ (0, response_1.ok)(res, status, '服务已启动');
76
+ }
77
+ catch (err) {
78
+ next(err);
79
+ }
80
+ };
81
+ stop = async (_req, res, next) => {
82
+ try {
83
+ const status = await this.sambaService.stop();
84
+ (0, response_1.ok)(res, status, '服务已停止');
85
+ }
86
+ catch (err) {
87
+ next(err);
88
+ }
89
+ };
90
+ restart = async (_req, res, next) => {
91
+ try {
92
+ const status = await this.sambaService.restart();
93
+ (0, response_1.ok)(res, status, '服务已重启');
94
+ }
95
+ catch (err) {
96
+ next(err);
97
+ }
98
+ };
99
+ getConfig = async (_req, res, next) => {
100
+ try {
101
+ const config = await this.sambaService.getConfig();
102
+ (0, response_1.ok)(res, config);
103
+ }
104
+ catch (err) {
105
+ next(err);
106
+ }
107
+ };
108
+ updateConfig = async (req, res, next) => {
109
+ try {
110
+ const { content } = req.body;
111
+ const result = await this.sambaService.updateConfig(content);
112
+ (0, response_1.ok)(res, result);
113
+ }
114
+ catch (err) {
115
+ next(err);
116
+ }
117
+ };
118
+ }
119
+ exports.SambaHandler = SambaHandler;
120
+ //# sourceMappingURL=samba.handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"samba.handler.js","sourceRoot":"","sources":["../../src/handlers/samba.handler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import { Request, Response, NextFunction } from 'express';
2
+ import type { IShareService } from '../types/service.interfaces';
3
+ export declare class ShareHandler {
4
+ private shareService;
5
+ constructor(shareService: IShareService);
6
+ list: (_req: Request, res: Response, next: NextFunction) => Promise<void>;
7
+ create: (req: Request, res: Response, next: NextFunction) => Promise<void>;
8
+ remove: (req: Request, res: Response, next: NextFunction) => Promise<void>;
9
+ setPermissions: (req: Request, res: Response, next: NextFunction) => Promise<void>;
10
+ }
11
+ //# sourceMappingURL=share.handler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"share.handler.d.ts","sourceRoot":"","sources":["../../src/handlers/share.handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AACzD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAA;AAGhE,qBAAa,YAAY;IACX,OAAO,CAAC,YAAY;gBAAZ,YAAY,EAAE,aAAa;IAE/C,IAAI,GAAU,MAAM,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,mBAO7D;IAED,MAAM,GAAU,KAAK,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,mBAQ9D;IAED,MAAM,GAAU,KAAK,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,mBAQ9D;IAED,cAAc,GAAU,KAAK,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,mBAStE;CACF"}
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ShareHandler = void 0;
4
+ const response_1 = require("../lib/response");
5
+ class ShareHandler {
6
+ shareService;
7
+ constructor(shareService) {
8
+ this.shareService = shareService;
9
+ }
10
+ list = async (_req, res, next) => {
11
+ try {
12
+ const shares = await this.shareService.list();
13
+ (0, response_1.ok)(res, shares);
14
+ }
15
+ catch (err) {
16
+ next(err);
17
+ }
18
+ };
19
+ create = async (req, res, next) => {
20
+ try {
21
+ const { path, owner, group } = req.body;
22
+ const result = await this.shareService.create(path, owner, group);
23
+ (0, response_1.ok)(res, result, '共享目录创建成功');
24
+ }
25
+ catch (err) {
26
+ next(err);
27
+ }
28
+ };
29
+ remove = async (req, res, next) => {
30
+ try {
31
+ const path = req.params.path;
32
+ await this.shareService.remove(decodeURIComponent(path));
33
+ (0, response_1.ok)(res, null, '共享目录删除成功');
34
+ }
35
+ catch (err) {
36
+ next(err);
37
+ }
38
+ };
39
+ setPermissions = async (req, res, next) => {
40
+ try {
41
+ const path = req.params.path;
42
+ const { mode } = req.body;
43
+ const result = await this.shareService.setPermissions(decodeURIComponent(path), mode);
44
+ (0, response_1.ok)(res, result, '权限设置成功');
45
+ }
46
+ catch (err) {
47
+ next(err);
48
+ }
49
+ };
50
+ }
51
+ exports.ShareHandler = ShareHandler;
52
+ //# sourceMappingURL=share.handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"share.handler.js","sourceRoot":"","sources":["../../src/handlers/share.handler.ts"],"names":[],"mappings":";;;AAEA,8CAAoC;AAEpC,MAAa,YAAY;IACH;IAApB,YAAoB,YAA2B;QAA3B,iBAAY,GAAZ,YAAY,CAAe;IAAG,CAAC;IAEnD,IAAI,GAAG,KAAK,EAAE,IAAa,EAAE,GAAa,EAAE,IAAkB,EAAE,EAAE;QAChE,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAA;YAC7C,IAAA,aAAE,EAAC,GAAG,EAAE,MAAM,CAAC,CAAA;QACjB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,GAAG,CAAC,CAAA;QACX,CAAC;IACH,CAAC,CAAA;IAED,MAAM,GAAG,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,IAAkB,EAAE,EAAE;QACjE,IAAI,CAAC;YACH,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC,IAAI,CAAA;YACvC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,CAAA;YACjE,IAAA,aAAE,EAAC,GAAG,EAAE,MAAM,EAAE,UAAU,CAAC,CAAA;QAC7B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,GAAG,CAAC,CAAA;QACX,CAAC;IACH,CAAC,CAAA;IAED,MAAM,GAAG,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,IAAkB,EAAE,EAAE;QACjE,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,IAAc,CAAA;YACtC,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAA;YACxD,IAAA,aAAE,EAAC,GAAG,EAAE,IAAI,EAAE,UAAU,CAAC,CAAA;QAC3B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,GAAG,CAAC,CAAA;QACX,CAAC;IACH,CAAC,CAAA;IAED,cAAc,GAAG,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,IAAkB,EAAE,EAAE;QACzE,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,IAAc,CAAA;YACtC,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC,IAAI,CAAA;YACzB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAA;YACrF,IAAA,aAAE,EAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAA;QAC3B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,GAAG,CAAC,CAAA;QACX,CAAC;IACH,CAAC,CAAA;CACF;AA1CD,oCA0CC"}
@@ -0,0 +1,17 @@
1
+ import { Request, Response, NextFunction } from 'express';
2
+ import { PrismaClient } from '@prisma/client';
3
+ import type { ISambaOperator } from '../operators/samba.operator';
4
+ export declare class SystemHandler {
5
+ private sambaOp;
6
+ private initService;
7
+ private prisma;
8
+ constructor(prisma: PrismaClient, sambaOp: ISambaOperator);
9
+ storage: (_req: Request, res: Response, next: NextFunction) => Promise<void>;
10
+ health: (_req: Request, res: Response, next: NextFunction) => Promise<void>;
11
+ info: (_req: Request, res: Response, next: NextFunction) => Promise<void>;
12
+ initStatus: (_req: Request, res: Response, next: NextFunction) => Promise<void>;
13
+ init: (req: Request, res: Response, next: NextFunction) => Promise<void>;
14
+ logs: (req: Request, res: Response, next: NextFunction) => Promise<void>;
15
+ logsStream: (req: Request, res: Response, _next: NextFunction) => Promise<void>;
16
+ }
17
+ //# sourceMappingURL=system.handler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"system.handler.d.ts","sourceRoot":"","sources":["../../src/handlers/system.handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAK7C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAA;AAIjE,qBAAa,aAAa;IAIU,OAAO,CAAC,OAAO;IAHjD,OAAO,CAAC,WAAW,CAAa;IAChC,OAAO,CAAC,MAAM,CAAc;gBAEhB,MAAM,EAAE,YAAY,EAAU,OAAO,EAAE,cAAc;IAKjE,OAAO,GAAU,MAAM,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,mBAqBhE;IAED,MAAM,GAAU,MAAM,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,mBAoD/D;IAED,IAAI,GAAU,MAAM,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,mBAqB7D;IAED,UAAU,GAAU,MAAM,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,mBAOnE;IAED,IAAI,GAAU,KAAK,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,mBAS5D;IAED,IAAI,GAAU,KAAK,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,mBAY5D;IAED,UAAU,GAAU,KAAK,OAAO,EAAE,KAAK,QAAQ,EAAE,OAAO,YAAY,mBA2BnE;CACF"}
@@ -0,0 +1,210 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.SystemHandler = void 0;
37
+ const shell_1 = require("../lib/shell");
38
+ const config_1 = require("../config");
39
+ const response_1 = require("../lib/response");
40
+ const log_buffer_1 = require("../lib/log-buffer");
41
+ const init_service_1 = require("../services/init.service");
42
+ const logger_1 = require("../middleware/logger");
43
+ class SystemHandler {
44
+ sambaOp;
45
+ initService;
46
+ prisma;
47
+ constructor(prisma, sambaOp) {
48
+ this.sambaOp = sambaOp;
49
+ this.initService = new init_service_1.InitService(prisma);
50
+ this.prisma = prisma;
51
+ }
52
+ storage = async (_req, res, next) => {
53
+ try {
54
+ const output = await (0, shell_1.shellOrThrow)('df', ['-h', config_1.config.system.shareBase]);
55
+ const lines = output.split('\n');
56
+ if (lines.length < 2) {
57
+ (0, response_1.ok)(res, { mounted: false });
58
+ return;
59
+ }
60
+ const parts = lines[1].trim().split(/\s+/);
61
+ (0, response_1.ok)(res, {
62
+ mounted: true,
63
+ filesystem: parts[0],
64
+ total: parts[1],
65
+ used: parts[2],
66
+ available: parts[3],
67
+ usePercent: parts[4],
68
+ mountpoint: parts[5],
69
+ });
70
+ }
71
+ catch (err) {
72
+ next(err);
73
+ }
74
+ };
75
+ health = async (_req, res, next) => {
76
+ try {
77
+ const fs = await Promise.resolve().then(() => __importStar(require('fs')));
78
+ const checks = {};
79
+ // DB check
80
+ try {
81
+ await (0, shell_1.shellOrThrow)('test', ['-f', config_1.config.paths.dbFile]);
82
+ checks.database = true;
83
+ }
84
+ catch {
85
+ checks.database = false;
86
+ }
87
+ // Samba installed check
88
+ let sambaInstalled = false;
89
+ try {
90
+ sambaInstalled = await this.sambaOp.isInstalled();
91
+ }
92
+ catch { }
93
+ checks.sambaInstalled = sambaInstalled;
94
+ // Samba check (smbd on Ubuntu/Debian, smb on RHEL/CentOS)
95
+ try {
96
+ await (0, shell_1.shellOrThrow)('systemctl', ['is-active', 'smbd.service']);
97
+ checks.samba = true;
98
+ }
99
+ catch {
100
+ try {
101
+ await (0, shell_1.shellOrThrow)('systemctl', ['is-active', 'smb.service']);
102
+ checks.samba = true;
103
+ }
104
+ catch {
105
+ checks.samba = false;
106
+ }
107
+ }
108
+ // Share directory exists
109
+ checks.shareExists = fs.existsSync(config_1.config.system.shareBase);
110
+ // Disk check (only if share dir exists)
111
+ if (checks.shareExists) {
112
+ try {
113
+ await (0, shell_1.shellOrThrow)('mountpoint', ['-q', config_1.config.system.shareBase]);
114
+ checks.shareDisk = true;
115
+ }
116
+ catch {
117
+ checks.shareDisk = false;
118
+ }
119
+ }
120
+ else {
121
+ checks.shareDisk = false;
122
+ }
123
+ (0, response_1.ok)(res, checks);
124
+ }
125
+ catch (err) {
126
+ next(err);
127
+ }
128
+ };
129
+ info = async (_req, res, next) => {
130
+ try {
131
+ const [os, kernel, sambaVer] = await Promise.all([
132
+ (0, shell_1.shellOrThrow)('cat', ['/etc/redhat-release']).catch(() => (0, shell_1.shellOrThrow)('uname', ['-o'])),
133
+ (0, shell_1.shellOrThrow)('uname', ['-r']),
134
+ (0, shell_1.shellOrThrow)('smbd', ['--version']).catch(() => 'not installed'),
135
+ ]);
136
+ // Read siteTitle from DB
137
+ let siteTitle = 'Cloud Storage Manager';
138
+ try {
139
+ const setting = await this.prisma.setting.findUnique({ where: { key: 'siteTitle' } });
140
+ if (setting)
141
+ siteTitle = setting.value;
142
+ }
143
+ catch { }
144
+ (0, response_1.ok)(res, { os, kernel, sambaVersion: sambaVer, siteTitle });
145
+ }
146
+ catch (err) {
147
+ next(err);
148
+ }
149
+ };
150
+ initStatus = async (_req, res, next) => {
151
+ try {
152
+ const initialized = await this.initService.getInitStatus();
153
+ (0, response_1.ok)(res, { initialized });
154
+ }
155
+ catch {
156
+ (0, response_1.ok)(res, { initialized: false });
157
+ }
158
+ };
159
+ init = async (req, res, next) => {
160
+ try {
161
+ const { adminUsername, adminPassword, siteTitle } = req.body;
162
+ await this.initService.init(adminUsername, adminPassword, siteTitle);
163
+ (0, response_1.ok)(res, null, '初始化成功,请登录');
164
+ }
165
+ catch (err) {
166
+ logger_1.logger.error({ err: err.message, stack: err.stack }, '初始化失败');
167
+ next(err);
168
+ }
169
+ };
170
+ logs = async (req, res, next) => {
171
+ try {
172
+ const { level, limit, since } = req.query;
173
+ const logs = log_buffer_1.logBuffer.getLogs({
174
+ level: level || 'all',
175
+ limit: limit ? Number(limit) : undefined,
176
+ since: since ? Number(since) : undefined,
177
+ });
178
+ (0, response_1.ok)(res, logs);
179
+ }
180
+ catch (err) {
181
+ next(err);
182
+ }
183
+ };
184
+ logsStream = async (req, res, _next) => {
185
+ res.writeHead(200, {
186
+ 'Content-Type': 'text/event-stream',
187
+ 'Cache-Control': 'no-cache',
188
+ Connection: 'keep-alive',
189
+ });
190
+ const level = req.query.level || 'all';
191
+ const levels = ['trace', 'debug', 'info', 'warn', 'error', 'fatal'];
192
+ const minIdx = levels.indexOf(level);
193
+ const onLog = (entry) => {
194
+ if (minIdx >= 0 && levels.indexOf(entry.level) < minIdx)
195
+ return;
196
+ res.write(`data: ${JSON.stringify(entry)}\n\n`);
197
+ };
198
+ log_buffer_1.logBuffer.on('log', onLog);
199
+ // Send heartbeat every 30s
200
+ const heartbeat = setInterval(() => {
201
+ res.write(': heartbeat\n\n');
202
+ }, 30000);
203
+ req.on('close', () => {
204
+ log_buffer_1.logBuffer.off('log', onLog);
205
+ clearInterval(heartbeat);
206
+ });
207
+ };
208
+ }
209
+ exports.SystemHandler = SystemHandler;
210
+ //# sourceMappingURL=system.handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"system.handler.js","sourceRoot":"","sources":["../../src/handlers/system.handler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import { Request, Response, NextFunction } from 'express';
2
+ import type { IUserService } from '../types/service.interfaces';
3
+ export declare class UserHandler {
4
+ private userService;
5
+ constructor(userService: IUserService);
6
+ changePassword: (req: Request, res: Response, next: NextFunction) => Promise<void>;
7
+ create: (req: Request, res: Response, next: NextFunction) => Promise<void>;
8
+ getById: (req: Request, res: Response, next: NextFunction) => Promise<void>;
9
+ list: (req: Request, res: Response, next: NextFunction) => Promise<void>;
10
+ update: (req: Request, res: Response, next: NextFunction) => Promise<void>;
11
+ delete: (req: Request, res: Response, next: NextFunction) => Promise<void>;
12
+ batch: (req: Request, res: Response, next: NextFunction) => Promise<void>;
13
+ disable: (req: Request, res: Response, next: NextFunction) => Promise<void>;
14
+ enable: (req: Request, res: Response, next: NextFunction) => Promise<void>;
15
+ }
16
+ //# sourceMappingURL=user.handler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user.handler.d.ts","sourceRoot":"","sources":["../../src/handlers/user.handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AACzD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAA;AAG/D,qBAAa,WAAW;IACV,OAAO,CAAC,WAAW;gBAAX,WAAW,EAAE,YAAY;IAE7C,cAAc,GAAU,KAAK,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,mBAQtE;IAED,MAAM,GAAU,KAAK,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,mBAO9D;IAED,OAAO,GAAU,KAAK,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,mBAO/D;IAED,IAAI,GAAU,KAAK,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,mBAY5D;IAED,MAAM,GAAU,KAAK,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,mBAO9D;IAED,MAAM,GAAU,KAAK,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,mBAO9D;IAED,KAAK,GAAU,KAAK,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,mBAQ7D;IAED,OAAO,GAAU,KAAK,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,mBAO/D;IAED,MAAM,GAAU,KAAK,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,mBAQ9D;CACF"}
@@ -0,0 +1,101 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.UserHandler = void 0;
4
+ const response_1 = require("../lib/response");
5
+ class UserHandler {
6
+ userService;
7
+ constructor(userService) {
8
+ this.userService = userService;
9
+ }
10
+ changePassword = async (req, res, next) => {
11
+ try {
12
+ const { username, oldPassword, newPassword } = req.body;
13
+ await this.userService.changePassword(username, oldPassword, newPassword);
14
+ (0, response_1.ok)(res, null, '密码修改成功');
15
+ }
16
+ catch (err) {
17
+ next(err);
18
+ }
19
+ };
20
+ create = async (req, res, next) => {
21
+ try {
22
+ const user = await this.userService.create(req.body);
23
+ (0, response_1.ok)(res, user, '用户创建成功');
24
+ }
25
+ catch (err) {
26
+ next(err);
27
+ }
28
+ };
29
+ getById = async (req, res, next) => {
30
+ try {
31
+ const user = await this.userService.findById(Number(req.params.id));
32
+ (0, response_1.ok)(res, user);
33
+ }
34
+ catch (err) {
35
+ next(err);
36
+ }
37
+ };
38
+ list = async (req, res, next) => {
39
+ try {
40
+ const { page = '1', size = '10', q } = req.query;
41
+ const result = await this.userService.list({
42
+ page: Number(page),
43
+ size: Number(size),
44
+ q,
45
+ });
46
+ (0, response_1.paginated)(res, result.items, result.total, Number(page), Number(size));
47
+ }
48
+ catch (err) {
49
+ next(err);
50
+ }
51
+ };
52
+ update = async (req, res, next) => {
53
+ try {
54
+ const user = await this.userService.update(Number(req.params.id), req.body);
55
+ (0, response_1.ok)(res, user, '用户更新成功');
56
+ }
57
+ catch (err) {
58
+ next(err);
59
+ }
60
+ };
61
+ delete = async (req, res, next) => {
62
+ try {
63
+ await this.userService.delete(Number(req.params.id));
64
+ (0, response_1.ok)(res, null, '用户删除成功');
65
+ }
66
+ catch (err) {
67
+ next(err);
68
+ }
69
+ };
70
+ batch = async (req, res, next) => {
71
+ try {
72
+ const { accounts } = req.body;
73
+ const results = await this.userService.batch(accounts);
74
+ (0, response_1.ok)(res, results, '批量操作完成');
75
+ }
76
+ catch (err) {
77
+ next(err);
78
+ }
79
+ };
80
+ disable = async (req, res, next) => {
81
+ try {
82
+ const user = await this.userService.disable(Number(req.params.id));
83
+ (0, response_1.ok)(res, user, '用户已禁用');
84
+ }
85
+ catch (err) {
86
+ next(err);
87
+ }
88
+ };
89
+ enable = async (req, res, next) => {
90
+ try {
91
+ const { password } = req.body;
92
+ const user = await this.userService.enable(Number(req.params.id), password);
93
+ (0, response_1.ok)(res, user, '用户已启用');
94
+ }
95
+ catch (err) {
96
+ next(err);
97
+ }
98
+ };
99
+ }
100
+ exports.UserHandler = UserHandler;
101
+ //# sourceMappingURL=user.handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user.handler.js","sourceRoot":"","sources":["../../src/handlers/user.handler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}