mira-app-server 1.0.12 → 1.0.14

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/README.md ADDED
@@ -0,0 +1,67 @@
1
+ # Mira Server
2
+
3
+ Mira Server是一个基于mira-core的独立服务器应用程序。
4
+
5
+ ## 安装
6
+
7
+ ### 全局安装
8
+ ```bash
9
+ npm install -g mira-app-server
10
+ ```
11
+
12
+ ### 本地安装
13
+ ```bash
14
+ npm install mira-app-server
15
+ ```
16
+
17
+ ## 使用方法
18
+
19
+ ### 全局安装后使用
20
+ 安装完成后,你可以在任何地方使用`mira-server`命令:
21
+
22
+ ```bash
23
+ # 使用默认配置启动
24
+ mira-server
25
+
26
+ # 自定义端口启动
27
+ mira-server --http-port 3001 --ws-port 8082
28
+
29
+ # 自定义数据目录
30
+ mira-server --data-path /path/to/your/data
31
+
32
+ # 查看帮助
33
+ mira-server --help
34
+ ```
35
+
36
+ ### 可用选项
37
+
38
+ - `--http-port <port>`: HTTP服务器端口 (默认: 3000)
39
+ - `--ws-port <port>`: WebSocket服务器端口 (默认: 8081)
40
+ - `--data-path <path>`: 数据目录路径 (默认: ./data)
41
+ - `--help`: 显示帮助信息
42
+
43
+ ### 本地开发
44
+
45
+ ```bash
46
+ # 安装依赖
47
+ npm install
48
+
49
+ # 构建项目
50
+ npm run build
51
+
52
+ # 启动开发服务器
53
+ npm run dev
54
+
55
+ # 使用TypeScript直接运行CLI
56
+ npm run cli -- --help
57
+ ```
58
+
59
+ ## 项目结构
60
+
61
+ - `src/cli.ts`: CLI入口文件
62
+ - `src/index.ts`: 服务器主文件
63
+ - `dist/`: 编译后的JavaScript文件
64
+
65
+ ## 许可证
66
+
67
+ ISC
@@ -0,0 +1,37 @@
1
+ import { Router, Request, Response } from 'express';
2
+ import { UserStorage, User } from './UserStorage';
3
+ declare class AuthService {
4
+ private userStorage;
5
+ constructor(dataDir?: string);
6
+ initialize(): Promise<void>;
7
+ authenticateUser(username: string, password: string): Promise<User | null>;
8
+ generateToken(userId: number): Promise<string>;
9
+ validateToken(token: string): Promise<User | null>;
10
+ revokeToken(token: string): Promise<boolean>;
11
+ getUserInfo(user: User): {
12
+ id: number;
13
+ username: string;
14
+ role: string;
15
+ permissions: string[];
16
+ created_at: number;
17
+ updated_at: number;
18
+ is_active: boolean;
19
+ email?: string;
20
+ };
21
+ cleanupExpiredTokens(): Promise<number>;
22
+ close(): Promise<void>;
23
+ getUserStorage(): UserStorage;
24
+ }
25
+ export declare class AuthRouter {
26
+ private router;
27
+ private authService;
28
+ constructor(dataDir?: string);
29
+ initialize(): Promise<void>;
30
+ private setupRoutes;
31
+ authMiddleware(): (req: Request, res: Response, next: any) => Promise<Response<any, Record<string, any>> | undefined>;
32
+ getRouter(): Router;
33
+ getAuthService(): AuthService;
34
+ getUserStorage(): UserStorage;
35
+ }
36
+ export {};
37
+ //# sourceMappingURL=AuthRouter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AuthRouter.d.ts","sourceRoot":"","sources":["../src/AuthRouter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAElD,cAAM,WAAW;IACb,OAAO,CAAC,WAAW,CAAc;gBAErB,OAAO,GAAE,MAAiB;IAIhC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAK3B,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;IAK1E,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAK9C,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;IAKlD,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAKlD,WAAW,CAAC,IAAI,EAAE,IAAI;;;;;;;;;;IAKhB,oBAAoB,IAAI,OAAO,CAAC,MAAM,CAAC;IAIvC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAI5B,cAAc,IAAI,WAAW;CAGhC;AAED,qBAAa,UAAU;IACnB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,WAAW,CAAc;gBAErB,OAAO,GAAE,MAAiB;IAkBhC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAIjC,OAAO,CAAC,WAAW;IAwJZ,cAAc,KACH,KAAK,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,GAAG;IAmCjD,SAAS,IAAI,MAAM;IAInB,cAAc,IAAI,WAAW;IAI7B,cAAc,IAAI,WAAW;CAGvC"}
@@ -0,0 +1,250 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AuthRouter = void 0;
4
+ const express_1 = require("express");
5
+ const UserStorage_1 = require("./UserStorage");
6
+ class AuthService {
7
+ constructor(dataDir = './data') {
8
+ this.userStorage = new UserStorage_1.UserStorage(dataDir);
9
+ }
10
+ async initialize() {
11
+ await this.userStorage.initialize();
12
+ }
13
+ // 验证用户凭据
14
+ async authenticateUser(username, password) {
15
+ return await this.userStorage.authenticateUser(username, password);
16
+ }
17
+ // 生成令牌
18
+ async generateToken(userId) {
19
+ return await this.userStorage.createSession(userId);
20
+ }
21
+ // 验证令牌
22
+ async validateToken(token) {
23
+ return await this.userStorage.validateSession(token);
24
+ }
25
+ // 撤销令牌
26
+ async revokeToken(token) {
27
+ return await this.userStorage.revokeSession(token);
28
+ }
29
+ // 获取用户信息(不包含密码)
30
+ getUserInfo(user) {
31
+ return this.userStorage.getUserInfo(user);
32
+ }
33
+ // 清理过期令牌
34
+ async cleanupExpiredTokens() {
35
+ return await this.userStorage.cleanupExpiredSessions();
36
+ }
37
+ async close() {
38
+ await this.userStorage.close();
39
+ }
40
+ getUserStorage() {
41
+ return this.userStorage;
42
+ }
43
+ }
44
+ class AuthRouter {
45
+ constructor(dataDir = './data') {
46
+ this.router = (0, express_1.Router)();
47
+ this.authService = new AuthService(dataDir);
48
+ this.setupRoutes();
49
+ // 每小时清理一次过期令牌
50
+ setInterval(async () => {
51
+ try {
52
+ const cleaned = await this.authService.cleanupExpiredTokens();
53
+ if (cleaned > 0) {
54
+ console.log(`🧹 清理了 ${cleaned} 个过期会话`);
55
+ }
56
+ }
57
+ catch (error) {
58
+ console.error('清理过期会话时出错:', error);
59
+ }
60
+ }, 60 * 60 * 1000);
61
+ }
62
+ async initialize() {
63
+ await this.authService.initialize();
64
+ }
65
+ setupRoutes() {
66
+ // 登录路由
67
+ this.router.post('/login', async (req, res) => {
68
+ try {
69
+ const { username, password } = req.body;
70
+ console.log('📝 Login attempt:', { username, passwordLength: password?.length });
71
+ if (!username || !password) {
72
+ return res.status(400).json({
73
+ success: false,
74
+ message: '用户名和密码不能为空',
75
+ code: 'MISSING_CREDENTIALS'
76
+ });
77
+ }
78
+ const user = await this.authService.authenticateUser(username, password);
79
+ if (user) {
80
+ const token = await this.authService.generateToken(user.id);
81
+ res.json({
82
+ success: true,
83
+ message: '登录成功',
84
+ data: {
85
+ token,
86
+ user: this.authService.getUserInfo(user)
87
+ }
88
+ });
89
+ console.log(`✅ User ${username} logged in successfully`);
90
+ }
91
+ else {
92
+ res.status(401).json({
93
+ success: false,
94
+ message: '用户名或密码错误',
95
+ code: 'INVALID_CREDENTIALS'
96
+ });
97
+ console.log(`❌ Failed login attempt for username: ${username}`);
98
+ }
99
+ }
100
+ catch (error) {
101
+ console.error('Login error:', error);
102
+ res.status(500).json({
103
+ success: false,
104
+ message: '服务器内部错误',
105
+ code: 'INTERNAL_ERROR'
106
+ });
107
+ }
108
+ });
109
+ // 登出路由
110
+ this.router.post('/logout', async (req, res) => {
111
+ try {
112
+ const token = req.headers.authorization?.replace('Bearer ', '');
113
+ if (token) {
114
+ const revoked = await this.authService.revokeToken(token);
115
+ console.log(`🔓 Token ${revoked ? 'successfully' : 'failed to'} revoked`);
116
+ }
117
+ res.json({
118
+ success: true,
119
+ message: '退出成功'
120
+ });
121
+ }
122
+ catch (error) {
123
+ console.error('Logout error:', error);
124
+ res.status(500).json({
125
+ success: false,
126
+ message: '服务器内部错误'
127
+ });
128
+ }
129
+ });
130
+ // 获取用户信息路由
131
+ this.router.get('/profile', async (req, res) => {
132
+ try {
133
+ const token = req.headers.authorization?.replace('Bearer ', '');
134
+ if (!token) {
135
+ return res.status(401).json({
136
+ success: false,
137
+ message: '未提供认证令牌',
138
+ code: 'NO_TOKEN'
139
+ });
140
+ }
141
+ const user = await this.authService.validateToken(token);
142
+ if (user) {
143
+ res.json({
144
+ success: true,
145
+ data: {
146
+ user: this.authService.getUserInfo(user)
147
+ }
148
+ });
149
+ }
150
+ else {
151
+ res.status(401).json({
152
+ success: false,
153
+ message: '无效或过期的认证令牌',
154
+ code: 'INVALID_TOKEN'
155
+ });
156
+ }
157
+ }
158
+ catch (error) {
159
+ console.error('Profile error:', error);
160
+ res.status(500).json({
161
+ success: false,
162
+ message: '服务器内部错误'
163
+ });
164
+ }
165
+ });
166
+ // 验证令牌路由(用于中间件)
167
+ this.router.get('/verify', async (req, res) => {
168
+ try {
169
+ const token = req.headers.authorization?.replace('Bearer ', '');
170
+ if (!token) {
171
+ return res.status(401).json({
172
+ success: false,
173
+ message: '未提供认证令牌',
174
+ code: 'NO_TOKEN'
175
+ });
176
+ }
177
+ const user = await this.authService.validateToken(token);
178
+ if (user) {
179
+ res.json({
180
+ success: true,
181
+ message: '令牌有效',
182
+ data: {
183
+ user: this.authService.getUserInfo(user)
184
+ }
185
+ });
186
+ }
187
+ else {
188
+ res.status(401).json({
189
+ success: false,
190
+ message: '无效或过期的认证令牌',
191
+ code: 'INVALID_TOKEN'
192
+ });
193
+ }
194
+ }
195
+ catch (error) {
196
+ console.error('Token verification error:', error);
197
+ res.status(500).json({
198
+ success: false,
199
+ message: '服务器内部错误'
200
+ });
201
+ }
202
+ });
203
+ }
204
+ // 认证中间件
205
+ authMiddleware() {
206
+ return async (req, res, next) => {
207
+ try {
208
+ const token = req.headers.authorization?.replace('Bearer ', '');
209
+ if (!token) {
210
+ return res.status(401).json({
211
+ success: false,
212
+ message: '未提供认证令牌',
213
+ code: 'NO_TOKEN'
214
+ });
215
+ }
216
+ const user = await this.authService.validateToken(token);
217
+ if (user) {
218
+ // 将用户信息添加到请求对象中
219
+ req.user = this.authService.getUserInfo(user);
220
+ next();
221
+ }
222
+ else {
223
+ res.status(401).json({
224
+ success: false,
225
+ message: '无效或过期的认证令牌',
226
+ code: 'INVALID_TOKEN'
227
+ });
228
+ }
229
+ }
230
+ catch (error) {
231
+ console.error('Auth middleware error:', error);
232
+ res.status(500).json({
233
+ success: false,
234
+ message: '认证服务错误'
235
+ });
236
+ }
237
+ };
238
+ }
239
+ getRouter() {
240
+ return this.router;
241
+ }
242
+ getAuthService() {
243
+ return this.authService;
244
+ }
245
+ getUserStorage() {
246
+ return this.authService.getUserStorage();
247
+ }
248
+ }
249
+ exports.AuthRouter = AuthRouter;
250
+ //# sourceMappingURL=AuthRouter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AuthRouter.js","sourceRoot":"","sources":["../src/AuthRouter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ import { HttpRouter } from "mira-app-core";
2
+ import { Express } from 'express';
3
+ import http from 'http';
4
+ import { MiraBackend } from "mira-app-core";
5
+ import { AuthRouter } from "./AuthRouter";
6
+ export declare class MiraHttpServer {
7
+ app: Express;
8
+ httpServer: http.Server;
9
+ httpRouter: HttpRouter;
10
+ authRouter: AuthRouter;
11
+ backend: MiraBackend;
12
+ constructor(backend: MiraBackend, dataDir?: string);
13
+ initialize(): Promise<void>;
14
+ request(options: {
15
+ method: string;
16
+ url: string;
17
+ headers?: Record<string, string>;
18
+ data?: any;
19
+ }): Promise<any>;
20
+ private setupMiddleware;
21
+ private setupRoutes;
22
+ start(port?: number): Promise<void>;
23
+ stop(): Promise<void>;
24
+ getApp(): Express;
25
+ getHttpServer(): http.Server;
26
+ getAuthRouter(): AuthRouter;
27
+ }
28
+ //# sourceMappingURL=HttpServer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HttpServer.d.ts","sourceRoot":"","sources":["../src/HttpServer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,OAAO,EAAU,MAAM,SAAS,CAAC;AAC1C,OAAO,IAAI,MAAM,MAAM,CAAC;AAGxB,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAqH1C,qBAAa,cAAc;IAEvB,GAAG,EAAE,OAAO,CAAC;IACb,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC;IACxB,UAAU,EAAE,UAAU,CAAC;IACvB,UAAU,EAAE,UAAU,CAAC;IACvB,OAAO,EAAE,WAAW,CAAC;gBAET,OAAO,EAAE,WAAW,EAAE,OAAO,GAAE,MAAiB;IAU/C,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAM3B,OAAO,CAAC,OAAO,EAAE;QAC1B,MAAM,EAAE,MAAM,CAAC;QACf,GAAG,EAAE,MAAM,CAAC;QACZ,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACjC,IAAI,CAAC,EAAE,GAAG,CAAC;KACd,GAAG,OAAO,CAAC,GAAG,CAAC;IAiBhB,OAAO,CAAC,eAAe;IAyBvB,OAAO,CAAC,WAAW;IAgOZ,KAAK,CAAC,IAAI,GAAE,MAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAezC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IASrB,MAAM,IAAI,OAAO;IAIjB,aAAa,IAAI,IAAI,CAAC,MAAM;IAI5B,aAAa,IAAI,UAAU;CAGrC"}