7
7
from apps .admin .depends import admin_required
8
8
from apps .base .models import FileCodes
9
9
from apps .base .pydantics import SelectFileModel
10
- from apps .base .utils import get_expire_info , get_file_path_name , error_ip_limit , upload_ip_limit
10
+ from apps .base .utils import get_expire_info , get_file_path_name , ip_limit
11
11
from core .response import APIResponse
12
12
from core .settings import settings
13
13
from core .storage import storages , FileStorageInterface
22
22
23
23
# 分享文本的API
24
24
@share_api .post ('/text/' , dependencies = [Depends (admin_required )])
25
- async def share_text (text : str = Form (...), expire_value : int = Form (default = 1 , gt = 0 ), expire_style : str = Form (default = 'day' ), ip : str = Depends (upload_ip_limit )):
25
+ async def share_text (text : str = Form (...), expire_value : int = Form (default = 1 , gt = 0 ), expire_style : str = Form (default = 'day' ), ip : str = Depends (ip_limit [ 'upload' ] )):
26
26
# 获取过期信息
27
27
expired_at , expired_count , used_count , code = await get_expire_info (expire_value , expire_style )
28
28
# 创建一个新的FileCodes实例
@@ -36,7 +36,7 @@ async def share_text(text: str = Form(...), expire_value: int = Form(default=1,
36
36
prefix = '文本分享'
37
37
)
38
38
# 添加IP到限制列表
39
- upload_ip_limit .add_ip (ip )
39
+ ip_limit [ 'upload' ] .add_ip (ip )
40
40
# 返回API响应
41
41
return APIResponse (detail = {
42
42
'code' : code ,
@@ -45,7 +45,8 @@ async def share_text(text: str = Form(...), expire_value: int = Form(default=1,
45
45
46
46
# 分享文件的API
47
47
@share_api .post ('/file/' , dependencies = [Depends (admin_required )])
48
- async def share_file (expire_value : int = Form (default = 1 , gt = 0 ), expire_style : str = Form (default = 'day' ), file : UploadFile = File (...), ip : str = Depends (upload_ip_limit )):
48
+ async def share_file (expire_value : int = Form (default = 1 , gt = 0 ), expire_style : str = Form (default = 'day' ), file : UploadFile = File (...),
49
+ ip : str = Depends (ip_limit ['upload' ])):
49
50
# 检查文件大小是否超过限制
50
51
if file .size > int (settings .uploadSize ):
51
52
raise HTTPException (status_code = 403 , detail = f'文件大小超过限制,最大为{ settings .uploadSize } 字节' )
@@ -71,7 +72,7 @@ async def share_file(expire_value: int = Form(default=1, gt=0), expire_style: st
71
72
used_count = used_count ,
72
73
)
73
74
# 添加IP到限制列表
74
- upload_ip_limit .add_ip (ip )
75
+ ip_limit [ 'upload' ] .add_ip (ip )
75
76
# 返回API响应
76
77
return APIResponse (detail = {
77
78
'code' : code ,
@@ -94,14 +95,14 @@ async def get_code_file_by_code(code, check=True):
94
95
95
96
# 获取文件的API
96
97
@share_api .get ('/select/' )
97
- async def get_code_file (code : str , ip : str = Depends (error_ip_limit )):
98
+ async def get_code_file (code : str , ip : str = Depends (ip_limit [ 'error' ] )):
98
99
file_storage : FileStorageInterface = storages [settings .file_storage ]()
99
100
# 获取文件
100
101
has , file_code = await get_code_file_by_code (code )
101
102
# 检查文件是否存在
102
103
if not has :
103
104
# 添加IP到限制列表
104
- error_ip_limit .add_ip (ip )
105
+ ip_limit [ 'error' ] .add_ip (ip )
105
106
# 返回API响应
106
107
return APIResponse (code = 404 , detail = file_code )
107
108
# 更新文件的使用次数和过期次数
@@ -116,14 +117,14 @@ async def get_code_file(code: str, ip: str = Depends(error_ip_limit)):
116
117
117
118
# 选择文件的API
118
119
@share_api .post ('/select/' )
119
- async def select_file (data : SelectFileModel , ip : str = Depends (error_ip_limit )):
120
+ async def select_file (data : SelectFileModel , ip : str = Depends (ip_limit [ 'error' ] )):
120
121
file_storage : FileStorageInterface = storages [settings .file_storage ]()
121
122
# 获取文件
122
123
has , file_code = await get_code_file_by_code (data .code )
123
124
# 检查文件是否存在
124
125
if not has :
125
126
# 添加IP到限制列表
126
- error_ip_limit .add_ip (ip )
127
+ ip_limit [ 'error' ] .add_ip (ip )
127
128
# 返回API响应
128
129
return APIResponse (code = 404 , detail = file_code )
129
130
# 更新文件的使用次数和过期次数
@@ -143,13 +144,13 @@ async def select_file(data: SelectFileModel, ip: str = Depends(error_ip_limit)):
143
144
144
145
# 下载文件的API
145
146
@share_api .get ('/download' )
146
- async def download_file (key : str , code : str , ip : str = Depends (error_ip_limit )):
147
+ async def download_file (key : str , code : str , ip : str = Depends (ip_limit [ 'error' ] )):
147
148
file_storage : FileStorageInterface = storages [settings .file_storage ]()
148
149
# 检查token是否有效
149
150
is_valid = await get_select_token (code ) == key
150
151
if not is_valid :
151
152
# 添加IP到限制列表
152
- error_ip_limit .add_ip (ip )
153
+ ip_limit [ 'error' ] .add_ip (ip )
153
154
# 获取文件
154
155
has , file_code = await get_code_file_by_code (code , False )
155
156
# 检查文件是否存在
0 commit comments