Prechádzať zdrojové kódy

cmd/mist, eth, javascript, p2p: use Node URLs for peer suggestions

Felix Lange 10 rokov pred
rodič
commit
2cf4fed11b

+ 9 - 35
cmd/mist/assets/qml/main.qml

@@ -205,7 +205,7 @@ ApplicationWindow {
 		Menu {
 			title: "Network"
 			MenuItem {
-				text: "Add Peer"
+				text: "Connect to Node"
 				shortcut: "Ctrl+p"
 				onTriggered: {
 					addPeerWin.visible = true
@@ -838,60 +838,34 @@ ApplicationWindow {
 	     Window {
 		     id: addPeerWin
 		     visible: false
-		     minimumWidth: 300
-		     maximumWidth: 300
+		     minimumWidth: 400
+		     maximumWidth: 400
 		     maximumHeight: 50
 		     minimumHeight: 50
-		     title: "Connect to peer"
+		     title: "Connect to Node"
 
-
-		     ComboBox {
+		     TextField {
 			     id: addrField
+			     placeholderText: "enode://<hex node id>:<IP address>:<port>"
 			     anchors.verticalCenter: parent.verticalCenter
 			     anchors.left: parent.left
 			     anchors.right: addPeerButton.left
 			     anchors.leftMargin: 10
 			     anchors.rightMargin: 10
 			     onAccepted: {
-				     eth.connectToPeer(addrField.currentText)
+				     eth.connectToPeer(addrField.text)
 				     addPeerWin.visible = false
 			     }
-
-			     editable: true
-			     model: ListModel { id: pastPeers }
-
-			     Component.onCompleted: {
-				     pastPeers.insert(0, {text: "poc-8.ethdev.com:30303"})
-				     /*
-				      var ips = eth.pastPeers()
-				      for(var i = 0; i < ips.length; i++) {
-					      pastPeers.append({text: ips.get(i)})
-				      }
-
-				      pastPeers.insert(0, {text: "poc-7.ethdev.com:30303"})
-				      */
-			     }
 		     }
 
- 		     ComboBox {
-			     id: nodeidField
-			     anchors.verticalCenter: parent.verticalCenter
-			     anchors.left: parent.left
-			     anchors.right: addPeerButton.left
-			     anchors.leftMargin: 10
-			     anchors.rightMargin: 10
-			
-			     editable: true
-  			}
-
 		     Button {
 			     id: addPeerButton
 			     anchors.right: parent.right
 			     anchors.verticalCenter: parent.verticalCenter
 			     anchors.rightMargin: 10
-			     text: "Add"
+			     text: "Connect"
 			     onClicked: {
-				     eth.connectToPeer(addrField.currentText, nodeidField.currentText)
+				     eth.connectToPeer(addrField.text)
 				     addPeerWin.visible = false
 			     }
 		     }

+ 3 - 9
cmd/mist/ui_lib.go

@@ -31,7 +31,6 @@ import (
 	"github.com/ethereum/go-ethereum/event/filter"
 	"github.com/ethereum/go-ethereum/javascript"
 	"github.com/ethereum/go-ethereum/miner"
-	"github.com/ethereum/go-ethereum/p2p/discover"
 	"github.com/ethereum/go-ethereum/xeth"
 	"github.com/obscuren/qml"
 )
@@ -143,14 +142,9 @@ func (ui *UiLib) Connect(button qml.Object) {
 	}
 }
 
-func (ui *UiLib) ConnectToPeer(addr string, hexid string) {
-	id, err := discover.HexID(hexid)
-	if err != nil {
-		guilogger.Errorf("bad node ID: %v", err)
-		return
-	}
-	if err := ui.eth.SuggestPeer(addr, id); err != nil {
-		guilogger.Infoln(err)
+func (ui *UiLib) ConnectToPeer(nodeURL string) {
+	if err := ui.eth.SuggestPeer(nodeURL); err != nil {
+		guilogger.Infoln("SuggestPeer error: " + err.Error())
 	}
 }
 

+ 4 - 6
eth/backend.go

@@ -2,7 +2,6 @@ package eth
 
 import (
 	"fmt"
-	"net"
 	"sync"
 
 	"github.com/ethereum/go-ethereum/core"
@@ -241,13 +240,12 @@ func (s *Ethereum) Start(seedNode string) error {
 	return nil
 }
 
-func (self *Ethereum) SuggestPeer(addr string, id discover.NodeID) error {
-	netaddr, err := net.ResolveTCPAddr("tcp", addr)
+func (self *Ethereum) SuggestPeer(nodeURL string) error {
+	n, err := discover.ParseNode(nodeURL)
 	if err != nil {
-		logger.Errorf("couldn't resolve %s:", addr, err)
-		return err
+		return fmt.Errorf("invalid node URL: %v", err)
 	}
-	self.net.SuggestPeer(netaddr.IP, netaddr.Port, id)
+	self.net.SuggestPeer(n)
 	return nil
 }
 

+ 2 - 9
javascript/javascript_runtime.go

@@ -14,7 +14,6 @@ import (
 	"github.com/ethereum/go-ethereum/ethutil"
 	"github.com/ethereum/go-ethereum/event"
 	"github.com/ethereum/go-ethereum/logger"
-	"github.com/ethereum/go-ethereum/p2p/discover"
 	"github.com/ethereum/go-ethereum/state"
 	"github.com/ethereum/go-ethereum/xeth"
 	"github.com/obscuren/otto"
@@ -198,19 +197,13 @@ func (self *JSRE) watch(call otto.FunctionCall) otto.Value {
 }
 
 func (self *JSRE) addPeer(call otto.FunctionCall) otto.Value {
-	host, err := call.Argument(0).ToString()
+	nodeURL, err := call.Argument(0).ToString()
 	if err != nil {
 		return otto.FalseValue()
 	}
-	idstr, err := call.Argument(0).ToString()
-	if err != nil {
-		return otto.FalseValue()
-	}
-	id, err := discover.HexID(idstr)
-	if err != nil {
+	if err := self.ethereum.SuggestPeer(nodeURL); err != nil {
 		return otto.FalseValue()
 	}
-	self.ethereum.SuggestPeer(host, id)
 	return otto.TrueValue()
 }
 

+ 2 - 2
p2p/server.go

@@ -135,8 +135,8 @@ func (srv *Server) PeerCount() int {
 
 // SuggestPeer creates a connection to the given Node if it
 // is not already connected.
-func (srv *Server) SuggestPeer(ip net.IP, port int, id discover.NodeID) {
-	srv.peerConnect <- &discover.Node{ID: id, IP: ip, TCPPort: port}
+func (srv *Server) SuggestPeer(n *discover.Node) {
+	srv.peerConnect <- n
 }
 
 // Broadcast sends an RLP-encoded message to all connected peers.

+ 1 - 1
p2p/server_test.go

@@ -91,7 +91,7 @@ func TestServerDial(t *testing.T) {
 
 	// tell the server to connect
 	tcpAddr := listener.Addr().(*net.TCPAddr)
-	srv.peerConnect <- &discover.Node{IP: tcpAddr.IP, TCPPort: tcpAddr.Port}
+	srv.SuggestPeer(&discover.Node{IP: tcpAddr.IP, TCPPort: tcpAddr.Port})
 
 	select {
 	case conn := <-accepted: