Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- addEventListener('fetch', event => {
- event.respondWith(handleRequest(event.request));
- });
- const BYPASS_COOKIES = [
- 'betacentralauth_Session',
- 'betacentralauth_User'
- ];
- const BYPASS_NAMESPACES = ["Special", "Module", "Especial"];
- async function handleRequest(request) {
- if (request.method === "POST") {
- return fetch(request);
- }
- let url = new URL(request.url);
- let uaValue = 'desktop';
- const ua = request.headers.get('user-agent') || '';
- if (/Mobile|Android|Silk|Kindle|BlackBerry|Opera Mini|Opera Mobi/i.test(ua)) {
- uaValue = 'mobile';
- }
- url.searchParams.set('ua', uaValue);
- let bypassCache = false;
- let cookie = request.headers.get('cookie') || '';
- for (const cookieName of BYPASS_COOKIES) {
- if (cookie.includes(cookieName)) {
- bypassCache = true;
- break;
- }
- }
- for (const namespace of BYPASS_NAMESPACES) {
- if (url.pathname.includes(`/wiki/${namespace}:`)) {
- bypassCache = true;
- break;
- }
- }
- if (bypassCache) {
- const response = await fetch(request);
- const responseHeaders = new Headers(response.headers);
- responseHeaders.set('CF-Cache-Status', 'BYPASS');
- return new Response(response.body, {
- status: response.status,
- statusText: response.statusText,
- headers: responseHeaders,
- redirect: "manual"
- });
- }
- const modifiedHeaders = new Headers(request.headers);
- modifiedHeaders.set('User-Agent', `${uaValue}`);
- // Conditional properties for new Request
- const requestProps = {
- method: request.method,
- headers: modifiedHeaders,
- cf: { cacheEverything: true }
- };
- if (request.method !== "GET" && request.method !== "HEAD") {
- requestProps.body = request.body;
- }
- request = new Request(url.toString(), requestProps);
- const originalResponse = await fetch(request);
- const responseHeaders = new Headers(originalResponse.headers);
- responseHeaders.set('Cache-Control', 'public, must-revalidate, max-age=3600, stale-while-revalidate=90');
- responseHeaders.append('Vary', 'User-Agent');
- return new Response(originalResponse.body, {
- status: originalResponse.status,
- statusText: originalResponse.statusText,
- headers: responseHeaders
- });
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement