mirror of
https://github.com/anticensority/runet-censorship-bypass.git
synced 2024-11-24 02:13:43 +03:00
Merge branch 'development' into production
This commit is contained in:
commit
4e736bf403
|
@ -29,6 +29,8 @@
|
|||
|
||||
{ // Private namespace starts.
|
||||
|
||||
const ifRu = chrome.i18n.getMessage('@@ui_locale').startsWith('ru');
|
||||
console.log('Russian?', ifRu);
|
||||
const mandatory = window.utils.mandatory;
|
||||
const throwIfError = window.utils.throwIfError;
|
||||
const chromified = window.utils.chromified;
|
||||
|
@ -125,10 +127,16 @@
|
|||
const pacMods = window.apis.pacKitchen.getPacMods();
|
||||
if (!pacMods.filteredCustomsString) {
|
||||
addWarning(
|
||||
\`
|
||||
ifRu
|
||||
? \`
|
||||
Не найдено СВОИХ прокси. Этот PAC-скрипт
|
||||
работает только со <a href="https://git.io/ac-own-proxy">СВОИМИ прокси</a>
|
||||
(по умолчанию будет использоваться локальный <a href="https://git.io/ac-tor">Tor</a>).
|
||||
\`
|
||||
: \`
|
||||
Couldn't find OWN proxies. This PAC-script
|
||||
works only with <a href="https://git.io/ac-own-proxy">OWN proxies</a>
|
||||
(by default local <a href="https://git.io/ac-tor">Tor</a> will be used).
|
||||
\`,
|
||||
);
|
||||
}
|
||||
|
@ -142,8 +150,10 @@
|
|||
if (ifWasEverModified) {
|
||||
|
||||
addWarning(
|
||||
'Ваш PAC-скрипт не нуждается в обновлении. Его дата: ' +
|
||||
lastModifiedStr,
|
||||
(ifRu
|
||||
? 'Ваш PAC-скрипт не нуждается в обновлении. Его дата: '
|
||||
: 'Your PAC-script doesn\\'t need to be updated. It\\'s date: '
|
||||
) + lastModifiedStr,
|
||||
);
|
||||
const res = {lastModified: lastModifiedStr};
|
||||
return cb(null, res);
|
||||
|
@ -178,7 +188,7 @@
|
|||
},
|
||||
|
||||
clarifyThen(
|
||||
'Не удалось скачать PAC-скрипт с адресов: [ '
|
||||
chrome.i18n.getMessage('FailedToDownloadPacScriptFromAddresses') + ': [ '
|
||||
+ provider.pacUrls.join(' , ') + ' ].',
|
||||
cb,
|
||||
),
|
||||
|
@ -199,20 +209,36 @@
|
|||
// provider is this or that (distinct it from others).
|
||||
distinctKey: 'Antizapret',
|
||||
label: chrome.i18n.getMessage('Antizapret'),
|
||||
desc: \`Альтернативный PAC-скрипт от стороннего разработчика.
|
||||
desc: ifRu
|
||||
? \`Основной PAC-скрипт от автора проекта «Антизапрет».
|
||||
Охватывет меньше сайтов.
|
||||
Блокировка определяется по доменному имени.
|
||||
<br/> <a href="https://rebrand.ly/ac-pacs">Сравнение PAC-скриптов</a>.\`,
|
||||
Блокировка определяется по доменному имени и при необходимости по IP.
|
||||
<br/> <a href="https://rebrand.ly/ac-pacs">Сравнение PAC-скриптов</a>.
|
||||
\`
|
||||
: \`The main PAC-script from the author of project "Antizapret"\.
|
||||
Covers fewer sites.
|
||||
Block is detected based on a domain name and, if necessary, on an IP.
|
||||
<br/> <a href="https://rebrand.ly/ac-pacs">Comparison of PAC-scripts (ru)</a>.
|
||||
\`,
|
||||
order: 0,
|
||||
pacUrls: ['https://antizapret.prostovpn.org/proxy.pac'],
|
||||
},
|
||||
Антицензорити: {
|
||||
distinctKey: 'Anticensority',
|
||||
label: chrome.i18n.getMessage('Anticensority'),
|
||||
desc: \`Основной PAC-скрипт от автора расширения.
|
||||
desc: ifRu
|
||||
? \`Альтернативный PAC-скрипт от автора расширения.
|
||||
Охватывает больше сайтов.
|
||||
Блокировка определятся по доменному имени или IP адресу.
|
||||
<br/> <a href="https://rebrand.ly/ac-pacs">Сравнение PAC-скриптов</a>.\`,
|
||||
Подходит для провайдеров, блокирующих все сайты на одном IP.
|
||||
<br/> <a href="https://rebrand.ly/ac-pacs">Сравнение PAC-скриптов</a>.
|
||||
\`
|
||||
: \`Alternative PAC-script from the author of this extension.
|
||||
Covers more sites.
|
||||
Block is detected based on a domain name and on an IP address.
|
||||
Better fits providers that block all sites on one IP.
|
||||
<br/> <a href="https://rebrand.ly/ac-pacs">Comparison of PAC-scripts (ru)</a>.
|
||||
\`,
|
||||
order: 1,
|
||||
|
||||
/*
|
||||
|
@ -225,7 +251,9 @@
|
|||
onlyOwnSites: {
|
||||
distinctKey: 'onlyOwnSites',
|
||||
label: chrome.i18n.getMessage('Only_own_sites_and_only_own_proxies'),
|
||||
desc: 'Проксируются только добавленные вручную сайты через СВОИ вручную добавленные прокси или через локальный Tor.',
|
||||
desc: ifRu
|
||||
? 'Проксируются только добавленные вручную адреса через СВОИ вручную добавленные прокси или через локальный Tor.'
|
||||
: 'Only added manually urls are proxied via your OWN manually added proxies or via Tor.',
|
||||
order: 99,
|
||||
pacUrls: [
|
||||
'data:application/x-ns-proxy-autoconfig,' + escape('function FindProxyForURL(){ return "DIRECT"; }'),
|
||||
|
@ -258,7 +286,7 @@
|
|||
const upDate = new Date(this.lastPacUpdateStamp).toLocaleString('ru-RU')
|
||||
.replace(/:\\d+$/, '').replace(/\\.\\d{4}/, '');
|
||||
chrome.browserAction.setTitle({
|
||||
title: \`Обновлялись \${upDate} | Версия \${window.apis.version.build}\`,
|
||||
title: \`\${chrome.i18n.getMessage('Updated')} \${upDate} | \${chrome.i18n.getMessage('Version')} \${window.apis.version.build}\`,
|
||||
});
|
||||
|
||||
},
|
||||
|
@ -353,7 +381,7 @@
|
|||
|
||||
if (key === null) {
|
||||
// No pac provider set.
|
||||
return clarifyThen('Сперва выберите PAC-провайдера.', cb);
|
||||
return clarifyThen(chrome.i18n.getMessage('ChoosePacProviderFirstD'), cb);
|
||||
}
|
||||
|
||||
const pacProvider = this.getPacProvider(key);
|
||||
|
|
|
@ -17,6 +17,39 @@
|
|||
"update": {
|
||||
"message": "update"
|
||||
},
|
||||
"UpdatingDDD": {
|
||||
"message": "Updating..."
|
||||
},
|
||||
"UpdatedD": {
|
||||
"message": "Updated."
|
||||
},
|
||||
"DisablingDDD": {
|
||||
"message": "Disabling..."
|
||||
},
|
||||
"DisabledD": {
|
||||
"message": "Disabled."
|
||||
},
|
||||
"InstallingDDD": {
|
||||
"message": "Installing..."
|
||||
},
|
||||
"PacScriptWasInstalledD": {
|
||||
"message": "PAC-script was installed."
|
||||
},
|
||||
"Version": {
|
||||
"message": "Version"
|
||||
},
|
||||
"FullVersion": {
|
||||
"message": "Full version"
|
||||
},
|
||||
"VersionForSlowMachines": {
|
||||
"message": "Version for slow machines"
|
||||
},
|
||||
"FailedToDownloadPacScriptFromAddresses": {
|
||||
"message": "Failed to download PAC-script from addresses"
|
||||
},
|
||||
"ChoosePacProviderFirstD": {
|
||||
"message": "Choose PAC-provider first."
|
||||
},
|
||||
"ProblemsQ": {
|
||||
"message": "Problems?"
|
||||
},
|
||||
|
@ -58,5 +91,50 @@
|
|||
},
|
||||
"Donate": {
|
||||
"message": "Donate"
|
||||
},
|
||||
"Updated": {
|
||||
"message": "Updated"
|
||||
},
|
||||
"ago": {
|
||||
"message": "ago"
|
||||
},
|
||||
"never": {
|
||||
"message": "never"
|
||||
},
|
||||
"ms": {
|
||||
"message": "ms"
|
||||
},
|
||||
"s": {
|
||||
"message": "s"
|
||||
},
|
||||
"min": {
|
||||
"message": "min"
|
||||
},
|
||||
"h": {
|
||||
"message": "h"
|
||||
},
|
||||
"d": {
|
||||
"message": "d"
|
||||
},
|
||||
"w": {
|
||||
"message": "w"
|
||||
},
|
||||
"m": {
|
||||
"message": "m"
|
||||
},
|
||||
"ProxyTheDomainNameBelowQ": {
|
||||
"message": "Proxy the domain name below?"
|
||||
},
|
||||
"auto": {
|
||||
"message": "auto"
|
||||
},
|
||||
"yes": {
|
||||
"message": "yes"
|
||||
},
|
||||
"no": {
|
||||
"message": "no"
|
||||
},
|
||||
"noOwnProxiesError": {
|
||||
"message": "Proxying of OWN sites is possible only via OWN proxies. No own proxies found that satisfy your requirements."
|
||||
}
|
||||
}
|
||||
|
|
|
@ -17,6 +17,39 @@
|
|||
"update": {
|
||||
"message": "обновить"
|
||||
},
|
||||
"UpdatingDDD": {
|
||||
"message": "Обновляем..."
|
||||
},
|
||||
"UpdatedD": {
|
||||
"message": "Обновлено."
|
||||
},
|
||||
"DisablingDDD": {
|
||||
"message": "Отключение..."
|
||||
},
|
||||
"DisabledD": {
|
||||
"message": "Отключено."
|
||||
},
|
||||
"InstallingDDD": {
|
||||
"message": "Установка..."
|
||||
},
|
||||
"PacScriptWasInstalledD": {
|
||||
"message": "PAC-скрипт установлен."
|
||||
},
|
||||
"Version": {
|
||||
"message": "Версия"
|
||||
},
|
||||
"FullVersion": {
|
||||
"message": "Полная версия"
|
||||
},
|
||||
"VersionForSlowMachines": {
|
||||
"message": "Версия для слабых машин"
|
||||
},
|
||||
"FailedToDownloadPacScriptFromAddresses": {
|
||||
"message": "Не удалось скачать PAC-скрипт с адресов"
|
||||
},
|
||||
"ChoosePacProviderFirstD": {
|
||||
"message": "Сперва выберите PAC-провайдера."
|
||||
},
|
||||
"ProblemsQ": {
|
||||
"message": "Проблемы?"
|
||||
},
|
||||
|
@ -58,5 +91,50 @@
|
|||
},
|
||||
"Donate": {
|
||||
"message": "Поддержать"
|
||||
},
|
||||
"Updated": {
|
||||
"message": "Обновлялись"
|
||||
},
|
||||
"ago": {
|
||||
"message": "назад"
|
||||
},
|
||||
"never": {
|
||||
"message": "никогда"
|
||||
},
|
||||
"ms": {
|
||||
"message": "мс"
|
||||
},
|
||||
"s": {
|
||||
"message": "с"
|
||||
},
|
||||
"min": {
|
||||
"message": "мин"
|
||||
},
|
||||
"h": {
|
||||
"message": "ч"
|
||||
},
|
||||
"d": {
|
||||
"message": "дн"
|
||||
},
|
||||
"w": {
|
||||
"message": " недель"
|
||||
},
|
||||
"m": {
|
||||
"message": " месяцев"
|
||||
},
|
||||
"ProxyTheDomainNameBelowQ": {
|
||||
"message": "Проксировать указанное доменное имя?"
|
||||
},
|
||||
"auto": {
|
||||
"message": "авто"
|
||||
},
|
||||
"yes": {
|
||||
"message": "да"
|
||||
},
|
||||
"no": {
|
||||
"message": "нет"
|
||||
},
|
||||
"noOwnProxiesError": {
|
||||
"message": "Проксировать СВОИ сайты можно только при наличии СВОИХ прокси. Нет своих прокси, удовлетворяющих вашим требованиям."
|
||||
}
|
||||
}
|
||||
|
|
|
@ -137,7 +137,7 @@ export default function getExcEditor(theState) {
|
|||
case 'this-no':
|
||||
if (ifYesClicked && !pacMods.filteredCustomsString) {
|
||||
this.props.funs.showErrors( new TypeError(
|
||||
'Проксировать СВОИ сайты можно только при наличии СВОИХ прокси. Нет своих прокси, удовлетворяющих вашим требованиям.'
|
||||
chrome.i18n.getMessage('noOwnProxiesError'),
|
||||
));
|
||||
return false;
|
||||
}
|
||||
|
@ -293,7 +293,7 @@ export default function getExcEditor(theState) {
|
|||
|
||||
return (
|
||||
<section style="padding-bottom: 1em;">
|
||||
<div>Проксировать указанный сайт?</div>
|
||||
<div>{chrome.i18n.getMessage('ProxyTheDomainNameBelowQ')}</div>
|
||||
<div id="exc-address-container">
|
||||
<div id="exc-address" class={inputProxyingState !== undefined ? ( inputProxyingState === true ? scopedCss.ifYes : scopedCss.ifNo ) : ''}>
|
||||
<span>*.</span><input placeholder="navalny.com" list="exc-list" id="exc-editor"
|
||||
|
@ -327,19 +327,19 @@ export default function getExcEditor(theState) {
|
|||
<li><input id="this-auto" type="radio" checked name="if-proxy-this-site" onClick={this.handleRadioClick}/>{' '}
|
||||
<label for="this-auto">{/*<span class="emoji">🔄(looks fat)</span>*/}<svg
|
||||
class="icon"
|
||||
style="position: relative; top: 0.15em;"><use xlink:href="#iconLoopRound"></use></svg> авто</label>
|
||||
style="position: relative; top: 0.15em;"><use xlink:href="#iconLoopRound"></use></svg> {chrome.i18n.getMessage('auto')}</label>
|
||||
</li>
|
||||
<li>
|
||||
<input id="this-yes" type="radio" name="if-proxy-this-site" checked={inputProxyingState === true} onClick={this.handleRadioClick}/>
|
||||
{' '}<label for="this-yes">
|
||||
<span
|
||||
class="emoji____buggy"
|
||||
>✔</span> да
|
||||
>✔</span> {chrome.i18n.getMessage('yes')}
|
||||
</label>
|
||||
</li>
|
||||
<li>
|
||||
<input id="this-no" type="radio" name="if-proxy-this-site" checked={inputProxyingState === false} onClick={this.handleRadioClick}/>
|
||||
{' '}<label for="this-no"><span class="emoji">✘</span> нет</label></li>
|
||||
{' '}<label for="this-no"><span class="emoji">✘</span> {chrome.i18n.getMessage('no')}</label></li>
|
||||
</ol>
|
||||
</section>
|
||||
);
|
||||
|
|
|
@ -22,17 +22,17 @@ export default function getLastUpdateDate(theState) {
|
|||
|
||||
getDate(antiCensorRu) {
|
||||
|
||||
let dateForUser = 'никогда';
|
||||
let dateForUser = chrome.i18n.getMessage('never');
|
||||
if( antiCensorRu.lastPacUpdateStamp ) {
|
||||
let diff = Date.now() - antiCensorRu.lastPacUpdateStamp;
|
||||
let units = 'мс';
|
||||
let units = chrome.i18n.getMessage('ms');
|
||||
const gauges = [
|
||||
[1000, 'с'],
|
||||
[60, 'мин'],
|
||||
[60, 'ч'],
|
||||
[24, 'дн'],
|
||||
[7, ' недель'],
|
||||
[4, ' месяцев'],
|
||||
[1000, chrome.i18n.getMessage('s')],
|
||||
[60, chrome.i18n.getMessage('min')],
|
||||
[60, chrome.i18n.getMessage('h')],
|
||||
[24, chrome.i18n.getMessage('d')],
|
||||
[7, chrome.i18n.getMessage('w')],
|
||||
[4, chrome.i18n.getMessage('m')],
|
||||
];
|
||||
for(const g of gauges) {
|
||||
const diffy = Math.floor(diff / g[0]);
|
||||
|
@ -41,10 +41,10 @@ export default function getLastUpdateDate(theState) {
|
|||
diff = diffy;
|
||||
units = g[1];
|
||||
}
|
||||
dateForUser = diff + units + ' назад';
|
||||
dateForUser = diff + units + ' ' + chrome.i18n.getMessage('ago');
|
||||
}
|
||||
return {
|
||||
text: `${dateForUser} / ${antiCensorRu.pacUpdatePeriodInMinutes/60}ч`,
|
||||
text: `${dateForUser} / ${antiCensorRu.pacUpdatePeriodInMinutes/60}${chrome.i18n.getMessage('h')}`,
|
||||
title: new Date(antiCensorRu.lastPacUpdateStamp).toLocaleString('ru-RU'),
|
||||
};
|
||||
|
||||
|
@ -53,7 +53,7 @@ export default function getLastUpdateDate(theState) {
|
|||
render(props) {
|
||||
|
||||
const date = this.getDate(props.apis.antiCensorRu);
|
||||
return (<div>Обновлялись: <span class="updateDate" title={date.title}>{ date.text }</span></div>);
|
||||
return (<div>{chrome.i18n.getMessage('Updated')}: <span class="updateDate" title={date.title}>{ date.text }</span></div>);
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -62,9 +62,9 @@ export default function getPacChooser(theState) {
|
|||
|
||||
this.updatePac = function updatePac(onSuccess) {
|
||||
props.funs.conduct(
|
||||
'Обновляем...',
|
||||
chrome.i18n.getMessage('UpdatingDDD'),
|
||||
(cb) => theState.apis.antiCensorRu.syncWithPacProviderAsync(cb),
|
||||
'Обновлено.',
|
||||
chrome.i18n.getMessage('UpdatedD'),
|
||||
onSuccess
|
||||
);
|
||||
};
|
||||
|
@ -101,17 +101,17 @@ export default function getPacChooser(theState) {
|
|||
}
|
||||
if (pacKey === 'none') {
|
||||
this.props.funs.conduct(
|
||||
'Отключение...',
|
||||
chrome.i18n.getMessage('DisablingDDD'),
|
||||
(cb) => theState.apis.antiCensorRu.clearPacAsync(cb),
|
||||
'Отключено.',
|
||||
chrome.i18n.getMessage('DisabledD'),
|
||||
() => this.setState({ chosenPacName: 'none' }),
|
||||
checkChosenProvider
|
||||
);
|
||||
} else {
|
||||
this.props.funs.conduct(
|
||||
'Установка...',
|
||||
chrome.i18n.getMessage('InstallingDDD'),
|
||||
(cb) => theState.apis.antiCensorRu.installPacAsync(pacKey, cb),
|
||||
'PAC-скрипт установлен.',
|
||||
chrome.i18n.getMessage('PacScriptWasInstalledD'),
|
||||
checkChosenProvider
|
||||
);
|
||||
}
|
||||
|
@ -146,9 +146,9 @@ export default function getPacChooser(theState) {
|
|||
{
|
||||
props.flags.ifMini
|
||||
? (<a class={scopedCss.otherVersion + ' emoji'} href="https://rebrand.ly/ac-versions"
|
||||
title="Полная версия">🏋</a>)
|
||||
title={chrome.i18n.getMessage("FullVersion")}>🏋</a>)
|
||||
: (<a class={scopedCss.otherVersion + ' emoji'} href="https://rebrand.ly/ac-versions"
|
||||
title="Версия для слабых машин">🐌</a>)
|
||||
title={chrome.i18n.getMessage("VersionForSlowMachines")}>🐌</a>)
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -32,9 +32,11 @@ export default function append(document, { flags }) {
|
|||
a:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
/*
|
||||
label {
|
||||
user-select: none;
|
||||
}
|
||||
*/
|
||||
div, section, header, ul, ol {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
|
|
|
@ -10,7 +10,7 @@ const pacUrls = [
|
|||
];
|
||||
|
||||
const commonContext = {
|
||||
version: '1.35',
|
||||
version: '1.37',
|
||||
anticensorityPacUrls: [
|
||||
...pacUrls,
|
||||
],
|
||||
|
|
Loading…
Reference in New Issue
Block a user