aboutsummaryrefslogtreecommitdiffstats
path: root/app/scripts/lib
diff options
context:
space:
mode:
authorsdtsui <szehungdanieltsui@gmail.com>2017-08-07 10:55:34 +0800
committersdtsui <szehungdanieltsui@gmail.com>2017-08-07 10:55:34 +0800
commit02c2106c3bb6900801cf5ffe4a1d9bd46183b089 (patch)
tree23f6d76a57c7b58a385ee49e8a24e402ed474775 /app/scripts/lib
parentfd36d95c506db55afa33a251c6c187c194a55854 (diff)
parent2ba5737728d2539fc3bc9015e440f37341219cdc (diff)
downloadtangerine-wallet-browser-02c2106c3bb6900801cf5ffe4a1d9bd46183b089.tar.gz
tangerine-wallet-browser-02c2106c3bb6900801cf5ffe4a1d9bd46183b089.tar.zst
tangerine-wallet-browser-02c2106c3bb6900801cf5ffe4a1d9bd46183b089.zip
Merge branch 'master' into feat/mm-ui-5
Diffstat (limited to 'app/scripts/lib')
-rw-r--r--app/scripts/lib/inpage-provider.js3
-rw-r--r--app/scripts/lib/is-phish.js38
-rw-r--r--app/scripts/lib/nodeify.js3
-rw-r--r--app/scripts/lib/obj-multiplex.js16
-rw-r--r--app/scripts/lib/tx-utils.js61
5 files changed, 28 insertions, 93 deletions
diff --git a/app/scripts/lib/inpage-provider.js b/app/scripts/lib/inpage-provider.js
index 8b8623974..fd032a673 100644
--- a/app/scripts/lib/inpage-provider.js
+++ b/app/scripts/lib/inpage-provider.js
@@ -26,6 +26,9 @@ function MetamaskInpageProvider (connectionStream) {
(err) => logStreamDisconnectWarning('MetaMask PublicConfigStore', err)
)
+ // ignore phishing warning message (handled elsewhere)
+ multiStream.ignoreStream('phishing')
+
// connect to async provider
const asyncProvider = self.asyncProvider = new StreamProvider()
pipe(
diff --git a/app/scripts/lib/is-phish.js b/app/scripts/lib/is-phish.js
deleted file mode 100644
index 68c09e4ac..000000000
--- a/app/scripts/lib/is-phish.js
+++ /dev/null
@@ -1,38 +0,0 @@
-const levenshtein = require('fast-levenshtein')
-const blacklistedMetaMaskDomains = ['metamask.com']
-let blacklistedDomains = require('etheraddresslookup/blacklists/domains.json').concat(blacklistedMetaMaskDomains)
-const whitelistedMetaMaskDomains = ['metamask.io', 'www.metamask.io']
-const whitelistedDomains = require('etheraddresslookup/whitelists/domains.json').concat(whitelistedMetaMaskDomains)
-const LEVENSHTEIN_TOLERANCE = 4
-const LEVENSHTEIN_CHECKS = ['myetherwallet', 'myetheroll', 'ledgerwallet', 'metamask']
-
-
-// credit to @sogoiii and @409H for their help!
-// Return a boolean on whether or not a phish is detected.
-function isPhish({ hostname, updatedBlacklist = null }) {
- var strCurrentTab = hostname
-
- // check if the domain is part of the whitelist.
- if (whitelistedDomains && whitelistedDomains.includes(strCurrentTab)) { return false }
-
- // Allow updating of blacklist:
- if (updatedBlacklist) {
- blacklistedDomains = blacklistedDomains.concat(updatedBlacklist)
- }
-
- // check if the domain is part of the blacklist.
- const isBlacklisted = blacklistedDomains && blacklistedDomains.includes(strCurrentTab)
-
- // check for similar values.
- let levenshteinMatched = false
- var levenshteinForm = strCurrentTab.replace(/\./g, '')
- LEVENSHTEIN_CHECKS.forEach((element) => {
- if (levenshtein.get(element, levenshteinForm) <= LEVENSHTEIN_TOLERANCE) {
- levenshteinMatched = true
- }
- })
-
- return isBlacklisted || levenshteinMatched
-}
-
-module.exports = isPhish
diff --git a/app/scripts/lib/nodeify.js b/app/scripts/lib/nodeify.js
index 299bfe624..832d6c6d3 100644
--- a/app/scripts/lib/nodeify.js
+++ b/app/scripts/lib/nodeify.js
@@ -1,9 +1,10 @@
const promiseToCallback = require('promise-to-callback')
-module.exports = function(fn, context) {
+module.exports = function nodeify (fn, context) {
return function(){
const args = [].slice.call(arguments)
const callback = args.pop()
+ if (typeof callback !== 'function') throw new Error('callback is not a function')
promiseToCallback(fn.apply(context, args))(callback)
}
}
diff --git a/app/scripts/lib/obj-multiplex.js b/app/scripts/lib/obj-multiplex.js
index bd114c394..0034febe0 100644
--- a/app/scripts/lib/obj-multiplex.js
+++ b/app/scripts/lib/obj-multiplex.js
@@ -5,12 +5,16 @@ module.exports = ObjectMultiplex
function ObjectMultiplex (opts) {
opts = opts || {}
// create multiplexer
- var mx = through.obj(function (chunk, enc, cb) {
- var name = chunk.name
- var data = chunk.data
- var substream = mx.streams[name]
+ const mx = through.obj(function (chunk, enc, cb) {
+ const name = chunk.name
+ const data = chunk.data
+ if (!name) {
+ console.warn(`ObjectMultiplex - Malformed chunk without name "${chunk}"`)
+ return cb()
+ }
+ const substream = mx.streams[name]
if (!substream) {
- console.warn(`orphaned data for stream "${name}"`)
+ console.warn(`ObjectMultiplex - orphaned data for stream "${name}"`)
} else {
if (substream.push) substream.push(data)
}
@@ -19,7 +23,7 @@ function ObjectMultiplex (opts) {
mx.streams = {}
// create substreams
mx.createStream = function (name) {
- var substream = mx.streams[name] = through.obj(function (chunk, enc, cb) {
+ const substream = mx.streams[name] = through.obj(function (chunk, enc, cb) {
mx.push({
name: name,
data: chunk,
diff --git a/app/scripts/lib/tx-utils.js b/app/scripts/lib/tx-utils.js
index 8f6943937..3687a9652 100644
--- a/app/scripts/lib/tx-utils.js
+++ b/app/scripts/lib/tx-utils.js
@@ -1,4 +1,3 @@
-const async = require('async')
const ethUtil = require('ethereumjs-util')
const Transaction = require('ethereumjs-tx')
const normalize = require('eth-sig-util').normalize
@@ -10,24 +9,19 @@ its passed ethquery
and used to do things like calculate gas of a tx.
*/
-module.exports = class txProviderUtils {
-
+module.exports = class txProvideUtils {
constructor (ethQuery) {
this.query = ethQuery
}
- analyzeGasUsage (txMeta, cb) {
- var self = this
- this.query.getBlockByNumber('latest', true, (err, block) => {
- if (err) return cb(err)
- async.waterfall([
- self.estimateTxGas.bind(self, txMeta, block.gasLimit),
- self.setTxGas.bind(self, txMeta, block.gasLimit),
- ], cb)
- })
+ async analyzeGasUsage (txMeta) {
+ const block = await this.query.getBlockByNumber('latest', true)
+ const estimatedGasHex = await this.estimateTxGas(txMeta, block.gasLimit)
+ this.setTxGas(txMeta, block.gasLimit, estimatedGasHex)
+ return txMeta
}
- estimateTxGas (txMeta, blockGasLimitHex, cb) {
+ async estimateTxGas (txMeta, blockGasLimitHex) {
const txParams = txMeta.txParams
// check if gasLimit is already specified
txMeta.gasLimitSpecified = Boolean(txParams.gas)
@@ -38,10 +32,10 @@ module.exports = class txProviderUtils {
txParams.gas = bnToHex(saferGasLimitBN)
}
// run tx, see if it will OOG
- this.query.estimateGas(txParams, cb)
+ return this.query.estimateGas(txParams)
}
- setTxGas (txMeta, blockGasLimitHex, estimatedGasHex, cb) {
+ setTxGas (txMeta, blockGasLimitHex, estimatedGasHex) {
txMeta.estimatedGas = estimatedGasHex
const txParams = txMeta.txParams
@@ -49,14 +43,12 @@ module.exports = class txProviderUtils {
// use original specified amount
if (txMeta.gasLimitSpecified) {
txMeta.estimatedGas = txParams.gas
- cb()
return
}
// if gasLimit not originally specified,
// try adding an additional gas buffer to our estimation for safety
const recommendedGasHex = this.addGasBuffer(txMeta.estimatedGas, blockGasLimitHex)
txParams.gas = recommendedGasHex
- cb()
return
}
@@ -74,22 +66,6 @@ module.exports = class txProviderUtils {
return bnToHex(upperGasLimitBn)
}
- fillInTxParams (txParams, cb) {
- const fromAddress = txParams.from
- const reqs = {}
-
- if (isUndef(txParams.gas)) reqs.gas = (cb) => this.query.estimateGas(txParams, cb)
- if (isUndef(txParams.gasPrice)) reqs.gasPrice = (cb) => this.query.gasPrice(cb)
- if (isUndef(txParams.nonce)) reqs.nonce = (cb) => this.query.getTransactionCount(fromAddress, 'pending', cb)
-
- async.parallel(reqs, function (err, result) {
- if (err) return cb(err)
- // write results to txParams obj
- Object.assign(txParams, result)
- cb()
- })
- }
-
// builds ethTx from txParams object
buildEthTxFromParams (txParams) {
// normalize values
@@ -106,20 +82,13 @@ module.exports = class txProviderUtils {
return ethTx
}
- publishTransaction (rawTx) {
- return new Promise((resolve, reject) => {
- this.query.sendRawTransaction(rawTx, (err, ress) => {
- if (err) reject(err)
- else resolve(ress)
- })
- })
+ async publishTransaction (rawTx) {
+ return await this.query.sendRawTransaction(rawTx)
}
- validateTxParams (txParams, cb) {
+ async validateTxParams (txParams) {
if (('value' in txParams) && txParams.value.indexOf('-') === 0) {
- cb(new Error(`Invalid transaction value of ${txParams.value} not a positive number.`))
- } else {
- cb()
+ throw new Error(`Invalid transaction value of ${txParams.value} not a positive number.`)
}
}
@@ -137,10 +106,6 @@ module.exports = class txProviderUtils {
// util
-function isUndef (value) {
- return value === undefined
-}
-
function bnToHex (inputBn) {
return ethUtil.addHexPrefix(inputBn.toString(16))
}