diff --git a/actions/dynamicdns b/actions/dynamicdns index 0e111b45b..3cbe07793 100755 --- a/actions/dynamicdns +++ b/actions/dynamicdns @@ -106,7 +106,10 @@ def subcommand_export_config(_): and _active_config.exists()): enabled = True - output_config = {'enabled': enabled, 'domains': {domain['domain']: domain}} + output_config = {'enabled': enabled, 'domains': {}} + if domain['domain']: + output_config['domains'][domain['domain']] = domain + print(json.dumps(output_config)) diff --git a/plinth/modules/dynamicdns/__init__.py b/plinth/modules/dynamicdns/__init__.py index 9fc18467c..170f21552 100644 --- a/plinth/modules/dynamicdns/__init__.py +++ b/plinth/modules/dynamicdns/__init__.py @@ -258,7 +258,18 @@ def get_config(): """Return the current configuration.""" default_config = {'domains': {}} config = kvstore.get_default('dynamicdns_config', '{}') - return json.loads(config) or default_config + config = json.loads(config) or default_config + return _fix_corrupt_config(config) + + +def _fix_corrupt_config(config): + """Fix malformed configuration result of bug in older version.""" + if 'null' not in config['domains']: + return config + + del config['domains']['null'] + set_config(config) + return config def set_config(config):