87 lines
3.4 KiB
Python
87 lines
3.4 KiB
Python
import uuid
|
|
|
|
from starlette.config import Config
|
|
|
|
# 配置文件.env,存放为data/.env
|
|
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'
|
|
}]
|
|
int_dict = {'PORT', 'MAX_DAYS', 'ERROR_COUNT', 'ERROR_MINUTE', 'UPLOAD_COUNT', 'UPLOAD_MINUTE',
|
|
'DELETE_EXPIRE_FILES_INTERVAL', 'FILE_SIZE_LIMIT'}
|
|
bool_dict = {'DEBUG', 'ENABLE_UPLOAD'}
|
|
|
|
async def update(self, key, value) -> None:
|
|
if hasattr(self, key):
|
|
if key in self.int_dict:
|
|
value = int(value)
|
|
elif key in self.bool_dict:
|
|
value = bool(value)
|
|
setattr(self, key, value)
|
|
|
|
async def updates(self, options) -> None:
|
|
with open('data/.env', 'w', encoding='utf-8') as f:
|
|
for i, key, value in options:
|
|
# 更新env文件
|
|
f.write(f"{key}={value}\n")
|
|
# 更新配置
|
|
await self.update(key, value)
|
|
f.flush()
|
|
|
|
|
|
settings = Settings()
|