Watch
1
0
Fork
You've already forked pkg-proxy
1
mirror of https://github.com/git-pkgs/proxy.git synced 2026-11-10 08:09:17 -05:00

Commit graph

  • 3b262f101b
    Record the detail behind each failure counter Simon Chrzanowski 2026-10-12 09:41:42 +02:00
  • 086abebe6e A database refresh now fetches the signature as well and stores it for that exact database content, keyed by its digest. A signature requested later, after the upstream has moved on, is still the one for the database the client got, and a refresh that returns the same bytes keeps the cached signature, so it is served offline too. The database is fetched once more after its signature to catch a mirror that swapped both in between. A missing signature is remembered per database, so official repos answer 404 without going upstream. Christian Heim 2026-10-12 10:59:22 +02:00
  • 67fd1ad6c1 The mirror now resolves a tag without caching it, mirrors the image it points to, and stores the tag only once that image is complete, so a failed or interrupted mirror keeps the previously cached tag instead of pointing it at an image with missing layers. Christian Heim 2026-10-12 10:36:51 +02:00
  • 5b9a5fca6b When the shared tag entry holds a representation the client does not accept, the lookup now goes on to the client's own per-Accept entry instead of giving up, so a Docker-only client still gets its cached manifest list after an OCI index was cached for the same tag. Christian Heim 2026-10-12 10:29:12 +02:00
  • 546550587b Mention repeated separators in the pypi rule note Christian Heim 2026-10-10 18:00:14 +02:00
  • 7694e023a5 Enable storage retention for golang Christian Heim 2026-10-10 21:03:23 +02:00
  • ccb0935f9a Enable storage retention for oci Christian Heim 2026-10-11 00:45:58 +02:00
  • 72e986d912 Enable storage retention for maven Christian Heim 2026-10-10 18:02:49 +02:00
  • 42b4303b71 Enable storage retention for cran Christian Heim 2026-10-11 01:50:16 +02:00
  • 1d88be53ab Enable storage retention for alpine Christian Heim 2026-10-11 01:07:07 +02:00
  • 7ecb00a4ed Tighten npm retention tests and docs Christian Heim 2026-10-10 13:24:40 +02:00
  • aa27a36c20 Correct the pypi package rule note Christian Heim 2026-10-10 17:53:00 +02:00
  • b002885fcf Enable storage retention for npm Christian Heim 2026-10-10 11:47:55 +02:00
  • bb85f015e3 Enable storage retention for pypi Christian Heim 2026-10-10 13:32:04 +02:00
  • d2a069f6f2
    Cache configured version-pinned paths of generic upstreams (#424) Giles Westwood 2026-10-12 09:12:16 +01:00
  • 0c495fd906
    Proxy the OCI referrers API in the container handler (#427) Christian Heim 2026-10-12 10:08:01 +02:00
  • b664530f88
    Add age-based retention for cached artifacts (#428) Christian Heim 2026-10-12 10:06:01 +02:00
  • dcf90cfec3
    Close the Composer download gaps left after #430 (#433) Christian Heim 2026-10-12 09:56:57 +02:00
  • 16ebeaa975
    On Postgres, metadata fetched_at is now stored in UTC, so metadata_ttl no longer expires hours late when the proxy runs east of UTC. Entries written before this expire late one last time and are stored in UTC on their next refresh. (#435) Christian Heim 2026-10-12 09:53:53 +02:00
  • 729138d778
    Reject package requests with ? or # in the decoded path (#437) Christian Heim 2026-10-12 09:42:38 +02:00
  • 7b6c64af0a proxy mirror and the mirror API now pre-fetch container images from pkg:docker and pkg:oci PURLs: the mirror walks index, platform manifests (with their attestations) and blobs through the container handler, so a later pull is served from cache even when the upstream is down. A --platform filter (platforms in the API) limits multi-arch images, repository_url only resolves to configured registries, and names, tags and digests are validated before anything is fetched. Christian Heim 2026-10-12 00:20:10 +02:00
  • 411b436dd3 Let Composer archive downloads through the '?'/'#' guard: they resolve the upstream URL from metadata, and with #433 a branch like dev-fix/#42 is requested as dev-fix%2F%2342. Adversarial review finding F1. Christian Heim 2026-10-12 00:14:41 +02:00
  • 9fca85d70c Reject package requests whose decoded path contains '?' or '#', in one middleware in front of every ecosystem mount. Handlers build the upstream URL from the decoded path, so busybox.apk%3F/foo-9.9-r0.apk fetched busybox but cached it as foo; PyPI could be poisoned the same way, and the other ecosystems stored files under mangled names past the denylist and cooldown. Christian Heim 2026-10-12 00:08:20 +02:00
  • cc18c889ad proxy mirror now builds its upstream clients the same way as serve, so it follows OCI Bearer challenges, uses configured upstream credentials and the SSRF guard, and artifact downloads have no overall time limit. Before this the CLI used a plain client and Docker Hub answered every request with 401. Christian Heim 2026-10-12 00:02:31 +02:00
  • 5ce445f5d3 A database signature that belongs to an older database is no longer served. When the database was refreshed and the signature refetch fails, the proxy answers 404 or 502 instead of falling back to the cached signature, which pacman would reject. Paths with a decoded ? or # are refused, since they would fetch one file and cache it under another name. The README now says that pacman -Sy only works offline with cache_metadata enabled. Christian Heim 2026-10-11 23:51:43 +02:00
  • 094a962697 At most 64 fetches keep running after their client hangs up; beyond that a fetch is tied to its client again, so nobody can start an unbounded number of large downloads and leave. A server test now checks that client requests actually get the detach marker. Christian Heim 2026-10-11 23:51:43 +02:00
  • 111b271273 Arch Linux pacman repositories are now proxied at /arch/{name}/, with geo.mirror.pkgbuild.com as the built-in archlinux repository and more mirrors configurable under upstream.arch. Databases and file lists go through the metadata cache byte for byte, and a database signature is refreshed together with its database so the two always match. Packages and package signatures go to the artifact cache and stay available offline. The path is passed through unchanged, so Arch Linux ARM's $arch/$repo layout works too. README, config example, configuration docs and the dashboard have pacman instructions. Christian Heim 2026-10-11 23:41:16 +02:00
  • 055540a540 Manifests are now cached under a key that ignores the client's Accept header: a digest names one document, and a tag is shared by all clients that accept an index type, so Docker, containerd and Podman read the same entry and a pre-fetched image is found offline. Clients without index support keep their per-Accept entry, and the old keys are still written and read as fallback. Christian Heim 2026-10-11 23:59:29 +02:00
  • 2ed0327946 Keep fetching an artifact after the client that started the fetch disconnects. pacman gives up after 10 seconds without data, and since the proxy only starts sending once the whole file is stored, a large package on a slow upstream was cancelled on every try and never got cached. Client requests now mark their context so the shared fetch runs on context.WithoutCancel, still bounded by the artifact client timeout. Mirror jobs don't set the marker, so cancelling a job still aborts its fetches. Christian Heim 2026-10-11 23:29:52 +02:00
  • 140b4b3b5f Serve generic release assets cached under the unhashed key Giles Westwood 2026-10-11 22:16:52 +01:00
  • 7e76bc3d69 Store artifact times in UTC t 2026-10-11 21:43:48 +02:00
  • 0804b15441 On Postgres, metadata fetched_at is now stored in UTC, so metadata_ttl no longer expires hours late when the proxy runs east of UTC. Entries written before this expire late one last time and are stored in UTC on their next refresh. Christian Heim 2026-10-11 21:22:42 +02:00
  • adc7d11614 When a GitLab commit is fetched under its own name, the archive older proxies cached under the shared archive.zip name is dropped. A test now moves the branch from A to B and checks that A keeps coming from the cache. Christian Heim 2026-10-11 20:28:36 +02:00
  • 8b38b3e668 The tag list and manifest routes now only match paths that end in their endpoint, so a repository with tags/list or manifests in its name can still reach the referrers endpoint. Christian Heim 2026-10-11 19:36:08 +02:00
  • 789f499460 Without a cached index, referrers now pass upstream errors through and answer 502 when the upstream can't be reached or sends garbage, so clients no longer read an outage as a registry without the referrers API. Stale cache is still served when there is one. Christian Heim 2026-10-11 19:35:59 +02:00
  • 51230be24f Composer branch archives that an older proxy cached from another commit's URL are now discarded and fetched again, and a refetched artifact records the URL it actually came from. Christian Heim 2026-10-11 20:20:57 +02:00
  • 52afd9c0db GitLab Composer archives are now cached per commit and fetched for the commit the lock file pins, and branch names with a slash are escaped in dist URLs so the download route matches them. Christian Heim 2026-10-11 20:13:21 +02:00
  • 2695f5b614 Show artifact evictions on the analytics page Christian Heim 2026-10-11 18:27:15 +02:00
  • 878740f8c1 Clear an expired artifact and queue its file in one transaction Christian Heim 2026-10-11 18:27:15 +02:00
  • 832a441781
    Add package routes for private Composer and npm registries (#426) simon chrzanowski 2026-10-11 19:06:18 +02:00
  • 1b41f616a0 Say that each cached file ages on its own Christian Heim 2026-10-11 18:09:31 +02:00
  • f57168d1d8 Use helm as the example of an ecosystem without package rules Christian Heim 2026-10-11 18:09:31 +02:00
  • 3adae30f7e
    Explain APT signing keys and add a deb822 example (#429) Christian Heim 2026-10-11 17:58:45 +02:00
  • 3c095235f3
    Fetch the pinned commit for Composer branch downloads (#430) Christian Heim 2026-10-11 17:57:37 +02:00
  • 5683349754
    Cache Conan 2 recipe and package archives (#431) Christian Heim 2026-10-11 17:56:15 +02:00
  • f551a2e5e3 Store Conan archives under plain name and version, like pkg:conan/zlib@1.3.1, with the revisions and any user/channel in the filename. The old name/version@user/channel with one version per revision never matched a denylist entry or what scanners look up. Christian Heim 2026-10-11 08:58:07 +02:00
  • 512cdbf2b6 Conan 2.25 can also compress archives with xz or zstd (conan_package.txz, conan_package.tzst and so on), so cache those too. Christian Heim 2026-10-11 08:54:59 +02:00
  • 5fc7db719f Conan 2 downloads recipe and package files from /v2/conans/.../revisions/{rrev}/files/{file} and .../packages/{id}/revisions/{prev}/files/{file}, but the handler only cached the invalid /v1/files and /v2/files paths, so archives were never stored. This adds the real routes and drops the old ones; manifests and conaninfo.txt stay in the metadata cache. Christian Heim 2026-10-11 08:31:34 +02:00
  • 450f3ab280 Say when an ecosystem takes no package rules Christian Heim 2026-10-11 02:04:41 +02:00
  • 5b3d265b32 Note that the Composer cache key leaves out the query Christian Heim 2026-10-11 01:32:44 +02:00
  • 12f7711c74 Rebuild Composer commit URLs only for branch versions Christian Heim 2026-10-11 01:32:32 +02:00
  • d124ed3874 Accept bare commit names from older Composer lock files Christian Heim 2026-10-11 01:17:51 +02:00
  • 6013e105d6 Fetch the pinned commit for Composer branch downloads Christian Heim 2026-10-11 01:01:47 +02:00
  • 75994b787d Fix generic artifact cache identity and query forwarding Giles Westwood 2026-10-10 22:47:00 +01:00
  • 2593acee9d Note that re-running the mirror keeps packages cached Christian Heim 2026-10-10 22:42:11 +02:00
  • 1da5240895 Explain APT signing keys and add a deb822 example Christian Heim 2026-10-10 21:40:56 +02:00
  • 4009d485bf Say when a package key doesn't match how packages are stored Christian Heim 2026-10-10 21:36:41 +02:00
  • fd25befa83 Reject qualifiers and subpaths in retention package keys Christian Heim 2026-10-10 18:32:08 +02:00
  • 855324568d Keep routed npm publish times out of the shared versions row Simon Chrzanowski 2026-10-10 14:17:49 +02:00
  • fef12ac97f Match Composer routes without the ~dev suffix Simon Chrzanowski 2026-10-10 14:17:49 +02:00
  • f86b33f1ec Share routed artifact filename qualification between handlers Simon Chrzanowski 2026-10-09 08:49:48 +02:00
  • 9e4c4f96ac Add npm package routes for private registries Simon Chrzanowski 2026-10-09 08:49:48 +02:00
  • 56175aae67 Add Composer package routes for private repositories Simon Chrzanowski 2026-10-09 08:49:48 +02:00
  • a7cf996c33 Fix retention timing on Postgres and tighten the sweep Christian Heim 2026-10-10 11:31:39 +02:00
  • ec4fe4ac1a Document storage retention Christian Heim 2026-10-10 10:20:53 +02:00
  • 339235fe70 Add age-based retention for cached artifacts Christian Heim 2026-10-10 10:20:53 +02:00
  • 77eb8b9f6e Route referrers requests by ns like the other OCI endpoints Christian Heim 2026-10-10 09:46:50 +02:00
  • f4c7a30a4a Drop the separate struct for cached referrers Christian Heim 2026-10-04 22:01:32 +02:00
  • a9c648f6cd Reuse the manifest cache key for referrers Christian Heim 2026-10-04 22:01:19 +02:00
  • aee7c1518e Test referrers digests with extra characters around them Christian Heim 2026-10-04 21:53:09 +02:00
  • 9eded620d4 Test the referrers Content-Type fallback Christian Heim 2026-10-04 21:53:01 +02:00
  • 605704230b Check that a 304 restarts the referrers cache TTL Christian Heim 2026-10-04 21:52:52 +02:00
  • 7efe45f2ae Reword which tools use the referrers API in the README Christian Heim 2026-10-04 21:45:45 +02:00
  • e89abcc39b Make the referrers ETag test prove the revalidation Christian Heim 2026-10-04 21:45:43 +02:00
  • d54320d347 Check that a cached referrers row links back to whoever reads it Christian Heim 2026-10-04 21:45:33 +02:00
  • 0476864324 Make the manifest routing test notice which handler answered Christian Heim 2026-10-04 21:45:22 +02:00
  • 02ae82b297 Read cached referrers through a small shared loader Christian Heim 2026-10-04 21:45:16 +02:00
  • 867246ef78 Cover absolute upstream links in the referrers link test Christian Heim 2026-10-04 21:45:01 +02:00
  • de0efc9500 Proxy the OCI referrers API in the container handler Christian Heim 2026-10-04 21:36:54 +02:00
  • 1559be63e2
    Route containerd ns mirror requests to configured registries (#405) pinguinfuss 2026-10-10 08:35:50 +02:00
  • 8b3b933fd4
    Stream archives when listing and reading browsed files (#408) Abhinav Gautam 2026-10-10 12:04:31 +05:30
  • 449683a676
    Rewrite Composer metadata in place and keep it minified (#418) simon chrzanowski 2026-10-10 08:31:37 +02:00
  • 73ed6bf5c6
    build(deps): bump github.com/aws/aws-sdk-go-v2/config (#422) dependabot[bot] 2026-10-10 07:20:45 +01:00
  • 579ab79ef4
    Cache archive artifacts from Maven repositories (#425) Giles Westwood 2026-10-10 07:17:53 +01:00
  • bc37ce0692 Test the limit on remembered ns refusals Christian Heim 2026-10-09 22:03:24 +02:00
  • b1708e015c Stop logging ns refusals once the set is full Christian Heim 2026-10-09 22:03:14 +02:00
  • 30660c9477 Rewrap the oci_mirrors paragraphs in the configuration docs Christian Heim 2026-10-09 22:03:00 +02:00
  • 7df9738571 Compare oci_mirrors hosts the way the handler does Christian Heim 2026-10-09 22:02:53 +02:00
  • e3591743f1 Log each refused ns once per upstream and refuse overlong values Christian Heim 2026-10-09 21:56:36 +02:00
  • ea69214351 Reject an oci_mirrors host that is listed for two upstreams Christian Heim 2026-10-09 21:56:08 +02:00
  • 2aac55137a Drop a check in validateOCIMirrors that could never fire Christian Heim 2026-10-09 21:55:54 +02:00
  • 68e93a528b Log when a prefix route refuses an ns Christian Heim 2026-10-09 21:49:47 +02:00
  • b3af6f23ad Test that oci_mirrors entries stay with their own upstream Christian Heim 2026-10-09 21:49:37 +02:00
  • fd25cd8406 Note what a host accepted on a prefix route gives up Christian Heim 2026-10-09 21:49:20 +02:00
  • 70ddc694bb Fix the docs sentence on which ns a prefix route takes Christian Heim 2026-10-09 21:49:14 +02:00
  • 901dd5cfc6 Only take a foreign ns on a prefix route when it is configured Christian Heim 2026-10-09 21:44:56 +02:00
  • 18af301618
    build(deps): bump github.com/aws/aws-sdk-go-v2/config dependabot[bot] 2026-10-09 06:15:37 +00:00
  • a691e992cc
    build(deps): bump github.com/aws/aws-sdk-go-v2/service/ecr (#423) dependabot[bot] 2026-10-09 08:11:55 +02:00
  • 52e8b5c2a4
    build(deps): bump modernc.org/sqlite from 1.59.0 to 1.60.1 (#421) dependabot[bot] 2026-10-09 08:11:12 +02:00
  • 80bfb66a0e Cache archive artifacts from Maven repositories Giles Westwood 2026-10-08 22:04:57 +01:00