fix RPC-password as pin for multiple nodes (#1231)

This commit is contained in:
Kim Neunert 2021-06-15 16:00:29 +02:00 committed by GitHub
parent 45ab8de949
commit ccfd335ade
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 16 additions and 4 deletions

View file

@ -16,6 +16,8 @@ logger = logging.getLogger(__name__)
class NodeManager:
# chain is required to manage wallets when bitcoind is not running
DEFAULT_ALIAS = "default"
def __init__(
self,
proxy_url="socks5h://localhost:9050",
@ -70,7 +72,7 @@ class NodeManager:
host="localhost",
protocol="http",
external_node=True,
default_alias="default",
default_alias=self.DEFAULT_ALIAS,
)
else:
self.nodes = nodes
@ -87,6 +89,9 @@ class NodeManager:
# this will throw an error if the node doesn't exist
self._active_node = self.get_by_alias(node_alias).alias
def default_node(self):
return self.get_by_alias(self.DEFAULT_ALIAS)
def get_by_alias(self, alias):
for node_name in self.nodes:
if self.nodes[node_name] and self.nodes[node_name].alias == alias:

View file

@ -35,8 +35,11 @@ def login():
return redirect_login(request)
if auth["method"] == "rpcpasswordaspin":
# TODO: check the password via RPC-call
if app.specter.rpc is None:
if app.specter.node.password == request.form["password"]:
if (
app.specter.default_node.rpc is None
or not app.specter.default_node.rpc.test_connection()
):
if app.specter.default_node.password == request.form["password"]:
app.login("admin")
app.logger.info(
"AUDIT: Successfull Login via RPC-credentials (node disconnected)"
@ -55,7 +58,7 @@ def login():
),
401,
)
rpc = app.specter.rpc.clone()
rpc = app.specter.default_node.rpc.clone()
rpc.password = request.form["password"]
if rpc.test_connection():
app.login("admin")

View file

@ -178,6 +178,10 @@ class Specter:
self.update_active_node(list(self.node_manager.nodes.values())[0].alias)
return self.node_manager.active_node
@property
def default_node(self):
return self.node_manager.default_node()
@property
def rpc(self):
return self.node.rpc