Skip to content

Commit ae5e1b4

Browse files
committed
fix: 修复漏洞
1 parent 674ebfe commit ae5e1b4

File tree

3 files changed

+10
-12
lines changed

3 files changed

+10
-12
lines changed

core/cluster.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,7 @@ def __init__(self) -> None:
107107
self.failed_filelist = FileList(files=[])
108108
self.enabled = False
109109
self.site = None
110+
self.want_enable = False
110111
self.scheduler = None
111112
self.start_time = int(time.time() * 1000)
112113

@@ -312,7 +313,7 @@ async def listen(self, https: bool, port: int) -> None:
312313
async def enable(self) -> None:
313314
if self.enabled:
314315
return
315-
316+
316317
logger.tinfo("cluster.info.enabling")
317318
future = asyncio.Future()
318319

@@ -476,7 +477,8 @@ async def connect(self) -> None:
476477
async def _() -> None:
477478
logger.tsuccess("client.success.connected")
478479
await self.disable()
479-
await self.enable()
480+
if self.want_enable:
481+
await self.enable()
480482
if self.scheduler:
481483
self.scheduler.resume()
482484

core/router.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,8 +53,9 @@ async def _(request: web.Request) -> web.Response:
5353
response = None
5454
for storage in self.storages:
5555
if isinstance(storage, AListStorage):
56-
await storage.measure(size, response)
57-
await response.prepare(request)
56+
url = storage.measure(size, response)
57+
response = web.HTTPFound(url)
58+
response.prepare(request)
5859
return response
5960

6061
buffer = b"\x00\x66\xcc\xff" * 256 * 1024

core/storages/alist.py

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ async def getFileList(dir: str, pbar: tqdm) -> List[FileInfo]:
8989

9090
return FileList(files=missing_files)
9191

92-
async def measure(self, size: int, response):
92+
async def measure(self, size: int) -> str:
9393
file_path = f"{self.path}/measure/.{size}"
9494
try:
9595
async with aiohttp.ClientSession(self.url, headers=self.headers) as session:
@@ -98,10 +98,7 @@ async def measure(self, size: int, response):
9898
data = await response.json()
9999
logger.debug(data)
100100
if data["code"] == 200:
101-
logger.debug(1)
102-
response = web.HTTPFound(data["data"]["raw_url"])
103-
return
104-
101+
return data["data"]["raw_url"]
105102
if data["code"] != 200:
106103
logger.debug(2)
107104
try:
@@ -120,9 +117,7 @@ async def measure(self, size: int, response):
120117
data = await response.json()
121118
logger.debug(data)
122119
logger.debug(3)
123-
response = web.HTTPFound(data["data"]["raw_url"])
124-
response.prepare(request)
125-
return
120+
return data["data"]["raw_url"]
126121
except Exception as e:
127122
logger.terror("storage.error.alist.measure", e=e)
128123
return

0 commit comments

Comments
 (0)