mirror of
https://github.com/catdevnull/transicion-desordenada-diablo
synced 2024-11-15 02:21:39 +00:00
no forzar HTTPS por defecto
This commit is contained in:
parent
0c86f0e3e3
commit
fb67c517f3
1 changed files with 8 additions and 26 deletions
|
@ -4,18 +4,6 @@ import { Agent, fetch } from "undici";
|
||||||
import { join, normalize } from "node:path";
|
import { join, normalize } from "node:path";
|
||||||
import { pipeline } from "node:stream/promises";
|
import { pipeline } from "node:stream/promises";
|
||||||
|
|
||||||
// lista de dominios que permitimos usar http: porque tienen HTTPS roto..
|
|
||||||
const brokenHttps = [
|
|
||||||
"datos.mindef.gov.ar", // cert para otro dominio
|
|
||||||
"datos.energia.gob.ar", // cert para otro dominio
|
|
||||||
"datos.minem.gob.ar", // vencido 2022-17-06
|
|
||||||
"datos.agroindustria.gob.ar", // vencido 2022-03-10
|
|
||||||
"andino.siu.edu.ar", // self signed, igual parece que todo tira 404 en este..
|
|
||||||
"datos.salud.gob.ar", // timeout en HTTPS
|
|
||||||
"datos.jus.gob.ar", // HTTPS redirige incorrectamente a URLs inexistentes
|
|
||||||
"www.hidro.gob.ar", // no HTTPS
|
|
||||||
];
|
|
||||||
|
|
||||||
// FYI: al menos los siguientes dominios no tienen la cadena completa de certificados en HTTPS. tenemos que usar un hack (node_extra_ca_certs_mozilla_bundle) para conectarnos a estos sitios. (se puede ver con ssllabs.com) ojalá lxs administradorxs de estos servidores lo arreglen.
|
// FYI: al menos los siguientes dominios no tienen la cadena completa de certificados en HTTPS. tenemos que usar un hack (node_extra_ca_certs_mozilla_bundle) para conectarnos a estos sitios. (se puede ver con ssllabs.com) ojalá lxs administradorxs de estos servidores lo arreglen.
|
||||||
// www.enargas.gov.ar, transparencia.enargas.gov.ar, www.energia.gob.ar, www.economia.gob.ar, datos.yvera.gob.ar
|
// www.enargas.gov.ar, transparencia.enargas.gov.ar, www.energia.gob.ar, www.economia.gob.ar, datos.yvera.gob.ar
|
||||||
|
|
||||||
|
@ -48,7 +36,7 @@ const jsonString = json.join("");
|
||||||
const parsed = JSON.parse(jsonString);
|
const parsed = JSON.parse(jsonString);
|
||||||
|
|
||||||
const jobs = parsed.dataset.flatMap((dataset) =>
|
const jobs = parsed.dataset.flatMap((dataset) =>
|
||||||
dataset.distribution.map((dist) => ({ dataset, dist })),
|
dataset.distribution.map((dist) => ({ dataset, dist }))
|
||||||
);
|
);
|
||||||
// forma barrani de distribuir carga entre servidores
|
// forma barrani de distribuir carga entre servidores
|
||||||
shuffleArray(jobs);
|
shuffleArray(jobs);
|
||||||
|
@ -56,11 +44,11 @@ const totalJobs = jobs.length;
|
||||||
let nFinished = 0;
|
let nFinished = 0;
|
||||||
|
|
||||||
const duplicated = hasDuplicates(
|
const duplicated = hasDuplicates(
|
||||||
jobs.map((j) => `${j.dataset.identifier}/${j.dist.identifier}`),
|
jobs.map((j) => `${j.dataset.identifier}/${j.dist.identifier}`)
|
||||||
);
|
);
|
||||||
if (duplicated) {
|
if (duplicated) {
|
||||||
console.error(
|
console.error(
|
||||||
"ADVERTENCIA: ¡encontré duplicados! es posible que se pisen archivos entre si",
|
"ADVERTENCIA: ¡encontré duplicados! es posible que se pisen archivos entre si"
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -82,7 +70,7 @@ const greens = Array(128)
|
||||||
dist.downloadURL.includes("minsegar-my.sharepoint.com")
|
dist.downloadURL.includes("minsegar-my.sharepoint.com")
|
||||||
) {
|
) {
|
||||||
console.debug(
|
console.debug(
|
||||||
`debug: reintentando ${dist.downloadURL} porque tiró 403`,
|
`debug: reintentando ${dist.downloadURL} porque tiró 403`
|
||||||
);
|
);
|
||||||
await wait(15000);
|
await wait(15000);
|
||||||
continue request;
|
continue request;
|
||||||
|
@ -91,7 +79,7 @@ const greens = Array(128)
|
||||||
}
|
}
|
||||||
console.error(
|
console.error(
|
||||||
`error: Failed to download URL ${dist.downloadURL} (${dataset.identifier}/${dist.identifier}):`,
|
`error: Failed to download URL ${dist.downloadURL} (${dataset.identifier}/${dist.identifier}):`,
|
||||||
error,
|
error
|
||||||
);
|
);
|
||||||
if (!(error instanceof StatusCodeError)) continue request;
|
if (!(error instanceof StatusCodeError)) continue request;
|
||||||
} finally {
|
} finally {
|
||||||
|
@ -99,7 +87,7 @@ const greens = Array(128)
|
||||||
}
|
}
|
||||||
} while (0);
|
} while (0);
|
||||||
}
|
}
|
||||||
})(),
|
})()
|
||||||
);
|
);
|
||||||
|
|
||||||
const interval = setInterval(() => {
|
const interval = setInterval(() => {
|
||||||
|
@ -115,12 +103,6 @@ clearInterval(interval);
|
||||||
async function downloadDist(dataset, dist) {
|
async function downloadDist(dataset, dist) {
|
||||||
const url = new URL(dist.downloadURL);
|
const url = new URL(dist.downloadURL);
|
||||||
|
|
||||||
// Siempre usar HTTPS excepto cuando está roto
|
|
||||||
if (brokenHttps.includes(url.host)) {
|
|
||||||
url.protocol = "http:";
|
|
||||||
// console.debug(url);
|
|
||||||
} else url.protocol = "https:";
|
|
||||||
|
|
||||||
const res = await fetch(url.toString(), {
|
const res = await fetch(url.toString(), {
|
||||||
dispatcher,
|
dispatcher,
|
||||||
});
|
});
|
||||||
|
@ -131,12 +113,12 @@ async function downloadDist(dataset, dist) {
|
||||||
const fileDirPath = join(
|
const fileDirPath = join(
|
||||||
outputPath,
|
outputPath,
|
||||||
sanitizeSuffix(dataset.identifier),
|
sanitizeSuffix(dataset.identifier),
|
||||||
sanitizeSuffix(dist.identifier),
|
sanitizeSuffix(dist.identifier)
|
||||||
);
|
);
|
||||||
await mkdir(fileDirPath, { recursive: true });
|
await mkdir(fileDirPath, { recursive: true });
|
||||||
const filePath = join(
|
const filePath = join(
|
||||||
fileDirPath,
|
fileDirPath,
|
||||||
sanitizeSuffix(dist.fileName || dist.identifier),
|
sanitizeSuffix(dist.fileName || dist.identifier)
|
||||||
);
|
);
|
||||||
const outputFile = await open(filePath, "w");
|
const outputFile = await open(filePath, "w");
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue