ng / backend /src /config /index.ts
epii-1
222222
f0953a4
import dotenv from "dotenv";
// 加载.env文件
dotenv.config();
interface Channel {
id: string;
name: string;
}
interface CloudPatterns {
baiduPan: RegExp;
tianyi: RegExp;
aliyun: RegExp;
pan115: RegExp;
pan123: RegExp;
quark: RegExp;
yidong: RegExp;
}
interface Config {
jwtSecret: string;
telegram: {
baseUrl: string;
channels: Channel[];
};
cloudPatterns: CloudPatterns;
app: {
port: number;
env: string;
};
database: {
type: string;
path: string;
};
jwt: {
secret: string;
expiresIn: string;
};
}
// 从环境变量读取频道配置
const getTeleChannels = (): Channel[] => {
try {
const channelsStr = process.env.TELE_CHANNELS;
if (channelsStr) {
return JSON.parse(channelsStr);
}
} catch (error) {
console.warn("无法解析 TELE_CHANNELS 环境变量,使用默认配置");
}
// 默认配置
return [];
};
export const config: Config = {
app: {
port: parseInt(process.env.PORT || "8009"),
env: process.env.NODE_ENV || "development",
},
database: {
type: "sqlite",
path: "./data/database.sqlite",
},
jwt: {
secret: process.env.JWT_SECRET || "your-secret-key",
expiresIn: "6h",
},
jwtSecret: process.env.JWT_SECRET || "uV7Y$k92#LkF^q1b!",
telegram: {
baseUrl: process.env.TELEGRAM_BASE_URL || "https://t.me/s",
channels: getTeleChannels(),
},
cloudPatterns: {
baiduPan: /https?:\/\/(?:pan|yun)\.baidu\.com\/[^\s<>"]+/g,
tianyi: /https?:\/\/cloud\.189\.cn\/[^\s<>"]+/g,
aliyun: /https?:\/\/\w+\.(?:alipan|aliyundrive)\.com\/[^\s<>"]+/g,
// pan115有两个域名 115.com 和 anxia.com 和 115cdn.com
pan115: /https?:\/\/(?:115|anxia|115cdn)\.com\/s\/[^\s<>"]+/g,
// 修改为匹配所有以123开头的域名
// eslint-disable-next-line no-useless-escape
pan123: /https?:\/\/(?:www\.)?123[^\/\s<>"]+\.com\/s\/[^\s<>"]+/g,
quark: /https?:\/\/pan\.quark\.cn\/[^\s<>"]+/g,
yidong: /https?:\/\/caiyun\.139\.com\/[^\s<>"]+/g,
},
};