| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 |
- """
- 系统配置管理模块
- 提供系统配置的获取、验证和安全过滤功能
- """
- import logging
- import os
- from flask import current_app
- logger = logging.getLogger(__name__)
- def get_system_config():
- """
- 获取系统配置信息
- 过滤掉敏感的配置项
- Returns:
- dict: 过滤后的系统配置信息
- """
- try:
- # 收集系统配置信息(去除敏感信息)
- config_info = {
- "environment": current_app.config["FLASK_ENV"],
- "debug_mode": current_app.config["DEBUG"],
- "platform": current_app.config["PLATFORM"],
- "port": current_app.config["PORT"],
- "allowed_extensions": list(current_app.config["ALLOWED_EXTENSIONS"]),
- "bucket_name": current_app.config["BUCKET_NAME"],
- "prefix": current_app.config["PREFIX"],
- }
- return config_info
- except Exception as e:
- logger.error(f"获取系统配置失败: {str(e)}")
- return {"error": str(e)}
- def validate_config():
- """
- 验证系统配置的有效性
- 检查必要的配置项是否存在且有效
- Returns:
- tuple: (是否有效, 错误信息)
- """
- errors = []
- # 检查Neo4j配置
- if "NEO4J_URI" not in current_app.config or not current_app.config["NEO4J_URI"]:
- errors.append("NEO4J_URI未配置")
- if "NEO4J_USER" not in current_app.config or not current_app.config["NEO4J_USER"]:
- errors.append("NEO4J_USER未配置")
- if (
- "NEO4J_PASSWORD" not in current_app.config
- or not current_app.config["NEO4J_PASSWORD"]
- ):
- errors.append("NEO4J_PASSWORD未配置")
- # 检查MinIO配置
- if "MINIO_HOST" not in current_app.config or not current_app.config["MINIO_HOST"]:
- errors.append("MINIO_HOST未配置")
- if "MINIO_USER" not in current_app.config or not current_app.config["MINIO_USER"]:
- errors.append("MINIO_USER未配置")
- if (
- "MINIO_PASSWORD" not in current_app.config
- or not current_app.config["MINIO_PASSWORD"]
- ):
- errors.append("MINIO_PASSWORD未配置")
- # 检查其他必要配置
- if "BUCKET_NAME" not in current_app.config or not current_app.config["BUCKET_NAME"]:
- errors.append("BUCKET_NAME未配置")
- if "PREFIX" not in current_app.config:
- errors.append("PREFIX未配置")
- return (len(errors) == 0, errors)
- def get_config_file_paths():
- """
- 获取系统所有配置文件的路径
- Returns:
- list: 配置文件路径列表
- """
- base_dir = os.path.dirname(
- os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
- )
- config_dir = os.path.join(base_dir, "config")
- if not os.path.exists(config_dir):
- logger.warning(f"配置目录不存在: {config_dir}")
- return []
- config_files = []
- for file in os.listdir(config_dir):
- if file.endswith(".py") or file.endswith(".yaml") or file.endswith(".json"):
- config_files.append(os.path.join(config_dir, file))
- return config_files
|