forked from jialongl/WebsiteIP
-
Notifications
You must be signed in to change notification settings - Fork 4
/
background.js
57 lines (54 loc) · 1.37 KB
/
background.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
var chrome = window.chrome;
// Extract domain name (DN) from URL
function url2dn(url) {
var tmpa = document.createElement('a');
tmpa.href = url;
return tmpa.host;
}
// get IP using webRequest
var currentIPList = {};
chrome.webRequest.onCompleted.addListener(
function(info) {
// summary:
// retieve IP
currentIPList[url2dn(info.url)] = info.ip;
},
{
urls: [],
types: []
},
[]
);
// Listeners
chrome.extension.onMessage.addListener(
function(request, sender, sendResponse) {
switch(request.name) {
case 'setEnabled':
// request from the content script to set the options.
localStorage.setItem('websiteIPEnabled', request.status ? 'true' : 'false');
break;
case 'isEnabled':
// request from the content script to get the options.
sendResponse(localStorage.getItem('websiteIPEnabled') === 'true' || localStorage.getItem('websiteIPEnabled') === null);
break;
case 'getIP':
sendResponse({
ip: currentIPList[url2dn(sender.tab.url)] || null
});
break;
case 'copyIP':
chrome.tabs.getSelected(null, function(tab) {
var input = document.createElement('input');
document.body.appendChild(input);
input.value = currentIPList[url2dn(tab.url)] || chrome.i18n.getMessage('notFound');
input.focus();
input.select();
document.execCommand('Copy');
input.remove();
});
break;
default:
sendResponse({});
}
}
);