// const logger = require("../utils/log.cjs") const config = require("../utils/config.cjs"); const request = require("request"); const CryptoJS = require("crypto-js"); module.exports = { config: async () => { return config; }, download: async (req, res) => { const query = req.query; query.url = CryptoJS.enc.Utf8.stringify( CryptoJS.enc.Base64.parse(query.url) ).toString(); query.headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:136.0) Gecko/20100101 Firefox/136.0", Accept: "*/*", "Accept-Language": "zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2", Connection: "keep-alive", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "cors", "Sec-Fetch-Site": "cross-site", ...JSON.parse( CryptoJS.enc.Utf8.stringify( CryptoJS.enc.Base64.parse(query.headers) ).toString() ), }; const response = request(query.url, { headers: query.headers, }); response.on("response", (resp) => { ["content-length", "content-type", "content-disposition"].forEach( (key) => { if (resp.headers[key]) { res.setHeader(key, resp.headers[key]); } } ); res.setHeader("access-control-allow-origin", "*") }); response.on("error", (e) => { res.status(500).send(String(e)); }); response.on("end", () => { res.end(); }); response.on("data", (chunk) => { res.write(chunk); }); // response.pipe(res); }, };