test/custom-admin-ui #3

Merged
orion merged 673 commits from test/custom-admin-ui into master 2026-06-05 17:20:58 +08:00
3 changed files with 16 additions and 8 deletions
Showing only changes of commit 317ebe0862 - Show all commits
+4 -3
View File
@@ -12,12 +12,13 @@ default_value = {
'file_storage': 'local', 'file_storage': 'local',
'name': '文件快递柜-FileCodeBox', 'name': '文件快递柜-FileCodeBox',
'description': '开箱即用的文件快传系统', 'description': '开箱即用的文件快传系统',
'keywords': 'FileCodeBox文件快递柜口令传送箱匿名口令分享文本文件', 'keywords': 'FileCodeBox, 文件快递柜, 口令传送箱, 匿名口令分享文本, 文件',
'max_save_seconds': 0, 'max_save_seconds': 0,
's3_access_key_id': '', 's3_access_key_id': '',
's3_secret_access_key': '', 's3_secret_access_key': '',
's3_bucket_name': '', 's3_bucket_name': '',
's3_endpoint_url': '', 's3_endpoint_url': '',
's3_hostname': '',
's3_proxy': 0, 's3_proxy': 0,
'aws_session_token': '', 'aws_session_token': '',
'onedrive_domain': '', 'onedrive_domain': '',
@@ -56,6 +57,7 @@ class Settings:
if not key.startswith('opendal_') and isinstance(default_value[key], int): if not key.startswith('opendal_') and isinstance(default_value[key], int):
value = int(value) value = int(value)
default_value[key] = value default_value[key] = value
# 更新self # 更新self
for key, value in default_value.items(): for key, value in default_value.items():
self.__setattr__(key, value) self.__setattr__(key, value)
@@ -76,5 +78,4 @@ class Settings:
def items(self): def items(self):
return self.__dict__.items() return self.__dict__.items()
settings = Settings()
settings = Settings()
+8 -5
View File
@@ -92,13 +92,16 @@ class S3FileStorage(FileStorageInterface):
self.access_key_id = settings.s3_access_key_id self.access_key_id = settings.s3_access_key_id
self.secret_access_key = settings.s3_secret_access_key self.secret_access_key = settings.s3_secret_access_key
self.bucket_name = settings.s3_bucket_name self.bucket_name = settings.s3_bucket_name
self.endpoint_url = settings.s3_endpoint_url self.s3_hostname = settings.s3_hostname
self.endpoint_url = settings.s3_endpoint_url or f'https://{self.s3_hostname}'
self.aws_session_token = settings.aws_session_token self.aws_session_token = settings.aws_session_token
self.proxy = settings.s3_proxy self.proxy = settings.s3_proxy
self.session = aioboto3.Session( self.session = aioboto3.Session(aws_access_key_id=self.access_key_id, aws_secret_access_key=self.secret_access_key)
aws_access_key_id=self.access_key_id, if not settings.s3_endpoint_url:
aws_secret_access_key=self.secret_access_key, self.endpoint_url = f'https://{self.s3_hostname}'
) else:
# 如果提供了 s3_endpoint_url,则优先使用它
self.endpoint_url = settings.s3_endpoint_url
async def save_file(self, file: UploadFile, save_path: str): async def save_file(self, file: UploadFile, save_path: str):
async with self.session.client("s3", endpoint_url=self.endpoint_url, aws_session_token=self.aws_session_token) as s3: async with self.session.client("s3", endpoint_url=self.endpoint_url, aws_session_token=self.aws_session_token) as s3:
@@ -46,6 +46,9 @@
</el-form-item> </el-form-item>
<el-form-item size="large" label="S3 EndpointUrl"> <el-form-item size="large" label="S3 EndpointUrl">
<el-input v-model="config.s3_endpoint_url" /> <el-input v-model="config.s3_endpoint_url" />
</el-form-item>
<el-form-item size="large" label="S3 hostname">
<el-input v-model="config.s3_hostname" />
</el-form-item> </el-form-item>
<el-form-item size="large" label="Aws Session Token"> <el-form-item size="large" label="Aws Session Token">
<el-input v-model="config.aws_session_token" /> <el-input v-model="config.aws_session_token" />
@@ -104,6 +107,7 @@ const config = ref({
aws_session_token: '', aws_session_token: '',
s3_bucket_name: '', s3_bucket_name: '',
s3_endpoint_url: '', s3_endpoint_url: '',
s3_hostname: '',
uploadCount: 1, uploadCount: 1,
errorMinute: 1, errorMinute: 1,
errorCount: 1, errorCount: 1,