feat: 新增webdav
This commit is contained in:
@@ -0,0 +1,30 @@
|
||||
import { createWebDavServer } from "../src/server/webdav/server.mjs";
|
||||
import { getWebdavConfig } from "../src/server/webdav/config.mjs";
|
||||
|
||||
process.env.WEBDAV_PORT ||= "3201";
|
||||
const config = getWebdavConfig();
|
||||
if (!config.enabled) process.exit(0);
|
||||
|
||||
const server = createWebDavServer({
|
||||
appUrl: config.appUrl,
|
||||
username: config.username,
|
||||
password: process.env.ACCESS_TOKEN,
|
||||
basePath: config.basePath
|
||||
});
|
||||
server.headersTimeout = 10_000;
|
||||
server.requestTimeout = 30_000;
|
||||
server.on("error", () => {
|
||||
console.error("WebDAV 启动失败,请检查监听地址和端口是否被占用");
|
||||
process.exitCode = 1;
|
||||
});
|
||||
server.listen(config.port, config.host, () => {
|
||||
console.info(`WebDAV 已启动:端口 ${config.port},仅提供只读文件访问`);
|
||||
});
|
||||
|
||||
const close = () => {
|
||||
server.close();
|
||||
// 先允许正在进行的传输结束,容器停止时最多等待 5 秒。
|
||||
setTimeout(() => server.closeAllConnections(), 5000).unref();
|
||||
};
|
||||
process.once("SIGINT", close);
|
||||
process.once("SIGTERM", close);
|
||||
Reference in New Issue
Block a user