import uuid from starlette.config import Config # 配置文件.env # 请将.env移动至data目录,方便docker部署 config = Config("data/.env") class Settings: # 项目版本 VERSION: str = config("VERSION", default="1.6") # 是否开启DEBUG模式 DEBUG = config('DEBUG', cast=bool, default=False) # 端口 PORT = config('PORT', cast=int, default=12345) # Sqlite数据库文件 DATABASE_FILE = config('DATABASE_FILE', cast=str, default='data/database.db') # Sqlite套接字 DATABASE_URL = config('DATABASE_URL', cast=str, default=f"sqlite+aiosqlite:///{DATABASE_FILE}") # 数据存储文件夹,文件就不暴露在静态资源里面了 DATA_ROOT = './data/' + config('DATA_ROOT', cast=str, default=f"static") # 静态文件夹URL STATIC_URL = config('STATIC_URL', cast=str, default="/static") # 开启上传 ENABLE_UPLOAD = config('ENABLE_UPLOAD', cast=bool, default=True) # 最长天数 MAX_DAYS = config('MAX_DAYS', cast=int, default=7) # 错误次数 ERROR_COUNT = config('ERROR_COUNT', cast=int, default=5) # 错误限制分钟数 ERROR_MINUTE = config('ERROR_MINUTE', cast=int, default=10) # 上传次数 UPLOAD_COUNT = config('UPLOAD_COUNT', cast=int, default=60) # 上传限制分钟数 UPLOAD_MINUTE = config('UPLOAD_MINUTE', cast=int, default=1) # 删除过期文件的间隔(分钟) DELETE_EXPIRE_FILES_INTERVAL = config('DELETE_EXPIRE_FILES_INTERVAL', cast=int, default=10) # 管理地址 ADMIN_ADDRESS = config('ADMIN_ADDRESS', cast=str, default=uuid.uuid4().hex) # 管理密码 ADMIN_PASSWORD = config('ADMIN_PASSWORD', cast=str, default=uuid.uuid4().hex) # 文件大小限制,默认10MB FILE_SIZE_LIMIT = config('FILE_SIZE_LIMIT', cast=int, default=10) * 1024 * 1024 # 网站标题 TITLE = config('TITLE', cast=str, default="文件快递柜") # 网站描述 DESCRIPTION = config('DESCRIPTION', cast=str, default="FileCodeBox,文件快递柜,口令传送箱,匿名口令分享文本,文件") # 网站关键词 KEYWORDS = config('KEYWORDS', cast=str, default="FileCodeBox,文件快递柜,口令传送箱,匿名口令分享文本,文件") # 存储引擎:['aliyunsystem','filesystem'] STORAGE_ENGINE = config('STORAGE_ENGINE', cast=str, default="filesystem") # 存储引擎配置 STORAGE_CONFIG = {} # Banners BANNERS = [{ 'text': 'FileCodeBox', 'url': 'https://github.com/vastsa/FileCodeBox', 'src': '/static/banners/img_1.png' }, { 'text': 'LanBlog', 'url': 'https://www.lanol.cn', 'src': '/static/banners/img_2.png' }] async def update(self, options) -> None: for i, key, value in options: if hasattr(self, key): setattr(self, key, value) settings = Settings()