From 203c4b99a0c5e3b826f5a131af2d7ec035b73107 Mon Sep 17 00:00:00 2001 From: obscuren Date: Fri, 15 Aug 2014 13:45:34 +0200 Subject: [PATCH] LookupDomain method to uilib --- ethereal/assets/qml/webapp.qml | 2 +- ethereal/main.go | 2 +- ethereal/ui_lib.go | 28 ++++++++++++++++++++++++++++ ethereum/main.go | 2 +- 4 files changed, 31 insertions(+), 3 deletions(-) diff --git a/ethereal/assets/qml/webapp.qml b/ethereal/assets/qml/webapp.qml index ac48e32a11..7bcdc16107 100644 --- a/ethereal/assets/qml/webapp.qml +++ b/ethereal/assets/qml/webapp.qml @@ -103,7 +103,7 @@ ApplicationWindow { uri.replace(reg, function(match, pre, domain, path) { uri = pre; - var lookup = eth.lookupDomain(domain.substring(0, domain.length - 4)); + var lookup = ui.lookupDomain(domain.substring(0, domain.length - 4)); var ip = []; for(var i = 0, l = lookup.length; i < l; i++) { ip.push(lookup.charCodeAt(i)) diff --git a/ethereal/main.go b/ethereal/main.go index 393308d00c..47f6144fae 100644 --- a/ethereal/main.go +++ b/ethereal/main.go @@ -12,7 +12,7 @@ import ( const ( ClientIdentifier = "Ethereal" - Version = "0.6.1" + Version = "0.6.2" ) var ethereum *eth.Ethereum diff --git a/ethereal/ui_lib.go b/ethereal/ui_lib.go index 9220581cdd..ade9bf3815 100644 --- a/ethereal/ui_lib.go +++ b/ethereal/ui_lib.go @@ -1,11 +1,15 @@ package main import ( + "bytes" "fmt" "path" + "strconv" + "strings" "github.com/ethereum/eth-go" "github.com/ethereum/eth-go/ethchain" + "github.com/ethereum/eth-go/ethcrypto" "github.com/ethereum/eth-go/ethpipe" "github.com/ethereum/eth-go/ethutil" "github.com/ethereum/go-ethereum/javascript" @@ -36,6 +40,30 @@ func NewUiLib(engine *qml.Engine, eth *eth.Ethereum, assetPath string) *UiLib { return &UiLib{JSPipe: ethpipe.NewJSPipe(eth), engine: engine, eth: eth, assetPath: assetPath, jsEngine: javascript.NewJSRE(eth)} } +func (self *UiLib) LookupDomain(domain string) string { + world := self.World() + + if len(domain) > 32 { + domain = string(ethcrypto.Sha3Bin([]byte(domain))) + } + data := world.Config().Get("DnsReg").StorageString(domain).Bytes() + + // Left padded = A record, Right padded = CNAME + if data[0] == 0 { + data = bytes.TrimLeft(data, "\x00") + var ipSlice []string + for _, d := range data { + ipSlice = append(ipSlice, strconv.Itoa(int(d))) + } + + return strings.Join(ipSlice, ".") + } else { + data = bytes.TrimRight(data, "\x00") + + return string(data) + } +} + func (self *UiLib) ImportTx(rlpTx string) { tx := ethchain.NewTransactionFromBytes(ethutil.Hex2Bytes(rlpTx)) self.eth.TxPool().QueueTransaction(tx) diff --git a/ethereum/main.go b/ethereum/main.go index 17838997c4..6c5c71bf3a 100644 --- a/ethereum/main.go +++ b/ethereum/main.go @@ -13,7 +13,7 @@ import ( const ( ClientIdentifier = "Ethereum(G)" - Version = "0.6.1" + Version = "0.6.2" ) var logger = ethlog.NewLogger("CLI")