Files
ai-security-xdr/haobang-security-xdr/syslog-serve/src/main/java/com/haobang/config/AppConfig.java
T
2026-01-11 15:33:22 +08:00

133 lines
3.9 KiB
Java

package com.haobang.config;
import com.typesafe.config.Config;
import com.typesafe.config.ConfigFactory;
import java.io.File;
import com.typesafe.config.ConfigValueFactory;
import java.util.Map;
public class AppConfig {
private static final Config config;
static {
// 加载配置文件
File configFile = new File("application.properties");
Config loadedConfig;
if (configFile.exists()) {
loadedConfig = ConfigFactory.parseFile(configFile);
} else {
loadedConfig = ConfigFactory.load("application.properties");
}
// 解析环境变量占位符
config = resolveEnvironmentVariables(loadedConfig);
}
/**
* 解析环境变量占位符
*/
private static Config resolveEnvironmentVariables(Config originalConfig) {
Config resolvedConfig = originalConfig;
// 遍历所有配置项,查找需要解析的占位符
for (Map.Entry<String, com.typesafe.config.ConfigValue> entry : originalConfig.entrySet()) {
String key = entry.getKey();
String value = originalConfig.getString(key);
if (value.contains("${")) {
String resolvedValue = resolvePlaceholder(value);
resolvedConfig = resolvedConfig.withValue(
key,
ConfigValueFactory.fromAnyRef(resolvedValue)
);
}
}
return resolvedConfig;
}
/**
* 解析单个占位符值
* 格式: ${ENV_VAR:default_value}
*/
private static String resolvePlaceholder(String value) {
if (!value.startsWith("${") || !value.endsWith("}")) {
return value;
}
String placeholder = value.substring(2, value.length() - 1);
String[] parts = placeholder.split(":");
if (parts.length == 0) {
return value; // 无效格式,返回原值
}
String envVarName = parts[0].trim();
String defaultValue = parts.length > 1 ? parts[1].trim() : "";
// 1. 从系统环境变量获取
String envValue = System.getenv(envVarName);
if (envValue != null && !envValue.trim().isEmpty()) {
return envValue.trim();
}
// 2. 从系统属性获取 (java -D参数)
String sysValue = System.getProperty(envVarName);
if (sysValue != null && !sysValue.trim().isEmpty()) {
return sysValue.trim();
}
// 3. 返回默认值
return defaultValue;
}
// Syslog 配置
public static int getSyslogTcpPort() {
return config.getInt("syslog.tcp.port");
}
public static int getSyslogUdpPort() {
return config.getInt("syslog.udp.port");
}
public static int getSyslogMaxFrameLength() {
return config.getInt("syslog.max.frame.length");
}
public static int getSyslogBufferSize() {
return config.getInt("syslog.buffer.size");
}
// app service 配置
public static String getAppServieDeviceId() {
return config.getString("app.service.device_id");
}
public static String getAppServieDeviceName() { return config.getString("app.service.device_name");
}
public static String getAppServieVendor() {
return config.getString("app.service.vendor");
}
public static String getAppServieProductName() {
return config.getString("app.service.product_name");
}
public static String getAppServieDataType() {
return config.getString("app.service.data_type");
}
// kafka 配置
public static String getKafkaProducerBootstrap() {
return config.getString("spring.kafka.producer.bootstrap-servers");
}
public static String getKafkaProducerTopic() {
return config.getString("spring.kafka.producer.topic");
}
public static int getDeviceCollectId() {
return config.getInt("app.service.device_collect_id");
}
}