config: "serverfingerprint" key requires "server" key
follow-up prev
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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'):
|
||||
|
||||
Reference in New Issue
Block a user