import fp from 'fastify-plugin' import fs from 'fs'; const failureFile = fs.readFileSync("Checkfailed.html", "utf8"); const LICENSE_SERVER_URL = "https://license.mercurywork.shop/validate?license="; const whiteListedDomain = ["nebulaproxy.io"]; async function licenseCheck(req, pass) { try { const resp = await fetch(`${LICENSE_SERVER_URL}${pass}&host=${req.headers.host}`); const data = await resp.json(); if (data.status === "License valid") { return true; } else { return false; } } catch { return false; } } const plugin = (fastify, opts, done) => { fastify.addHook('onRequest', function (req, reply, next) { if (req.cookies.authcheck === 'true' || whiteListedDomain.includes(req.headers.host)) { return next(); } const authHeader = req.headers.authorization; if (req.cookies.refreshcheck != "true") { reply .setCookie('refreshcheck', 'true', { maxAge: 1000 }) .type("text/html") .send(failureFile); return; } if (!authHeader) { reply .code(401) .header('WWW-Authenticate', 'Basic') .type("text/html") .send(failureFile); return; } const auth = Buffer.from(authHeader.split(" ")[1], "base64").toString().split(":"); const user = auth[0]; const pass = auth[1]; licenseCheck(req, pass).then((data) => { if (!data) { reply.status(401).header('WWW-Authenticate', 'Basic').type("text/html").send(failureFile); return; } else { reply.setCookie('authcheck', 'true').type("text/html").send('') return; } }); }); done(); }; const masqr = fp(plugin, { fastify: '4.x', name: 'masqr' }); export default masqr;