From ae4bc729063283f3e453dd96eeef85379bc512b5 Mon Sep 17 00:00:00 2001 From: ashley Date: Tue, 7 Oct 2025 15:51:36 +0200 Subject: [PATCH] add /api/geo --- src/libpoketube/init/pages-api.js | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/src/libpoketube/init/pages-api.js b/src/libpoketube/init/pages-api.js index 2b6384a5..74cc76f8 100644 --- a/src/libpoketube/init/pages-api.js +++ b/src/libpoketube/init/pages-api.js @@ -11,7 +11,7 @@ function getJson(str) { const pkg = require("../../../package.json"); const os = require('os'); const cnf = require("../../../config.json"); - +const ip2country = require("ip2country"); const innertube = require("../libpoketube-youtubei-objects.json"); @@ -54,6 +54,23 @@ module.exports = function (app, config, renderTemplate) { f.body.pipe(res); }); + +app.get("/api/geo", (req, res) => { + let ip = + req.headers["x-forwarded-for"]?.split(",")[0].trim() || + req.socket.remoteAddress; + + if (ip && ip.startsWith("::ffff:")) ip = ip.substring(7); + + const countryCode = ip2country(ip) || "??"; + + const isAgeRestrictedGeo = countryCode === "RU"; + + res.setHeader("Content-Type", "application/json"); + res.setHeader("Access-Control-Allow-Origin", "*"); + res.json({ countryCode, isAgeRestrictedGeo }); +}); + app.get("/ggpht/:v", async function (req, res) { var url = `https://yt3.ggpht.com/${req.params.v}`;