config: "serverfingerprint" key requires "server" key
follow-up prev
This commit is contained in:
@@ -26,7 +26,7 @@
|
|||||||
import socket
|
import socket
|
||||||
import time
|
import time
|
||||||
from enum import IntEnum
|
from enum import IntEnum
|
||||||
from typing import Tuple
|
from typing import Tuple, TYPE_CHECKING
|
||||||
|
|
||||||
from PyQt5.QtCore import Qt, pyqtSignal, QThread
|
from PyQt5.QtCore import Qt, pyqtSignal, QThread
|
||||||
from PyQt5.QtWidgets import (QTreeWidget, QTreeWidgetItem, QMenu, QGridLayout, QComboBox,
|
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,
|
from .util import (Buttons, CloseButton, HelpButton, read_QIcon, char_width_in_lineedit,
|
||||||
PasswordLineEdit)
|
PasswordLineEdit)
|
||||||
|
|
||||||
|
if TYPE_CHECKING:
|
||||||
|
from electrum.simple_config import SimpleConfig
|
||||||
|
|
||||||
|
|
||||||
_logger = get_logger(__name__)
|
_logger = get_logger(__name__)
|
||||||
|
|
||||||
@@ -209,7 +212,7 @@ class ServerListWidget(QTreeWidget):
|
|||||||
|
|
||||||
class NetworkChoiceLayout(object):
|
class NetworkChoiceLayout(object):
|
||||||
|
|
||||||
def __init__(self, network: Network, config, wizard=False):
|
def __init__(self, network: Network, config: 'SimpleConfig', wizard=False):
|
||||||
self.network = network
|
self.network = network
|
||||||
self.config = config
|
self.config = config
|
||||||
self.tor_proxy = None
|
self.tor_proxy = None
|
||||||
|
|||||||
@@ -88,6 +88,8 @@ class SimpleConfig(Logger):
|
|||||||
# avoid new config getting upgraded
|
# avoid new config getting upgraded
|
||||||
self.user_config = {'config_version': FINAL_CONFIG_VERSION}
|
self.user_config = {'config_version': FINAL_CONFIG_VERSION}
|
||||||
|
|
||||||
|
self._not_modifiable_keys = set()
|
||||||
|
|
||||||
# config "upgrade" - CLI options
|
# config "upgrade" - CLI options
|
||||||
self.rename_config_keys(
|
self.rename_config_keys(
|
||||||
self.cmdline_options, {'auto_cycle': 'auto_connect'}, True)
|
self.cmdline_options, {'auto_cycle': 'auto_connect'}, True)
|
||||||
@@ -96,6 +98,8 @@ class SimpleConfig(Logger):
|
|||||||
if self.requires_upgrade():
|
if self.requires_upgrade():
|
||||||
self.upgrade()
|
self.upgrade()
|
||||||
|
|
||||||
|
self._check_dependent_keys()
|
||||||
|
|
||||||
def electrum_path(self):
|
def electrum_path(self):
|
||||||
# Read electrum_path from command line
|
# Read electrum_path from command line
|
||||||
# Otherwise use the user's default data directory.
|
# Otherwise use the user's default data directory.
|
||||||
@@ -159,6 +163,12 @@ class SimpleConfig(Logger):
|
|||||||
out = self.user_config.get(key, default)
|
out = self.user_config.get(key, default)
|
||||||
return out
|
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):
|
def requires_upgrade(self):
|
||||||
return self.get_config_version() < FINAL_CONFIG_VERSION
|
return self.get_config_version() < FINAL_CONFIG_VERSION
|
||||||
|
|
||||||
@@ -221,8 +231,12 @@ class SimpleConfig(Logger):
|
|||||||
.format(config_version, FINAL_CONFIG_VERSION))
|
.format(config_version, FINAL_CONFIG_VERSION))
|
||||||
return config_version
|
return config_version
|
||||||
|
|
||||||
def is_modifiable(self, key):
|
def is_modifiable(self, key) -> bool:
|
||||||
return key not in self.cmdline_options
|
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):
|
def save_user_config(self):
|
||||||
if self.get('forget_config'):
|
if self.get('forget_config'):
|
||||||
|
|||||||
Reference in New Issue
Block a user