pixivflow 2.3.0 → 2.4.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/README.md +11 -0
- package/README_EN.md +11 -0
- package/dist/package.json +1 -1
- package/dist/webui/package.json +1 -1
- package/dist/webui/server/auth-middleware.d.ts +28 -0
- package/dist/webui/server/auth-middleware.d.ts.map +1 -0
- package/dist/webui/server/auth-middleware.js +68 -0
- package/dist/webui/server/auth-middleware.js.map +1 -0
- package/dist/webui/server/server.d.ts +2 -0
- package/dist/webui/server/server.d.ts.map +1 -1
- package/dist/webui/server/server.js +33 -0
- package/dist/webui/server/server.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -99,6 +99,7 @@ pixivflow scheduler # 按 cron 配置长期挂机自动收集
|
|
|
99
99
|
| [ARCHITECTURE](docs/ARCHITECTURE.md) | 架构与技术实现 |
|
|
100
100
|
| [RELEASING](docs/RELEASING.md) | npm 发版流程 |
|
|
101
101
|
| [CHANGELOG](docs/project/CHANGELOG.md) | 版本更新日志 |
|
|
102
|
+
| [ACKNOWLEDGMENTS](docs/ACKNOWLEDGMENTS.md) | 参考与致谢:灵感来源、核心依赖与规范声明 |
|
|
102
103
|
|
|
103
104
|
English version: [README_EN.md](README_EN.md).
|
|
104
105
|
|
|
@@ -110,6 +111,16 @@ Bug 与功能建议请提交到
|
|
|
110
111
|
配置文件中包含认证信息,请勿直接分享)。安全漏洞的处理方式见
|
|
111
112
|
[SECURITY.md](SECURITY.md)。
|
|
112
113
|
|
|
114
|
+
## 致谢
|
|
115
|
+
|
|
116
|
+
- [gallery-dl](https://github.com/mikf/gallery-dl) —— ugoira 与小说正文的实现参考
|
|
117
|
+
- [pixiv-app-api](https://github.com/akameco/pixiv-app-api) · [pixiv-api](https://github.com/azuline/pixiv-api) —— App API 端点语义
|
|
118
|
+
- [get-pixivpy-token](https://github.com/eggplants/get-pixivpy-token) —— OAuth 登录流程参考
|
|
119
|
+
- [pixiv-token-getter](https://github.com/redtidev1918/pixiv-token-getter) —— 登录库
|
|
120
|
+
- [pixivflow-webui](https://github.com/redtidev1918/pixivflow-webui) —— WebUI 前端
|
|
121
|
+
|
|
122
|
+
本项目与 Pixiv Inc. 无关联。完整声明见 [docs/ACKNOWLEDGMENTS.md](docs/ACKNOWLEDGMENTS.md)。
|
|
123
|
+
|
|
113
124
|
## 许可证
|
|
114
125
|
|
|
115
126
|
[MIT](LICENSE)
|
package/README_EN.md
CHANGED
|
@@ -103,6 +103,7 @@ Full tutorial site: <https://redtidev1918.github.io/PixivFlow/>
|
|
|
103
103
|
| [ARCHITECTURE](docs/ARCHITECTURE.md) | Architecture notes |
|
|
104
104
|
| [RELEASING](docs/RELEASING.md) | npm release workflow |
|
|
105
105
|
| [CHANGELOG](docs/project/CHANGELOG.md) | Version history |
|
|
106
|
+
| [ACKNOWLEDGMENTS](docs/ACKNOWLEDGMENTS.md) | Credits and references |
|
|
106
107
|
|
|
107
108
|
Chinese version: [README.md](README.md).
|
|
108
109
|
|
|
@@ -114,6 +115,16 @@ Bugs and feature requests go to
|
|
|
114
115
|
secrets before sharing). Security issues are handled privately — see
|
|
115
116
|
[SECURITY.md](SECURITY.md).
|
|
116
117
|
|
|
118
|
+
## Acknowledgments
|
|
119
|
+
|
|
120
|
+
- [gallery-dl](https://github.com/mikf/gallery-dl) — reference for ugoira and novel text handling
|
|
121
|
+
- [pixiv-app-api](https://github.com/akameco/pixiv-app-api) · [pixiv-api](https://github.com/azuline/pixiv-api) — App API endpoint semantics
|
|
122
|
+
- [get-pixivpy-token](https://github.com/eggplants/get-pixivpy-token) — OAuth login flow reference
|
|
123
|
+
- [pixiv-token-getter](https://github.com/redtidev1918/pixiv-token-getter) — login library
|
|
124
|
+
- [pixivflow-webui](https://github.com/redtidev1918/pixivflow-webui) — WebUI frontend
|
|
125
|
+
|
|
126
|
+
Not affiliated with Pixiv Inc. Full statement: [docs/ACKNOWLEDGMENTS.md](docs/ACKNOWLEDGMENTS.md).
|
|
127
|
+
|
|
117
128
|
## License
|
|
118
129
|
|
|
119
130
|
[MIT](LICENSE)
|
package/dist/package.json
CHANGED
package/dist/webui/package.json
CHANGED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { Request, Response, NextFunction } from 'express';
|
|
2
|
+
export interface BasicAuthOptions {
|
|
3
|
+
username: string;
|
|
4
|
+
password: string;
|
|
5
|
+
/** WWW-Authenticate realm. Default: PixivFlow */
|
|
6
|
+
realm?: string;
|
|
7
|
+
/** Paths that skip authentication. Default: ['/api/health', '/health'] */
|
|
8
|
+
exemptPaths?: string[];
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Parse an Authorization: Basic header into credentials.
|
|
12
|
+
* Returns null when the header is absent or malformed.
|
|
13
|
+
*/
|
|
14
|
+
export declare function parseBasicAuthHeader(header: unknown): {
|
|
15
|
+
username: string;
|
|
16
|
+
password: string;
|
|
17
|
+
} | null;
|
|
18
|
+
/**
|
|
19
|
+
* Validate a Basic auth header against the configured credentials.
|
|
20
|
+
* Shared by the HTTP middleware and the Socket.IO handshake guard.
|
|
21
|
+
*/
|
|
22
|
+
export declare function verifyBasicAuth(authorizationHeader: unknown, username: string, password: string): boolean;
|
|
23
|
+
/**
|
|
24
|
+
* HTTP Basic Auth middleware. Opt-in via WEBUI_USERNAME / WEBUI_PASSWORD env.
|
|
25
|
+
* OPTIONS preflight requests and exempt paths (health checks) pass through.
|
|
26
|
+
*/
|
|
27
|
+
export declare function createBasicAuthMiddleware(options: BasicAuthOptions): (req: Request, res: Response, next: NextFunction) => void;
|
|
28
|
+
//# sourceMappingURL=auth-middleware.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth-middleware.d.ts","sourceRoot":"","sources":["../../../src/webui/server/auth-middleware.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAG/D,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,iDAAiD;IACjD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,0EAA0E;IAC1E,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;CACxB;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,OAAO,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAanG;AASD;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,mBAAmB,EAAE,OAAO,EAC5B,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,GACf,OAAO,CAIT;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,gBAAgB,GACxB,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,KAAK,IAAI,CAmB3D"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.parseBasicAuthHeader = parseBasicAuthHeader;
|
|
4
|
+
exports.verifyBasicAuth = verifyBasicAuth;
|
|
5
|
+
exports.createBasicAuthMiddleware = createBasicAuthMiddleware;
|
|
6
|
+
const node_crypto_1 = require("node:crypto");
|
|
7
|
+
/**
|
|
8
|
+
* Parse an Authorization: Basic header into credentials.
|
|
9
|
+
* Returns null when the header is absent or malformed.
|
|
10
|
+
*/
|
|
11
|
+
function parseBasicAuthHeader(header) {
|
|
12
|
+
if (typeof header !== 'string')
|
|
13
|
+
return null;
|
|
14
|
+
const [scheme, b64] = header.split(' ');
|
|
15
|
+
if (scheme !== 'Basic' || !b64)
|
|
16
|
+
return null;
|
|
17
|
+
let decoded;
|
|
18
|
+
try {
|
|
19
|
+
decoded = Buffer.from(b64, 'base64').toString('utf8');
|
|
20
|
+
}
|
|
21
|
+
catch {
|
|
22
|
+
return null;
|
|
23
|
+
}
|
|
24
|
+
const idx = decoded.indexOf(':');
|
|
25
|
+
if (idx === -1)
|
|
26
|
+
return null;
|
|
27
|
+
return { username: decoded.slice(0, idx), password: decoded.slice(idx + 1) };
|
|
28
|
+
}
|
|
29
|
+
/** Constant-time comparison (lengths normalized via hash to avoid timing leaks). */
|
|
30
|
+
function safeEqual(a, b) {
|
|
31
|
+
const ha = (0, node_crypto_1.createHash)('sha256').update(a).digest();
|
|
32
|
+
const hb = (0, node_crypto_1.createHash)('sha256').update(b).digest();
|
|
33
|
+
return (0, node_crypto_1.timingSafeEqual)(ha, hb);
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Validate a Basic auth header against the configured credentials.
|
|
37
|
+
* Shared by the HTTP middleware and the Socket.IO handshake guard.
|
|
38
|
+
*/
|
|
39
|
+
function verifyBasicAuth(authorizationHeader, username, password) {
|
|
40
|
+
const creds = parseBasicAuthHeader(authorizationHeader);
|
|
41
|
+
if (!creds)
|
|
42
|
+
return false;
|
|
43
|
+
return safeEqual(creds.username, username) && safeEqual(creds.password, password);
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* HTTP Basic Auth middleware. Opt-in via WEBUI_USERNAME / WEBUI_PASSWORD env.
|
|
47
|
+
* OPTIONS preflight requests and exempt paths (health checks) pass through.
|
|
48
|
+
*/
|
|
49
|
+
function createBasicAuthMiddleware(options) {
|
|
50
|
+
const realm = options.realm ?? 'PixivFlow';
|
|
51
|
+
const exempt = new Set(options.exemptPaths ?? ['/api/health', '/health']);
|
|
52
|
+
return (req, res, next) => {
|
|
53
|
+
if (req.method === 'OPTIONS' || exempt.has(req.path)) {
|
|
54
|
+
next();
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
if (verifyBasicAuth(req.headers.authorization, options.username, options.password)) {
|
|
58
|
+
next();
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
61
|
+
res.setHeader('WWW-Authenticate', `Basic realm="${realm}", charset="UTF-8"`);
|
|
62
|
+
res.status(401).json({
|
|
63
|
+
errorCode: 'UNAUTHORIZED',
|
|
64
|
+
message: 'Authentication required. Set WEBUI_USERNAME / WEBUI_PASSWORD to configure credentials.',
|
|
65
|
+
});
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=auth-middleware.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth-middleware.js","sourceRoot":"","sources":["../../../src/webui/server/auth-middleware.ts"],"names":[],"mappings":";;AAgBA,oDAaC;AAaD,0CAQC;AAMD,8DAqBC;AA5ED,6CAA0D;AAW1D;;;GAGG;AACH,SAAgB,oBAAoB,CAAC,MAAe;IAClD,IAAI,OAAO,MAAM,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC5C,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACxC,IAAI,MAAM,KAAK,OAAO,IAAI,CAAC,GAAG;QAAE,OAAO,IAAI,CAAC;IAC5C,IAAI,OAAe,CAAC;IACpB,IAAI,CAAC;QACH,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACxD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACjC,IAAI,GAAG,KAAK,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IAC5B,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC;AAC/E,CAAC;AAED,oFAAoF;AACpF,SAAS,SAAS,CAAC,CAAS,EAAE,CAAS;IACrC,MAAM,EAAE,GAAG,IAAA,wBAAU,EAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IACnD,MAAM,EAAE,GAAG,IAAA,wBAAU,EAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IACnD,OAAO,IAAA,6BAAe,EAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AACjC,CAAC;AAED;;;GAGG;AACH,SAAgB,eAAe,CAC7B,mBAA4B,EAC5B,QAAgB,EAChB,QAAgB;IAEhB,MAAM,KAAK,GAAG,oBAAoB,CAAC,mBAAmB,CAAC,CAAC;IACxD,IAAI,CAAC,KAAK;QAAE,OAAO,KAAK,CAAC;IACzB,OAAO,SAAS,CAAC,KAAK,CAAC,QAAQ,EAAE,QAAQ,CAAC,IAAI,SAAS,CAAC,KAAK,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;AACpF,CAAC;AAED;;;GAGG;AACH,SAAgB,yBAAyB,CACvC,OAAyB;IAEzB,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,WAAW,CAAC;IAC3C,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,WAAW,IAAI,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC,CAAC;IAE1E,OAAO,CAAC,GAAY,EAAE,GAAa,EAAE,IAAkB,EAAQ,EAAE;QAC/D,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YACrD,IAAI,EAAE,CAAC;YACP,OAAO;QACT,CAAC;QACD,IAAI,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,aAAa,EAAE,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;YACnF,IAAI,EAAE,CAAC;YACP,OAAO;QACT,CAAC;QACD,GAAG,CAAC,SAAS,CAAC,kBAAkB,EAAE,gBAAgB,KAAK,oBAAoB,CAAC,CAAC;QAC7E,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;YACnB,SAAS,EAAE,cAAc;YACzB,OAAO,EAAE,wFAAwF;SAClG,CAAC,CAAC;IACL,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../src/webui/server/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAgB,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAE3C,OAAO,EAAE,MAAM,IAAI,YAAY,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../src/webui/server/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAgB,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAE3C,OAAO,EAAE,MAAM,IAAI,YAAY,EAAE,MAAM,WAAW,CAAC;AAiBnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAE7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAE7C,qBAAa,WAAW;IACtB,OAAO,CAAC,GAAG,CAAU;IACrB,OAAO,CAAC,MAAM,CAAkC;IAChD,OAAO,CAAC,EAAE,CAAe;IACzB,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,gBAAgB,CAAS;IACjC,OAAO,CAAC,SAAS,CAAC,CAAyC;IAEpD,OAAO,IAAI,MAAM;gBAIZ,OAAO,GAAE,kBAAuB;IA2E/B,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC;IA4C9B,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAWrB,MAAM,IAAI,OAAO;IAIjB,KAAK,IAAI,YAAY;CAG7B;AAED;;GAEG;AACH,wBAAsB,UAAU,CAC9B,OAAO,CAAC,EAAE,kBAAkB,GAC3B,OAAO,CAAC,MAAM,CAAC,CA8CjB"}
|
|
@@ -41,6 +41,7 @@ const config_1 = require("../../config");
|
|
|
41
41
|
// WebSocket handlers
|
|
42
42
|
const LogStream_1 = require("../websocket/LogStream");
|
|
43
43
|
const DownloadStatus_1 = require("../websocket/DownloadStatus");
|
|
44
|
+
const auth_middleware_1 = require("./auth-middleware");
|
|
44
45
|
// Server setup modules
|
|
45
46
|
const server_middleware_1 = require("./server-middleware");
|
|
46
47
|
const server_routes_1 = require("./server-routes");
|
|
@@ -53,6 +54,8 @@ class WebUIServer {
|
|
|
53
54
|
io;
|
|
54
55
|
port;
|
|
55
56
|
host;
|
|
57
|
+
basicAuthEnabled = false;
|
|
58
|
+
basicAuth;
|
|
56
59
|
getPort() {
|
|
57
60
|
return this.port;
|
|
58
61
|
}
|
|
@@ -63,6 +66,24 @@ class WebUIServer {
|
|
|
63
66
|
this.app = (0, express_1.default)();
|
|
64
67
|
// Setup middleware
|
|
65
68
|
(0, server_middleware_1.setupMiddleware)(this.app, options);
|
|
69
|
+
// Optional HTTP Basic Auth (opt-in via WEBUI_USERNAME + WEBUI_PASSWORD).
|
|
70
|
+
// Covers API routes, static files and Socket.IO handshakes; health checks
|
|
71
|
+
// stay open so container healthchecks keep working.
|
|
72
|
+
const authUser = process.env.WEBUI_USERNAME;
|
|
73
|
+
const authPass = process.env.WEBUI_PASSWORD;
|
|
74
|
+
if (authUser && authPass) {
|
|
75
|
+
this.basicAuthEnabled = true;
|
|
76
|
+
this.basicAuth = { username: authUser, password: authPass };
|
|
77
|
+
logger_1.logger.info('WebUI basic auth enabled');
|
|
78
|
+
this.app.use((0, auth_middleware_1.createBasicAuthMiddleware)({
|
|
79
|
+
username: authUser,
|
|
80
|
+
password: authPass,
|
|
81
|
+
exemptPaths: ['/api/health', '/health'],
|
|
82
|
+
}));
|
|
83
|
+
}
|
|
84
|
+
else {
|
|
85
|
+
logger_1.logger.warn('WebUI authentication is DISABLED (set WEBUI_USERNAME and WEBUI_PASSWORD to enable basic auth)');
|
|
86
|
+
}
|
|
66
87
|
// Setup API routes
|
|
67
88
|
(0, server_routes_1.setupRoutes)(this.app);
|
|
68
89
|
// Setup static file serving
|
|
@@ -81,6 +102,18 @@ class WebUIServer {
|
|
|
81
102
|
// Setup WebSocket handlers
|
|
82
103
|
(0, LogStream_1.setupLogStream)(this.io);
|
|
83
104
|
(0, DownloadStatus_1.setupDownloadStatus)(this.io);
|
|
105
|
+
// Socket.IO handshake guard (mirrors the HTTP basic auth above)
|
|
106
|
+
if (this.basicAuth) {
|
|
107
|
+
const ba = this.basicAuth;
|
|
108
|
+
this.io.use((socket, next) => {
|
|
109
|
+
if ((0, auth_middleware_1.verifyBasicAuth)(socket.handshake.headers.authorization, ba.username, ba.password)) {
|
|
110
|
+
next();
|
|
111
|
+
}
|
|
112
|
+
else {
|
|
113
|
+
next(new Error('WebUI authentication required'));
|
|
114
|
+
}
|
|
115
|
+
});
|
|
116
|
+
}
|
|
84
117
|
}
|
|
85
118
|
async start() {
|
|
86
119
|
return new Promise(async (resolve, reject) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../../src/webui/server/server.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;;;;;;
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../../src/webui/server/server.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED