1
0

plugin ConfigVars: enforce "key" starts with name of plugin

This commit is contained in:
SomberNight
2025-03-19 16:37:30 +00:00
parent b132e357a3
commit a99c454c00
4 changed files with 17 additions and 9 deletions

View File

@@ -1,5 +1,5 @@
from electrum.simple_config import ConfigVar, SimpleConfig
SimpleConfig.PAYSERVER_PORT = ConfigVar('payserver_port', default=8080, type_=int)
SimpleConfig.PAYSERVER_ROOT = ConfigVar('payserver_root', default='/r', type_=str)
SimpleConfig.PAYSERVER_ALLOW_CREATE_INVOICE = ConfigVar('payserver_allow_create_invoice', default=False, type_=bool)
SimpleConfig.PAYSERVER_PORT = ConfigVar('payserver_port', default=8080, type_=int, plugin=__name__)
SimpleConfig.PAYSERVER_ROOT = ConfigVar('payserver_root', default='/r', type_=str, plugin=__name__)
SimpleConfig.PAYSERVER_ALLOW_CREATE_INVOICE = ConfigVar('payserver_allow_create_invoice', default=False, type_=bool, plugin=__name__)

View File

@@ -1,5 +1,5 @@
from electrum.simple_config import ConfigVar, SimpleConfig
SimpleConfig.SWAPSERVER_PORT = ConfigVar('swapserver_port', default=None, type_=int)
SimpleConfig.SWAPSERVER_FEE_MILLIONTHS = ConfigVar('swapserver_fee_millionths', default=5000, type_=int)
SimpleConfig.SWAPSERVER_ANN_POW_NONCE = ConfigVar('swapserver_ann_pow_nonce', default=0, type_=int)
SimpleConfig.SWAPSERVER_PORT = ConfigVar('swapserver_port', default=None, type_=int, plugin=__name__)
SimpleConfig.SWAPSERVER_FEE_MILLIONTHS = ConfigVar('swapserver_fee_millionths', default=5000, type_=int, plugin=__name__)
SimpleConfig.SWAPSERVER_ANN_POW_NONCE = ConfigVar('swapserver_ann_pow_nonce', default=0, type_=int, plugin=__name__)

View File

@@ -1,5 +1,5 @@
from electrum.simple_config import ConfigVar, SimpleConfig
SimpleConfig.WATCHTOWER_SERVER_PORT = ConfigVar('watchtower_server_port', default=None, type_=int)
SimpleConfig.WATCHTOWER_SERVER_USER = ConfigVar('watchtower_server_user', default=None, type_=str)
SimpleConfig.WATCHTOWER_SERVER_PASSWORD = ConfigVar('watchtower_server_password', default=None, type_=str)
SimpleConfig.WATCHTOWER_SERVER_PORT = ConfigVar('watchtower_server_port', default=None, type_=int, plugin=__name__)
SimpleConfig.WATCHTOWER_SERVER_USER = ConfigVar('watchtower_server_user', default=None, type_=str, plugin=__name__)
SimpleConfig.WATCHTOWER_SERVER_PASSWORD = ConfigVar('watchtower_server_password', default=None, type_=str, plugin=__name__)

View File

@@ -45,6 +45,7 @@ class ConfigVar(property):
convert_getter: Callable[[Any], Any] = None,
short_desc: Callable[[], str] = None,
long_desc: Callable[[], str] = None,
plugin: Optional[str] = None,
):
self._key = key
self._default = default
@@ -56,6 +57,13 @@ class ConfigVar(property):
assert long_desc is None or callable(long_desc)
self._short_desc = short_desc
self._long_desc = long_desc
if plugin: # enforce "key" starts with name of plugin
pkg_prefix = "electrum.plugins." # for internal plugins
if plugin.startswith(pkg_prefix):
plugin = plugin[len(pkg_prefix):]
assert "." not in plugin, plugin
key_prefix = plugin + "_"
assert key.startswith(key_prefix), f"ConfigVar {key=} must be prefixed with the plugin name ({key_prefix})"
property.__init__(self, self._get_config_value, self._set_config_value)
assert key not in _config_var_from_key, f"duplicate config key str: {key!r}"
_config_var_from_key[key] = self