mirror of
https://github.com/LBRYFoundation/LBRY-Vault.git
synced 2025-08-27 23:41:35 +00:00
network.NetworkParameters: merge host+port+protocol into "server" field
This commit is contained in:
parent
adc3784bc2
commit
b2cfaddff2
7 changed files with 43 additions and 37 deletions
|
@ -187,7 +187,7 @@ class Commands:
|
||||||
net_params = self.network.get_parameters()
|
net_params = self.network.get_parameters()
|
||||||
response = {
|
response = {
|
||||||
'path': self.network.config.path,
|
'path': self.network.config.path,
|
||||||
'server': net_params.host,
|
'server': net_params.server.host,
|
||||||
'blockchain_height': self.network.get_local_height(),
|
'blockchain_height': self.network.get_local_height(),
|
||||||
'server_height': self.network.get_server_height(),
|
'server_height': self.network.get_server_height(),
|
||||||
'spv_nodes': len(self.network.get_interfaces()),
|
'spv_nodes': len(self.network.get_interfaces()),
|
||||||
|
|
|
@ -145,6 +145,19 @@ class ElectrumWindow(App):
|
||||||
servers = self.network.get_servers()
|
servers = self.network.get_servers()
|
||||||
ChoiceDialog(_('Choose a server'), sorted(servers), popup.ids.host.text, cb2).open()
|
ChoiceDialog(_('Choose a server'), sorted(servers), popup.ids.host.text, cb2).open()
|
||||||
|
|
||||||
|
def maybe_switch_to_server(self, *, host: str, port: str):
|
||||||
|
from electrum.interface import ServerAddr
|
||||||
|
net_params = self.network.get_parameters()
|
||||||
|
try:
|
||||||
|
server = ServerAddr(host=host,
|
||||||
|
port=port,
|
||||||
|
protocol=net_params.server.protocol)
|
||||||
|
except Exception as e:
|
||||||
|
self.show_error(_("Invalid server details: {}").format(repr(e)))
|
||||||
|
return
|
||||||
|
net_params = net_params._replace(server=server)
|
||||||
|
self.network.run_from_another_thread(self.network.set_parameters(net_params))
|
||||||
|
|
||||||
def choose_blockchain_dialog(self, dt):
|
def choose_blockchain_dialog(self, dt):
|
||||||
from .uix.dialogs.choice_dialog import ChoiceDialog
|
from .uix.dialogs.choice_dialog import ChoiceDialog
|
||||||
chains = self.network.get_blockchains()
|
chains = self.network.get_blockchains()
|
||||||
|
@ -348,8 +361,8 @@ class ElectrumWindow(App):
|
||||||
self.num_blocks = self.network.get_local_height()
|
self.num_blocks = self.network.get_local_height()
|
||||||
self.num_nodes = len(self.network.get_interfaces())
|
self.num_nodes = len(self.network.get_interfaces())
|
||||||
net_params = self.network.get_parameters()
|
net_params = self.network.get_parameters()
|
||||||
self.server_host = net_params.host
|
self.server_host = net_params.server.host
|
||||||
self.server_port = net_params.port
|
self.server_port = str(net_params.server.port)
|
||||||
self.auto_connect = net_params.auto_connect
|
self.auto_connect = net_params.auto_connect
|
||||||
self.oneserver = net_params.oneserver
|
self.oneserver = net_params.oneserver
|
||||||
self.proxy_config = net_params.proxy if net_params.proxy else {}
|
self.proxy_config = net_params.proxy if net_params.proxy else {}
|
||||||
|
@ -814,7 +827,7 @@ class ElectrumWindow(App):
|
||||||
if interface:
|
if interface:
|
||||||
self.server_host = interface.host
|
self.server_host = interface.host
|
||||||
else:
|
else:
|
||||||
self.server_host = str(net_params.host) + ' (connecting...)'
|
self.server_host = str(net_params.server.host) + ' (connecting...)'
|
||||||
self.proxy_config = net_params.proxy or {}
|
self.proxy_config = net_params.proxy or {}
|
||||||
self.update_proxy_str(self.proxy_config)
|
self.update_proxy_str(self.proxy_config)
|
||||||
|
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
#:import ServerAddr electrum.interface.ServerAddr
|
||||||
|
|
||||||
Popup:
|
Popup:
|
||||||
id: nd
|
id: nd
|
||||||
title: _('Server')
|
title: _('Server')
|
||||||
|
@ -23,7 +25,7 @@ Popup:
|
||||||
height: '36dp'
|
height: '36dp'
|
||||||
size_hint_x: 3
|
size_hint_x: 3
|
||||||
size_hint_y: None
|
size_hint_y: None
|
||||||
text: app.network.get_parameters().host
|
text: app.network.get_parameters().server.host
|
||||||
Label:
|
Label:
|
||||||
height: '36dp'
|
height: '36dp'
|
||||||
size_hint_x: 1
|
size_hint_x: 1
|
||||||
|
@ -36,7 +38,7 @@ Popup:
|
||||||
height: '36dp'
|
height: '36dp'
|
||||||
size_hint_x: 3
|
size_hint_x: 3
|
||||||
size_hint_y: None
|
size_hint_y: None
|
||||||
text: app.network.get_parameters().port
|
text: str(app.network.get_parameters().server.port)
|
||||||
Widget
|
Widget
|
||||||
Button:
|
Button:
|
||||||
id: chooser
|
id: chooser
|
||||||
|
@ -56,7 +58,5 @@ Popup:
|
||||||
height: '48dp'
|
height: '48dp'
|
||||||
text: _('OK')
|
text: _('OK')
|
||||||
on_release:
|
on_release:
|
||||||
net_params = app.network.get_parameters()
|
app.maybe_switch_to_server(host=str(root.ids.host.text), port=str(root.ids.port.text))
|
||||||
net_params = net_params._replace(host=str(root.ids.host.text), port=str(root.ids.port.text))
|
|
||||||
app.network.run_from_another_thread(app.network.set_parameters(net_params))
|
|
||||||
nd.dismiss()
|
nd.dismiss()
|
||||||
|
|
|
@ -738,7 +738,7 @@ class ElectrumWindow(QMainWindow, MessageBoxMixin, Logger):
|
||||||
def donate_to_server(self):
|
def donate_to_server(self):
|
||||||
d = self.network.get_donation_address()
|
d = self.network.get_donation_address()
|
||||||
if d:
|
if d:
|
||||||
host = self.network.get_parameters().host
|
host = self.network.get_parameters().server.host
|
||||||
self.pay_to_URI('bitcoin:%s?message=donation for %s'%(d, host))
|
self.pay_to_URI('bitcoin:%s?message=donation for %s'%(d, host))
|
||||||
else:
|
else:
|
||||||
self.show_error(_('No donation address for this server'))
|
self.show_error(_('No donation address for this server'))
|
||||||
|
|
|
@ -364,11 +364,11 @@ class NetworkChoiceLayout(object):
|
||||||
|
|
||||||
def update(self):
|
def update(self):
|
||||||
net_params = self.network.get_parameters()
|
net_params = self.network.get_parameters()
|
||||||
host, port, protocol = net_params.host, net_params.port, net_params.protocol
|
server = net_params.server
|
||||||
proxy_config, auto_connect = net_params.proxy, net_params.auto_connect
|
proxy_config, auto_connect = net_params.proxy, net_params.auto_connect
|
||||||
if not self.server_host.hasFocus() and not self.server_port.hasFocus():
|
if not self.server_host.hasFocus() and not self.server_port.hasFocus():
|
||||||
self.server_host.setText(host)
|
self.server_host.setText(server.host)
|
||||||
self.server_port.setText(str(port))
|
self.server_port.setText(str(server.port))
|
||||||
self.autoconnect_cb.setChecked(auto_connect)
|
self.autoconnect_cb.setChecked(auto_connect)
|
||||||
|
|
||||||
interface = self.network.interface
|
interface = self.network.interface
|
||||||
|
@ -448,8 +448,13 @@ class NetworkChoiceLayout(object):
|
||||||
|
|
||||||
def set_server(self):
|
def set_server(self):
|
||||||
net_params = self.network.get_parameters()
|
net_params = self.network.get_parameters()
|
||||||
net_params = net_params._replace(host=str(self.server_host.text()),
|
try:
|
||||||
|
server = ServerAddr(host=str(self.server_host.text()),
|
||||||
port=str(self.server_port.text()),
|
port=str(self.server_port.text()),
|
||||||
|
protocol=net_params.server.protocol)
|
||||||
|
except Exception:
|
||||||
|
return
|
||||||
|
net_params = net_params._replace(server=server,
|
||||||
auto_connect=self.autoconnect_cb.isChecked())
|
auto_connect=self.autoconnect_cb.isChecked())
|
||||||
self.network.run_from_another_thread(self.network.set_parameters(net_params))
|
self.network.run_from_another_thread(self.network.set_parameters(net_params))
|
||||||
|
|
||||||
|
|
|
@ -409,7 +409,7 @@ class ElectrumGui:
|
||||||
if not self.network:
|
if not self.network:
|
||||||
return
|
return
|
||||||
net_params = self.network.get_parameters()
|
net_params = self.network.get_parameters()
|
||||||
host, port, protocol = net_params.host, net_params.port, net_params.protocol
|
server_addr = net_params.server
|
||||||
proxy_config, auto_connect = net_params.proxy, net_params.auto_connect
|
proxy_config, auto_connect = net_params.proxy, net_params.auto_connect
|
||||||
srv = 'auto-connect' if auto_connect else str(self.network.default_server)
|
srv = 'auto-connect' if auto_connect else str(self.network.default_server)
|
||||||
out = self.run_dialog('Network', [
|
out = self.run_dialog('Network', [
|
||||||
|
@ -426,12 +426,11 @@ class ElectrumGui:
|
||||||
except Exception:
|
except Exception:
|
||||||
self.show_message("Error:" + server_str + "\nIn doubt, type \"auto-connect\"")
|
self.show_message("Error:" + server_str + "\nIn doubt, type \"auto-connect\"")
|
||||||
return False
|
return False
|
||||||
host = server_addr.host
|
|
||||||
port = str(server_addr.port)
|
|
||||||
protocol = server_addr.protocol
|
|
||||||
if out.get('server') or out.get('proxy'):
|
if out.get('server') or out.get('proxy'):
|
||||||
proxy = electrum.network.deserialize_proxy(out.get('proxy')) if out.get('proxy') else proxy_config
|
proxy = electrum.network.deserialize_proxy(out.get('proxy')) if out.get('proxy') else proxy_config
|
||||||
net_params = NetworkParameters(host, port, protocol, proxy, auto_connect)
|
net_params = NetworkParameters(server=server_addr,
|
||||||
|
proxy=proxy,
|
||||||
|
auto_connect=auto_connect)
|
||||||
self.network.run_from_another_thread(self.network.set_parameters(net_params))
|
self.network.run_from_another_thread(self.network.set_parameters(net_params))
|
||||||
|
|
||||||
def settings_dialog(self):
|
def settings_dialog(self):
|
||||||
|
|
|
@ -144,9 +144,7 @@ def pick_random_server(hostmap=None, *, allowed_protocols: Iterable[str],
|
||||||
|
|
||||||
|
|
||||||
class NetworkParameters(NamedTuple):
|
class NetworkParameters(NamedTuple):
|
||||||
host: str
|
server: ServerAddr
|
||||||
port: str
|
|
||||||
protocol: str
|
|
||||||
proxy: Optional[dict]
|
proxy: Optional[dict]
|
||||||
auto_connect: bool
|
auto_connect: bool
|
||||||
oneserver: bool = False
|
oneserver: bool = False
|
||||||
|
@ -483,10 +481,7 @@ class Network(Logger, NetworkRetryManager[ServerAddr]):
|
||||||
util.trigger_callback(key, self.get_status_value(key))
|
util.trigger_callback(key, self.get_status_value(key))
|
||||||
|
|
||||||
def get_parameters(self) -> NetworkParameters:
|
def get_parameters(self) -> NetworkParameters:
|
||||||
server = self.default_server
|
return NetworkParameters(server=self.default_server,
|
||||||
return NetworkParameters(host=server.host,
|
|
||||||
port=str(server.port),
|
|
||||||
protocol=server.protocol,
|
|
||||||
proxy=self.proxy,
|
proxy=self.proxy,
|
||||||
auto_connect=self.auto_connect,
|
auto_connect=self.auto_connect,
|
||||||
oneserver=self.oneserver)
|
oneserver=self.oneserver)
|
||||||
|
@ -585,13 +580,12 @@ class Network(Logger, NetworkRetryManager[ServerAddr]):
|
||||||
util.trigger_callback('proxy_set', self.proxy)
|
util.trigger_callback('proxy_set', self.proxy)
|
||||||
|
|
||||||
@log_exceptions
|
@log_exceptions
|
||||||
async def set_parameters(self, net_params: NetworkParameters): # TODO
|
async def set_parameters(self, net_params: NetworkParameters):
|
||||||
proxy = net_params.proxy
|
proxy = net_params.proxy
|
||||||
proxy_str = serialize_proxy(proxy)
|
proxy_str = serialize_proxy(proxy)
|
||||||
host, port, protocol = net_params.host, net_params.port, net_params.protocol
|
server = net_params.server
|
||||||
# sanitize parameters
|
# sanitize parameters
|
||||||
try:
|
try:
|
||||||
server = ServerAddr(host, port, protocol=protocol)
|
|
||||||
if proxy:
|
if proxy:
|
||||||
proxy_modes.index(proxy['mode']) + 1
|
proxy_modes.index(proxy['mode']) + 1
|
||||||
int(proxy['port'])
|
int(proxy['port'])
|
||||||
|
@ -1112,10 +1106,7 @@ class Network(Logger, NetworkRetryManager[ServerAddr]):
|
||||||
chosen_iface = random.choice(interfaces_on_selected_chain) # type: Interface
|
chosen_iface = random.choice(interfaces_on_selected_chain) # type: Interface
|
||||||
# switch to server (and save to config)
|
# switch to server (and save to config)
|
||||||
net_params = self.get_parameters()
|
net_params = self.get_parameters()
|
||||||
server = chosen_iface.server
|
net_params = net_params._replace(server=chosen_iface.server)
|
||||||
net_params = net_params._replace(host=server.host,
|
|
||||||
port=str(server.port),
|
|
||||||
protocol=server.protocol)
|
|
||||||
await self.set_parameters(net_params)
|
await self.set_parameters(net_params)
|
||||||
|
|
||||||
async def follow_chain_given_server(self, server: ServerAddr) -> None:
|
async def follow_chain_given_server(self, server: ServerAddr) -> None:
|
||||||
|
@ -1126,9 +1117,7 @@ class Network(Logger, NetworkRetryManager[ServerAddr]):
|
||||||
self._set_preferred_chain(iface.blockchain)
|
self._set_preferred_chain(iface.blockchain)
|
||||||
# switch to server (and save to config)
|
# switch to server (and save to config)
|
||||||
net_params = self.get_parameters()
|
net_params = self.get_parameters()
|
||||||
net_params = net_params._replace(host=server.host,
|
net_params = net_params._replace(server=server)
|
||||||
port=str(server.port),
|
|
||||||
protocol=server.protocol)
|
|
||||||
await self.set_parameters(net_params)
|
await self.set_parameters(net_params)
|
||||||
|
|
||||||
def get_local_height(self):
|
def get_local_height(self):
|
||||||
|
|
Loading…
Add table
Reference in a new issue