From 99cb15f63375e0a5b98a6527124197d3e802757a Mon Sep 17 00:00:00 2001 From: Mathieu Lecarme Date: Fri, 30 May 2025 18:51:07 +0200 Subject: [PATCH] fix: handling debian and debian-security --- define/debian.go | 2 +- internal/rewriter/rewriter.go | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/define/debian.go b/define/debian.go index 286149c..a275f41 100644 --- a/define/debian.go +++ b/define/debian.go @@ -6,7 +6,7 @@ const ( DEBIAN_BENCHMAKR_URL = "dists/bullseye/main/binary-amd64/Release" ) -var DEBIAN_HOST_PATTERN = regexp.MustCompile(`/debian/(.+)$`) +var DEBIAN_HOST_PATTERN = regexp.MustCompile(`/debian(-security)?/(.+)$`) // https://www.debian.org/mirror/list 2022.11.19 // Sites that contain protocol headers, restrict access to resources using that protocol diff --git a/internal/rewriter/rewriter.go b/internal/rewriter/rewriter.go index 0526507..2f3cfbe 100644 --- a/internal/rewriter/rewriter.go +++ b/internal/rewriter/rewriter.go @@ -5,6 +5,7 @@ import ( "net/http" "net/url" "regexp" + "strings" "sync" "github.com/soulteary/apt-proxy/define" @@ -171,6 +172,13 @@ func RewriteRequestByMode(r *http.Request, rewriters *URLRewriters, mode int) { r.URL.Scheme = rewriter.mirror.Scheme r.URL.Host = rewriter.mirror.Host + if mode == define.TYPE_LINUX_DISTROS_DEBIAN { + slugs_query := strings.Split(r.URL.Path, "/") + slugs_mirror := strings.Split(rewriter.mirror.Path, "/") + slugs_mirror[0] = slugs_query[0] + r.URL.Path = strings.Join(slugs_query, "/") + return + } r.URL.Path = rewriter.mirror.Path + unescapedQuery }