mirror of
https://github.com/nimbold/Firelink.git
synced 2026-09-03 22:45:23 +00:00
fix(network): explicitly disable proxy fallbacks for none and system modes
Disabled implicit system/environment variable proxy fallbacks in reqwest, yt-dlp, and aria2c when no proxy is explicitly provided. Updated useDownloadStore to strictly return 'none' when 'none' is selected or when 'system' proxy is empty, matching IDM/FDM behavior and ignoring http_proxy environment variables.
This commit is contained in:
@@ -703,7 +703,11 @@ fn build_client(payload: &DownloadPayload) -> Result<Client, String> {
|
|||||||
builder = builder.user_agent(user_agent);
|
builder = builder.user_agent(user_agent);
|
||||||
}
|
}
|
||||||
if let Some(proxy) = payload.proxy.as_deref().filter(|value| !value.is_empty()) {
|
if let Some(proxy) = payload.proxy.as_deref().filter(|value| !value.is_empty()) {
|
||||||
builder = builder.proxy(reqwest::Proxy::all(proxy).map_err(|error| error.to_string())?);
|
if proxy == "none" {
|
||||||
|
builder = builder.no_proxy();
|
||||||
|
} else {
|
||||||
|
builder = builder.proxy(reqwest::Proxy::all(proxy).map_err(|error| error.to_string())?);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
builder.build().map_err(|error| error.to_string())
|
builder.build().map_err(|error| error.to_string())
|
||||||
|
|||||||
@@ -2085,8 +2085,10 @@ pub(crate) async fn start_media_download_internal(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if let Some(p) = proxy.as_ref() {
|
if let Some(p) = proxy.as_ref().filter(|s| !s.is_empty()) {
|
||||||
if !p.is_empty() {
|
if p == "none" {
|
||||||
|
cmd = cmd.arg("--proxy").arg("");
|
||||||
|
} else {
|
||||||
cmd = cmd.arg("--proxy").arg(p);
|
cmd = cmd.arg("--proxy").arg(p);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -872,8 +872,12 @@ impl SidecarSpawner for ProductionSpawner {
|
|||||||
if !header_list.is_empty() {
|
if !header_list.is_empty() {
|
||||||
options.insert("header".to_string(), serde_json::json!(header_list));
|
options.insert("header".to_string(), serde_json::json!(header_list));
|
||||||
}
|
}
|
||||||
if let Some(prox) = &payload.proxy {
|
if let Some(prox) = payload.proxy.as_deref().filter(|s| !s.is_empty()) {
|
||||||
options.insert("all-proxy".to_string(), serde_json::json!(prox));
|
if prox == "none" {
|
||||||
|
options.insert("all-proxy".to_string(), serde_json::json!(""));
|
||||||
|
} else {
|
||||||
|
options.insert("all-proxy".to_string(), serde_json::json!(prox));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
let uris = crate::collect_download_uris(&payload.url, payload.mirrors.as_deref());
|
let uris = crate::collect_download_uris(&payload.url, payload.mirrors.as_deref());
|
||||||
let params = serde_json::json!([uris, options]);
|
let params = serde_json::json!([uris, options]);
|
||||||
|
|||||||
@@ -88,15 +88,19 @@ export async function dispatchItem(id: string): Promise<boolean> {
|
|||||||
const getProxyArgs = async (settings: ReturnType<typeof useSettingsStore.getState>) => {
|
const getProxyArgs = async (settings: ReturnType<typeof useSettingsStore.getState>) => {
|
||||||
if (settings.proxyMode === 'system') {
|
if (settings.proxyMode === 'system') {
|
||||||
try {
|
try {
|
||||||
return await invoke('get_system_proxy');
|
const sysProxy = await invoke('get_system_proxy');
|
||||||
|
return typeof sysProxy === 'string' && sysProxy ? sysProxy : "none";
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
console.warn("Failed to get system proxy:", e);
|
console.warn("Failed to get system proxy:", e);
|
||||||
return null;
|
return "none";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (settings.proxyMode === 'custom' && settings.proxyHost) {
|
if (settings.proxyMode === 'custom' && settings.proxyHost) {
|
||||||
return `http://${settings.proxyHost}:${settings.proxyPort}`;
|
return `http://${settings.proxyHost}:${settings.proxyPort}`;
|
||||||
}
|
}
|
||||||
|
if (settings.proxyMode === 'none') {
|
||||||
|
return "none";
|
||||||
|
}
|
||||||
return null;
|
return null;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user