ascension

Migrate DNS zones to the GNU Name System
Log | Files | Refs | README | LICENSE

commit 384834d0c1b45b5e3ca932f5ebbfff39de3855b6
parent 6bc1968fad359c6b9ddd2e904ec0cbd84ea0da79
Author: Martin Schanzenbach <schanzen@gnunet.org>
Date:   Wed, 10 Jul 2024 22:13:05 +0200

Replace some REST calls with CLI calls

Diffstat:
Mascension/ascension.py | 4++--
Mascension/util/classes.py | 34+++++++++++++++++-----------------
2 files changed, 19 insertions(+), 19 deletions(-)

diff --git a/ascension/ascension.py b/ascension/ascension.py @@ -452,8 +452,8 @@ def main(): return 0 # Checks if GNUnet REST API is running - if not ascender.session.is_running(): - ascender.logger.critical('GNUnet REST API is not reachable!') + #if not ascender.session.is_running(): + # ascender.logger.critical('GNUnet REST API is not reachable!') # Set defaults to use before we get a SOA for the first time retry = 300 diff --git a/ascension/util/classes.py b/ascension/util/classes.py @@ -25,6 +25,7 @@ import logging import ipaddress import json import re +import subprocess import dns.rdatatype import dns.resolver @@ -86,14 +87,11 @@ class GNSZone(): """ Creates the zone in gnunet """ - data = json.dumps(dict({"name": self.domain, "type": "EDDSA"})) - response = self.gnunet_rest.post("/identity", - data=data) - if response.status_code == 409: - self.logger.warning("Identity %s already exists", self.domain) - else: - self.logger.info("Created identity %s", self.domain) - + res = subprocess.run(["gnunet-identity", "-X", "-C", self.domain]) + if res.returncode == 201: + self.logger.info("Identity %s already exists", self.domain) + elif res.returncode != 0: + self.logger.error("Failed to create identity %s", self.domain) def get_gns_zone_serial(self) -> int: """ @@ -129,17 +127,19 @@ class GNSZone(): :returns: str of pubkey of created or existing GNUnet zone """ # This is needed including the argument for subzones - data = json.dumps(dict({"name": zonename, "type": "EDDSA"})) - response = self.gnunet_rest.post("/identity", - data=data) - if response.status_code == 409: - self.logger.warning("Identity %s already exists", zonename) + res = subprocess.run(["gnunet-identity", "-X", "-C", zonename]) + if res.returncode == 201: + self.logger.error("Identity %s already exists", zonename) + elif res.returncode != 0: + self.logger.error("Failed to create identity %s", zonename) + return None else: self.logger.info("Created identity %s", zonename) - response = self.gnunet_rest.get(f"/identity/name/{zonename}") - if response.status_code == 200: - pubkey = response.json()['pubkey'] - return pubkey + res = subprocess.run(["gnunet-identity", "-q", "-d", "-e", zonename], text=True) + if res.returncode != 0: + self.logger.error("Failed to read identity key for `%s'", zonename) + return None + return res.stdout.rstrip() class DNSZone: