mirror of
https://github.com/DIYgod/RSSHub.git
synced 2026-09-24 23:12:34 +08:00
feat: dynamical config
This commit is contained in:
+99
-86
@@ -1,95 +1,108 @@
|
||||
let envs = process.env;
|
||||
|
||||
const bilibili_cookies = {};
|
||||
const twitter_tokens = {};
|
||||
const email_config = {};
|
||||
const envs = process.env;
|
||||
for (const name in envs) {
|
||||
if (name.startsWith('BILIBILI_COOKIE_')) {
|
||||
const uid = name.slice(16);
|
||||
bilibili_cookies[uid] = envs[name];
|
||||
} else if (name.startsWith('TWITTER_TOKEN_')) {
|
||||
const id = name.slice(14);
|
||||
twitter_tokens[id] = envs[name];
|
||||
} else if (name.startsWith('EMAIL_CONFIG_')) {
|
||||
const id = name.slice(13);
|
||||
email_config[id] = envs[name];
|
||||
|
||||
const calculateValue = () => {
|
||||
for (const name in envs) {
|
||||
if (name.startsWith('BILIBILI_COOKIE_')) {
|
||||
const uid = name.slice(16);
|
||||
bilibili_cookies[uid] = envs[name];
|
||||
} else if (name.startsWith('TWITTER_TOKEN_')) {
|
||||
const id = name.slice(14);
|
||||
twitter_tokens[id] = envs[name];
|
||||
} else if (name.startsWith('EMAIL_CONFIG_')) {
|
||||
const id = name.slice(13);
|
||||
email_config[id] = envs[name];
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
calculateValue();
|
||||
|
||||
module.exports = {
|
||||
connect: {
|
||||
port: process.env.PORT || 1200, // 监听端口
|
||||
socket: process.env.SOCKET || null, // 监听 Unix Socket, null 为禁用
|
||||
set: (env) => {
|
||||
envs = Object.assign(process.env, env);
|
||||
calculateValue();
|
||||
},
|
||||
cache: {
|
||||
type: typeof process.env.CACHE_TYPE === 'undefined' ? 'memory' : process.env.CACHE_TYPE, // 缓存类型,支持 'memory' 和 'redis',设为空可以禁止缓存
|
||||
routeExpire: parseInt(process.env.CACHE_EXPIRE) || 5 * 60, // 路由缓存时间,单位为秒
|
||||
contentExpire: parseInt(process.env.CACHE_CONTENT_EXPIRE) || 1 * 60 * 60, // 不变内容缓存时间,单位为秒
|
||||
},
|
||||
ua: process.env.UA || 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36',
|
||||
listenInaddrAny: parseInt(process.env.LISTEN_INADDR_ANY) || 1, // 是否允许公网连接,取值 0 1
|
||||
requestRetry: parseInt(process.env.REQUEST_RETRY) || 2, // 请求失败重试次数
|
||||
// 是否显示 Debug 信息,取值 boolean 'false' 'key' ,取值为 'false' false 时永远不显示,取值为 'key' 时带上 ?debug=key 显示
|
||||
debugInfo: process.env.DEBUG_INFO || true,
|
||||
titleLengthLimit: parseInt(process.env.TITLE_LENGTH_LIMIT) || 100,
|
||||
redis: {
|
||||
url: process.env.REDIS_URL || 'redis://localhost:6379/',
|
||||
options: {
|
||||
// 支持这些参数 https://github.com/NodeRedis/node_redis#options-object-properties
|
||||
password: process.env.REDIS_PASSWORD || null,
|
||||
},
|
||||
},
|
||||
nodeName: process.env.NODE_NAME,
|
||||
pixiv: {
|
||||
username: process.env.PIXIV_USERNAME,
|
||||
password: process.env.PIXIV_PASSWORD,
|
||||
},
|
||||
disqus: {
|
||||
api_key: process.env.DISQUS_API_KEY,
|
||||
},
|
||||
twitter: {
|
||||
consumer_key: process.env.TWITTER_CONSUMER_KEY,
|
||||
consumer_secret: process.env.TWITTER_CONSUMER_SECRET,
|
||||
tokens: twitter_tokens,
|
||||
},
|
||||
youtube: {
|
||||
key: process.env.YOUTUBE_KEY,
|
||||
},
|
||||
telegram: {
|
||||
token: process.env.TELEGRAM_TOKEN,
|
||||
},
|
||||
github: {
|
||||
access_token: process.env.GITHUB_ACCESS_TOKEN,
|
||||
},
|
||||
imgur: {
|
||||
clientId: process.env.IMGUR_CLIRNT_ID,
|
||||
},
|
||||
authentication: {
|
||||
name: process.env.HTTP_BASIC_AUTH_NAME || 'usernam3',
|
||||
pass: process.env.HTTP_BASIC_AUTH_PASS || 'passw0rd',
|
||||
},
|
||||
bilibili: {
|
||||
cookies: bilibili_cookies,
|
||||
},
|
||||
yuque: {
|
||||
token: process.env.YUQUE_TOKEN,
|
||||
},
|
||||
puppeteerWSEndpoint: process.env.PUPPETEER_WS_ENDPOINT,
|
||||
loggerLevel: process.env.LOGGER_LEVEL || 'info',
|
||||
proxy: {
|
||||
protocol: process.env.PROXY_PROTOCOL,
|
||||
host: process.env.PROXY_HOST,
|
||||
port: process.env.PROXY_PORT,
|
||||
auth: process.env.PROXY_AUTH,
|
||||
url_regex: process.env.PROXY_URL_REGEX || '.*',
|
||||
},
|
||||
blacklist: process.env.BLACKLIST && process.env.BLACKLIST.split(','),
|
||||
whitelist: process.env.WHITELIST && process.env.WHITELIST.split(','),
|
||||
enableCluster: process.env.ENABLE_CLUSTER,
|
||||
email: {
|
||||
config: email_config,
|
||||
},
|
||||
sentry: process.env.SENTRY,
|
||||
chuiniu: {
|
||||
member: process.env.CHUINIU_MEMBER,
|
||||
get value() {
|
||||
return {
|
||||
connect: {
|
||||
port: envs.PORT || 1200, // 监听端口
|
||||
socket: envs.SOCKET || null, // 监听 Unix Socket, null 为禁用
|
||||
},
|
||||
cache: {
|
||||
type: typeof envs.CACHE_TYPE === 'undefined' ? 'memory' : envs.CACHE_TYPE, // 缓存类型,支持 'memory' 和 'redis',设为空可以禁止缓存
|
||||
routeExpire: parseInt(envs.CACHE_EXPIRE) || 5 * 60, // 路由缓存时间,单位为秒
|
||||
contentExpire: parseInt(envs.CACHE_CONTENT_EXPIRE) || 1 * 60 * 60, // 不变内容缓存时间,单位为秒
|
||||
},
|
||||
ua: envs.UA || 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36',
|
||||
listenInaddrAny: parseInt(envs.LISTEN_INADDR_ANY) || 1, // 是否允许公网连接,取值 0 1
|
||||
requestRetry: parseInt(envs.REQUEST_RETRY) || 2, // 请求失败重试次数
|
||||
// 是否显示 Debug 信息,取值 boolean 'false' 'key' ,取值为 'false' false 时永远不显示,取值为 'key' 时带上 ?debug=key 显示
|
||||
debugInfo: envs.DEBUG_INFO || true,
|
||||
titleLengthLimit: parseInt(envs.TITLE_LENGTH_LIMIT) || 100,
|
||||
redis: {
|
||||
url: envs.REDIS_URL || 'redis://localhost:6379/',
|
||||
options: {
|
||||
// 支持这些参数 https://github.com/NodeRedis/node_redis#options-object-properties
|
||||
password: envs.REDIS_PASSWORD || null,
|
||||
},
|
||||
},
|
||||
nodeName: envs.NODE_NAME,
|
||||
pixiv: {
|
||||
username: envs.PIXIV_USERNAME,
|
||||
password: envs.PIXIV_PASSWORD,
|
||||
},
|
||||
disqus: {
|
||||
api_key: envs.DISQUS_API_KEY,
|
||||
},
|
||||
twitter: {
|
||||
consumer_key: envs.TWITTER_CONSUMER_KEY,
|
||||
consumer_secret: envs.TWITTER_CONSUMER_SECRET,
|
||||
tokens: twitter_tokens,
|
||||
},
|
||||
youtube: {
|
||||
key: envs.YOUTUBE_KEY,
|
||||
},
|
||||
telegram: {
|
||||
token: envs.TELEGRAM_TOKEN,
|
||||
},
|
||||
github: {
|
||||
access_token: envs.GITHUB_ACCESS_TOKEN,
|
||||
},
|
||||
imgur: {
|
||||
clientId: envs.IMGUR_CLIRNT_ID,
|
||||
},
|
||||
authentication: {
|
||||
name: envs.HTTP_BASIC_AUTH_NAME || 'usernam3',
|
||||
pass: envs.HTTP_BASIC_AUTH_PASS || 'passw0rd',
|
||||
},
|
||||
bilibili: {
|
||||
cookies: bilibili_cookies,
|
||||
},
|
||||
yuque: {
|
||||
token: envs.YUQUE_TOKEN,
|
||||
},
|
||||
puppeteerWSEndpoint: envs.PUPPETEER_WS_ENDPOINT,
|
||||
loggerLevel: envs.LOGGER_LEVEL || 'info',
|
||||
proxy: {
|
||||
protocol: envs.PROXY_PROTOCOL,
|
||||
host: envs.PROXY_HOST,
|
||||
port: envs.PROXY_PORT,
|
||||
auth: envs.PROXY_AUTH,
|
||||
url_regex: envs.PROXY_URL_REGEX || '.*',
|
||||
},
|
||||
blacklist: envs.BLACKLIST && envs.BLACKLIST.split(','),
|
||||
whitelist: envs.WHITELIST && envs.WHITELIST.split(','),
|
||||
enableCluster: envs.ENABLE_CLUSTER,
|
||||
email: {
|
||||
config: email_config,
|
||||
},
|
||||
sentry: envs.SENTRY,
|
||||
chuiniu: {
|
||||
member: envs.CHUINIU_MEMBER,
|
||||
},
|
||||
};
|
||||
},
|
||||
};
|
||||
|
||||
+22
-18
@@ -1,21 +1,25 @@
|
||||
const app = require('./app');
|
||||
const config = require('./config');
|
||||
|
||||
const pkg = (path) =>
|
||||
new Promise((resolve) => {
|
||||
app.callback()(
|
||||
{
|
||||
url: path,
|
||||
method: 'GET',
|
||||
headers: {},
|
||||
socket: {},
|
||||
},
|
||||
{
|
||||
setHeader: () => {},
|
||||
end: (data) => {
|
||||
resolve(data);
|
||||
module.exports = {
|
||||
setConfig: (conf) => {
|
||||
config.set(conf);
|
||||
},
|
||||
request: (path) =>
|
||||
new Promise((resolve) => {
|
||||
app.callback()(
|
||||
{
|
||||
url: path,
|
||||
method: 'GET',
|
||||
headers: {},
|
||||
socket: {},
|
||||
},
|
||||
}
|
||||
);
|
||||
});
|
||||
|
||||
module.exports = pkg;
|
||||
{
|
||||
setHeader: () => {},
|
||||
end: (data) => {
|
||||
resolve(data);
|
||||
},
|
||||
}
|
||||
);
|
||||
}),
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user