mirror of
https://github.com/TecharoHQ/anubis.git
synced 2025-10-04 13:52:08 +08:00
* fix(lib): enable multiple consecutive slash support Closes #754 Closes #808 Closes #815 Apparently more applications use multiple slashes in a row than I thought. There is no easy way around this other than to do this hacky fix to avoid net/http#ServeMux's URL cleaning. * test(double_slash): add sourceware case Signed-off-by: Xe Iaso <me@xeiaso.net> * test(lib): fix tests for double slash fix Signed-off-by: Xe Iaso <me@xeiaso.net> --------- Signed-off-by: Xe Iaso <xe.iaso@techaro.lol> Signed-off-by: Xe Iaso <me@xeiaso.net>
45 lines
No EOL
942 B
JavaScript
45 lines
No EOL
942 B
JavaScript
import { createReadStream } from "fs";
|
|
import { createInterface } from "readline";
|
|
|
|
async function getPage(path) {
|
|
return fetch(`http://localhost:8923${path}`)
|
|
.then(resp => {
|
|
if (resp.status !== 200) {
|
|
throw new Error(`wanted status 200, got status: ${resp.status}`);
|
|
}
|
|
return resp;
|
|
})
|
|
.then(resp => resp.text());
|
|
}
|
|
|
|
(async () => {
|
|
const fin = createReadStream("input.txt");
|
|
const rl = createInterface({
|
|
input: fin,
|
|
crlfDelay: Infinity,
|
|
});
|
|
|
|
const resultSheet = {};
|
|
|
|
let failed = false;
|
|
|
|
for await (const line of rl) {
|
|
console.log(line);
|
|
|
|
const resp = await getPage(line);
|
|
resultSheet[line] = {
|
|
match: resp.includes(`GET ${line}`),
|
|
line: resp.split("\n")[0],
|
|
};
|
|
}
|
|
|
|
for (let [k, v] of Object.entries(resultSheet)) {
|
|
if (!v.match) {
|
|
failed = true;
|
|
}
|
|
|
|
console.debug({ path: k, results: v });
|
|
}
|
|
|
|
process.exit(failed ? 1 : 0);
|
|
})(); |