From 49640fdfce587819ef9c31c3aee5b2ab78ca804d Mon Sep 17 00:00:00 2001 From: Sunil Mohan Adapa Date: Thu, 7 Feb 2019 13:54:29 -0800 Subject: [PATCH] monkeysphere: Fix handling of multiple domains and keys Signed-off-by: Sunil Mohan Adapa Reviewed-by: James Valleroy --- actions/monkeysphere | 5 +++-- plinth/modules/monkeysphere/views.py | 7 +++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/actions/monkeysphere b/actions/monkeysphere index c9f59c252..bf7f2b1d3 100755 --- a/actions/monkeysphere +++ b/actions/monkeysphere @@ -21,6 +21,7 @@ Configuration helper for monkeysphere. import argparse import contextlib +import copy import json import os import re @@ -138,7 +139,7 @@ def get_monkeysphere_keys(key_id=None): # parse output default_dict = {'imported_domains': [], 'available_domains': []} - keys = [default_dict.copy()] + keys = [copy.deepcopy(default_dict)] lines = output.decode().strip().split('\n') for line in lines: if line.startswith('pub'): @@ -163,7 +164,7 @@ def get_monkeysphere_keys(key_id=None): keys[-1]['ssh_fingerprint'] = data[1] keys[-1]['ssh_key_type'] = data[2].strip('()') elif line == '': - keys.append(default_dict.copy()) + keys.append(copy.deepcopy(default_dict)) return {key['ssh_fingerprint']: key for key in keys} diff --git a/plinth/modules/monkeysphere/views.py b/plinth/modules/monkeysphere/views.py index eebb7ea92..39d10ad0e 100644 --- a/plinth/modules/monkeysphere/views.py +++ b/plinth/modules/monkeysphere/views.py @@ -50,13 +50,12 @@ def index(request): @require_POST def import_key(request, ssh_fingerprint): """Import a key into monkeysphere.""" - available_domains = [ - domain for domains in names.domains.values() for domain in domains - ] + keys = get_keys() + available_domains = keys[ssh_fingerprint]['available_domains'] try: actions.superuser_run( 'monkeysphere', - ['host-import-key', ssh_fingerprint] + available_domains) + ['host-import-key', ssh_fingerprint] + list(available_domains)) messages.success(request, _('Imported key.')) except actions.ActionError as exception: messages.error(request, str(exception))