diff --git a/src/mirrorsrun/server.py b/src/mirrorsrun/server.py index ff9e01f..ea8bd95 100644 --- a/src/mirrorsrun/server.py +++ b/src/mirrorsrun/server.py @@ -29,6 +29,7 @@ from mirrorsrun.sites.pypi import pypi from mirrorsrun.sites.torch import torch from mirrorsrun.sites.docker import dockerhub, k8s, quay, ghcr, nvcr from mirrorsrun.sites.common import common +from mirrorsrun.sites.goproxy import goproxy subdomain_mapping = { "mirrors": common, @@ -40,6 +41,7 @@ subdomain_mapping = { "ghcr": ghcr, "quay": quay, "nvcr": nvcr, + "goproxy": goproxy, } logging.basicConfig( diff --git a/src/mirrorsrun/sites/goproxy.py b/src/mirrorsrun/sites/goproxy.py new file mode 100644 index 0000000..75b8ce1 --- /dev/null +++ b/src/mirrorsrun/sites/goproxy.py @@ -0,0 +1,29 @@ +from starlette.requests import Request + +from mirrorsrun.proxy.direct import direct_proxy +from starlette.responses import Response + + +async def goproxy(request: Request): + path = request.url.path + + sumdb_prefix = "/sumdb/sum.golang.org" + if path.startswith(sumdb_prefix): + sumdb_path = path.removeprefix(sumdb_prefix) + if sumdb_path.startswith("/supported"): + return Response( + content=b"", + ) + target_url = "https://sum.golang.org" + sumdb_path + return await direct_proxy( + request, + target_url, + ) + + target_url = "https://proxy.golang.org" + path + + return await direct_proxy( + request, + target_url, + ) +