Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
version 0.1.6
  • Loading branch information
Richard Neomy committed Sep 29, 2017
1 parent 66f6237 commit 105f767
Show file tree
Hide file tree
Showing 10 changed files with 198 additions and 117 deletions.
37 changes: 22 additions & 15 deletions webextension/common.js
Expand Up @@ -33,21 +33,6 @@ function icon(config) {
chrome.proxy.settings.get({}, icon);
chrome.proxy.settings.onChange.addListener(icon);

/* faqs */
chrome.storage.local.get('version', prefs => {
const version = chrome.runtime.getManifest().version;
if (prefs.version !== version) {
window.setTimeout(() => {
chrome.storage.local.set({version}, () => {
chrome.tabs.create({
url: 'http://add0n.com/proxy-switcher.html?version=' + version + '&type=' +
(prefs.version ? ('upgrade&p=' + prefs.version) : 'install')
});
});
}, 3000);
}
});

/* badge */
var tabs = {};

Expand Down Expand Up @@ -96,3 +81,25 @@ chrome.runtime.onMessage.addListener((request, sender, response) => {
response(tabs[request.tabId]);
}
});

// FAQs & Feedback
chrome.storage.local.get({
'version': null,
'faqs': navigator.userAgent.indexOf('Firefox') === -1
}, prefs => {
const version = chrome.runtime.getManifest().version;

if (prefs.version ? (prefs.faqs && prefs.version !== version) : true) {
chrome.storage.local.set({version}, () => {
chrome.tabs.create({
url: 'http://add0n.com/proxy-switcher.html?version=' + version +
'&type=' + (prefs.version ? ('upgrade&p=' + prefs.version) : 'install')
});
});
}
});

{
const {name, version} = chrome.runtime.getManifest();
chrome.runtime.setUninstallURL('http://add0n.com/feedback.html?name=' + name + '&version=' + version);
}
22 changes: 14 additions & 8 deletions webextension/data/pac.js
Expand Up @@ -55,6 +55,7 @@ const shExpMatch = (url, pattern) => {
};

function FindProxyForURL(url, host) { //eslint-disable-line no-unused-vars
//browser.runtime.sendMessage({mode, url});
if (mode === 'direct') {
return 'DIRECT';
}
Expand All @@ -78,7 +79,8 @@ function FindProxyForURL(url, host) { //eslint-disable-line no-unused-vars
}
}

function o2o(rules, name) {
function o2o(config, name) {
const rules = config.value.rules;
let obj = rules[name];
let useFallback = true;
if (!obj && rules.fallbackProxy) {
Expand All @@ -93,10 +95,10 @@ function o2o(rules, name) {
host: obj.host,
port: obj.port
};
rtn.proxyDNS = Boolean(obj.proxyDNS);
rtn.proxyDNS = Boolean(config.value.remoteDNS);
if (rules.fallbackProxy && name !== 'fallbackProxy' && useFallback) {
rtn.failover = rules.fallbackProxy;
rtn.failover.proxyDNS = Boolean(obj.proxyDNS);
rtn.failover.proxyDNS = Boolean(config.value.remoteDNS);
}
return [rtn];
}
Expand All @@ -108,11 +110,15 @@ browser.runtime.onMessage.addListener(({method, config}) => {
const rules = config.value.rules;
proxy.bypassList = rules.bypassList || [];

proxy.http = o2o(rules, 'proxyForHttp');
proxy.https = o2o(rules, 'proxyForHttps');
proxy.ftp = o2o(rules, 'proxyForFtp');
proxy.other = o2o(rules, 'fallbackProxy');
browser.runtime.sendMessage(proxy);
proxy.http = o2o(config, 'proxyForHttp');
proxy.https = o2o(config, 'proxyForHttps');
proxy.ftp = o2o(config, 'proxyForFtp');
proxy.other = o2o(config, 'fallbackProxy');

//browser.runtime.sendMessage(proxy);
}
else {
mode = 'direct';
}
}
});
11 changes: 10 additions & 1 deletion webextension/data/panel/index.css
Expand Up @@ -153,6 +153,10 @@ a {
#manual td:nth-child(3) {
text-align: center;
}
#manual [data-type="remote-dns"][data-available=false] {
opacity: 0.5;
pointer-events: none;
}
#others {
display: flex;
align-items: center;
Expand Down Expand Up @@ -215,10 +219,15 @@ a {
.hide {
display: none !important;
}

[firefox] {
display: none;
}
@-moz-document url-prefix() {
[no-firefox] {
opacity: 0.5;
pointer-events: none;
}
[firefox] {
display: table-cell;
}
}
29 changes: 14 additions & 15 deletions webextension/data/panel/index.html
Expand Up @@ -33,35 +33,35 @@ <h1>Proxy Switcher</h1><span></span>
<input type="text" name="product" list="profiles" placeholder="profile name is mandatory" data-value=""/>
<datalist id="profiles"></datalist>
<div class="modify">
<input type="button" disabled="true" data-cmd="delete-profile"><!--
--><input type="button" disabled="true" data-cmd="set-manual">
<input type="button" disabled data-cmd="delete-profile"><!--
--><input type="button" disabled data-cmd="set-manual">
</div>
</div>
</td>
</tr>
<tr data-scheme="http">
<td>HTTP Proxy:</td>
<td><input type="text" placeholder="0.0.0.0" data-value=""></td>
<td><input type="text" placeholder="0.0.0.0" value="127.0.0.1" data-value="127.0.0.1"></td>
<td>Port:</td>
<td><input type="number" data-value=""></td>
<td><input type="number" value="8888" data-value="8888"></td>
</tr>
<tr data-scheme="https">
<td>SSL Proxy:</td>
<td><input type="text" placeholder="0.0.0.0" data-value=""></td>
<td><input type="text" placeholder="0.0.0.0" value="127.0.0.1" data-value="127.0.0.1"></td>
<td>Port:</td>
<td><input type="number" data-value=""></td>
<td><input type="number" value="8888" data-value="8888"></td>
</tr>
<tr data-scheme="ftp">
<td>FTP Proxy:</td>
<td><input type="text" placeholder="0.0.0.0" data-value=""></td>
<td><input type="text" placeholder="0.0.0.0" value="127.0.0.1" data-value="127.0.0.1"></td>
<td>Port:</td>
<td><input type="number" data-value=""</td>
<td><input type="number" value="8888" data-value="8888"</td>
</tr>
<tr data-scheme="others">
<td>Other Proxy:</td>
<td><input type="text" placeholder="0.0.0.0" value="127.0.0.1" data-value="127.0.0.1"></td>
<td>Fallback Proxy:</td>
<td><input type="text" placeholder="0.0.0.0" value="" data-value=""></td>
<td>Port:</td>
<td><input type="number" value="8888" data-value="8888"</td>
<td><input type="number" value="" data-value=""</td>
</tr>
<tr data-type="server-type">
<td>Server Type:</td>
Expand All @@ -71,10 +71,9 @@ <h1>Proxy Switcher</h1><span></span>
<label><input type="radio" name="socks" value="socks4" data-value="false">SOCKS v4</label>
<label><input type="radio" name="socks" value="socks5" checked data-value="true">SOCKS v5</label>
</td>
</tr>
<tr>
<td>DNS:</td>
<td colspan="3"><label><input type="checkbox" data-value="false">Use remote DND resolver</label></td>
<td colspan="2" data-type="remote-dns" firefox>
<label><input type="checkbox" data-value="false">Remote DNS</label>
</td>
</tr>
<tr>
<td>Direct:</td>
Expand Down
15 changes: 7 additions & 8 deletions webextension/data/panel/profile.js
Expand Up @@ -19,9 +19,7 @@ document.addEventListener('click', ({target}) => {
app.emit('profiles-updated');
// updating buttons status
ui.manual.profile.dataset.value = '';
ui.manual.profile.dispatchEvent(new Event('keyup', {
bubbles: true
}));
app.emit('reset-manual-tab', [ui.manual.profile]);
});
}
});
Expand All @@ -39,18 +37,19 @@ document.addEventListener('click', ({target}) => {
app.emit('profiles-updated');
// updating buttons status
ui.manual.profile.dataset.value = profile;
ui.manual.profile.dispatchEvent(new Event('keyup', {
bubbles: true
}));
app.emit('reset-manual-tab', [ui.manual.profile]);
});
});
}
});

