eh2telegraph/worker/web_proxy.js

49 lines
1.2 KiB
JavaScript

/*
Cloudflare workers telegraph proxy.
Deploy and set `KEY` variable in browser.
*/
addEventListener('fetch', event => {
event.respondWith(handleRequest(event.request))
})
const RESPONSE_HEADERS = {
"Server": "web-proxy",
};
async function handleRequest(request) {
// validate request key
if (request.headers.get("X-Authorization") != KEY) {
return new Response(null, {
status: 401,
headers: RESPONSE_HEADERS
});
}
// read original url
var url = request.headers.get("X-Forwarded-For");
if (url == null || url == "") {
return new Response(null, {
status: 400,
headers: RESPONSE_HEADERS
});
}
// construct new url and request
var req = new Request(new URL(url), {
method: request.method,
headers: request.headers,
body: request.body
});
// remove headers
req.headers.delete("X-Authorization");
req.headers.delete("X-Forwarded-For");
req.headers.delete("CF-Connecting-IP");
req.headers.delete("CF-Worker");
req.headers.delete("CF-EW-Via");
// send request
var result = await fetch(req);
return result;
}