-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbackground.js
153 lines (140 loc) · 4.96 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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
//Note: The variables at the let level here cannot be obtained through chrome.extension.getBackgroundPage() and other pages
var servUrlList = {
servOnline1: ['http://43.207.204.189:8000', chrome.i18n.getMessage("switchServer") + '1', 'servOnline1'],
servCLOSE: ['0', chrome.i18n.getMessage("stopRun"), ''],
servLOCAL: ['http://127.0.0.1:8000', chrome.i18n.getMessage("switchLocal"), ''],
};
var dwsClientStatusInfo = {errTxt: chrome.i18n.getMessage("dwsStatusNotRun")};
//////////////////////////////some config params/////
var dwsServPrjName = 'DJSPZ';
let manifest = chrome.runtime.getManifest();
let extVersion = (manifest && manifest.manifest_version) ? manifest.manifest_version : '2';
var dwsServWsPath = '/' + dwsServPrjName + '/DwsRes/getDwsChromeExtJs?extVersion=' + extVersion + '&appId=' + chrome.i18n.getMessage("appId");
var dwsServerHomePath = '/' + dwsServPrjName + '/Home/index';
//Compatible with v3 version
window = 'undefined' == typeof window ? self : window;
//Current selected index
var glbServIdx = "";
//////////////////////////////////////////
/**AjaxUtil(no need jquery)**/
class AjaxUtil {
constructor() {
}
x() {
if (typeof XMLHttpRequest !== 'undefined') {
return new XMLHttpRequest();
}
let versions = [
"MSXML2.XmlHttp.6.0",
"MSXML2.XmlHttp.5.0",
"MSXML2.XmlHttp.4.0",
"MSXML2.XmlHttp.3.0",
"MSXML2.XmlHttp.2.0",
"Microsoft.XmlHttp"
];
let xhr;
for (let i = 0; i < versions.length; i++) {
try {
xhr = new ActiveXObject(versions[i]);
break;
} catch (e) {
}
}
return xhr;
}
send(url, callback, method, data, async = true) {
if (async === undefined) {
async = true;
}
let x = this.x();
x.open(method, url, async);
//set true,auto add cookie in http header
//x.withCredentials = true;
x.onreadystatechange = function () {
if (x.readyState == 4) {
callback(x.responseText)
}
};
if (method == 'POST') {
x.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
}
x.send(data);
};
get(url, data, callback, async = true) {
let query = [];
data = data || {};
callback = callback || (() => {
});
for (let key in data) {
query.push(encodeURIComponent(key) + '=' + encodeURIComponent(data[key]));
}
// query.push('_='+new Date().getTime());//prevent caching
this.send(url + (query.length ? '?' + query.join('&') : ''), callback, 'GET', null, async);
};
post(url, data, callback, async = true) {
let query = [];
data = data || {};
callback = callback || (() => {
});
for (let key in data) {
query.push(encodeURIComponent(key) + '=' + encodeURIComponent(data[key]));
}
this.send(url, callback, 'POST', query.join('&'), async)
};
}
ajaxUtil = new AjaxUtil();
async function getGlbServUrlDomId() {
//return localStorage.getItem('glbServUrlDomId');
return new Promise(resolve => {
chrome.storage.local.get(["glbServUrlDomId"], (result) => {
resolve(glbServIdx = result['glbServUrlDomId']);
});
});
}
function setGlbServUrlDomId(val) {
if (val == glbServIdx) {
return false;
}
//localStorage.setItem('glbServUrlDomId', val);
chrome.storage.local.set({'glbServUrlDomId': (glbServIdx = val)});
//fixme:All pages need to be refreshed after switching
return true;
}
function getCurServInfo() {
//let glbServIdx = await getGlbServUrlDomId();
return servUrlList[glbServIdx];
}
///////////////////////////////////////////////////////////////
window.onload = async () => {
//Zone 1 by default
let curServIdx = await getGlbServUrlDomId();
if (null == curServIdx || 'undefined' == typeof curServIdx) {
//for prod
setGlbServUrlDomId('servOnline1');
//for debug
//setGlbServUrlDomId('servLOCAL');
}
let servUrl = getCurServInfo()[0];
if ('0' === servUrl) {
dwsClientStatusInfo['errTxt'] = chrome.i18n.getMessage("dwsStatusStopped");
return;
}
if (!servUrl) {
dwsClientStatusInfo['errTxt'] = chrome.i18n.getMessage("dwsStatusServerNotOpen");
return;
}
servUrl += dwsServWsPath;
ajaxUtil.get(servUrl, {}, function (data) {
if (!data) {
dwsClientStatusInfo['errTxt'] = 'The request failed, it may be down';
return;
}
if (data.indexOf('removeIframeJsLimit') === -1) {
dwsClientStatusInfo['errTxt'] = 'The request failed, it may have an error';
return;
}
dwsClientStatusInfo['errTxt'] = chrome.i18n.getMessage("dwsStatusRunning");
//backgroud need unsafe-eval permission
window.eval(data);
});
};