index : archinstall32 | |
Archlinux32 installer | gitolite user |
summaryrefslogtreecommitdiff |
author | Anton Hvornum <anton.feeds@gmail.com> | 2021-05-24 12:34:32 +0200 |
---|---|---|
committer | Anton Hvornum <anton.feeds@gmail.com> | 2021-05-24 12:34:32 +0200 |
commit | 9b0de26c67b6bb90b69d5b4ef874dc0bed407a77 (patch) | |
tree | 69f1b5e0b6ad48018ce9e18d6d74079bfb123540 /archinstall/lib/mirrors.py | |
parent | 404197dc93c2efb24097772848af708d833bdd98 (diff) | |
parent | 7daaf1143fca2723bfb63ab4e3030485446da1c0 (diff) |
-rw-r--r-- | archinstall/lib/mirrors.py | 37 |
diff --git a/archinstall/lib/mirrors.py b/archinstall/lib/mirrors.py index ae6c6422..ccfc2808 100644 --- a/archinstall/lib/mirrors.py +++ b/archinstall/lib/mirrors.py @@ -1,28 +1,30 @@ -import urllib.request, logging +import urllib.error +import urllib.request -from .exceptions import * from .general import * from .output import log -from .storage import storage -def filter_mirrors_by_region(regions, destination='/etc/pacman.d/mirrorlist', tmp_dir='/root', *args, **kwargs): + +def filter_mirrors_by_region(regions, destination='/etc/pacman.d/mirrorlist', *args, **kwargs): """ This function will change the active mirrors on the live medium by filtering which regions are active based on `regions`. - :param region: A series of country codes separated by `,`. For instance `SE,US` for sweden and United States. - :type region: str + :param regions: A series of country codes separated by `,`. For instance `SE,US` for sweden and United States. + :type regions: str """ region_list = [] for region in regions.split(','): region_list.append(f'country={region}') - o = b''.join(sys_command((f"/usr/bin/wget 'https://archlinux.org/mirrorlist/?{'&'.join(region_list)}&protocol=https&ip_version=4&ip_version=6&use_mirror_status=on' -O {tmp_dir}/mirrorlist"))) - o = b''.join(sys_command((f"/usr/bin/sed -i 's/#Server/Server/' {tmp_dir}/mirrorlist"))) - o = b''.join(sys_command((f"/usr/bin/mv {tmp_dir}/mirrorlist {destination}"))) - + response = urllib.request.urlopen(urllib.request.Request(f"https://archlinux.org/mirrorlist/?{'&'.join(region_list)}&protocol=https&ip_version=4&ip_version=6&use_mirror_status=on'", headers={'User-Agent': 'ArchInstall'})) + new_list = response.read().replace(b"#Server", b"Server") + with open(destination, "wb") as mirrorlist: + mirrorlist.write(new_list) + return True -def add_custom_mirrors(mirrors:list, *args, **kwargs): + +def add_custom_mirrors(mirrors: list, *args, **kwargs): """ This will append custom mirror definitions in pacman.conf @@ -37,6 +39,7 @@ def add_custom_mirrors(mirrors:list, *args, **kwargs): return True + def insert_mirrors(mirrors, *args, **kwargs): """ This function will insert a given mirror-list at the top of `/etc/pacman.d/mirrorlist`. @@ -58,7 +61,8 @@ def insert_mirrors(mirrors, *args, **kwargs): return True -def use_mirrors(regions :dict, destination='/etc/pacman.d/mirrorlist'): + +def use_mirrors(regions: dict, destination='/etc/pacman.d/mirrorlist'): log(f'A new package mirror-list has been created: {destination}', level=logging.INFO) for region, mirrors in regions.items(): with open(destination, 'w') as mirrorlist: @@ -67,13 +71,15 @@ def use_mirrors(regions :dict, destination='/etc/pacman.d/mirrorlist'): mirrorlist.write(f'Server = {mirror}\n') return True + def re_rank_mirrors(top=10, *positionals, **kwargs): - if sys_command((f'/usr/bin/rankmirrors -n {top} /etc/pacman.d/mirrorlist > /etc/pacman.d/mirrorlist')).exit_code == 0: + if SysCommand(f'/usr/bin/rankmirrors -n {top} /etc/pacman.d/mirrorlist > /etc/pacman.d/mirrorlist').exit_code == 0: return True return False + def list_mirrors(): - url = f"https://archlinux.org/mirrorlist/?protocol=https&ip_version=4&ip_version=6&use_mirror_status=on" + url = "https://archlinux.org/mirrorlist/?protocol=https&ip_version=4&ip_version=6&use_mirror_status=on" regions = {} try: @@ -82,7 +88,6 @@ def list_mirrors(): log(f'Could not fetch an active mirror-list: {err}', level=logging.WARNING, fg="yellow") return regions - region = 'Unknown region' for line in response.readlines(): if len(line.strip()) == 0: @@ -97,4 +102,4 @@ def list_mirrors(): url = line.lstrip('#Server = ') regions[region][url] = True - return regions
\ No newline at end of file + return regions |