mirror of
https://github.com/hydralauncher/hydra.git
synced 2026-01-10 05:16:19 +00:00
fix: handle download not found exception in HttpDownloader and enforce IPv4 in HTTP agents
This commit is contained in:
@@ -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,
|
||||||
|
|||||||
@@ -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 }
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -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"];
|
||||||
|
|||||||
@@ -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 (
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
Reference in New Issue
Block a user