From 2b10e711b4405bc6693e41a095bb3ff9c7f46767 Mon Sep 17 00:00:00 2001 From: dave Date: Sun, 28 Oct 2018 16:47:01 -0700 Subject: [PATCH] Add apt repo info screen --- repobot/provider.py | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/repobot/provider.py b/repobot/provider.py index acdf7e3..3f6db7c 100644 --- a/repobot/provider.py +++ b/repobot/provider.py @@ -148,11 +148,18 @@ class AptProvider(PkgProvider): # TODO validate deb file name version against user passed version def browse(self, args): + if not args: + with open(self.pubkeypath) as f: + pubkey_body = f.read() + return "{}\n\nSigning key:\n\n\n{}".format(self._get_gpg_info(), pubkey_body) fpath = os.path.abspath(os.path.join(self.dir, "public", *args)) if not os.path.exists(fpath): raise cherrypy.HTTPError(404) return cherrypy.lib.static.serve_file(fpath) + def _get_gpg_info(self): + return check_output(["gpg", "--list-keys"], env=self._env).decode("UTF-8") + def _generate_gpg_key(self): """ Generate a GPG key for signing packages in this repo. Because only gpg2 supports unattended generation of @@ -188,12 +195,15 @@ Expire-Date: 0 assert proc.returncode == 0 def _export_pubkey(self): - keypath = os.path.join(self.dir, "public", "repo.key") - if not os.path.exists(keypath): + if not os.path.exists(self.pubkeypath): keydata = check_output(["gpg", "--export", "--armor", "aptmaster@localhost"], env=self._env) - with open(keypath, "wb") as f: + with open(self.pubkeypath, "wb") as f: f.write(keydata) + @property + def pubkeypath(self): + return os.path.join(self.dir, "public", "repo.key") + @property def _env(self): """ @@ -205,7 +215,7 @@ Expire-Date: 0 @property def _gpg_dir(self): - return os.path.join(self.dir, "gpg") + return os.path.normpath(os.path.join(self.dir, "gpg")) def get_path(self, pkgobj, fname): assert fname in pkgobj.data["files"]