def update(self, network, servers, protocol, use_tor): self.clear() self.setIndentation(0) wl_only = network.is_whitelist_only() for _host, d in sorted(servers.items()): if _host.lower().endswith('.onion') and not use_tor: continue port = d.get(protocol) if port: server = serialize_server(_host, port, protocol) flag, flagval, tt = (ServerFlag.Symbol[ServerFlag.Banned], ServerFlag.Banned, _("This server is banned")) if network.server_is_blacklisted(server) else ("", 0, "") flag2, flagval2, tt2 = (ServerFlag.Symbol[ServerFlag.Preferred], ServerFlag.Preferred, _("This is a preferred server")) if network.server_is_whitelisted(server) else ("", 0, "") flag = flag or flag2; del flag2 tt = tt or tt2; del tt2 flagval |= flagval2; del flagval2 x = QTreeWidgetItem([flag, _host, port]) if tt: x.setToolTip(0, tt) if (wl_only and flagval != ServerFlag.Preferred) or flagval & ServerFlag.Banned: # lighten the text of servers we can't/won't connect to for the given mode self.lightenItemText(x, range(1,3)) x.setData(2, Qt.UserRole, server) x.setData(0, Qt.UserRole, flagval) self.addTopLevelItem(x) h = self.header() h.setStretchLastSection(False) h.setSectionResizeMode(0, QHeaderView.ResizeToContents) h.setSectionResizeMode(1, QHeaderView.Stretch) h.setSectionResizeMode(2, QHeaderView.ResizeToContents)
def update(self, network, servers, protocol, use_tor): self.clear() self.setIndentation(0) wl_only = network.is_whitelist_only() for _host, d in sorted(servers.items()): is_onion = _host.lower().endswith('.onion') if is_onion and not use_tor: continue port = d.get(protocol) if port: server = serialize_server(_host, port, protocol) flag = "" flagval = 0 tt = "" if network.server_is_blacklisted(server): flagval |= ServerFlag.Banned if network.server_is_whitelisted(server): flagval |= ServerFlag.Preferred if network.server_is_bad_certificate(server): flagval |= ServerFlag.BadCertificate if flagval & ServerFlag.Banned: flag = ServerFlag.Symbol[ServerFlag.Banned] tt = _("This server is banned") elif flagval & ServerFlag.BadCertificate: flag = ServerFlag.Symbol[ServerFlag.BadCertificate] tt = _( "This server's pinned certificate mismatches its current certificate" ) elif flagval & ServerFlag.Preferred: flag = ServerFlag.Symbol[ServerFlag.Preferred] tt = _("This is a preferred server") display_text = _host if is_onion and 'display' in d: display_text = d['display'] + ' (.onion)' x = QTreeWidgetItem([flag, display_text, '', port]) if is_onion: x.setIcon(2, QIcon(":icons/tor_logo.svg")) if tt: x.setToolTip(0, tt) if (wl_only and not flagval & ServerFlag.Preferred ) or flagval & ServerFlag.Banned: # lighten the text of servers we can't/won't connect to for the given mode self.lightenItemText(x, range(1, 4)) x.setData(2, Qt.UserRole, server) x.setData(0, Qt.UserRole, flagval) x.setTextAlignment(0, Qt.AlignHCenter) self.addTopLevelItem(x) h = self.header() h.setStretchLastSection(False) h.setSectionResizeMode(0, QHeaderView.ResizeToContents) h.setSectionResizeMode(1, QHeaderView.Stretch) h.setSectionResizeMode(2, QHeaderView.ResizeToContents) h.setSectionResizeMode(3, QHeaderView.ResizeToContents)
def update(self, servers, protocol, use_tor): self.clear() for _host, d in sorted(servers.items()): if _host.endswith('.onion') and not use_tor: continue port = d.get(protocol) if port: x = QTreeWidgetItem([_host, port]) server = serialize_server(_host, port, protocol) x.setData(1, Qt.UserRole, server) self.addTopLevelItem(x) h = self.header() h.setStretchLastSection(False) h.setSectionResizeMode(0, QHeaderView.Stretch) h.setSectionResizeMode(1, QHeaderView.ResizeToContents)
def refresh(self) -> None: utils.NSLog("NETOWRK VC UPDATE, isMainThread = %s",str(NSThread.currentThread.isMainThread)) if not parent() or not parent().daemon or not parent().daemon.network: utils.NSLog("NetworkDialogVC: No network defined, returning early from refresh") return if not parent().networkVC or not self.viewIfLoaded: utils.NSLog("NetworkDialogVC: Returning early, view has been deallocated") return network = parent().daemon.network chains = network.get_blockchains() n_chains = len(chains) host, port, protocol, proxy_config, auto_connect = network.get_parameters() self.hostTF.text = str(host) self.portTF.text = str(port) self.lastPort = at(int(port)) self.autoServerSW.on = bool(auto_connect) host = network.interface.host if network.interface else _('None') self.serverLbl.text = str(host) #self.set_protocol(protocol) self.protocol = protocol servers_orig = network.get_servers() servers = [] if servers_orig: servers_orig = sorted(servers_orig.items()) use_tor = False for s in servers_orig: # filter out tor and servers with no port on our protocol host, d = s if host.endswith('.onion') and not use_tor: continue if d.get(protocol,None): ser_server = serialize_server(host, d.get(protocol), protocol) servers.append((host, d, ser_server)) utils.nspy_put_byname(self, servers, 'servers') self.peersTV.reloadData() self.updateAutoServerSWStuff() height_str = "%d "%(network.get_local_height()) + _('blocks') self.heightLbl.text = str(height_str) n = len(network.get_interfaces()) status = _("Connected to %d nodes.")%n if n else _("Not connected") self.statusLbl.text = str(status) if len(chains)>1: chain = network.blockchain() checkpoint = chain.get_base_height() name = chain.get_name() msg = _('Chain split detected at block %d')%checkpoint + '\n' msg += (_('You are following branch') if auto_connect else _('Your server is on branch'))+ ' ' + name msg += ' (%d %s)' % (chain.get_branch_size(), _('blocks')) else: msg = '' utils.uilabel_replace_attributed_text(self.splitLbl, msg, self.splitAttrTxtOrig) # setup 'connected' data -- list of ConnData items connected = [] for k, items in chains.items(): b = network.blockchains[k] name = b.get_name() secHeader = _("Connected node") + ", " + _("Height") secItems = list() extraData = None if n_chains > 1: secHeader = "(" + (name + '@%d'%b.get_base_height()) + ") " + _("Host") + ", " + _("Height") extraData = [ False, b.base_height, name ] for i in items: star = ' *' if i == network.interface else '' extraData = [True, i.server, ''] #if n_chains <= 1 else extraData item = [i.host + star, '%d'%i.tip, extraData] secItems.append(item) section = ConnData(secHeader,secItems) connected.append(section) utils.nspy_put_byname(self, connected, 'connected') self.connectedTV.reloadData()