Browse Source

config: "serverfingerprint" key requires "server" key

follow-up prev
master
SomberNight 6 years ago
parent
commit
69de3b94db
No known key found for this signature in database
GPG Key ID: B33B5F232C6271E9
  1. 7
      electrum/gui/qt/network_dialog.py
  2. 18
      electrum/simple_config.py

7
electrum/gui/qt/network_dialog.py

@ -26,7 +26,7 @@
import socket
import time
from enum import IntEnum
from typing import Tuple
from typing import Tuple, TYPE_CHECKING
from PyQt5.QtCore import Qt, pyqtSignal, QThread
from PyQt5.QtWidgets import (QTreeWidget, QTreeWidgetItem, QMenu, QGridLayout, QComboBox,
@ -43,6 +43,9 @@ from electrum.logging import get_logger
from .util import (Buttons, CloseButton, HelpButton, read_QIcon, char_width_in_lineedit,
PasswordLineEdit)
if TYPE_CHECKING:
from electrum.simple_config import SimpleConfig
_logger = get_logger(__name__)
@ -209,7 +212,7 @@ class ServerListWidget(QTreeWidget):
class NetworkChoiceLayout(object):
def __init__(self, network: Network, config, wizard=False):
def __init__(self, network: Network, config: 'SimpleConfig', wizard=False):
self.network = network
self.config = config
self.tor_proxy = None

18
electrum/simple_config.py

@ -88,6 +88,8 @@ class SimpleConfig(Logger):
# avoid new config getting upgraded
self.user_config = {'config_version': FINAL_CONFIG_VERSION}
self._not_modifiable_keys = set()
# config "upgrade" - CLI options
self.rename_config_keys(
self.cmdline_options, {'auto_cycle': 'auto_connect'}, True)
@ -96,6 +98,8 @@ class SimpleConfig(Logger):
if self.requires_upgrade():
self.upgrade()
self._check_dependent_keys()
def electrum_path(self):
# Read electrum_path from command line
# Otherwise use the user's default data directory.
@ -159,6 +163,12 @@ class SimpleConfig(Logger):
out = self.user_config.get(key, default)
return out
def _check_dependent_keys(self) -> None:
if self.get('serverfingerprint'):
if not self.get('server'):
raise Exception("config key 'serverfingerprint' requires 'server' to also be set")
self.make_key_not_modifiable('server')
def requires_upgrade(self):
return self.get_config_version() < FINAL_CONFIG_VERSION
@ -221,8 +231,12 @@ class SimpleConfig(Logger):
.format(config_version, FINAL_CONFIG_VERSION))
return config_version
def is_modifiable(self, key):
return key not in self.cmdline_options
def is_modifiable(self, key) -> bool:
return (key not in self.cmdline_options
and key not in self._not_modifiable_keys)
def make_key_not_modifiable(self, key) -> None:
self._not_modifiable_keys.add(key)
def save_user_config(self):
if self.get('forget_config'):

Loading…
Cancel
Save