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
|
<html>
<head>
<style>
body {
font-family: sans-serif;
margin: 0;
width: 200px;
height: 110px;
}
</style>
<script>
window.onload = function() {
chrome.proxy.settings.get({ incognito: false }, function(config) {
var googleList = ["*.google.com", "google.com", "googleusercontent.com", "*.googleusercontent.com", "*.gstatic.com", "gstatic.com"];
var bypassList = [];
var lastSetFunction = function() { };
var inputs = document.getElementsByTagName("input");
var setPreset = false;
var parseUrl = function(url) {
return { scheme: url.substring(0, url.indexOf(":")), host: url.substring(url.lastIndexOf("/") + 1, url.lastIndexOf(":")), port: parseInt(url.substring(url.lastIndexOf(":") + 1)) };
};
var parseObject = function(obj) {
return obj.scheme + "://" + obj.host + ":" + obj.port;
};
var closePopup = function() {
window.close();
};
for (var i = 0; i < inputs.length; ++i) {
if (inputs[i].name == "google") (function(self) {
self.onclick = function() {
bypassList = self.checked ? googleList : [];
lastSetFunction.call(self);
};
if (config.value.rules.bypassList.length > 0) {
self.checked = true;
bypassList = googleList;
}
})(inputs[i]);
else if (inputs[i].value == "system") (function(self) {
var setIt = function() {
chrome.proxy.settings.set({ value: { mode: "system" }, scope: "regular" }, closePopup);
lastSetFunction = setIt;
};
self.onclick = setIt;
if (config.value.mode == "system") {
self.checked = true;
lastSetFunction = setIt;
}
})(inputs[i]);
else if (inputs[i].value == "direct") (function(self) {
var setIt = function() {
chrome.proxy.settings.set({ value: { mode: "direct" }, scope: "regular" }, closePopup);
lastSetFunction = setIt;
};
self.onclick = setIt;
if (config.value.mode == "direct") {
self.checked = true;
lastSetFunction = setIt;
}
})(inputs[i]);
else if (inputs[i].value == "other") (function(self) {
var other = document.getElementById("other");
var setIt = function() {
chrome.proxy.settings.set({ value: { mode: "fixed_servers", rules:
{ singleProxy: parseUrl(other.value), bypassList: bypassList } },
scope: "regular" }, closePopup);
lastSetFunction = setIt;
};
other.onblur = setIt;
window.onunload = function() {
if (self.checked)
setIt.call(self);
};
other.onkeypress = function() {
self.checked = true;
};
if (!setPreset && config.value.mode == "fixed_servers" && typeof config.value.rules.singleProxy != "undefined") {
other.value = parseObject(config.value.rules.singleProxy);
self.checked = true;
lastSetFunction = setIt;
}
})(inputs[i]);
else (function(self) {
var setIt = function() {
chrome.proxy.settings.set({ value: { mode: "fixed_servers", rules:
{ singleProxy: parseUrl(self.value), bypassList: bypassList } },
scope: "regular" }, closePopup);
lastSetFunction = setIt;
};
self.onclick = setIt;
if (config.value.mode == "fixed_servers" && typeof config.value.rules.singleProxy != "undefined" && self.value == parseObject(config.value.rules.singleProxy)) {
self.checked = true;
setPreset = true;
lastSetFunction = setIt;
}
})(inputs[i]);
}
});
};
</script>
</head>
<body>
<label><input type="radio" name="proxy" value="socks5://localhost:1080" />socks5://localhost:1080</label><br />
<label><input type="radio" name="proxy" value="socks5://localhost:9050" />socks5://localhost:9050</label><br />
<label><input type="radio" name="proxy" value="http://localhost:8080" />http://localhost:8080</label><br />
<label><input type="radio" name="proxy" value="other" /><input id="other" /></label><br />
<label><input type="radio" name="proxy" value="system" />system</label><br />
<label><input type="radio" name="proxy" value="direct" />direct</label><br />
<label><input type="checkbox" name="google" />exclude google</label>
</body>
</html>
|