mirror of
https://github.com/kremalicious/metamask-extension.git
synced 2024-11-23 18:41:38 +01:00
ac1b756bd0
We don't always know for sure that sites marked as phishers are defiitely scams, and so we should avoid language that makes concrete accusations.
60 lines
2.1 KiB
JavaScript
60 lines
2.1 KiB
JavaScript
window.onload = function () {
|
|
if (window.location.pathname === '/phishing.html') {
|
|
const {hostname} = parseHash()
|
|
document.getElementById('esdbLink').innerHTML = '<b>To read more about this site and why it was blocked, navigate to: <a href="https://etherscamdb.info/domain/' + hostname + '"> https://etherscamdb.info/domain/' + hostname + '</a></b>'
|
|
}
|
|
}
|
|
|
|
const querystring = require('querystring')
|
|
const dnode = require('dnode')
|
|
const { EventEmitter } = require('events')
|
|
const PortStream = require('extension-port-stream')
|
|
const extension = require('extensionizer')
|
|
const setupMultiplex = require('./lib/stream-utils.js').setupMultiplex
|
|
const { getEnvironmentType } = require('./lib/util')
|
|
const ExtensionPlatform = require('./platforms/extension')
|
|
|
|
document.addEventListener('DOMContentLoaded', start)
|
|
|
|
function start () {
|
|
const windowType = getEnvironmentType(window.location.href)
|
|
|
|
global.platform = new ExtensionPlatform()
|
|
global.METAMASK_UI_TYPE = windowType
|
|
|
|
const extensionPort = extension.runtime.connect({ name: windowType })
|
|
const connectionStream = new PortStream(extensionPort)
|
|
const mx = setupMultiplex(connectionStream)
|
|
setupControllerConnection(mx.createStream('controller'), (err, metaMaskController) => {
|
|
if (err) {
|
|
return
|
|
}
|
|
|
|
const suspect = parseHash()
|
|
const unsafeContinue = () => {
|
|
window.location.href = suspect.href
|
|
}
|
|
const continueLink = document.getElementById('unsafe-continue')
|
|
continueLink.addEventListener('click', () => {
|
|
metaMaskController.whitelistPhishingDomain(suspect.hostname)
|
|
unsafeContinue()
|
|
})
|
|
})
|
|
}
|
|
|
|
function setupControllerConnection (connectionStream, cb) {
|
|
const eventEmitter = new EventEmitter()
|
|
const accountManagerDnode = dnode({
|
|
sendUpdate (state) {
|
|
eventEmitter.emit('update', state)
|
|
},
|
|
})
|
|
connectionStream.pipe(accountManagerDnode).pipe(connectionStream)
|
|
accountManagerDnode.once('remote', (accountManager) => cb(null, accountManager))
|
|
}
|
|
|
|
function parseHash () {
|
|
const hash = window.location.hash.substring(1)
|
|
return querystring.parse(hash)
|
|
}
|