From b32ccb4a9fd6e8376f3654807db9ed7f4abb06ea Mon Sep 17 00:00:00 2001 From: DIYgod Date: Wed, 18 Sep 2019 18:16:07 +0800 Subject: [PATCH] feat: static config object --- lib/config.js | 171 +++++++++++++++++++++++++------------------------- 1 file changed, 86 insertions(+), 85 deletions(-) diff --git a/lib/config.js b/lib/config.js index 1eb6241667..df0f1042de 100644 --- a/lib/config.js +++ b/lib/config.js @@ -1,10 +1,11 @@ let envs = process.env; - -const bilibili_cookies = {}; -const twitter_tokens = {}; -const email_config = {}; +let value; const calculateValue = () => { + const bilibili_cookies = {}; + const twitter_tokens = {}; + const email_config = {}; + for (const name in envs) { if (name.startsWith('BILIBILI_COOKIE_')) { const uid = name.slice(16); @@ -17,6 +18,86 @@ const calculateValue = () => { email_config[id] = envs[name]; } } + + value = { + isPackage: envs.isPackage, + 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, + }, + }; }; calculateValue(); @@ -25,85 +106,5 @@ module.exports = { envs = Object.assign(process.env, env); calculateValue(); }, - get value() { - return { - isPackage: envs.isPackage, - 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, - }, - }; - }, + value, };