From 42a1b60b0cc9b1cbef16d4305119ea5e397bc026 Mon Sep 17 00:00:00 2001 From: ashley Date: Tue, 7 Oct 2025 16:32:23 +0200 Subject: [PATCH] fix stuff + add stuff --- src/libpoketube/init/pages-api.js | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/src/libpoketube/init/pages-api.js b/src/libpoketube/init/pages-api.js index 37eabcd1..113208fc 100644 --- a/src/libpoketube/init/pages-api.js +++ b/src/libpoketube/init/pages-api.js @@ -53,26 +53,32 @@ module.exports = function (app, config, renderTemplate) { f.body.pipe(res); }); -app.get("/api/geo", async (_req, res) => { +app.get("/api/geo", async (req, res) => { try { - const r = await fetch("https://ip2c.org/self"); - const t = await r.text(); - const parts = t.trim().split(";"); + let ip = + req.headers["x-forwarded-for"]?.split(",")[0].trim() || + req.socket.remoteAddress; + if (ip && ip.startsWith("::ffff:")) ip = ip.slice(7); + if (!ip || ip.startsWith("192.") || ip.startsWith("10.") || ip === "::1") { + return res.json({ countryCode: "ZZ" }); + } + + const response = await fetch(`https://ip2c.org/${ip}`); + const text = await response.text(); + const parts = text.trim().split(";"); const countryCode = parts[1] || "ZZ"; - res.setHeader("Content-Type", "application/json"); res.setHeader("Access-Control-Allow-Origin", "*"); - res.send(JSON.stringify({ countryCode })); + res.json({ countryCode }); } catch { - res.setHeader("Content-Type", "application/json"); - res.setHeader("Access-Control-Allow-Origin", "*"); - res.send(JSON.stringify({ countryCode: "ZZ" })); + res.json({ countryCode: "ZZ" }); } }); + app.get("/ggpht/:v", async function (req, res) { var url = `https://yt3.ggpht.com/${req.params.v}`;