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.
- package/.env.example +17 -0
- package/README.md +120 -0
- package/dist/config/index.d.ts +27 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +45 -0
- package/dist/config/index.js.map +1 -0
- package/dist/dto/auth.dto.d.ts +14 -0
- package/dist/dto/auth.dto.d.ts.map +1 -0
- package/dist/dto/auth.dto.js +16 -0
- package/dist/dto/auth.dto.js.map +1 -0
- package/dist/dto/user.dto.d.ts +76 -0
- package/dist/dto/user.dto.d.ts.map +1 -0
- package/dist/dto/user.dto.js +70 -0
- package/dist/dto/user.dto.js.map +1 -0
- package/dist/handlers/auth.handler.d.ts +10 -0
- package/dist/handlers/auth.handler.d.ts.map +1 -0
- package/dist/handlers/auth.handler.js +41 -0
- package/dist/handlers/auth.handler.js.map +1 -0
- package/dist/handlers/disk.handler.d.ts +12 -0
- package/dist/handlers/disk.handler.d.ts.map +1 -0
- package/dist/handlers/disk.handler.js +61 -0
- package/dist/handlers/disk.handler.js.map +1 -0
- package/dist/handlers/samba.handler.d.ts +16 -0
- package/dist/handlers/samba.handler.d.ts.map +1 -0
- package/dist/handlers/samba.handler.js +120 -0
- package/dist/handlers/samba.handler.js.map +1 -0
- package/dist/handlers/share.handler.d.ts +11 -0
- package/dist/handlers/share.handler.d.ts.map +1 -0
- package/dist/handlers/share.handler.js +52 -0
- package/dist/handlers/share.handler.js.map +1 -0
- package/dist/handlers/system.handler.d.ts +17 -0
- package/dist/handlers/system.handler.d.ts.map +1 -0
- package/dist/handlers/system.handler.js +210 -0
- package/dist/handlers/system.handler.js.map +1 -0
- package/dist/handlers/user.handler.d.ts +16 -0
- package/dist/handlers/user.handler.d.ts.map +1 -0
- package/dist/handlers/user.handler.js +101 -0
- package/dist/handlers/user.handler.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +799 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/errors.d.ts +13 -0
- package/dist/lib/errors.d.ts.map +1 -0
- package/dist/lib/errors.js +35 -0
- package/dist/lib/errors.js.map +1 -0
- package/dist/lib/log-buffer.d.ts +20 -0
- package/dist/lib/log-buffer.d.ts.map +1 -0
- package/dist/lib/log-buffer.js +75 -0
- package/dist/lib/log-buffer.js.map +1 -0
- package/dist/lib/response.d.ts +5 -0
- package/dist/lib/response.d.ts.map +1 -0
- package/dist/lib/response.js +19 -0
- package/dist/lib/response.js.map +1 -0
- package/dist/lib/shell.d.ts +9 -0
- package/dist/lib/shell.d.ts.map +1 -0
- package/dist/lib/shell.js +32 -0
- package/dist/lib/shell.js.map +1 -0
- package/dist/middleware/auth.d.ts +17 -0
- package/dist/middleware/auth.d.ts.map +1 -0
- package/dist/middleware/auth.js +43 -0
- package/dist/middleware/auth.js.map +1 -0
- package/dist/middleware/error-handler.d.ts +3 -0
- package/dist/middleware/error-handler.d.ts.map +1 -0
- package/dist/middleware/error-handler.js +14 -0
- package/dist/middleware/error-handler.js.map +1 -0
- package/dist/middleware/logger.d.ts +3 -0
- package/dist/middleware/logger.d.ts.map +1 -0
- package/dist/middleware/logger.js +25 -0
- package/dist/middleware/logger.js.map +1 -0
- package/dist/middleware/validate.d.ts +3 -0
- package/dist/middleware/validate.d.ts.map +1 -0
- package/dist/middleware/validate.js +28 -0
- package/dist/middleware/validate.js.map +1 -0
- package/dist/operators/disk.operator.d.ts +29 -0
- package/dist/operators/disk.operator.d.ts.map +1 -0
- package/dist/operators/disk.operator.js +70 -0
- package/dist/operators/disk.operator.js.map +1 -0
- package/dist/operators/linux-user.operator.d.ts +13 -0
- package/dist/operators/linux-user.operator.d.ts.map +1 -0
- package/dist/operators/linux-user.operator.js +47 -0
- package/dist/operators/linux-user.operator.js.map +1 -0
- package/dist/operators/quota.operator.d.ts +18 -0
- package/dist/operators/quota.operator.d.ts.map +1 -0
- package/dist/operators/quota.operator.js +54 -0
- package/dist/operators/quota.operator.js.map +1 -0
- package/dist/operators/samba.operator.d.ts +41 -0
- package/dist/operators/samba.operator.d.ts.map +1 -0
- package/dist/operators/samba.operator.js +274 -0
- package/dist/operators/samba.operator.js.map +1 -0
- package/dist/operators/share.operator.d.ts +21 -0
- package/dist/operators/share.operator.d.ts.map +1 -0
- package/dist/operators/share.operator.js +67 -0
- package/dist/operators/share.operator.js.map +1 -0
- package/dist/repositories/admin.repo.d.ts +30 -0
- package/dist/repositories/admin.repo.d.ts.map +1 -0
- package/dist/repositories/admin.repo.js +20 -0
- package/dist/repositories/admin.repo.js.map +1 -0
- package/dist/repositories/user.repo.d.ts +44 -0
- package/dist/repositories/user.repo.d.ts.map +1 -0
- package/dist/repositories/user.repo.js +3 -0
- package/dist/repositories/user.repo.js.map +1 -0
- package/dist/repositories/user.repo.sqlite.d.ts +16 -0
- package/dist/repositories/user.repo.sqlite.d.ts.map +1 -0
- package/dist/repositories/user.repo.sqlite.js +47 -0
- package/dist/repositories/user.repo.sqlite.js.map +1 -0
- package/dist/routes/auth.routes.d.ts +4 -0
- package/dist/routes/auth.routes.d.ts.map +1 -0
- package/dist/routes/auth.routes.js +15 -0
- package/dist/routes/auth.routes.js.map +1 -0
- package/dist/routes/disk.routes.d.ts +4 -0
- package/dist/routes/disk.routes.d.ts.map +1 -0
- package/dist/routes/disk.routes.js +16 -0
- package/dist/routes/disk.routes.js.map +1 -0
- package/dist/routes/index.d.ts +4 -0
- package/dist/routes/index.d.ts.map +1 -0
- package/dist/routes/index.js +64 -0
- package/dist/routes/index.js.map +1 -0
- package/dist/routes/samba.routes.d.ts +4 -0
- package/dist/routes/samba.routes.d.ts.map +1 -0
- package/dist/routes/samba.routes.js +20 -0
- package/dist/routes/samba.routes.js.map +1 -0
- package/dist/routes/share.routes.d.ts +4 -0
- package/dist/routes/share.routes.d.ts.map +1 -0
- package/dist/routes/share.routes.js +15 -0
- package/dist/routes/share.routes.js.map +1 -0
- package/dist/routes/system.routes.d.ts +4 -0
- package/dist/routes/system.routes.d.ts.map +1 -0
- package/dist/routes/system.routes.js +20 -0
- package/dist/routes/system.routes.js.map +1 -0
- package/dist/routes/user.routes.d.ts +5 -0
- package/dist/routes/user.routes.d.ts.map +1 -0
- package/dist/routes/user.routes.js +44 -0
- package/dist/routes/user.routes.js.map +1 -0
- package/dist/services/auth.service.d.ts +23 -0
- package/dist/services/auth.service.d.ts.map +1 -0
- package/dist/services/auth.service.js +62 -0
- package/dist/services/auth.service.js.map +1 -0
- package/dist/services/disk.service.d.ts +12 -0
- package/dist/services/disk.service.d.ts.map +1 -0
- package/dist/services/disk.service.js +34 -0
- package/dist/services/disk.service.js.map +1 -0
- package/dist/services/init.service.d.ts +8 -0
- package/dist/services/init.service.d.ts.map +1 -0
- package/dist/services/init.service.js +47 -0
- package/dist/services/init.service.js.map +1 -0
- package/dist/services/quota.service.d.ts +14 -0
- package/dist/services/quota.service.d.ts.map +1 -0
- package/dist/services/quota.service.js +32 -0
- package/dist/services/quota.service.js.map +1 -0
- package/dist/services/samba.service.d.ts +45 -0
- package/dist/services/samba.service.d.ts.map +1 -0
- package/dist/services/samba.service.js +61 -0
- package/dist/services/samba.service.js.map +1 -0
- package/dist/services/share.service.d.ts +18 -0
- package/dist/services/share.service.d.ts.map +1 -0
- package/dist/services/share.service.js +29 -0
- package/dist/services/share.service.js.map +1 -0
- package/dist/services/user.service.d.ts +48 -0
- package/dist/services/user.service.d.ts.map +1 -0
- package/dist/services/user.service.js +196 -0
- package/dist/services/user.service.js.map +1 -0
- package/dist/types/index.d.ts +7 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +23 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/service.interfaces.d.ts +45 -0
- package/dist/types/service.interfaces.d.ts.map +1 -0
- package/dist/types/service.interfaces.js +3 -0
- package/dist/types/service.interfaces.js.map +1 -0
- package/package.json +63 -0
- package/prisma/schema.prisma +53 -0
- package/public/assets/Dashboard-BupoWE_7.js +1 -0
- package/public/assets/DiskManage-BY6Sy7T6.js +1 -0
- package/public/assets/InitWizard-CA9epEkr.css +1 -0
- package/public/assets/InitWizard-D5Xj7dX0.js +1 -0
- package/public/assets/Layout-D-CPXnPP.js +1 -0
- package/public/assets/Layout-DaQY8YzE.css +1 -0
- package/public/assets/LogViewer-CIJZzoXw.css +1 -0
- package/public/assets/LogViewer-DDAIjW9J.js +1 -0
- package/public/assets/Login-D92i6dQA.js +1 -0
- package/public/assets/Login-DimFYijw.css +1 -0
- package/public/assets/ServiceManage-CIWLurL_.css +1 -0
- package/public/assets/ServiceManage-D-ZWP7Ry.js +1 -0
- package/public/assets/ShareManage-BMsFoGea.js +1 -0
- package/public/assets/UserList-CqeA7r2Y.js +1 -0
- package/public/assets/index-B-crAlzg.css +1 -0
- package/public/assets/index-CfC5GCM9.js +100 -0
- package/public/index.html +14 -0
package/.env.example
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# 服务
|
|
2
|
+
PORT=9528
|
|
3
|
+
NODE_ENV=production
|
|
4
|
+
|
|
5
|
+
# 数据库
|
|
6
|
+
DATABASE_URL=file:/etc/cloudisk/data/cloud_storage.db
|
|
7
|
+
|
|
8
|
+
# 认证 (请修改为随机字符串)
|
|
9
|
+
JWT_SECRET=change-me-to-a-random-string
|
|
10
|
+
JWT_EXPIRES_IN=24h
|
|
11
|
+
|
|
12
|
+
# 系统
|
|
13
|
+
SHARE_BASE=/share
|
|
14
|
+
SHELL_TIMEOUT=30000
|
|
15
|
+
|
|
16
|
+
# 日志
|
|
17
|
+
LOG_LEVEL=info
|
package/README.md
ADDED
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
# Cloudisk
|
|
2
|
+
|
|
3
|
+
Samba 文件共享管理平台 — 基于 Node.js + Vue 3 的 Web 管理系统。
|
|
4
|
+
|
|
5
|
+
## 功能
|
|
6
|
+
|
|
7
|
+
| 模块 | 说明 |
|
|
8
|
+
|------|------|
|
|
9
|
+
| 用户管理 | 创建/删除/禁用 Samba 用户,自动配置系统用户、目录、配额 |
|
|
10
|
+
| 服务管理 | Samba 安装/卸载/启停,自动检测包管理器和服务名称 |
|
|
11
|
+
| 磁盘管理 | 磁盘列表、格式化 (XFS/EXT4)、挂载/卸载 |
|
|
12
|
+
| 共享目录 | 共享目录创建/删除、权限管理 |
|
|
13
|
+
| 配额管理 | XFS 磁盘配额,软/硬上限独立控制 |
|
|
14
|
+
| 系统日志 | 实时日志流 (SSE),支持级别过滤 |
|
|
15
|
+
| 系统监控 | 存储用量、服务健康检查 |
|
|
16
|
+
|
|
17
|
+
## 快速开始
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
# 全局安装
|
|
21
|
+
npm install -g cloudisk
|
|
22
|
+
|
|
23
|
+
# 初始化配置目录
|
|
24
|
+
cloudisk init
|
|
25
|
+
|
|
26
|
+
# 启动服务
|
|
27
|
+
cloudisk server start
|
|
28
|
+
|
|
29
|
+
# 浏览器访问 http://your-ip:9528
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
首次访问进入初始化向导,设置管理员账户和站点标题。
|
|
33
|
+
|
|
34
|
+
## 命令行
|
|
35
|
+
|
|
36
|
+
### 服务管理
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
cloudisk server start # 启动服务
|
|
40
|
+
-p, --port <端口> # 默认 9528
|
|
41
|
+
-c, --config <配置文件> # 默认 /etc/cloudisk/.env
|
|
42
|
+
-d, --db <数据库路径>
|
|
43
|
+
-l, --log-level <级别> # debug/info/warn/error
|
|
44
|
+
|
|
45
|
+
cloudisk server install-service # 注册 systemd 服务
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
### 用户管理
|
|
49
|
+
|
|
50
|
+
```bash
|
|
51
|
+
cloudisk user list # 列出用户 (-j JSON 格式)
|
|
52
|
+
cloudisk user add -u <用户名> -p <密码> [-q <配额GB>]
|
|
53
|
+
cloudisk user delete -u <用户名> [--force]
|
|
54
|
+
cloudisk user change-password -u <用户名> -p <新密码>
|
|
55
|
+
cloudisk user set-quota -u <用户名> -q <配额GB>
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
### 其他命令
|
|
59
|
+
|
|
60
|
+
```bash
|
|
61
|
+
cloudisk status # 查看系统状态
|
|
62
|
+
cloudisk admin reset-password # 重置管理员密码 (-u 用户名 -p 新密码)
|
|
63
|
+
cloudisk backup [-o <输出路径>] # 备份数据库
|
|
64
|
+
cloudisk restore -f <备份文件> # 恢复数据库 [--force]
|
|
65
|
+
cloudisk init # 初始化配置目录
|
|
66
|
+
cloudisk migrate # 从 account.json 迁移用户
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
所有命令支持 `-h` 查看帮助。
|
|
70
|
+
|
|
71
|
+
## 架构
|
|
72
|
+
|
|
73
|
+
```
|
|
74
|
+
Handler → Service → Repository / Operator → 系统 / 数据库
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
- **Handler**: HTTP 请求处理,参数解析,响应返回
|
|
78
|
+
- **Service**: 业务逻辑编排,依赖接口(SOLID 依赖倒置)
|
|
79
|
+
- **Repository**: 数据库操作(Prisma + SQLite)
|
|
80
|
+
- **Operator**: 系统命令执行(useradd、smbpasswd、mount 等)
|
|
81
|
+
|
|
82
|
+
### 技术栈
|
|
83
|
+
|
|
84
|
+
| 层 | 技术 |
|
|
85
|
+
|----|------|
|
|
86
|
+
| 前端 | Vue 3 + Element Plus + Pinia + Vue Router |
|
|
87
|
+
| 后端 | Node.js + TypeScript + Express 5 |
|
|
88
|
+
| 数据库 | SQLite (Prisma ORM) |
|
|
89
|
+
| 认证 | JWT |
|
|
90
|
+
| 日志 | Pino (stdout + 内存缓冲 + 文件) |
|
|
91
|
+
| 实时通信 | SSE (Server-Sent Events) |
|
|
92
|
+
|
|
93
|
+
## 数据目录
|
|
94
|
+
|
|
95
|
+
```
|
|
96
|
+
/etc/cloudisk/
|
|
97
|
+
├── .env # 环境配置
|
|
98
|
+
├── data/cloud_storage.db # SQLite 数据库
|
|
99
|
+
└── logs/app.log # 应用日志
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
## 环境变量
|
|
103
|
+
|
|
104
|
+
| 变量 | 默认值 | 说明 |
|
|
105
|
+
|------|--------|------|
|
|
106
|
+
| PORT | 9528 | 服务端口 |
|
|
107
|
+
| DATABASE_URL | file:/etc/cloudisk/data/cloud_storage.db | 数据库路径 |
|
|
108
|
+
| JWT_EXPIRES_IN | 24h | Token 过期时间 |
|
|
109
|
+
| SHARE_BASE | /share | 共享目录根路径 |
|
|
110
|
+
| LOG_LEVEL | info | 日志级别 |
|
|
111
|
+
|
|
112
|
+
## 系统要求
|
|
113
|
+
|
|
114
|
+
- Node.js >= 18
|
|
115
|
+
- Linux (需要 root 权限)
|
|
116
|
+
- Samba (可选,服务管理页面可自动安装)
|
|
117
|
+
|
|
118
|
+
## 许可证
|
|
119
|
+
|
|
120
|
+
MIT
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
export declare const config: {
|
|
2
|
+
port: number;
|
|
3
|
+
nodeEnv: string;
|
|
4
|
+
siteTitle: string;
|
|
5
|
+
database: {
|
|
6
|
+
url: string;
|
|
7
|
+
dir: string;
|
|
8
|
+
};
|
|
9
|
+
auth: {
|
|
10
|
+
jwtSecret: string;
|
|
11
|
+
jwtExpiresIn: string;
|
|
12
|
+
};
|
|
13
|
+
system: {
|
|
14
|
+
shareBase: string;
|
|
15
|
+
shellTimeout: number;
|
|
16
|
+
};
|
|
17
|
+
log: {
|
|
18
|
+
level: string;
|
|
19
|
+
dir: string;
|
|
20
|
+
};
|
|
21
|
+
paths: {
|
|
22
|
+
etcDir: string;
|
|
23
|
+
envFile: string;
|
|
24
|
+
dbFile: string;
|
|
25
|
+
};
|
|
26
|
+
};
|
|
27
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAcA,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;CA8BlB,CAAA"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.config = void 0;
|
|
7
|
+
const dotenv_1 = __importDefault(require("dotenv"));
|
|
8
|
+
const path_1 = __importDefault(require("path"));
|
|
9
|
+
const fs_1 = __importDefault(require("fs"));
|
|
10
|
+
// Load .env from /etc/cloudisk/.env if exists, otherwise from CWD
|
|
11
|
+
const etcEnv = '/etc/cloudisk/.env';
|
|
12
|
+
if (fs_1.default.existsSync(etcEnv)) {
|
|
13
|
+
dotenv_1.default.config({ path: etcEnv });
|
|
14
|
+
}
|
|
15
|
+
else {
|
|
16
|
+
dotenv_1.default.config();
|
|
17
|
+
}
|
|
18
|
+
const ETC_DIR = '/etc/cloudisk';
|
|
19
|
+
exports.config = {
|
|
20
|
+
port: parseInt(process.env.PORT || '9528', 10),
|
|
21
|
+
nodeEnv: process.env.NODE_ENV || 'development',
|
|
22
|
+
siteTitle: process.env.SITE_TITLE || 'Cloud Storage Manager',
|
|
23
|
+
database: {
|
|
24
|
+
url: process.env.DATABASE_URL || `file:${ETC_DIR}/data/cloud_storage.db`,
|
|
25
|
+
dir: path_1.default.join(ETC_DIR, 'data'),
|
|
26
|
+
},
|
|
27
|
+
auth: {
|
|
28
|
+
jwtSecret: process.env.JWT_SECRET || 'default-secret-change-me',
|
|
29
|
+
jwtExpiresIn: process.env.JWT_EXPIRES_IN || '24h',
|
|
30
|
+
},
|
|
31
|
+
system: {
|
|
32
|
+
shareBase: process.env.SHARE_BASE || '/share',
|
|
33
|
+
shellTimeout: parseInt(process.env.SHELL_TIMEOUT || '30000', 10),
|
|
34
|
+
},
|
|
35
|
+
log: {
|
|
36
|
+
level: process.env.LOG_LEVEL || 'debug',
|
|
37
|
+
dir: path_1.default.join(ETC_DIR, 'logs'),
|
|
38
|
+
},
|
|
39
|
+
paths: {
|
|
40
|
+
etcDir: ETC_DIR,
|
|
41
|
+
envFile: path_1.default.join(ETC_DIR, '.env'),
|
|
42
|
+
dbFile: path_1.default.join(ETC_DIR, 'data', 'cloud_storage.db'),
|
|
43
|
+
},
|
|
44
|
+
};
|
|
45
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":";;;;;;AAAA,oDAA2B;AAC3B,gDAAuB;AACvB,4CAAmB;AAEnB,kEAAkE;AAClE,MAAM,MAAM,GAAG,oBAAoB,CAAA;AACnC,IAAI,YAAE,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;IAC1B,gBAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAA;AACjC,CAAC;KAAM,CAAC;IACN,gBAAM,CAAC,MAAM,EAAE,CAAA;AACjB,CAAC;AAED,MAAM,OAAO,GAAG,eAAe,CAAA;AAElB,QAAA,MAAM,GAAG;IACpB,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,MAAM,EAAE,EAAE,CAAC;IAC9C,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,aAAa;IAC9C,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,uBAAuB;IAE5D,QAAQ,EAAE;QACR,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,QAAQ,OAAO,wBAAwB;QACxE,GAAG,EAAE,cAAI,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC;KAChC;IAED,IAAI,EAAE;QACJ,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,0BAA0B;QAC/D,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,KAAK;KAClD;IAED,MAAM,EAAE;QACN,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,QAAQ;QAC7C,YAAY,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,OAAO,EAAE,EAAE,CAAC;KACjE;IAED,GAAG,EAAE;QACH,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,OAAO;QACvC,GAAG,EAAE,cAAI,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC;KAChC;IAED,KAAK,EAAE;QACL,MAAM,EAAE,OAAO;QACf,OAAO,EAAE,cAAI,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC;QACnC,MAAM,EAAE,cAAI,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,kBAAkB,CAAC;KACvD;CACF,CAAA"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export declare const loginSchema: z.ZodObject<{
|
|
3
|
+
body: z.ZodObject<{
|
|
4
|
+
username: z.ZodString;
|
|
5
|
+
password: z.ZodString;
|
|
6
|
+
}, z.core.$strip>;
|
|
7
|
+
}, z.core.$strip>;
|
|
8
|
+
export declare const refreshTokenSchema: z.ZodObject<{
|
|
9
|
+
body: z.ZodObject<{
|
|
10
|
+
token: z.ZodString;
|
|
11
|
+
}, z.core.$strip>;
|
|
12
|
+
}, z.core.$strip>;
|
|
13
|
+
export type LoginInput = z.infer<typeof loginSchema>['body'];
|
|
14
|
+
//# sourceMappingURL=auth.dto.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.dto.d.ts","sourceRoot":"","sources":["../../src/dto/auth.dto.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,eAAO,MAAM,WAAW;;;;;iBAKtB,CAAA;AAEF,eAAO,MAAM,kBAAkB;;;;iBAI7B,CAAA;AAEF,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,CAAC,CAAA"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.refreshTokenSchema = exports.loginSchema = void 0;
|
|
4
|
+
const zod_1 = require("zod");
|
|
5
|
+
exports.loginSchema = zod_1.z.object({
|
|
6
|
+
body: zod_1.z.object({
|
|
7
|
+
username: zod_1.z.string().min(1, '用户名不能为空'),
|
|
8
|
+
password: zod_1.z.string().min(1, '密码不能为空'),
|
|
9
|
+
}),
|
|
10
|
+
});
|
|
11
|
+
exports.refreshTokenSchema = zod_1.z.object({
|
|
12
|
+
body: zod_1.z.object({
|
|
13
|
+
token: zod_1.z.string().min(1, 'Token 不能为空'),
|
|
14
|
+
}),
|
|
15
|
+
});
|
|
16
|
+
//# sourceMappingURL=auth.dto.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.dto.js","sourceRoot":"","sources":["../../src/dto/auth.dto.ts"],"names":[],"mappings":";;;AAAA,6BAAuB;AAEV,QAAA,WAAW,GAAG,OAAC,CAAC,MAAM,CAAC;IAClC,IAAI,EAAE,OAAC,CAAC,MAAM,CAAC;QACb,QAAQ,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC;QACtC,QAAQ,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC;KACtC,CAAC;CACH,CAAC,CAAA;AAEW,QAAA,kBAAkB,GAAG,OAAC,CAAC,MAAM,CAAC;IACzC,IAAI,EAAE,OAAC,CAAC,MAAM,CAAC;QACb,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,YAAY,CAAC;KACvC,CAAC;CACH,CAAC,CAAA"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export declare const createUserSchema: z.ZodObject<{
|
|
3
|
+
body: z.ZodObject<{
|
|
4
|
+
username: z.ZodString;
|
|
5
|
+
password: z.ZodString;
|
|
6
|
+
groupName: z.ZodOptional<z.ZodString>;
|
|
7
|
+
quotaSoft: z.ZodNumber;
|
|
8
|
+
quotaHard: z.ZodOptional<z.ZodNumber>;
|
|
9
|
+
}, z.core.$strip>;
|
|
10
|
+
}, z.core.$strip>;
|
|
11
|
+
export declare const updateUserSchema: z.ZodObject<{
|
|
12
|
+
params: z.ZodObject<{
|
|
13
|
+
id: z.ZodPipe<z.ZodString, z.ZodTransform<number, string>>;
|
|
14
|
+
}, z.core.$strip>;
|
|
15
|
+
body: z.ZodObject<{
|
|
16
|
+
password: z.ZodOptional<z.ZodString>;
|
|
17
|
+
quotaSoft: z.ZodOptional<z.ZodNumber>;
|
|
18
|
+
quotaHard: z.ZodOptional<z.ZodNumber>;
|
|
19
|
+
status: z.ZodOptional<z.ZodEnum<{
|
|
20
|
+
disabled: "disabled";
|
|
21
|
+
active: "active";
|
|
22
|
+
}>>;
|
|
23
|
+
}, z.core.$strip>;
|
|
24
|
+
}, z.core.$strip>;
|
|
25
|
+
export declare const getUserSchema: z.ZodObject<{
|
|
26
|
+
params: z.ZodObject<{
|
|
27
|
+
id: z.ZodPipe<z.ZodString, z.ZodTransform<number, string>>;
|
|
28
|
+
}, z.core.$strip>;
|
|
29
|
+
}, z.core.$strip>;
|
|
30
|
+
export declare const listUsersSchema: z.ZodObject<{
|
|
31
|
+
query: z.ZodObject<{
|
|
32
|
+
page: z.ZodPipe<z.ZodDefault<z.ZodString>, z.ZodTransform<number, string>>;
|
|
33
|
+
size: z.ZodPipe<z.ZodDefault<z.ZodString>, z.ZodTransform<number, string>>;
|
|
34
|
+
q: z.ZodOptional<z.ZodString>;
|
|
35
|
+
}, z.core.$strip>;
|
|
36
|
+
}, z.core.$strip>;
|
|
37
|
+
export declare const deleteUserSchema: z.ZodObject<{
|
|
38
|
+
params: z.ZodObject<{
|
|
39
|
+
id: z.ZodPipe<z.ZodString, z.ZodTransform<number, string>>;
|
|
40
|
+
}, z.core.$strip>;
|
|
41
|
+
}, z.core.$strip>;
|
|
42
|
+
export declare const batchUsersSchema: z.ZodObject<{
|
|
43
|
+
body: z.ZodObject<{
|
|
44
|
+
accounts: z.ZodArray<z.ZodObject<{
|
|
45
|
+
username: z.ZodString;
|
|
46
|
+
password: z.ZodString;
|
|
47
|
+
groupName: z.ZodOptional<z.ZodString>;
|
|
48
|
+
quotaSoft: z.ZodNumber;
|
|
49
|
+
quotaHard: z.ZodOptional<z.ZodNumber>;
|
|
50
|
+
action: z.ZodEnum<{
|
|
51
|
+
delete: "delete";
|
|
52
|
+
add: "add";
|
|
53
|
+
}>;
|
|
54
|
+
}, z.core.$strip>>;
|
|
55
|
+
}, z.core.$strip>;
|
|
56
|
+
}, z.core.$strip>;
|
|
57
|
+
export declare const updateQuotaSchema: z.ZodObject<{
|
|
58
|
+
params: z.ZodObject<{
|
|
59
|
+
id: z.ZodPipe<z.ZodString, z.ZodTransform<number, string>>;
|
|
60
|
+
}, z.core.$strip>;
|
|
61
|
+
body: z.ZodObject<{
|
|
62
|
+
quotaSoft: z.ZodNumber;
|
|
63
|
+
quotaHard: z.ZodOptional<z.ZodNumber>;
|
|
64
|
+
}, z.core.$strip>;
|
|
65
|
+
}, z.core.$strip>;
|
|
66
|
+
export declare const changePasswordSchema: z.ZodObject<{
|
|
67
|
+
body: z.ZodObject<{
|
|
68
|
+
username: z.ZodString;
|
|
69
|
+
oldPassword: z.ZodString;
|
|
70
|
+
newPassword: z.ZodString;
|
|
71
|
+
}, z.core.$strip>;
|
|
72
|
+
}, z.core.$strip>;
|
|
73
|
+
export type CreateUserInput = z.infer<typeof createUserSchema>['body'];
|
|
74
|
+
export type UpdateUserInput = z.infer<typeof updateUserSchema>['body'];
|
|
75
|
+
export type ListUsersQuery = z.infer<typeof listUsersSchema>['query'];
|
|
76
|
+
//# sourceMappingURL=user.dto.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"user.dto.d.ts","sourceRoot":"","sources":["../../src/dto/user.dto.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,eAAO,MAAM,gBAAgB;;;;;;;;iBAQ3B,CAAA;AAEF,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;iBAU3B,CAAA;AAEF,eAAO,MAAM,aAAa;;;;iBAIxB,CAAA;AAEF,eAAO,MAAM,eAAe;;;;;;iBAM1B,CAAA;AAEF,eAAO,MAAM,gBAAgB;;;;iBAI3B,CAAA;AAEF,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;iBAa3B,CAAA;AAEF,eAAO,MAAM,iBAAiB;;;;;;;;iBAQ5B,CAAA;AAEF,eAAO,MAAM,oBAAoB;;;;;;iBAM/B,CAAA;AAEF,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAA;AACtE,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAA;AACtE,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC,OAAO,CAAC,CAAA"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.changePasswordSchema = exports.updateQuotaSchema = exports.batchUsersSchema = exports.deleteUserSchema = exports.listUsersSchema = exports.getUserSchema = exports.updateUserSchema = exports.createUserSchema = void 0;
|
|
4
|
+
const zod_1 = require("zod");
|
|
5
|
+
exports.createUserSchema = zod_1.z.object({
|
|
6
|
+
body: zod_1.z.object({
|
|
7
|
+
username: zod_1.z.string().min(1, '用户名不能为空').max(64),
|
|
8
|
+
password: zod_1.z.string().min(1, '密码不能为空').max(128),
|
|
9
|
+
groupName: zod_1.z.string().max(64).optional(),
|
|
10
|
+
quotaSoft: zod_1.z.number().int().min(0, '配额不能为负数'),
|
|
11
|
+
quotaHard: zod_1.z.number().int().min(0).optional(),
|
|
12
|
+
}),
|
|
13
|
+
});
|
|
14
|
+
exports.updateUserSchema = zod_1.z.object({
|
|
15
|
+
params: zod_1.z.object({
|
|
16
|
+
id: zod_1.z.string().transform(Number),
|
|
17
|
+
}),
|
|
18
|
+
body: zod_1.z.object({
|
|
19
|
+
password: zod_1.z.string().min(1).max(128).optional(),
|
|
20
|
+
quotaSoft: zod_1.z.number().int().min(0).optional(),
|
|
21
|
+
quotaHard: zod_1.z.number().int().min(0).optional(),
|
|
22
|
+
status: zod_1.z.enum(['active', 'disabled']).optional(),
|
|
23
|
+
}),
|
|
24
|
+
});
|
|
25
|
+
exports.getUserSchema = zod_1.z.object({
|
|
26
|
+
params: zod_1.z.object({
|
|
27
|
+
id: zod_1.z.string().transform(Number),
|
|
28
|
+
}),
|
|
29
|
+
});
|
|
30
|
+
exports.listUsersSchema = zod_1.z.object({
|
|
31
|
+
query: zod_1.z.object({
|
|
32
|
+
page: zod_1.z.string().default('1').transform(Number),
|
|
33
|
+
size: zod_1.z.string().default('10').transform(Number),
|
|
34
|
+
q: zod_1.z.string().optional(),
|
|
35
|
+
}),
|
|
36
|
+
});
|
|
37
|
+
exports.deleteUserSchema = zod_1.z.object({
|
|
38
|
+
params: zod_1.z.object({
|
|
39
|
+
id: zod_1.z.string().transform(Number),
|
|
40
|
+
}),
|
|
41
|
+
});
|
|
42
|
+
exports.batchUsersSchema = zod_1.z.object({
|
|
43
|
+
body: zod_1.z.object({
|
|
44
|
+
accounts: zod_1.z.array(zod_1.z.object({
|
|
45
|
+
username: zod_1.z.string().min(1),
|
|
46
|
+
password: zod_1.z.string().min(1),
|
|
47
|
+
groupName: zod_1.z.string().optional(),
|
|
48
|
+
quotaSoft: zod_1.z.number().int().min(0),
|
|
49
|
+
quotaHard: zod_1.z.number().int().min(0).optional(),
|
|
50
|
+
action: zod_1.z.enum(['add', 'delete']),
|
|
51
|
+
})),
|
|
52
|
+
}),
|
|
53
|
+
});
|
|
54
|
+
exports.updateQuotaSchema = zod_1.z.object({
|
|
55
|
+
params: zod_1.z.object({
|
|
56
|
+
id: zod_1.z.string().transform(Number),
|
|
57
|
+
}),
|
|
58
|
+
body: zod_1.z.object({
|
|
59
|
+
quotaSoft: zod_1.z.number().int().min(0),
|
|
60
|
+
quotaHard: zod_1.z.number().int().min(0).optional(),
|
|
61
|
+
}),
|
|
62
|
+
});
|
|
63
|
+
exports.changePasswordSchema = zod_1.z.object({
|
|
64
|
+
body: zod_1.z.object({
|
|
65
|
+
username: zod_1.z.string().min(1, '用户名不能为空').max(64),
|
|
66
|
+
oldPassword: zod_1.z.string().min(1, '原密码不能为空').max(128),
|
|
67
|
+
newPassword: zod_1.z.string().min(6, '新密码长度不能少于6位').max(128),
|
|
68
|
+
}),
|
|
69
|
+
});
|
|
70
|
+
//# sourceMappingURL=user.dto.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"user.dto.js","sourceRoot":"","sources":["../../src/dto/user.dto.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Request, Response, NextFunction } from 'express';
|
|
2
|
+
import type { IAuthService } from '../types/service.interfaces';
|
|
3
|
+
export declare class AuthHandler {
|
|
4
|
+
private authService;
|
|
5
|
+
constructor(authService: IAuthService);
|
|
6
|
+
login: (req: Request, res: Response, next: NextFunction) => Promise<void>;
|
|
7
|
+
refresh: (req: Request, res: Response, next: NextFunction) => Promise<void>;
|
|
8
|
+
me: (req: Request, res: Response, next: NextFunction) => Promise<void>;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=auth.handler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.handler.d.ts","sourceRoot":"","sources":["../../src/handlers/auth.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,KAAK,GAAU,KAAK,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,mBAQ7D;IAED,OAAO,GAAU,KAAK,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,mBAQ/D;IAED,EAAE,GAAU,KAAK,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,mBAO1D;CACF"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AuthHandler = void 0;
|
|
4
|
+
const response_1 = require("../lib/response");
|
|
5
|
+
class AuthHandler {
|
|
6
|
+
authService;
|
|
7
|
+
constructor(authService) {
|
|
8
|
+
this.authService = authService;
|
|
9
|
+
}
|
|
10
|
+
login = async (req, res, next) => {
|
|
11
|
+
try {
|
|
12
|
+
const { username, password } = req.body;
|
|
13
|
+
const result = await this.authService.login(username, password);
|
|
14
|
+
(0, response_1.ok)(res, result);
|
|
15
|
+
}
|
|
16
|
+
catch (err) {
|
|
17
|
+
next(err);
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
refresh = async (req, res, next) => {
|
|
21
|
+
try {
|
|
22
|
+
const { token } = req.body;
|
|
23
|
+
const result = await this.authService.refreshToken(token);
|
|
24
|
+
(0, response_1.ok)(res, result);
|
|
25
|
+
}
|
|
26
|
+
catch (err) {
|
|
27
|
+
next(err);
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
me = async (req, res, next) => {
|
|
31
|
+
try {
|
|
32
|
+
const result = await this.authService.getMe(req.user.id);
|
|
33
|
+
(0, response_1.ok)(res, result);
|
|
34
|
+
}
|
|
35
|
+
catch (err) {
|
|
36
|
+
next(err);
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
exports.AuthHandler = AuthHandler;
|
|
41
|
+
//# sourceMappingURL=auth.handler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.handler.js","sourceRoot":"","sources":["../../src/handlers/auth.handler.ts"],"names":[],"mappings":";;;AAEA,8CAAoC;AAEpC,MAAa,WAAW;IACF;IAApB,YAAoB,WAAyB;QAAzB,gBAAW,GAAX,WAAW,CAAc;IAAG,CAAC;IAEjD,KAAK,GAAG,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,IAAkB,EAAE,EAAE;QAChE,IAAI,CAAC;YACH,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,GAAG,CAAC,IAAI,CAAA;YACvC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;YAC/D,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,OAAO,GAAG,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,IAAkB,EAAE,EAAE;QAClE,IAAI,CAAC;YACH,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC,IAAI,CAAA;YAC1B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,KAAK,CAAC,CAAA;YACzD,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,EAAE,GAAG,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,IAAkB,EAAE,EAAE;QAC7D,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,IAAK,CAAC,EAAE,CAAC,CAAA;YACzD,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;CACF;AA/BD,kCA+BC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Request, Response, NextFunction } from 'express';
|
|
2
|
+
import type { IDiskService } from '../types/service.interfaces';
|
|
3
|
+
export declare class DiskHandler {
|
|
4
|
+
private diskService;
|
|
5
|
+
constructor(diskService: IDiskService);
|
|
6
|
+
list: (_req: Request, res: Response, next: NextFunction) => Promise<void>;
|
|
7
|
+
format: (req: Request, res: Response, next: NextFunction) => Promise<void>;
|
|
8
|
+
mount: (req: Request, res: Response, next: NextFunction) => Promise<void>;
|
|
9
|
+
umount: (req: Request, res: Response, next: NextFunction) => Promise<void>;
|
|
10
|
+
usage: (req: Request, res: Response, next: NextFunction) => Promise<void>;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=disk.handler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"disk.handler.d.ts","sourceRoot":"","sources":["../../src/handlers/disk.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,IAAI,GAAU,MAAM,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,mBAO7D;IAED,MAAM,GAAU,KAAK,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,mBAQ9D;IAED,KAAK,GAAU,KAAK,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,mBAQ7D;IAED,MAAM,GAAU,KAAK,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,mBAQ9D;IAED,KAAK,GAAU,KAAK,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,mBAQ7D;CACF"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DiskHandler = void 0;
|
|
4
|
+
const response_1 = require("../lib/response");
|
|
5
|
+
class DiskHandler {
|
|
6
|
+
diskService;
|
|
7
|
+
constructor(diskService) {
|
|
8
|
+
this.diskService = diskService;
|
|
9
|
+
}
|
|
10
|
+
list = async (_req, res, next) => {
|
|
11
|
+
try {
|
|
12
|
+
const disks = await this.diskService.list();
|
|
13
|
+
(0, response_1.ok)(res, disks);
|
|
14
|
+
}
|
|
15
|
+
catch (err) {
|
|
16
|
+
next(err);
|
|
17
|
+
}
|
|
18
|
+
};
|
|
19
|
+
format = async (req, res, next) => {
|
|
20
|
+
try {
|
|
21
|
+
const { device, fsType } = req.body;
|
|
22
|
+
await this.diskService.format(device, fsType);
|
|
23
|
+
(0, response_1.ok)(res, null, '格式化成功');
|
|
24
|
+
}
|
|
25
|
+
catch (err) {
|
|
26
|
+
next(err);
|
|
27
|
+
}
|
|
28
|
+
};
|
|
29
|
+
mount = async (req, res, next) => {
|
|
30
|
+
try {
|
|
31
|
+
const { device, target, options } = req.body;
|
|
32
|
+
await this.diskService.mount(device, target, options);
|
|
33
|
+
(0, response_1.ok)(res, null, '挂载成功');
|
|
34
|
+
}
|
|
35
|
+
catch (err) {
|
|
36
|
+
next(err);
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
umount = async (req, res, next) => {
|
|
40
|
+
try {
|
|
41
|
+
const { target } = req.body;
|
|
42
|
+
await this.diskService.umount(target);
|
|
43
|
+
(0, response_1.ok)(res, null, '卸载成功');
|
|
44
|
+
}
|
|
45
|
+
catch (err) {
|
|
46
|
+
next(err);
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
usage = async (req, res, next) => {
|
|
50
|
+
try {
|
|
51
|
+
const mountPoint = req.query.mountpoint || '/share';
|
|
52
|
+
const usage = await this.diskService.usage(mountPoint);
|
|
53
|
+
(0, response_1.ok)(res, usage);
|
|
54
|
+
}
|
|
55
|
+
catch (err) {
|
|
56
|
+
next(err);
|
|
57
|
+
}
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
exports.DiskHandler = DiskHandler;
|
|
61
|
+
//# sourceMappingURL=disk.handler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"disk.handler.js","sourceRoot":"","sources":["../../src/handlers/disk.handler.ts"],"names":[],"mappings":";;;AAEA,8CAAoC;AAEpC,MAAa,WAAW;IACF;IAApB,YAAoB,WAAyB;QAAzB,gBAAW,GAAX,WAAW,CAAc;IAAG,CAAC;IAEjD,IAAI,GAAG,KAAK,EAAE,IAAa,EAAE,GAAa,EAAE,IAAkB,EAAE,EAAE;QAChE,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAA;YAC3C,IAAA,aAAE,EAAC,GAAG,EAAE,KAAK,CAAC,CAAA;QAChB,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,MAAM,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,IAAI,CAAA;YACnC,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;YAC7C,IAAA,aAAE,EAAC,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,CAAA;QACxB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,GAAG,CAAC,CAAA;QACX,CAAC;IACH,CAAC,CAAA;IAED,KAAK,GAAG,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,IAAkB,EAAE,EAAE;QAChE,IAAI,CAAC;YACH,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,GAAG,CAAC,IAAI,CAAA;YAC5C,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAA;YACrD,IAAA,aAAE,EAAC,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC,CAAA;QACvB,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,MAAM,EAAE,GAAG,GAAG,CAAC,IAAI,CAAA;YAC3B,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;YACrC,IAAA,aAAE,EAAC,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC,CAAA;QACvB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,GAAG,CAAC,CAAA;QACX,CAAC;IACH,CAAC,CAAA;IAED,KAAK,GAAG,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,IAAkB,EAAE,EAAE;QAChE,IAAI,CAAC;YACH,MAAM,UAAU,GAAI,GAAG,CAAC,KAAK,CAAC,UAAqB,IAAI,QAAQ,CAAA;YAC/D,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,UAAU,CAAC,CAAA;YACtD,IAAA,aAAE,EAAC,GAAG,EAAE,KAAK,CAAC,CAAA;QAChB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,GAAG,CAAC,CAAA;QACX,CAAC;IACH,CAAC,CAAA;CACF;AAnDD,kCAmDC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { Request, Response, NextFunction } from 'express';
|
|
2
|
+
import type { ISambaService } from '../types/service.interfaces';
|
|
3
|
+
export declare class SambaHandler {
|
|
4
|
+
private sambaService;
|
|
5
|
+
constructor(sambaService: ISambaService);
|
|
6
|
+
status: (_req: Request, res: Response, next: NextFunction) => Promise<void>;
|
|
7
|
+
install: (_req: Request, res: Response, next: NextFunction) => Promise<void>;
|
|
8
|
+
installStream: (_req: Request, res: Response, _next: NextFunction) => Promise<void>;
|
|
9
|
+
uninstallStream: (_req: Request, res: Response, _next: NextFunction) => Promise<void>;
|
|
10
|
+
start: (_req: Request, res: Response, next: NextFunction) => Promise<void>;
|
|
11
|
+
stop: (_req: Request, res: Response, next: NextFunction) => Promise<void>;
|
|
12
|
+
restart: (_req: Request, res: Response, next: NextFunction) => Promise<void>;
|
|
13
|
+
getConfig: (_req: Request, res: Response, next: NextFunction) => Promise<void>;
|
|
14
|
+
updateConfig: (req: Request, res: Response, next: NextFunction) => Promise<void>;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=samba.handler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"samba.handler.d.ts","sourceRoot":"","sources":["../../src/handlers/samba.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,MAAM,GAAU,MAAM,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,mBAO/D;IAED,OAAO,GAAU,MAAM,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,mBAOhE;IAED,aAAa,GAAU,MAAM,OAAO,EAAE,KAAK,QAAQ,EAAE,OAAO,YAAY,mBAqBvE;IAED,eAAe,GAAU,MAAM,OAAO,EAAE,KAAK,QAAQ,EAAE,OAAO,YAAY,mBAqBzE;IAED,KAAK,GAAU,MAAM,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,mBAO9D;IAED,IAAI,GAAU,MAAM,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,mBAO7D;IAED,OAAO,GAAU,MAAM,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,mBAOhE;IAED,SAAS,GAAU,MAAM,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,mBAOlE;IAED,YAAY,GAAU,KAAK,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,mBAQpE;CACF"}
|