Skip to content

Commit d715e3f

Browse files
committed
fix: 修复漏洞
1 parent 93eba41 commit d715e3f

File tree

3 files changed

+21
-20
lines changed

3 files changed

+21
-20
lines changed

core/__init__.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,8 +52,10 @@ async def syncFiles():
5252
await cluster.disable()
5353
if cluster.socket:
5454
await cluster.socket.socket.disconnect()
55-
if cluster.site:
56-
await cluster.site.stop()
55+
if cluster.http_site:
56+
await cluster.http_site.stop()
57+
if cluster.https_site:
58+
await cluster.https_site.stop()
5759
if scheduler.state == 1:
5860
scheduler.shutdown()
5961
logger.tsuccess("main.success.stopped")

core/cluster.py

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,8 @@ def __init__(self) -> None:
9494
self.server = None
9595
self.failed_filelist = FileList(files=[])
9696
self.enabled = False
97-
self.site = None
97+
self.https_site = None
98+
self.http_site = None
9899

99100
async def fetchFileList(self) -> None:
100101
logger.tinfo("cluster.info.filelist.fetching")
@@ -250,17 +251,23 @@ async def listen(self, https: bool, port: int) -> None:
250251
try:
251252
ssl_context = None
252253
if https:
253-
ssl_context = ssl.create_default_context(ssl.Purpose.SERVER_AUTH)
254+
ssl_context = ssl.create_default_context(ssl.Purpose.CLIENT_AUTH)
254255
ssl_context.load_cert_chain(
255256
certfile=Path(Config.get("advanced.paths.cert")),
256257
keyfile=Path(Config.get("advanced.paths.key")),
257258
)
259+
ssl_context.check_hostname = False
258260
self.server = web.AppRunner(self.application)
259261
await self.server.setup()
260-
self.site = web.TCPSite(
261-
self.server, "0.0.0.0", port, ssl_context=ssl_context
262+
if https:
263+
self.https_site = web.TCPSite(
264+
self.server, "0.0.0.0", port, ssl_context=ssl_context
265+
)
266+
await self.https_site.start()
267+
self.http_site = web.TCPSite(
268+
self.server, "0.0.0.0", port
262269
)
263-
await self.site.start()
270+
await self.http_site.start()
264271
logger.tsuccess("cluster.success.listen", port=port)
265272
except Exception as e:
266273
logger.terror("cluster.error.listen", e=e)

core/router.py

Lines changed: 5 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -13,20 +13,10 @@ def __init__(self, app: web.Application, storages: List[Storage]) -> None:
1313
self.secret = Config.get("cluster.secret")
1414
self.storages = storages
1515
self.counters = Counters(hits=0, bytes=0)
16-
17-
def route(self, path, method="GET"):
18-
def decorator(func):
19-
@wraps(func)
20-
async def wrapper(request: web.Request):
21-
return await func(request)
22-
23-
self.app.router.add_route(method, path, wrapper)
24-
return wrapper
25-
26-
return decorator
16+
self.route = web.RouteTableDef()
2717

2818
def init(self) -> None:
29-
@self.route("/download/{hash}")
19+
@self.route.get("/download/{hash}")
3020
async def _(
3121
request: web.Request,
3222
) -> Union[web.Response, web.FileResponse, web.StreamResponse]:
@@ -42,7 +32,7 @@ async def _(
4232
self.counters.hits += data["hits"]
4333
return response
4434

45-
@self.route("/measure/{size}")
35+
@self.route.get("/measure/{size}")
4636
async def _(request: web.Request) -> web.StreamResponse:
4737
try:
4838
size = int(request.match_info.get("size", "0"))
@@ -71,3 +61,5 @@ async def _(request: web.Request) -> web.StreamResponse:
7161

7262
except ValueError:
7363
return web.Response(status=400)
64+
65+
self.app.add_routes(self.route)

0 commit comments

Comments
 (0)