Skip to content
Closed
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
50 changes: 48 additions & 2 deletions openlist-proxy.js
Original file line number Diff line number Diff line change
Expand Up @@ -165,17 +165,63 @@ function handleOptions(request) {
}
}

// src/handleSignToggle.js
/**
* Handles sign toggle requests to enable/disable signature verification.
* @param {Request} request - The incoming HTTP request.
* @param {boolean} enableSign - Whether to enable signature verification.
* @returns {Promise<Response>} Response indicating toggle status.
*/
async function handleSignToggle(request, enableSign) {
const origin = request.headers.get("origin") ?? "*";
const response = new Response(
JSON.stringify({
code: 200,
message: `Signature verification ${enableSign ? 'enabled' : 'disabled'}`,
sign_enabled: enableSign
}),
{
headers: {
"content-type": "application/json;charset=UTF-8",
"Access-Control-Allow-Origin": origin
}
}
);
response.headers.append("Vary", "Origin");
return response;
}

// src/handleRequest.js
/**
* Main request handler that routes based on HTTP method.
* Main request handler that routes based on path.
* @param {Request} request - The incoming HTTP request.
* @returns {Promise<Response>} A valid response.
*/
async function handleRequest(request) {
if (request.method === "OPTIONS") {
return handleOptions(request);
}
return await handleDownload(request);

const url = new URL(request.url);
const pathname = url.pathname;

// Only allow /sign and /nonsign endpoints
if (pathname === "/sign") {
return await handleSignToggle(request, true);
} else if (pathname === "/nonsign") {
return await handleSignToggle(request, false);
} else {
// All other paths return 403 Forbidden
const origin = request.headers.get("origin") ?? "*";
const response = new Response("Forbidden", {
status: 403,
headers: {
"Access-Control-Allow-Origin": origin
}
});
response.headers.append("Vary", "Origin");
return response;
}
}

// src/index.js
Expand Down