config.py 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. """
  2. 系统配置管理模块
  3. 提供系统配置的获取、验证和安全过滤功能
  4. """
  5. import logging
  6. import json
  7. import os
  8. from app.config.config import Config
  9. logger = logging.getLogger(__name__)
  10. def get_system_config():
  11. """
  12. 获取系统配置信息
  13. 过滤掉敏感的配置项
  14. Returns:
  15. dict: 过滤后的系统配置信息
  16. """
  17. try:
  18. # 收集系统配置信息(去除敏感信息)
  19. config_info = {
  20. "environment": Config.ENVIRONMENT,
  21. "debug_mode": Config.DEBUG,
  22. "port": Config.PORT,
  23. "platform": Config.PLATFORM,
  24. "upload_folder": Config.UPLOAD_FOLDER,
  25. "bucket_name": Config.BUCKET_NAME,
  26. "prefix": Config.PREFIX,
  27. "neo4j_uri": Config.NEO4J_URI,
  28. "neo4j_encrypted": Config.NEO4J_ENCRYPTED,
  29. # 不返回敏感信息如密码、密钥等
  30. }
  31. return config_info
  32. except Exception as e:
  33. logger.error(f"获取系统配置失败: {str(e)}")
  34. return {"error": str(e)}
  35. def validate_config():
  36. """
  37. 验证系统配置的有效性
  38. 检查必要的配置项是否存在且有效
  39. Returns:
  40. tuple: (是否有效, 错误信息)
  41. """
  42. errors = []
  43. # 检查Neo4j配置
  44. if not hasattr(Config, 'NEO4J_URI') or not Config.NEO4J_URI:
  45. errors.append("NEO4J_URI未配置")
  46. if not hasattr(Config, 'NEO4J_USER') or not Config.NEO4J_USER:
  47. errors.append("NEO4J_USER未配置")
  48. if not hasattr(Config, 'NEO4J_PASSWORD') or not Config.NEO4J_PASSWORD:
  49. errors.append("NEO4J_PASSWORD未配置")
  50. # 检查MinIO配置
  51. if not hasattr(Config, 'MINIO_HOST') or not Config.MINIO_HOST:
  52. errors.append("MINIO_HOST未配置")
  53. if not hasattr(Config, 'MINIO_USER') or not Config.MINIO_USER:
  54. errors.append("MINIO_USER未配置")
  55. if not hasattr(Config, 'MINIO_PASSWORD') or not Config.MINIO_PASSWORD:
  56. errors.append("MINIO_PASSWORD未配置")
  57. # 检查其他必要配置
  58. if not hasattr(Config, 'UPLOAD_FOLDER') or not Config.UPLOAD_FOLDER:
  59. errors.append("UPLOAD_FOLDER未配置")
  60. if not os.path.isdir(Config.UPLOAD_FOLDER):
  61. errors.append(f"UPLOAD_FOLDER目录不存在: {Config.UPLOAD_FOLDER}")
  62. return (len(errors) == 0, errors)
  63. def get_config_file_paths():
  64. """
  65. 获取系统所有配置文件的路径
  66. Returns:
  67. list: 配置文件路径列表
  68. """
  69. base_dir = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
  70. config_dir = os.path.join(base_dir, 'config')
  71. if not os.path.exists(config_dir):
  72. logger.warning(f"配置目录不存在: {config_dir}")
  73. return []
  74. config_files = []
  75. for file in os.listdir(config_dir):
  76. if file.endswith('.py') or file.endswith('.yaml') or file.endswith('.json'):
  77. config_files.append(os.path.join(config_dir, file))
  78. return config_files