UNPKG

multi-lane-manager

Version:

Nacos 泳道管理与请求路由组件

110 lines (96 loc) 3.33 kB
/** * 默认配置值 * * 此文件包含所有默认配置值,方便集中管理和调整 */ // No imports needed // Nacos 服务器配置 export const DEFAULT_LANE_SERVER = 'localhost:8848'; // 服务器地址和端口 export const DEFAULT_LANE_NAMESPACE = 'public'; export const DEFAULT_LANE_GROUP_NAME = 'DEFAULT_GROUP'; // 心跳配置 export const DEFAULT_LANE_HEARTBEAT_INTERVAL = 5000; // 心跳间隔(毫秒) export const DEFAULT_LANE_INSTANCE_TTL = 15000; // 实例过期时间(毫秒) // 服务配置 export const DEFAULT_SERVICE_NAME = null; // 不提供默认值,确保必须明确指定服务名称 export const DEFAULT_LANE_ID = 'baseline'; // 默认泳道ID为 baseline export const DEFAULT_HOST = 'localhost'; export const DEFAULT_PORT = 3000; // 泳道配置 export const DEFAULT_TARGET_LANE_HEADER = 'X-Lane-ID'; // 保留旧名称以兼容 export const DEFAULT_LANE_TARGET_HEADER = 'X-Lane-ID'; export const DEFAULT_LANE_ENABLED = false; export const DEFAULT_LANE_COOKIE_ENABLED = true; // 是否启用从cookie中检测泳道ID // 响应头常量 export const HEADER_PROXIED_BY = 'X-Proxied-By'; export const HEADER_ORIGINAL_LANE = 'X-Original-Lane'; export const HEADER_PROXIED_BY_VALUE = 'multi-lane-manager'; // 调试头常量 export const HEADER_LANE_DEBUG = 'X-Lane-Debug'; export const HEADER_LANE_DETAIL = 'X-Lane-Detail'; // 超时配置 export const DEFAULT_LANE_PROXY_TIMEOUT = 15000; export const DEFAULT_LANE_REGISTRATION_TIMEOUT = 5000; // 日志配置 export const DEFAULT_LOG_LEVEL = 'info'; /** * 安全地处理响应头值,移除无效字符 * * @param headerValue 原始响应头值或值数组 * @returns 处理后的安全响应头值 */ export function getSafeHeaderValue(headerValue: string | string[]): string { try { if (Array.isArray(headerValue)) { // 如果是数组,处理每个元素并用 | 连接 return headerValue .map(item => item.replace(/[\r\n\t]/g, ' ').replace(/[^\x20-\x7E]/g, '')) .join(' | '); } else { // 如果是字符串,直接处理 return headerValue.replace(/[\r\n\t]/g, ' ').replace(/[^\x20-\x7E]/g, ''); } } catch (error) { // 如果处理过程中出错,返回一个安全的默认值 return 'Error processing header value'; } } /** * 获取环境变量值,如果不存在则使用默认值 * * @param key 环境变量名 * @param defaultValue 默认值 * @returns 环境变量值或默认值 */ export function getEnvOrDefault(key: string, defaultValue: string): string { return process.env[key] || defaultValue; } /** * 获取环境变量的布尔值 * * @param key 环境变量名 * @param defaultValue 默认值 * @returns 布尔值 */ export function getBooleanEnv(key: string, defaultValue: boolean): boolean { const value = process.env[key]; if (value === undefined) { return defaultValue; } return value.toLowerCase() === 'true'; } /** * 获取环境变量的数字值 * * @param key 环境变量名 * @param defaultValue 默认值 * @returns 数字值 */ export function getNumberEnv(key: string, defaultValue: number): number { const value = process.env[key]; if (value === undefined) { return defaultValue; } const parsed = parseInt(value, 10); return isNaN(parsed) ? defaultValue : parsed; }