fix: use safe .get() for 'mode' query param in fetch_customnode_list

The `/customnode/getlist` endpoint crashes with `KeyError: 'mode'`
when the `mode` query parameter is missing from the request. Extract
the mode value once using `.get()` with a default fallback, consistent
with how `skip_update` is already handled on the same endpoint.

Fixes #2740

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Kelin 2026-03-30 00:25:00 +08:00
parent 2007eab26d
commit 95e73a6275

View File

@ -874,14 +874,16 @@ async def fetch_customnode_list(request):
else:
skip_update = False
if request.rel_url.query["mode"] == "local":
mode = request.rel_url.query.get("mode", "cache")
if mode == "local":
channel = 'local'
else:
channel = core.get_config()['channel_url']
node_packs = await core.get_unified_total_nodes(channel, request.rel_url.query["mode"], 'cache')
json_obj_github = core.get_data_by_mode(request.rel_url.query["mode"], 'github-stats.json', 'default')
json_obj_extras = core.get_data_by_mode(request.rel_url.query["mode"], 'extras.json', 'default')
node_packs = await core.get_unified_total_nodes(channel, mode, 'cache')
json_obj_github = core.get_data_by_mode(mode, 'github-stats.json', 'default')
json_obj_extras = core.get_data_by_mode(mode, 'extras.json', 'default')
core.populate_github_stats(node_packs, await json_obj_github)
core.populate_favorites(node_packs, await json_obj_extras)