fix: handle download not found exception in HttpDownloader and enforce IPv4 in HTTP agents

This commit is contained in:
Moyasee
2026-01-03 01:08:25 +02:00
parent 2bc0266775
commit de483da51c
5 changed files with 29 additions and 1 deletions

View File

@@ -1,4 +1,5 @@
import aria2p import aria2p
from aria2p.client import ClientException as DownloadNotFound
class HttpDownloader: class HttpDownloader:
def __init__(self): def __init__(self):
@@ -36,7 +37,11 @@ class HttpDownloader:
if self.download == None: if self.download == None:
return None return None
download = self.aria2.get_download(self.download.gid) try:
download = self.aria2.get_download(self.download.gid)
except DownloadNotFound:
self.download = None
return None
response = { response = {
'folderName': download.name, 'folderName': download.name,

View File

@@ -21,6 +21,7 @@ export class Aria2 {
"--rpc-listen-all", "--rpc-listen-all",
"--file-allocation=none", "--file-allocation=none",
"--allow-overwrite=true", "--allow-overwrite=true",
"--disable-ipv6",
], ],
{ stdio: "inherit", windowsHide: true } { stdio: "inherit", windowsHide: true }
); );

View File

@@ -1,4 +1,6 @@
import axios from "axios"; import axios from "axios";
import http from "http";
import https from "https";
import { import {
HOSTER_USER_AGENT, HOSTER_USER_AGENT,
extractHosterFilename, extractHosterFilename,
@@ -28,6 +30,12 @@ export class BuzzheavierApi {
await axios.get(baseUrl, { await axios.get(baseUrl, {
headers: { "User-Agent": HOSTER_USER_AGENT }, headers: { "User-Agent": HOSTER_USER_AGENT },
timeout: 30000, timeout: 30000,
httpAgent: new http.Agent({
family: 4, // Force IPv4
}),
httpsAgent: new https.Agent({
family: 4, // Force IPv4
}),
}); });
const downloadUrl = `${baseUrl}/download`; const downloadUrl = `${baseUrl}/download`;
@@ -43,6 +51,12 @@ export class BuzzheavierApi {
validateStatus: (status) => validateStatus: (status) =>
status === 200 || status === 204 || status === 301 || status === 302, status === 200 || status === 204 || status === 301 || status === 302,
timeout: 30000, timeout: 30000,
httpAgent: new http.Agent({
family: 4, // Force IPv4
}),
httpsAgent: new https.Agent({
family: 4, // Force IPv4
}),
}); });
const hxRedirect = headResponse.headers["hx-redirect"]; const hxRedirect = headResponse.headers["hx-redirect"];

View File

@@ -1,4 +1,5 @@
import axios from "axios"; import axios from "axios";
import https from "https";
import { logger } from "../logger"; import { logger } from "../logger";
interface UnlockResponse { interface UnlockResponse {
@@ -33,6 +34,9 @@ export class VikingFileApi {
maxRedirects: 0, maxRedirects: 0,
validateStatus: (status) => validateStatus: (status) =>
status === 301 || status === 302 || status === 200, status === 301 || status === 302 || status === 200,
httpsAgent: new https.Agent({
family: 4, // Force IPv4
}),
}); });
if ( if (

View File

@@ -1,4 +1,5 @@
import axios from "axios"; import axios from "axios";
import http from "http";
import cp from "node:child_process"; import cp from "node:child_process";
import fs from "node:fs"; import fs from "node:fs";
@@ -31,6 +32,9 @@ export class PythonRPC {
public static readonly RPC_PORT = "8084"; public static readonly RPC_PORT = "8084";
public static readonly rpc = axios.create({ public static readonly rpc = axios.create({
baseURL: `http://localhost:${this.RPC_PORT}`, baseURL: `http://localhost:${this.RPC_PORT}`,
httpAgent: new http.Agent({
family: 4, // Force IPv4
}),
}); });
private static pythonProcess: cp.ChildProcess | null = null; private static pythonProcess: cp.ChildProcess | null = null;