39 lines
1.3 KiB
JavaScript
39 lines
1.3 KiB
JavaScript
// This function acts as a proxy for the OCI Distribution API
|
|
// It will redirect requests to the ghcr.io domain and inject a default user
|
|
|
|
// Configs for what to do with requests
|
|
const DEFAULT_USER = "ewpratten";
|
|
const ALLOWED_EXTRA_USERS = [
|
|
|
|
];
|
|
// const TARGET_URL = new URL("https://registry.hub.docker.com/v2/");
|
|
const TARGET_URL = new URL("https://index.docker.io/v2/");
|
|
|
|
export function onRequest(context) {
|
|
|
|
// Parse the path out of the url
|
|
const url = new URL(context.request.url);
|
|
|
|
// Replace the domain and port with the ghcr.io domain
|
|
url.hostname = TARGET_URL.hostname;
|
|
url.port = "";
|
|
|
|
// If the path is just /v2 then redirect upstream
|
|
// if (url.pathname == "/v2" || url.pathname == "/v2/") {
|
|
// return Response.redirect(TARGET_URL.toString(), 302);
|
|
// }
|
|
|
|
// // If the path starts with an allowed user, redirect to the new url
|
|
// for (var user of ALLOWED_EXTRA_USERS) {
|
|
// if (url.pathname.startsWith(`/v2/${user}/`)) {
|
|
// return Response.redirect(url.toString(), 302);
|
|
// }
|
|
// }
|
|
|
|
// // Inject the default user into the path after /v2/
|
|
// url.pathname = url.pathname.replace("/v2/", `/v2/${DEFAULT_USER}/`);
|
|
|
|
// Redirect to the new url
|
|
return Response.redirect(url.toString(), 302);
|
|
}
|