You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tailchat/server/packages/sdk/src/services/lib/settings.ts

96 lines
3.0 KiB
TypeScript

import dotenv from 'dotenv';
import _ from 'lodash';
dotenv.config();
/**
* 配置信息
*/
const port = process.env.PORT ? Number(process.env.PORT) : 11000;
const apiUrl = process.env.API_URL || `http://127.0.0.1:${port}`;
const staticHost = process.env.STATIC_HOST || '{BACKEND}';
const staticUrl = process.env.STATIC_URL || `${staticHost}/static/`;
const requestTimeout = process.env.REQUEST_TIMEOUT
? Number(process.env.REQUEST_TIMEOUT)
: 10 * 1000; // default 0 (unit: milliseconds)
export const config = {
port,
secret: process.env.SECRET || 'tailchat',
env: process.env.NODE_ENV || 'development',
/**
* 是否打开socket admin ui
*/
enableSocketAdmin: !!process.env.ADMIN,
redisUrl: process.env.REDIS_URL,
mongoUrl: process.env.MONGO_URL,
storage: {
type: 'minio', // 可选: minio
minioUrl: process.env.MINIO_URL,
user: process.env.MINIO_USER,
pass: process.env.MINIO_PASS,
bucketName: process.env.MINIO_BUCKET_NAME || 'tailchat',
pathStyle: process.env.MINIO_PATH_STYLE === 'VirtualHosted' ? false : true,
/**
* 文件上传限制
* 单位byte
* 默认 1m
*/
limit: process.env.FILE_LIMIT
? Number(process.env.FILE_LIMIT)
: 1 * 1024 * 1024,
},
apiUrl,
staticUrl,
enableOpenapi: true, // 是否开始openapi
emailVerification: checkEnvTrusty(process.env.EMAIL_VERIFY) || false, // 是否在注册后验证邮箱可用性
smtp: {
senderName: process.env.SMTP_SENDER, // 发邮件者显示名称
connectionUrl: process.env.SMTP_URI || '',
},
enablePrometheus: checkEnvTrusty(process.env.PROMETHEUS),
runner: {
requestTimeout,
},
feature: {
disableFileCheck: checkEnvTrusty(process.env.DISABLE_FILE_CHECK),
disableLogger: checkEnvTrusty(process.env.DISABLE_LOGGER), // 是否关闭日志
disableUserRegister: checkEnvTrusty(process.env.DISABLE_USER_REGISTER), // 是否关闭用户注册功能
disableGuestLogin: checkEnvTrusty(process.env.DISABLE_GUEST_LOGIN), // 是否关闭用户游客登录功能
disableCreateGroup: checkEnvTrusty(process.env.DISABLE_CREATE_GROUP), // 是否禁用用户创建群组功能
disablePluginStore: checkEnvTrusty(process.env.DISABLE_PLUGIN_STORE), // 是否禁用用户插件中心功能
disableAddFriend: checkEnvTrusty(process.env.DISABLE_ADD_FRIEND), // 是否禁用用户添加好友功能
disableTelemetry: checkEnvTrusty(process.env.DISABLE_TELEMETRY), // 是否禁用遥测
},
};
export const builtinAuthWhitelist = [
'/gateway/health',
'/debug/hello',
'/user/login',
'/user/register',
'/user/createTemporaryUser',
'/user/resolveToken',
'/user/getUserInfo',
'/user/getUserInfoList',
'/user/checkTokenValid',
'/group/getGroupBasicInfo',
'/group/invite/findInviteByCode',
];
/**
* 构建上传地址
*/
export function buildUploadUrl(objectName: string) {
return config.staticUrl + objectName;
}
/**
* 判断环境变量是否为true
*/
export function checkEnvTrusty(env: string): boolean {
return env === '1' || env === 'true';
}