config.ts 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. /**
  2. * Relay 配置加载
  3. */
  4. export function getPort(): number {
  5. return process.env.PORT ? parseInt(process.env.PORT, 10) : 4000;
  6. }
  7. export function getDbPath(): string {
  8. return process.env.DB_PATH || './data/relay.db';
  9. }
  10. export function getAdminKey(): string {
  11. return process.env.ADMIN_KEY || '';
  12. }
  13. /** Shared secret configured once on the upstream token-wide callback. */
  14. export function getUpstreamCallbackSecret(): string {
  15. return process.env.UPSTREAM_CALLBACK_SECRET || '';
  16. }
  17. export function getLogLevel(): string {
  18. return process.env.LOG_LEVEL || 'info';
  19. }
  20. export function getEventTtlSeconds(): number {
  21. return process.env.EVENT_TTL_SECONDS ? parseInt(process.env.EVENT_TTL_SECONDS, 10) : 604800;
  22. }
  23. export function getMaxPendingEventsPerTenant(): number {
  24. return process.env.MAX_PENDING_EVENTS_PER_TENANT
  25. ? parseInt(process.env.MAX_PENDING_EVENTS_PER_TENANT, 10)
  26. : 5000;
  27. }
  28. export function getPollBatchSize(): number {
  29. return process.env.POLL_BATCH_SIZE ? parseInt(process.env.POLL_BATCH_SIZE, 10) : 100;
  30. }
  31. export function getPollWaitMs(): number {
  32. return process.env.POLL_WAIT_MS ? parseInt(process.env.POLL_WAIT_MS, 10) : 30000;
  33. }
  34. /** Relay 对外公网地址(注册接口返回给客户端) */
  35. export function getRelayPublicUrl(): string {
  36. return (
  37. process.env.RELAY_PUBLIC_URL ||
  38. `http://${process.env.HOST || '8.138.37.248'}:${getPort()}`
  39. );
  40. }
  41. /** Fmode 网关地址,用于校验用户 token */
  42. export function getFmodeGatewayUrl(): string {
  43. return (process.env.FMODE_GATEWAY_URL || 'https://server.fmode.cn/api/qiwei').replace(/\/$/, '');
  44. }
  45. /** 校验 Fmode token 时调用的 doApi method(默认用 /user/getProfile) */
  46. export function getFmodeTokenValidateMethod(): string {
  47. return process.env.FMODE_TOKEN_VALIDATE_METHOD || '/user/getProfile';
  48. }
  49. /** 注册接口 IP 限流窗口(秒),默认 60 秒 */
  50. export function getRegisterRateLimitSeconds(): number {
  51. return process.env.REGISTER_RATE_LIMIT_SECONDS
  52. ? parseInt(process.env.REGISTER_RATE_LIMIT_SECONDS, 10)
  53. : 60;
  54. }
  55. /** 注册接口单个 IP 在窗口内最多允许次数 */
  56. export function getRegisterRateLimitPerIp(): number {
  57. return process.env.REGISTER_RATE_LIMIT_PER_IP
  58. ? parseInt(process.env.REGISTER_RATE_LIMIT_PER_IP, 10)
  59. : 5;
  60. }
  61. /** 单个 Fmode 用户在窗口内最多注册次数(通常 =1) */
  62. export function getRegisterRateLimitPerUser(): number {
  63. return process.env.REGISTER_RATE_LIMIT_PER_USER
  64. ? parseInt(process.env.REGISTER_RATE_LIMIT_PER_USER, 10)
  65. : 1;
  66. }