Merge branch 'development' into production

This commit is contained in:
Ilya Ig. Petrov 2018-05-09 19:40:05 +05:00
commit 03a113119b
15 changed files with 1413 additions and 1172 deletions

View File

@ -1,5 +1,8 @@
# Install # Install
Nodejs 10 and gulp have [issues](https://github.com/nodejs/node/issues/20285),
use nodejs 8 instead for a while.
``` ```
npm install npm install
cd src/extension-common/pages/options/ cd src/extension-common/pages/options/

View File

@ -1 +1 @@
grep -r "$@" ./src --exclude-dir=vendor --exclude-dir=node_modules --exclude-dir=dist grep -r "$@" ./*.js ./src --exclude-dir=vendor --exclude-dir=node_modules --exclude-dir=dist

File diff suppressed because it is too large Load Diff

View File

@ -14,13 +14,13 @@
"author": "Ilya Ig. Petrov", "author": "Ilya Ig. Petrov",
"license": "GPLv3", "license": "GPLv3",
"devDependencies": { "devDependencies": {
"symlink-to": "^0.0.4",
"chai": "^3.5.0", "chai": "^3.5.0",
"eslint": "^3.15.0", "eslint": "^3.15.0",
"eslint-config-google": "^0.7.1", "eslint-config-google": "^0.7.1",
"gulp-changed": "^3.1.0", "gulp-changed": "^3.2.0",
"mocha": "^3.3.0", "mocha": "^3.5.3",
"sinon-chrome": "^2.2.1" "sinon-chrome": "^2.3.1",
"symlink-to": "^0.0.4"
}, },
"dependencies": { "dependencies": {
"del": "^2.2.2", "del": "^2.2.2",

View File

@ -181,7 +181,7 @@
searchSettingsForUrl(niddle) { searchSettingsForUrl(niddle) {
return 'chrome://settings/search#' + (chrome.i18n.getMessage(niddle) || niddle); return 'chrome://settings/?search=' + (chrome.i18n.getMessage(niddle) || niddle);
}, },

View File

@ -109,40 +109,23 @@
const warnings = []; const warnings = [];
const originalCb = cb; const originalCb = cb;
cb = (...args) => originalCb(...args, ...warnings); cb = (err, res, ...warns) => originalCb(err, res, ...warns, ...warnings);
const addWarning = (wText) => { warnings.push(new Warning(wText)) }; const addWarning = (wText) => { warnings.push(new Warning(wText)) };
// TODO: dirty hack (labels should be UI related only) if (provider.distinctKey === 'Anticensority') {
if (provider.label === 'Антицензорити') {
const azUrl = window.apis.antiCensorRu.pacProviders['Антизапрет'].pacUrls[0]; const pacMods = window.apis.pacKitchen.getPacMods();
console.log('HEADing antizapret...'); if (!pacMods.filteredCustomsString) {
let headError = null; addWarning(
const numberOfTries = 2; \`
let i = 0; Не найдено СВОИХ прокси. Этот PAC-скрипт
while (i++ < numberOfTries) { <a href="https://github.com/anticensority/runet-censorship-bypass/issues/10#issuecomment-387436191">теперь</a>
await new Promise((resolve) => работает только со <a href="https://rebrand.ly/ac-own-proxy">СВОИМИ прокси</a>
httpLib.head(azUrl, (err) => { (по умолчанию используется локальный <a href="https://rebrand.ly/ac-tor">TOR</a> и прокси "Антизапрет", для их отключения: Свои прокси -> откл. "Использовать прокси PAC-скрипта").
headError = err; \`,
if (!headError) {
i = numberOfTries;
}
resolve();
})
); );
} }
if (headError) {
const errText = \`\${azUrl} недоступен!
<a href="https://rebrand.ly/ac-contact">Сообщите нам</a>, если повторяется!\`;
console.log(errText);
//addWarning(errText); // Uncomment when needed.
/* Do nothing for now like it's not critical. Otherwise uncomment.
clarifyThen(
errText,
cb,
)(headError);
return;
*/
}
} }
httpLib.ifModifiedSince(pacUrl, lastModifiedStr, (err, newLastModifiedStr) => { httpLib.ifModifiedSince(pacUrl, lastModifiedStr, (err, newLastModifiedStr) => {
@ -192,7 +175,7 @@
'Не удалось скачать PAC-скрипт с адресов: [ ' 'Не удалось скачать PAC-скрипт с адресов: [ '
+ provider.pacUrls.join(' , ') + ' ].', + provider.pacUrls.join(' , ') + ' ].',
cb, cb,
) ),
); );
@ -206,6 +189,9 @@
pacProviders: { pacProviders: {
Антизапрет: { Антизапрет: {
// Distinct keys are needed if you want to check if a given
// provider is this or that (distinct it from others).
distinctKey: 'Antizapret',
label: 'Антизапрет', label: 'Антизапрет',
desc: \`Альтернативный PAC-скрипт от стороннего разработчика. desc: \`Альтернативный PAC-скрипт от стороннего разработчика.
Охватывет меньше сайтов. Охватывет меньше сайтов.
@ -215,6 +201,7 @@
pacUrls: ['https://antizapret.prostovpn.org/proxy.pac'], pacUrls: ['https://antizapret.prostovpn.org/proxy.pac'],
}, },
Антицензорити: { Антицензорити: {
distinctKey: 'Anticensority',
label: 'Антицензорити', label: 'Антицензорити',
desc: \`Основной PAC-скрипт от автора расширения. desc: \`Основной PAC-скрипт от автора расширения.
Охватывает больше сайтов. Охватывает больше сайтов.
@ -230,6 +217,7 @@
pacUrls: ${JSON.stringify(anticensorityPacUrls, null, 2)}, pacUrls: ${JSON.stringify(anticensorityPacUrls, null, 2)},
}, },
onlyOwnSites: { onlyOwnSites: {
distinctKey: 'onlyOwnSites',
label: 'Только свои сайты и свои прокси', label: 'Только свои сайты и свои прокси',
desc: 'Проксируются только добавленные вручную сайты через СВОИ вручную добавленные прокси или через локальный Tor.', desc: 'Проксируются только добавленные вручную сайты через СВОИ вручную добавленные прокси или через локальный Tor.',
order: 99, order: 99,
@ -245,7 +233,7 @@
}, },
_currentPacProviderKey: 'Антицензорити', _currentPacProviderKey: 'Антизапрет',
/* Is it the first time extension installed? /* Is it the first time extension installed?
Do something, e.g. initiate PAC sync. Do something, e.g. initiate PAC sync.
@ -585,8 +573,45 @@
} }
} }
if (window.apis.version.isLeq(oldStorage.version, '0.0.1.23')) {
console.log('Switch to Antizapret automatically, only from Anitcensority without own proxies.');
const provKey = antiCensorRu.getCurrentPacProviderKey();
if (provKey !== 'Антицензорити') {
console.log('Current provider', provKey, '!== Anticensority');
return; // Not Anticensority.
}
const pacMods = window.apis.pacKitchen.getPacMods();
if (pacMods.filteredCustomsString) {
console.log('Proxies found:', pacMods.filteredCustomsString);
return; // Own proxies or Tor are used.
}
antiCensorRu.setCurrentPacProviderKey('Антизапрет');
await new Promise((resolveSwitch) =>
antiCensorRu.syncWithPacProviderAsync((err, res, warns) => {
if (warns) {
console.log(warns);
}
if (err) {
console.log(
'Ungraceful update from 1.23: couldn\\'t fetch Antizapret:',
);
console.error(err);
} else {
console.log('Update from 1.23 applied successfully.');
}
resolveSwitch();
}),
);
}
} catch (e) { } catch (e) {
// Swallow update error. // Log update error.
console.log('UPDATE ERROR:');
console.error(e);
} }
ifUpdatedCb(); ifUpdatedCb();

View File

@ -16,7 +16,7 @@ Use only if really required because of performance penalty.
const location = ln.href; const location = ln.href;
ln.onclick = function() { ln.onclick = function() {
chrome.tabs.create({active: !this.dataset.inBg, url: location}); chrome.tabs.create({active: this.dataset.inBg === "false", url: location});
return false; return false;
}; };

View File

@ -5,16 +5,16 @@
"license": "MIT", "license": "MIT",
"devDependencies": { "devDependencies": {
"babel-cli": "^6.24.1", "babel-cli": "^6.24.1",
"babel-loader": "^7.0.0", "babel-loader": "^7.1.4",
"babel-plugin-dynamic-import-webpack": "^1.0.1", "babel-plugin-dynamic-import-webpack": "^1.0.2",
"babel-preset-flow": "^6.23.0", "babel-preset-flow": "^6.23.0",
"babel-preset-react": "^6.24.1", "babel-preset-react": "^6.24.1",
"concat-stream": "^1.6.0", "concat-stream": "^1.6.2",
"csjs-inject": "^1.0.1", "csjs-inject": "^1.0.1",
"flow-bin": "^0.45.0", "flow-bin": "^0.45.0",
"inferno": "~3.2.0", "inferno": "~3.2.0",
"inferno-component": "^3.1.2", "inferno-component": "^3.10.1",
"inferno-create-element": "^3.1.2", "inferno-create-element": "^3.10.1",
"webpack": "^2.5.1" "webpack": "^2.5.1"
}, },
"scripts": { "scripts": {
@ -27,6 +27,6 @@
"start": "cd .. && npm start" "start": "cd .. && npm start"
}, },
"dependencies": { "dependencies": {
"babel-plugin-inferno": "^3.2.0" "babel-plugin-inferno": "^3.5.1"
} }
} }

View File

@ -67,7 +67,7 @@ export default function getExceptions(theState) {
<InfoLi <InfoLi
type="checkbox" type="checkbox"
conf={{ conf={{
label: '<span>Собирать <a href="../errors-to-exc/index.html">последние ошибки</a> сайтов</span>', label: '<span>Собирать <a data-in-bg="false" href="../errors-to-exc/index.html">последние ошибки</a> сайтов</span>',
key: 'lookupLastErrors', key: 'lookupLastErrors',
desc: 'Собирать последние ошибки в запросах, чтобы вручную добавлять избранные из них в исключения.', desc: 'Собирать последние ошибки в запросах, чтобы вручную добавлять избранные из них в исключения.',
}} }}

View File

@ -27,7 +27,7 @@ export default function getFooter() {
<footer class={scopedCss.controlRow + ' horFlex nowrap'}> <footer class={scopedCss.controlRow + ' horFlex nowrap'}>
<input type="button" value="Готово" disabled={props.ifInputsDisabled} onClick={() => window.close()} /> <input type="button" value="Готово" disabled={props.ifInputsDisabled} onClick={() => window.close()} />
<a href="../troubleshoot/index.html"> <a data-in-bg="false" href="../troubleshoot/index.html">
Проблемы? Проблемы?
</a> </a>
</footer> </footer>

View File

@ -12,7 +12,12 @@ export default function append(document, { flags }) {
--cr-icon-selected: #d7d7d7; --cr-icon-selected: #d7d7d7;
--cr-popup-border: #bababa; --cr-popup-border: #bababa;
--cr-grey-panel: #f2f2f2; --cr-grey-panel: #f2f2f2;
${ flags.ifInsideOptionsPage ? '' : 'max-width: 24em;' } ${ flags.ifInsideOptionsPage
// Without this prop on the next line
// options page width may be jerking
// in size when scrolling is showed.
? 'width: 20em'
: 'max-width: 24em;' }
} }
/* BASE ELEMENTS */ /* BASE ELEMENTS */

View File

@ -7,15 +7,15 @@
<body> <body>
<h1>Устранение проблем</h1> <h1>Устранение проблем</h1>
<ol> <ol>
<li><a href id="view-errors">Детали последних ошибок</a></li> <li><a data-in-bg="false" href id="view-errors">Детали последних ошибок</a></li>
<li><a href id="reset-settings">Сбросить настройки</a></li> <li><a data-in-bg="false" href id="reset-settings">Сбросить настройки</a></li>
<li><a href="https://rebrand.ly/ac-support" target="_blank">Файл самопомощи</a></li> <li><a data-in-bg="false" href="https://rebrand.ly/ac-support" target="_blank">Файл самопомощи</a></li>
<li><a href="https://rebrand.ly/ac-contact">Напишите нам!</a></li> <li><a data-in-bg="false" href="https://rebrand.ly/ac-contact">Напишите нам!</a></li>
</ol> </ol>
<h2>Для продвинутых</h2> <h2>Для продвинутых</h2>
<ol> <ol>
<li><a href="https://rebrand.ly/ac-logs">Как прочитать логи?</a></li> <li><a data-in-bg="false" href="https://rebrand.ly/ac-logs">Как прочитать логи?</a></li>
<li><a href="../debug/index.html">Отладка PAC-скрипта</a></li> <li><a data-in-bg="false" href="../debug/index.html">Отладка PAC-скрипта</a></li>
</ol> </ol>
<script src="./index.js"></script> <script src="./index.js"></script>
<script src="../lib/keep-links-clickable.js"></script> <script src="../lib/keep-links-clickable.js"></script>

View File

@ -80,6 +80,7 @@
privates._strToHostObj = { privates._strToHostObj = {
[_antizapret.host]: _antizapret, [_antizapret.host]: _antizapret,
[proxyForRanges]: { host: proxyForRanges }, [proxyForRanges]: { host: proxyForRanges },
['localhost']: { host: 'localhost' },
}; };
privates._ipToHostObj = {}; privates._ipToHostObj = {};

View File

@ -7,12 +7,10 @@ const pacUrls = [
'\x68\x74\x74\x70\x73\x3a\x2f\x2f\x72\x61\x77\x2e\x67\x69\x74\x68\x75\x62\x75\x73\x65\x72\x63\x6f\x6e\x74\x65\x6e\x74\x2e\x63\x6f\x6d\x2f\x61\x6e\x74\x69\x63\x65\x6e\x73\x6f\x72\x69\x74\x79\x2f\x67\x65\x6e\x65\x72\x61\x74\x65\x64\x2d\x70\x61\x63\x2d\x73\x63\x72\x69\x70\x74\x73\x2f\x6d\x61\x73\x74\x65\x72\x2f\x61\x6e\x74\x69\x63\x65\x6e\x73\x6f\x72\x69\x74\x79\x2e\x70\x61\x63', '\x68\x74\x74\x70\x73\x3a\x2f\x2f\x72\x61\x77\x2e\x67\x69\x74\x68\x75\x62\x75\x73\x65\x72\x63\x6f\x6e\x74\x65\x6e\x74\x2e\x63\x6f\x6d\x2f\x61\x6e\x74\x69\x63\x65\x6e\x73\x6f\x72\x69\x74\x79\x2f\x67\x65\x6e\x65\x72\x61\x74\x65\x64\x2d\x70\x61\x63\x2d\x73\x63\x72\x69\x70\x74\x73\x2f\x6d\x61\x73\x74\x65\x72\x2f\x61\x6e\x74\x69\x63\x65\x6e\x73\x6f\x72\x69\x74\x79\x2e\x70\x61\x63',
// First official, shortened, not cached: // First official, shortened, not cached:
'https://rebrand.ly/ac-chrome-anticensority-pac', 'https://rebrand.ly/ac-chrome-anticensority-pac',
// Old, deprecated:
'https://anticensorship-russia.tk/generated-pac-scripts/anticensority.pac',
]; ];
const commonContext = { const commonContext = {
version: '1.23', version: '1.24',
anticensorityPacUrls: [ anticensorityPacUrls: [
...pacUrls, ...pacUrls,
], ],
@ -57,8 +55,9 @@ exports.contexts.firefox = Object.assign({}, commonContext, {
exports.contexts.beta = Object.assign({}, commonContext, { exports.contexts.beta = Object.assign({}, commonContext, {
anticensorityPacUrls: [ anticensorityPacUrls: [
'https://raw.githubusercontent.com/anticensority/for-testing/master/anticensority.pac',
'https://anticensority.github.io/for-testing/anticensority.pac',
'https://rebrand.ly/ac-beta-pac', 'https://rebrand.ly/ac-beta-pac',
...pacUrls,
], ],
version: '1.14', version: '1.14',
versionSuffix: '', versionSuffix: '',