90 lines
3.8 KiB
Python
90 lines
3.8 KiB
Python
import os
|
||||
|
|
from dotenv import load_dotenv
|
|||
|
|
|
|||
|
|
if os.getenv("FLASK_ENV") != "production":
|
|||
|
|
load_dotenv() # 自动读取项目根目录的 .env 文件
|
|||
|
|
|
|||
|
|
|
|||
|
|
class Config:
|
|||
|
|
"""基础配置(所有环境共享的公共参数)"""
|
|||
|
|
# 1. 敏感配置:强制从环境变量读取,无默认值(生产环境必须配置)
|
|||
|
|
DATABRICKS_TOKEN = os.getenv("DATABRICKS_TOKEN")
|
|||
|
|
JWT_SECRET_KEY = os.getenv("JWT_SECRET_KEY") # 移除弱默认值
|
|||
|
|
SECRET_KEY = os.getenv("SECRET_KEY") # 移除弱默认值
|
|||
|
|
|
|||
|
|
# 2. 公共非敏感配置
|
|||
|
|
DATABRICKS_HOST = (
|
|||
|
|
"https://adb-3035612432650494.2.databricks.azure.cn" # 固定地址可保留
|
|||
|
|
)
|
|||
|
|
REQUEST_TIMEOUT = 600 # 远程请求超时时间(秒)
|
|||
|
|
JWT_ACCESS_TOKEN_EXPIRES = 14400 # 更直观的过期时间(替代 14400 秒)
|
|||
|
|
SQLALCHEMY_TRACK_MODIFICATIONS = False # 统一关闭查询跟踪,减少性能损耗
|
|||
|
|
|
|||
|
|
# 3. 安全基础配置(所有环境共享)
|
|||
|
|
SESSION_COOKIE_HTTPONLY = True # 禁止 JS 访问 Session Cookie(防 XSS)
|
|||
|
|
SESSION_COOKIE_SAMESITE = "Strict" # 限制跨站携带 Cookie(防 CSRF)
|
|||
|
|
|
|||
|
|
# 配置链接wedata的参数
|
|||
|
|
WEDATA_SECRET_ID='AKIDtfFdqqgYUflgdZaPFvOfkDd0EGEUkx0u'
|
|||
|
|
WEDATA_SECRET_KEY='sBKH5WrESUJwLdljV6Yrysc9TaTAh3Gk'
|
|||
|
|
WEDATA_ENGINE='gen6_prod_aiag'
|
|||
|
|
WEDATA_DATABASE='dws'
|
|||
|
|
|
|||
|
|
# 图片上传的配置
|
|||
|
|
UPLOAD_FOLDER = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'uploads')
|
|||
|
|
MAX_CONTENT_LENGTH = 5 * 1024 * 1024 # 5MB(开发环境)
|
|||
|
|
IMAGE_BASE_URL='http://127.0.0.1:5221'
|
|||
|
|
|
|||
|
|
|
|||
|
|
class DevelopmentConfig(Config):
|
|||
|
|
"""开发环境配置(本地开发用,配置宽松)"""
|
|||
|
|
SQLALCHEMY_DATABASE_URI = "mysql+pymysql://root:12345@localhost:3306/incid_db?charset=utf8mb4" # 开发库临时密码
|
|||
|
|
|
|||
|
|
GEN5_TABLE_NAME = os.getenv(
|
|||
|
|
"GEN5_TABLE_NAME",
|
|||
|
|
"hive_metastore.taf_level_two_plus.accident_report_raw_data"
|
|||
|
|
)
|
|||
|
|
CLUSTER_ID = os.getenv("CLUSTER_ID", "1203-054146-wkjf95i0")
|
|||
|
|
|
|||
|
|
CLIENT_ID = os.getenv("CLIENT_ID","A17336FC-A8D7-4CEA-8777-384BFEABABC1")
|
|||
|
|
CLIENT_PASSWORD = os.getenv("CLIENT_PASSWORD","U7-C1BZQdL8V5c.z~qA_64SO2l9F3J0o")
|
|||
|
|
SS0_HOST = os.getenv("SS0_HOST","https://ssoalpha.dvb.corpinter.net.cn/")
|
|||
|
|
REDIRECT_URL = os.getenv("REDIRECT_URL","http://localhost:5221/report")
|
|||
|
|
DOMAIN = os.getenv("DOMAIN","http://localhost:3001")
|
|||
|
|
# 2. 开发模式开关
|
|||
|
|
DEBUG = True
|
|||
|
|
TESTING = True
|
|||
|
|
|
|||
|
|
# 3. 开发环境 Cookie 配置(无 HTTPS,禁用 secure)
|
|||
|
|
SESSION_COOKIE_SECURE = False
|
|||
|
|
|
|||
|
|
HEADERS_SECRET_KEY=os.getenv("HEADERS_SECRET_KEY","mbincid-server12")
|
|||
|
|
|
|||
|
|
class ProductionConfig(Config):
|
|||
|
|
"""生产环境配置"""
|
|||
|
|
SQLALCHEMY_DATABASE_URI = os.getenv("DATABASE_URL")
|
|||
|
|
TABLE_NAME = os.getenv("TABLE_NAME")
|
|||
|
|
CLUSTER_ID = os.getenv("CLUSTER_ID")
|
|||
|
|
|
|||
|
|
CLIENT_ID = os.getenv("CLIENT_ID","A17336FC-A8D7-4CEA-8777-384BFEABABC1")
|
|||
|
|
CLIENT_PASSWORD = os.getenv("CLIENT_PASSWORD","U7-C1BZQdL8V5c.z~qA_64SO2l9F3J0o")
|
|||
|
|
SS0_HOST = os.getenv("SS0_HOST","https://ssoalpha.dvb.corpinter.net.cn/")
|
|||
|
|
REDIRECT_URL = os.getenv("REDIRECT_URL","http://localhost:5221/report")
|
|||
|
|
DOMAIN = os.getenv("DOMAIN","http://localhost:3001")
|
|||
|
|
DEBUG = False # 禁用调试(关键!避免生产环境暴露敏感信息)
|
|||
|
|
TESTING = False
|
|||
|
|
|
|||
|
|
UPLOAD_FOLDER=os.getenv('UPLOAD_FOLDER','/app/uploads')
|
|||
|
|
MAX_CONTENT_LENGTH=int(os.getenv('MAX_CONTENT_LENGTH', 5242880))
|
|||
|
|
IMAGE_BASE_URL=os.getenv('IMAGE_BASE_URL','http://127.0.0.1:5221')
|
|||
|
|
|
|||
|
|
GEN5_TABLE_NAME = os.getenv(
|
|||
|
|
"GEN5_TABLE_NAME",
|
|||
|
|
"hive_metastore.taf_level_two_plus.accident_report_raw_data"
|
|||
|
|
)
|
|||
|
|
|
|||
|
|
HEADERS_SECRET_KEY=os.getenv("HEADERS_SECRET_KEY","mbincid-server12")
|
|||
|
|
|
|||
|
|
env = os.getenv("FLASK_ENV", "development")
|
|||
|
|
config = {"development": DevelopmentConfig, "production": ProductionConfig}[env]
|