]> git.ipfire.org Git - pbs.git/commitdiff
mirrors: Use existing URLs to compose mirror URLs
authorMichael Tremer <michael.tremer@ipfire.org>
Mon, 3 Feb 2025 10:10:19 +0000 (10:10 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Mon, 3 Feb 2025 10:10:19 +0000 (10:10 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/buildservice/mirrors.py
src/web/repos.py

index 331116ef5b30adb1d20e18d0224cea388b1b69a9..bfa1e1a29eac908f9ae77f40261cbbb81b4b7af1 100644 (file)
@@ -4,6 +4,7 @@ import asyncio
 import datetime
 import functools
 import logging
+import os.path
 import random
 import socket
 import tornado.netutil
@@ -154,12 +155,16 @@ class Mirror(database.Base, database.BackendMixin, database.SoftDeleteMixin):
        def url(self):
                return self.make_url()
 
-       def make_url(self, path=""):
+       def make_url(self, *paths):
                url = "https://%s%s/" % (
                        self.hostname,
                        self.path
                )
 
+               # Merge the path together
+               path = os.path.join(*paths)
+
+               # Remove any leading slashes
                if path.startswith("/"):
                        path = path[1:]
 
index 434e6324a702d2b21cd1f4cc20942806c1d04524..cf8f20bbe2f7ba8b30133b04049d77b221c8f587 100644 (file)
@@ -293,8 +293,7 @@ class MirrorlistHandler(base.NoAuthMixin, BaseHandler):
                        "version" : 1,
                        "mirrors" : [
                                {
-                                       "url"      : urllib.parse.urljoin(
-                                               mirror.url, os.path.join("repos", repo.path, arch)),
+                                       "url"      : mirror.make_url("repos", repo.path, arch),
                                        "location" : mirror.country_code,
                                }
                                for mirror in await self.backend.mirrors.get_mirrors_for_address(self.current_address)