diff --git a/onionr/config.py b/onionr/config.py index 81e8bbb0..793d8b9b 100644 --- a/onionr/config.py +++ b/onionr/config.py @@ -27,7 +27,7 @@ def get(key, default = None): ''' Gets the key from configuration, or returns `default` ''' - if key in get_config(): + if is_set(key): return get_config()[key] return default @@ -42,6 +42,9 @@ def set(key, value = None, savefile = False): if savefile: save() +def is_set(key): + return key in get_config() and not get_config()[key] is None + def check(): ''' Checks if the configuration file exists, creates it if not @@ -64,7 +67,7 @@ def save(): check() try: with open(get_config_file(), 'w', encoding="utf8") as configfile: - json.dump(get_config(), configfile) + json.dump(get_config(), configfile, indent=2, sort_keys=True) except: logger.warn('Failed to write to configuration file.') diff --git a/onionr/onionr.py b/onionr/onionr.py index ed260450..f06d1268 100755 --- a/onionr/onionr.py +++ b/onionr/onionr.py @@ -120,13 +120,14 @@ class Onionr: def getCommands(self): return { + 'help': self.showHelp, + 'version': self.version, + 'config': self.configure, 'start': self.start, 'stop': self.killDaemon, - 'version': self.version, + 'stats': self.showStats, 'listpeers': self.listPeers, 'list-peers': self.listPeers, - 'stats': self.showStats, - 'help': self.showHelp, '': self.showHelpSuggestion, 'addmsg': self.addMessage, 'addmessage': self.addMessage, @@ -142,6 +143,7 @@ class Onionr: return { 'help': 'Displays this Onionr help menu', 'version': 'Displays the Onionr version', + 'config': 'Configures something and adds it to the file', 'start': 'Starts the Onionr daemon', 'stop': 'Stops the Onionr daemon', 'stats': 'Displays node statistics', @@ -152,6 +154,23 @@ class Onionr: 'gui': 'Opens a graphical interface for Onionr' } + def configure(self): + ''' + Displays something from the configuration file, or sets it + ''' + + if len(sys.argv) >= 4: + config.reload() + config.set(sys.argv[2], sys.argv[3], True) + logger.debug('Configuration file updated.') + elif len(sys.argv) >= 3: + config.reload() + logger.info(logger.colors.bold + sys.argv[2] + ': ' + logger.colors.reset + str(config.get(sys.argv[2], logger.colors.fg.red + 'Not set.'))) + else: + logger.info(logger.colors.bold + 'Get a value: ' + logger.colors.reset + sys.argv[0] + ' ' + sys.argv[1] + ' ') + logger.info(logger.colors.bold + 'Set a value: ' + logger.colors.reset + sys.argv[0] + ' ' + sys.argv[1] + ' ') + + def execute(self, argument): ''' Executes a command