diff --git a/modoboa_installer/package.py b/modoboa_installer/package.py index 5354b359..8c4f074e 100644 --- a/modoboa_installer/package.py +++ b/modoboa_installer/package.py @@ -29,7 +29,7 @@ class DEBPackage(Package): FORMAT = "deb" def __init__(self, dist_name): - super(DEBPackage, self).__init__(dist_name) + super().__init__(dist_name) self.index_updated = False self.policy_file = "/usr/sbin/policy-rc.d" @@ -42,6 +42,28 @@ def prepare_system(self): def restore_system(self): utils.exec_cmd("rm -f {}".format(self.policy_file)) + def add_custom_repository(self, + name: str, + url: str, + key_url: str, + codename: str, + with_source: bool = True): + key_file = f"/etc/apt/keyrings/{name}.gpg" + utils.exec_cmd( + f"wget -O - {key_url} | gpg --dearmor | sudo tee {key_file} > /dev/null" + ) + line_types = ["deb"] + if with_source: + line_types.append("deb-src") + for line_type in line_types: + line = ( + f"{line_type} [arch=amd64 signed-by={key_file}] " + f"{url} {codename} main" + ) + target_file = f"/etc/apt/source.list.d/{name}.list" + utils.exec_cmd(f'echo "{line} | sude tee {target_file}') + self.index_updated = False + def update(self): """Update local cache.""" if self.index_updated: @@ -82,7 +104,7 @@ class RPMPackage(Package): def __init__(self, dist_name): """Initialize backend.""" - super(RPMPackage, self).__init__(dist_name) + super().__init__(dist_name) if "centos" in dist_name: self.install("epel-release") diff --git a/modoboa_installer/scripts/rspamd.py b/modoboa_installer/scripts/rspamd.py index 49af4a83..105f0361 100644 --- a/modoboa_installer/scripts/rspamd.py +++ b/modoboa_installer/scripts/rspamd.py @@ -41,17 +41,21 @@ def install_packages(self): if debian_based_dist: utils.mkdir_safe( "/etc/apt/keyrings", - stat.S_IRWXU | stat.S_IRUSR | stat.S_IXUSR, + stat.S_IRWXU | stat.S_IRGRP | stat.S_IXGRP | + stat.S_IROTH | stat.S_IXOTH, 0, 0 ) - if codename.lower() == "bionic": + if codename == "bionic": package.backend.install("software-properties-common") utils.exec_cmd("add-apt-repository ppa:ubuntu-toolchain-r/test") - utils.exec_cmd("wget -O- https://rspamd.com/apt-stable/gpg.key | gpg --dearmor | sudo tee /etc/apt/keyrings/rspamd.gpg > /dev/null") - utils.exec_cmd(f"echo \"deb [arch=amd64 signed-by=/etc/apt/keyrings/rspamd.gpg] http://rspamd.com/apt-stable/ {codename} main\" | sudo tee /etc/apt/sources.list.d/rspamd.list") - utils.exec_cmd(f"echo \"deb-src [arch=amd64 signed-by=/etc/apt/keyrings/rspamd.gpg] http://rspamd.com/apt-stable/ {codename} main\" | sudo tee -a /etc/apt/sources.list.d/rspamd.list") + package.backend.add_custom_repository( + "rspamd", + "http://rspamd.com/apt-stable/", + "https://rspamd.com/apt-stable/gpg.key", + codename + ) package.backend.update() return super().install_packages()