Fix notifications for a naked ip as proxy, fix snail position, amend pac kitchen

This commit is contained in:
Ilya Ig. Petrov 2017-04-01 18:01:42 +00:00
parent 87b78e0896
commit 76cf8fcd35
3 changed files with 51 additions and 26 deletions

View File

@ -35,6 +35,7 @@
}, },
ifProxyOrDie: { ifProxyOrDie: {
dflt: true, dflt: true,
ifDfltMods: true,
label: 'проксируй или умри!', label: 'проксируй или умри!',
desc: 'Запрещает соединение с сайтами напрямую без прокси в случаях, когда все прокси отказывают. Например, если все ВАШИ прокси вдруг недоступны, то добавленные вручную сайты открываться не будут совсем.', desc: 'Запрещает соединение с сайтами напрямую без прокси в случаях, когда все прокси отказывают. Например, если все ВАШИ прокси вдруг недоступны, то добавленные вручную сайты открываться не будут совсем.',
index: 3, index: 3,
@ -109,17 +110,23 @@
const createPacModifiers = function createPacModifiers(mods = {}) { const createPacModifiers = function createPacModifiers(mods = {}) {
const defaults = getDefaults(); mods = mods || {}; // null?
const ifAllDefaults = Object.keys(defaults) const ifNoMods = Object.keys(configs)
.every( .every((dProp) => {
(dProp) => !(dProp in mods)
|| Boolean(defaults[dProp]) === Boolean(mods[dProp]) const ifDflt = (
); !(dProp in mods) ||
Boolean(configs[dProp].dflt) === Boolean(mods[dProp])
);
const ifMods = configs[dProp].ifDfltMods;
return ifDflt ? !ifMods : ifMods;
});
console.log('Input mods:', mods); console.log('Input mods:', mods);
const self = {}; const self = {};
Object.assign(self, defaults, mods); Object.assign(self, getDefaults(), mods);
self.ifNoMods = ifAllDefaults ? true : false; self.ifNoMods = ifNoMods;
let customProxyArray = []; let customProxyArray = [];
if (self.customProxyStringRaw) { if (self.customProxyStringRaw) {
@ -136,6 +143,7 @@
customProxyArray.push('SOCKS5 localhost:9050', 'SOCKS5 localhost:9150'); customProxyArray.push('SOCKS5 localhost:9050', 'SOCKS5 localhost:9150');
} }
self.filteredCustomsString = '';
if (customProxyArray.length) { if (customProxyArray.length) {
self.customProxyArray = customProxyArray; self.customProxyArray = customProxyArray;
self.filteredCustomsString = customProxyArray.join('; '); self.filteredCustomsString = customProxyArray.join('; ');
@ -144,7 +152,6 @@
return [new TypeError('Нет ни одного прокси, удовлетворяющего вашим требованиям!')]; return [new TypeError('Нет ни одного прокси, удовлетворяющего вашим требованиям!')];
} }
self.customProxyArray = false; self.customProxyArray = false;
self.filteredCustomsString = '';
} }
self.included = self.excluded = undefined; self.included = self.excluded = undefined;
@ -210,7 +217,7 @@
const ifExcluded = pacMods.excluded && pacMods.excluded.length; const ifExcluded = pacMods.excluded && pacMods.excluded.length;
const ifExceptions = ifIncluded || ifExcluded; const ifExceptions = ifIncluded || ifExcluded;
if (ifExceptions) { if (ifExceptions && pacMods.filteredCustomsString) {
res += ` res += `
/* EXCEPTIONS START */ /* EXCEPTIONS START */
const dotHost = '.' + host; const dotHost = '.' + host;
@ -251,7 +258,7 @@
pacMods.ifUsePacScriptProxies pacMods.ifUsePacScriptProxies
) { ) {
return res + ` return res + `
return pacProxyString;`; return pacProxyString;`;
} }
return res + ` return res + `

View File

@ -474,6 +474,9 @@
}); });
console.log('Keep cooked...');
await new Promise((resolve) => window.apis.pacKitchen.keepCookedNowAsync(resolve));
console.log('Storage on init:', oldStorage); console.log('Storage on init:', oldStorage);
antiCensorRu.ifFirstInstall = Object.keys(oldStorage).length === 0; antiCensorRu.ifFirstInstall = Object.keys(oldStorage).length === 0;
@ -534,14 +537,12 @@
} }
} }
antiCensorRu.pushToStorageAsync(() => antiCensorRu.pushToStorageAsync(() => {
window.apis.pacKitchen.keepCookedNowAsync(() => {
console.log('Extension updated.'); console.log('Extension updated.');
resolve(); resolve();
}) });
);
}); });

View File

@ -227,20 +227,38 @@
_addAsync(hostStr, cb = mandatory()) { _addAsync(hostStr, cb = mandatory()) {
getIpsFor(hostStr, (err, ips, ...warns) => { new Promise((resolveIps, reject) => {
const ipm = _test.ipv4v6(hostStr);
if (ipm.ifMatched) {
return resolveIps([hostStr]);
}
getIpsFor(hostStr, (err, ips, ...warns) => {
console.log('Got IPs + err?:', ips, err);
if (!err) {
resolveIps(ips);
} else {
reject([err, null, ...warns]);
}
});
}).then(
(ips) => {
console.log('Got IPs + err?:', ips, err);
if (!err) {
this._purgeOldIpsForSync(hostStr); this._purgeOldIpsForSync(hostStr);
// Object may be shared, string can't. // Object may be shared, string can't.
const hostObj = _getHostObj(hostStr); const hostObj = _getHostObj(hostStr);
for(const ip of ips) { for(const ip of ips) {
privates._ipToHostObj[ip] = hostObj; privates._ipToHostObj[ip] = hostObj;
} }
} cb();
return cb(err, null, ...warns);
}); },
(args) => cb(...args)
);
}, },
@ -317,15 +335,14 @@
replaceAllAsync(addrArr, cb = mandatory()) { replaceAllAsync(addrArr, cb = mandatory()) {
console.log('Replacing...'); console.log('Replacing...', addrArr);
const [ipSet, hostSet] = _canonize(addrArr); const [ipSet, hostSet] = _canonize(addrArr);
for( const ip of ipSet ) { for( const ip of ipSet ) {
const host = _getHostObj(ip); const host = _getHostObj(ip);
privates._ipToHostObj[ip] = host; privates._ipToHostObj[ip] = host;
} }
const hostArr = Array.from(hostSet); this._replaceAllAsync([...ipSet, ...hostSet], (allErr, ...args) => {
this._replaceAllAsync(hostArr, (allErr, ...args) => {
if (!allErr) { if (!allErr) {
this.persistData(); this.persistData();