update:env
This commit is contained in:
@@ -7,3 +7,57 @@ from pathlib import Path
|
||||
data_root = Path('./data')
|
||||
if not data_root.exists():
|
||||
data_root.mkdir(parents=True, exist_ok=True)
|
||||
|
||||
default_value = {
|
||||
'file_storage': 'SystemFileStorage',
|
||||
'name': '文件快递柜-FileCodeBox',
|
||||
'description': '开箱即用的文件快传系统',
|
||||
'keywords': 'FileCodeBox,文件快递柜,口令传送箱,匿名口令分享文本,文件',
|
||||
's3_access_key_id': '',
|
||||
's3_secret_access_key': '',
|
||||
's3_bucket_name': '',
|
||||
's3_endpoint_url': '',
|
||||
'openUpload': 1,
|
||||
'uploadSize': 1024 * 1024 * 10,
|
||||
'uploadMinute': 1,
|
||||
'uploadCount': 10,
|
||||
'errorMinute': 1,
|
||||
'errorCount': 1,
|
||||
}
|
||||
|
||||
|
||||
class Settings:
|
||||
__instance = None
|
||||
|
||||
def __init__(self):
|
||||
# 读取.env
|
||||
if not (data_root / '.env').exists():
|
||||
with open(data_root / '.env', 'w', encoding='utf-8') as f:
|
||||
for key, value in default_value.items():
|
||||
f.write(f'{key}={value}\n')
|
||||
# 更新default_value
|
||||
with open(data_root / '.env', 'r', encoding='utf-8') as f:
|
||||
for line in f.readlines():
|
||||
key, value = line.strip().split('=')
|
||||
# 将字符串转换为原本的类型
|
||||
if value.isdigit():
|
||||
value = int(value)
|
||||
default_value[key] = value
|
||||
|
||||
# 更新self
|
||||
for key, value in default_value.items():
|
||||
self.__setattr__(key, value)
|
||||
|
||||
def __new__(cls, *args, **kwargs):
|
||||
if not cls.__instance:
|
||||
cls.__instance = super(Settings, cls).__new__(cls, *args, **kwargs)
|
||||
return cls.__instance
|
||||
|
||||
def __setattr__(self, key, value):
|
||||
self.__dict__[key] = value
|
||||
with open(data_root / '.env', 'w', encoding='utf-8') as f:
|
||||
for key, value in self.__dict__.items():
|
||||
f.write(f'{key}={value}\n')
|
||||
|
||||
|
||||
settings = Settings()
|
||||
|
||||
+10
-6
@@ -8,7 +8,7 @@ import time
|
||||
|
||||
import aioboto3
|
||||
from fastapi import UploadFile
|
||||
from core.settings import data_root
|
||||
from core.settings import data_root, settings
|
||||
from apps.base.models import FileCodes
|
||||
|
||||
|
||||
@@ -45,10 +45,10 @@ class SystemFileStorage:
|
||||
|
||||
class S3FileStorage:
|
||||
def __init__(self):
|
||||
self.access_key_id = ''
|
||||
self.secret_access_key = ''
|
||||
self.bucket_name = ''
|
||||
self.endpoint_url = ''
|
||||
self.access_key_id = settings.s3_access_key_id
|
||||
self.secret_access_key = settings.s3_secret_access_key
|
||||
self.bucket_name = settings.s3_bucket_name
|
||||
self.endpoint_url = settings.s3_endpoint_url
|
||||
self.session = aioboto3.Session(
|
||||
aws_access_key_id=self.access_key_id, aws_secret_access_key=self.secret_access_key
|
||||
)
|
||||
@@ -69,4 +69,8 @@ class S3FileStorage:
|
||||
return result
|
||||
|
||||
|
||||
file_storage = SystemFileStorage()
|
||||
storages = {
|
||||
'local': SystemFileStorage,
|
||||
's3': S3FileStorage
|
||||
}
|
||||
file_storage = storages[settings.file_storage]()
|
||||
|
||||
Reference in New Issue
Block a user