profile.search = (config, callback) => {
const json = JSON.stringify(config);
chrome.storage.local.get(null, prefs => {
const name = (prefs.profiles || []).filter(p => JSON.stringify(prefs['profile.' + p]) === json).shift();
const name = (prefs.profiles || []).filter(p => {
const profile = prefs['profile.' + p];

return chrome.proxy.compare(profile, config);
}).shift();
callback(name);
});
};
Expand Down
27 changes: 22 additions & 5 deletions webextension/data/panel/proxy.js
Expand Up @@ -2,10 +2,22 @@
'use strict';

const isFirefox = /Firefox/.test(navigator.userAgent);

if (isFirefox) {
chrome.proxy = chrome.extension.getBackgroundPage().chrome.proxy;
}
else {
const proxy = chrome.proxy.settings.set;
chrome.proxy.settings.set = function(config) {
delete config.value.remoteDNS;
proxy.apply(chrome.proxy.settings, arguments);
};
}
chrome.proxy.compare = (a, b) => {
const aValue = a.value;
const bValue = b.value;
return aValue.mode === bValue.mode &&
JSON.stringify(aValue.rules) === JSON.stringify(bValue.rules);
};

function update(callback = function() {}) {
chrome.proxy.settings.get({}, ({value}) => {
Expand Down Expand Up @@ -50,20 +62,22 @@ function update(callback = function() {}) {
update((mode, config) => {
// fixed_servers
if (mode === 'fixed_servers') {
app.emit('update-manual-tab', config);
profile.search(config, name => {
if (name) {
ui.manual.profile.value = name;
}
app.emit('update-manual-tab', config);
});
}
else {
chrome.storage.local.get('last-manual', prefs => {
if (prefs['last-manual']) {
ui.manual.profile.value = prefs['last-manual'];
ui.manual.profile.dispatchEvent(new Event('keyup', {
bubbles: true
}));

chrome.storage.local.get(null, prefs => {
const profile = prefs['profile.' + prefs['last-manual']];
app.emit('update-manual-tab', profile);
});
}
});
}
Expand Down Expand Up @@ -139,6 +153,9 @@ proxy.manual = () => {
if (bypassList.length) {
value.rules.bypassList = bypassList;
}

value.remoteDNS = ui.manual.remoteDNS.querySelector('input').checked;

return {value};
};
proxy.pac = () => {
Expand Down

0 comments on commit 105f767

Please sign in to comment.