From 384cb126dd3cdf0d1dcf67525d7a390436ec6ea2 Mon Sep 17 00:00:00 2001 From: Yung chieh Tsai Date: Tue, 29 May 2018 19:29:12 +0800 Subject: [PATCH] Update lib --- app/404.html | 26 +++++++++++++- app/scripts/lib/ipfsContent.js | 2 +- app/scripts/lib/resolver.js | 66 +++++++++++++++++++++++----------- 3 files changed, 71 insertions(+), 23 deletions(-) diff --git a/app/404.html b/app/404.html index 0dbab69a7..f66723ad6 100644 --- a/app/404.html +++ b/app/404.html @@ -17,12 +17,36 @@ width: 100%; height: 100%; } + .app{ + position: relative; + width: 100%; + height: auto; + overflow: hidden; + } img{ display: block; + width: 100%; + height: auto; + } + h2{ + display: block; + width: 100%; + overflow: hidden; + position: absolute; + bottom: 20%; + left: 0; + color: #1b243d; + text-align: center; + } + h2 > a{ + color: #1b243d; } - +
+ +

Powered by Portal Network

+
\ No newline at end of file diff --git a/app/scripts/lib/ipfsContent.js b/app/scripts/lib/ipfsContent.js index 4d66745e9..bf04c854b 100644 --- a/app/scripts/lib/ipfsContent.js +++ b/app/scripts/lib/ipfsContent.js @@ -16,7 +16,7 @@ module.exports = function (provider) { clearTimeout(clearTime) let url = 'https://gateway.ipfs.io/ipfs/' + ipfsHash return fetch(url, { method: 'HEAD' }).then(response => response.status).then(statusCode => { - if (statusCode !== 200) return 'Local' + if (statusCode !== 200) return extension.tabs.update(tab.id, { url: '404.html' }) extension.tabs.update(tab.id, { url: url }) }) .catch(err => { diff --git a/app/scripts/lib/resolver.js b/app/scripts/lib/resolver.js index dec43c481..2bf9dac50 100644 --- a/app/scripts/lib/resolver.js +++ b/app/scripts/lib/resolver.js @@ -1,6 +1,5 @@ const namehash = require('eth-ens-namehash') const multihash = require('multihashes') -const REGISTRAR_ENS_MAIN_NET = '0x314159265dd8dbb310642f98f50c066173c1259b' const HttpProvider = require('ethjs-provider-http') const Eth = require('ethjs-query') const EthContract = require('ethjs-contract') @@ -8,32 +7,57 @@ const registrarAbi = require('./contracts/registrar') const resolverAbi = require('./contracts/resolver') function ens (name, provider) { - const eth = new Eth(new HttpProvider(provider.rpcTarget)) + const eth = new Eth(new HttpProvider(getProvider(provider.type))) const hash = namehash.hash(name) const contract = new EthContract(eth) - const Registrar = contract(registrarAbi).at(REGISTRAR_ENS_MAIN_NET) + const Registrar = contract(registrarAbi).at(getRegistrar(provider.type)) return new Promise((resolve, reject) => { - if (provider.type !== 'mainnet') reject('unsupport') - Registrar.resolver(hash).then((address) => { - if (address === '0x0000000000000000000000000000000000000000') { - reject(null) - } else { - const Resolver = contract(resolverAbi).at(address['0']) - return Resolver.content(hash) - } - }).then((contentHash) => { - if (contentHash['0'] === '0x0000000000000000000000000000000000000000000000000000000000000000') reject(null) - if (contentHash.ret !== '0x') { - const hex = contentHash['0'].substring(2) - const buf = multihash.fromHexString(hex) - resolve(multihash.toB58String(buf)) - } else { - reject(null) - } - }) + if (provider.type === 'mainnet' || provider.type === 'ropsten') { + Registrar.resolver(hash).then((address) => { + if (address === '0x0000000000000000000000000000000000000000') { + reject(null) + } else { + const Resolver = contract(resolverAbi).at(address['0']) + return Resolver.content(hash) + } + }).then((contentHash) => { + if (contentHash['0'] === '0x0000000000000000000000000000000000000000000000000000000000000000') reject(null) + if (contentHash.ret !== '0x') { + const hex = contentHash['0'].substring(2) + const buf = multihash.fromHexString(hex) + resolve(multihash.toB58String(multihash.encode(buf, 'sha2-256'))) + } else { + reject(null) + } + }) + } else { + return reject('unsupport') + } }) } +function getProvider (type) { + switch (type) { + case 'mainnet': + return 'https://mainnet.infura.io/' + case 'ropsten': + return 'https://ropsten.infura.io/' + default: + return 'http://localhost:3000/' + } +} + +function getRegistrar (type) { + switch (type) { + case 'mainnet': + return '0x314159265dd8dbb310642f98f50c066173c1259b' + case 'ropsten': + return '0x112234455c3a32fd11230c42e7bccd4a84e02010' + default: + return '0x0000000000000000000000000000000000000000' + } +} + module.exports.resolve = function (name, provider) { const path = name.split('.') const tld = path[path.length - 1]