yintai-company-home/service/core/router/routes.cjs

57 lines
1.5 KiB
JavaScript

// 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);
},
};