]> git.ipfire.org Git - pakfire.git/commitdiff
libpakfire: Store keyfile in repository
authorMichael Tremer <michael.tremer@ipfire.org>
Mon, 22 Jan 2018 17:00:38 +0000 (18:00 +0100)
committerMichael Tremer <michael.tremer@ipfire.org>
Mon, 22 Jan 2018 17:00:38 +0000 (18:00 +0100)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/_pakfire/repo.c
src/libpakfire/include/pakfire/repo.h
src/libpakfire/libpakfire.sym
src/libpakfire/repo.c
src/pakfire/repository/remote.py

index 4866719f779fb87d6fa9a094ad37b6ec265423bf..81bf900ea285b90fb242d64e71ce57d5c84ff2c5 100644 (file)
@@ -156,6 +156,21 @@ static int Repo_set_baseurl(RepoObject* self, PyObject* value) {
        return pakfire_repo_set_baseurl(self->repo, baseurl);
 }
 
+static PyObject* Repo_get_keyfile(RepoObject* self) {
+       const char* keyfile = pakfire_repo_get_keyfile(self->repo);
+
+       return PyUnicode_FromString(keyfile);
+}
+
+static int Repo_set_keyfile(RepoObject* self, PyObject* value) {
+       const char* keyfile = NULL;
+
+       if (value != Py_None)
+               keyfile = PyUnicode_AsUTF8(value);
+
+       return pakfire_repo_set_keyfile(self->repo, keyfile);
+}
+
 static PyObject* Repo_read_solv(RepoObject* self, PyObject* args) {
        const char* filename = NULL;
 
@@ -366,6 +381,13 @@ static struct PyGetSetDef Repo_getsetters[] = {
                "The base URL of this repository",
                NULL
        },
+       {
+               "keyfile",
+               (getter)Repo_get_keyfile,
+               (setter)Repo_set_keyfile,
+               NULL,
+               NULL
+       },
        {
                "name",
                (getter)Repo_get_name,
index 09bb7c779c481a1be5fc101d1ef68b33bfc14be3..cbf01d97622e0b2003404d50c42b6f155c846eee 100644 (file)
@@ -50,6 +50,9 @@ void pakfire_repo_set_priority(PakfireRepo repo, int priority);
 const char* pakfire_repo_get_baseurl(PakfireRepo repo);
 int pakfire_repo_set_baseurl(PakfireRepo repo, const char* baseurl);
 
+const char* pakfire_repo_get_keyfile(PakfireRepo repo);
+int pakfire_repo_set_keyfile(PakfireRepo repo, const char* keyfile);
+
 int pakfire_repo_is_installed_repo(PakfireRepo repo);
 
 int pakfire_repo_read_solv(PakfireRepo repo, const char* filename, int flags);
index 1d160eb86e135f595f540e2d6a431869d0c1f0ad..d314cf131129144c2584aef34dcfeaa9aa9e647d 100644 (file)
@@ -229,6 +229,7 @@ global:
        pakfire_repo_get_cache;
        pakfire_repo_get_name;
        pakfire_repo_get_enabled;
+       pakfire_repo_get_keyfile;
        pakfire_repo_get_pakfire;
        pakfire_repo_get_pool;
        pakfire_repo_get_priority;
@@ -240,6 +241,7 @@ global:
        pakfire_repo_ref;
        pakfire_repo_set_baseurl;
        pakfire_repo_set_enabled;
+       pakfire_repo_set_keyfile;
        pakfire_repo_set_name;
        pakfire_repo_set_priority;
        pakfire_repo_write_solv;
index a89738a3b02c9f568080b769f9d3513d24a73f9f..cdce958f2eb65b4f8bcb711f25f40a01be6422f9 100644 (file)
@@ -46,6 +46,7 @@ struct pakfire_repo_appdata {
        Repodata* repodata;
 
        char* baseurl;
+       char* keyfile;
 };
 
 struct _PakfireRepo {
@@ -61,6 +62,9 @@ static void free_repo_appdata(struct pakfire_repo_appdata* appdata) {
        if (appdata->baseurl)
                pakfire_free(appdata->baseurl);
 
+       if (appdata->keyfile)
+               pakfire_free(appdata->keyfile);
+
        pakfire_free(appdata);
 }
 
@@ -261,6 +265,22 @@ PAKFIRE_EXPORT int pakfire_repo_set_baseurl(PakfireRepo repo, const char* baseur
        return 0;
 }
 
+PAKFIRE_EXPORT const char* pakfire_repo_get_keyfile(PakfireRepo repo) {
+       return repo->appdata->keyfile;
+}
+
+PAKFIRE_EXPORT int pakfire_repo_set_keyfile(PakfireRepo repo, const char* keyfile) {
+       if (repo->appdata->keyfile)
+               pakfire_free(repo->appdata->keyfile);
+
+       if (keyfile)
+               repo->appdata->keyfile = pakfire_strdup(keyfile);
+       else
+               repo->appdata->keyfile = NULL;
+
+       return 0;
+}
+
 PAKFIRE_EXPORT int pakfire_repo_is_installed_repo(PakfireRepo repo) {
        PakfireRepo installed_repo = pakfire_get_installed_repo(repo->pakfire);
 
index 416884af6077e05ed5b6ceafde796e00702b9f5a..cd2b85075b1550cbbaba201cdb63bdb72abbc526 100644 (file)
@@ -42,22 +42,14 @@ class RepositoryRemote(base.RepositoryFactory):
                # Save the settings that come from the configuration file
                self.settings = settings
 
-               # Set the baseurl
+               # Set the baseurl & keyfile
                self.baseurl = self.settings.get("baseurl")
+               self.keyfile = self.settings.get("keyfile", None) or self.settings.get("gpgkey", None)
 
                # Enabled/disable the repository, based on the configuration setting.
                enabled = self.settings.get("enabled", True)
                self.enabled = util.is_enabled(enabled)
 
-       @property
-       def keyfile(self):
-               keyfile = self.settings.get("keyfile", None)
-
-               if keyfile is None:
-                       keyfile = self.settings.get("gpgkey", None)
-
-               return keyfile
-
        def make_downloader(self):
                """
                        Creates a downloader that can be used to download