cmd/mist, eth, javascript, p2p: use Node URLs for peer suggestions
This commit is contained in:
		| @@ -205,7 +205,7 @@ ApplicationWindow { | |||||||
| 		Menu { | 		Menu { | ||||||
| 			title: "Network" | 			title: "Network" | ||||||
| 			MenuItem { | 			MenuItem { | ||||||
| 				text: "Add Peer" | 				text: "Connect to Node" | ||||||
| 				shortcut: "Ctrl+p" | 				shortcut: "Ctrl+p" | ||||||
| 				onTriggered: { | 				onTriggered: { | ||||||
| 					addPeerWin.visible = true | 					addPeerWin.visible = true | ||||||
| @@ -838,60 +838,34 @@ ApplicationWindow { | |||||||
| 	     Window { | 	     Window { | ||||||
| 		     id: addPeerWin | 		     id: addPeerWin | ||||||
| 		     visible: false | 		     visible: false | ||||||
| 		     minimumWidth: 300 | 		     minimumWidth: 400 | ||||||
| 		     maximumWidth: 300 | 		     maximumWidth: 400 | ||||||
| 		     maximumHeight: 50 | 		     maximumHeight: 50 | ||||||
| 		     minimumHeight: 50 | 		     minimumHeight: 50 | ||||||
| 		     title: "Connect to peer" | 		     title: "Connect to Node" | ||||||
|  |  | ||||||
|  | 		     TextField { | ||||||
| 		     ComboBox { |  | ||||||
| 			     id: addrField | 			     id: addrField | ||||||
|  | 			     placeholderText: "enode://<hex node id>:<IP address>:<port>" | ||||||
| 			     anchors.verticalCenter: parent.verticalCenter | 			     anchors.verticalCenter: parent.verticalCenter | ||||||
| 			     anchors.left: parent.left | 			     anchors.left: parent.left | ||||||
| 			     anchors.right: addPeerButton.left | 			     anchors.right: addPeerButton.left | ||||||
| 			     anchors.leftMargin: 10 | 			     anchors.leftMargin: 10 | ||||||
| 			     anchors.rightMargin: 10 | 			     anchors.rightMargin: 10 | ||||||
| 			     onAccepted: { | 			     onAccepted: { | ||||||
| 				     eth.connectToPeer(addrField.currentText) | 				     eth.connectToPeer(addrField.text) | ||||||
| 				     addPeerWin.visible = false | 				     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 { | 		     Button { | ||||||
| 			     id: addPeerButton | 			     id: addPeerButton | ||||||
| 			     anchors.right: parent.right | 			     anchors.right: parent.right | ||||||
| 			     anchors.verticalCenter: parent.verticalCenter | 			     anchors.verticalCenter: parent.verticalCenter | ||||||
| 			     anchors.rightMargin: 10 | 			     anchors.rightMargin: 10 | ||||||
| 			     text: "Add" | 			     text: "Connect" | ||||||
| 			     onClicked: { | 			     onClicked: { | ||||||
| 				     eth.connectToPeer(addrField.currentText, nodeidField.currentText) | 				     eth.connectToPeer(addrField.text) | ||||||
| 				     addPeerWin.visible = false | 				     addPeerWin.visible = false | ||||||
| 			     } | 			     } | ||||||
| 		     } | 		     } | ||||||
|   | |||||||
| @@ -31,7 +31,6 @@ import ( | |||||||
| 	"github.com/ethereum/go-ethereum/event/filter" | 	"github.com/ethereum/go-ethereum/event/filter" | ||||||
| 	"github.com/ethereum/go-ethereum/javascript" | 	"github.com/ethereum/go-ethereum/javascript" | ||||||
| 	"github.com/ethereum/go-ethereum/miner" | 	"github.com/ethereum/go-ethereum/miner" | ||||||
| 	"github.com/ethereum/go-ethereum/p2p/discover" |  | ||||||
| 	"github.com/ethereum/go-ethereum/xeth" | 	"github.com/ethereum/go-ethereum/xeth" | ||||||
| 	"github.com/obscuren/qml" | 	"github.com/obscuren/qml" | ||||||
| ) | ) | ||||||
| @@ -143,14 +142,9 @@ func (ui *UiLib) Connect(button qml.Object) { | |||||||
| 	} | 	} | ||||||
| } | } | ||||||
|  |  | ||||||
| func (ui *UiLib) ConnectToPeer(addr string, hexid string) { | func (ui *UiLib) ConnectToPeer(nodeURL string) { | ||||||
| 	id, err := discover.HexID(hexid) | 	if err := ui.eth.SuggestPeer(nodeURL); err != nil { | ||||||
| 	if err != nil { | 		guilogger.Infoln("SuggestPeer error: " + err.Error()) | ||||||
| 		guilogger.Errorf("bad node ID: %v", err) |  | ||||||
| 		return |  | ||||||
| 	} |  | ||||||
| 	if err := ui.eth.SuggestPeer(addr, id); err != nil { |  | ||||||
| 		guilogger.Infoln(err) |  | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -2,7 +2,6 @@ package eth | |||||||
|  |  | ||||||
| import ( | import ( | ||||||
| 	"fmt" | 	"fmt" | ||||||
| 	"net" |  | ||||||
| 	"sync" | 	"sync" | ||||||
|  |  | ||||||
| 	"github.com/ethereum/go-ethereum/core" | 	"github.com/ethereum/go-ethereum/core" | ||||||
| @@ -241,13 +240,12 @@ func (s *Ethereum) Start(seedNode string) error { | |||||||
| 	return nil | 	return nil | ||||||
| } | } | ||||||
|  |  | ||||||
| func (self *Ethereum) SuggestPeer(addr string, id discover.NodeID) error { | func (self *Ethereum) SuggestPeer(nodeURL string) error { | ||||||
| 	netaddr, err := net.ResolveTCPAddr("tcp", addr) | 	n, err := discover.ParseNode(nodeURL) | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		logger.Errorf("couldn't resolve %s:", addr, err) | 		return fmt.Errorf("invalid node URL: %v", err) | ||||||
| 		return err |  | ||||||
| 	} | 	} | ||||||
| 	self.net.SuggestPeer(netaddr.IP, netaddr.Port, id) | 	self.net.SuggestPeer(n) | ||||||
| 	return nil | 	return nil | ||||||
| } | } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -14,7 +14,6 @@ import ( | |||||||
| 	"github.com/ethereum/go-ethereum/ethutil" | 	"github.com/ethereum/go-ethereum/ethutil" | ||||||
| 	"github.com/ethereum/go-ethereum/event" | 	"github.com/ethereum/go-ethereum/event" | ||||||
| 	"github.com/ethereum/go-ethereum/logger" | 	"github.com/ethereum/go-ethereum/logger" | ||||||
| 	"github.com/ethereum/go-ethereum/p2p/discover" |  | ||||||
| 	"github.com/ethereum/go-ethereum/state" | 	"github.com/ethereum/go-ethereum/state" | ||||||
| 	"github.com/ethereum/go-ethereum/xeth" | 	"github.com/ethereum/go-ethereum/xeth" | ||||||
| 	"github.com/obscuren/otto" | 	"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 { | func (self *JSRE) addPeer(call otto.FunctionCall) otto.Value { | ||||||
| 	host, err := call.Argument(0).ToString() | 	nodeURL, err := call.Argument(0).ToString() | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		return otto.FalseValue() | 		return otto.FalseValue() | ||||||
| 	} | 	} | ||||||
| 	idstr, err := call.Argument(0).ToString() | 	if err := self.ethereum.SuggestPeer(nodeURL); err != nil { | ||||||
| 	if err != nil { |  | ||||||
| 		return otto.FalseValue() | 		return otto.FalseValue() | ||||||
| 	} | 	} | ||||||
| 	id, err := discover.HexID(idstr) |  | ||||||
| 	if err != nil { |  | ||||||
| 		return otto.FalseValue() |  | ||||||
| 	} |  | ||||||
| 	self.ethereum.SuggestPeer(host, id) |  | ||||||
| 	return otto.TrueValue() | 	return otto.TrueValue() | ||||||
| } | } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -135,8 +135,8 @@ func (srv *Server) PeerCount() int { | |||||||
|  |  | ||||||
| // SuggestPeer creates a connection to the given Node if it | // SuggestPeer creates a connection to the given Node if it | ||||||
| // is not already connected. | // is not already connected. | ||||||
| func (srv *Server) SuggestPeer(ip net.IP, port int, id discover.NodeID) { | func (srv *Server) SuggestPeer(n *discover.Node) { | ||||||
| 	srv.peerConnect <- &discover.Node{ID: id, IP: ip, TCPPort: port} | 	srv.peerConnect <- n | ||||||
| } | } | ||||||
|  |  | ||||||
| // Broadcast sends an RLP-encoded message to all connected peers. | // Broadcast sends an RLP-encoded message to all connected peers. | ||||||
|   | |||||||
| @@ -91,7 +91,7 @@ func TestServerDial(t *testing.T) { | |||||||
|  |  | ||||||
| 	// tell the server to connect | 	// tell the server to connect | ||||||
| 	tcpAddr := listener.Addr().(*net.TCPAddr) | 	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 { | 	select { | ||||||
| 	case conn := <-accepted: | 	case conn := <-accepted: | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user