コード例 #1
0
ファイル: network_dialog.py プロジェクト: VitaeTeam/ViLight
    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)
コード例 #2
0
    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)
コード例 #3
0
    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)
コード例 #4
0
    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()