diff --git a/extensions/chromium/runet-censorship-bypass/src/extension-common/00-init-apis.js b/extensions/chromium/runet-censorship-bypass/src/extension-common/00-init-apis.js index 862422e..1cb6214 100644 --- a/extensions/chromium/runet-censorship-bypass/src/extension-common/00-init-apis.js +++ b/extensions/chromium/runet-censorship-bypass/src/extension-common/00-init-apis.js @@ -2,7 +2,7 @@ { - const IF_DEBUG = false; + const IF_DEBUG = true; if (!IF_DEBUG) { // I believe logging objects precludes them from being GCed. diff --git a/extensions/chromium/runet-censorship-bypass/src/extension-common/35-pac-kitchen-api.js b/extensions/chromium/runet-censorship-bypass/src/extension-common/35-pac-kitchen-api.js index 92341a1..7ccfb8b 100644 --- a/extensions/chromium/runet-censorship-bypass/src/extension-common/35-pac-kitchen-api.js +++ b/extensions/chromium/runet-censorship-bypass/src/extension-common/35-pac-kitchen-api.js @@ -30,7 +30,7 @@ ifProhibitDns: { dflt: false, label: 'запретить опредление по IP/DNS', - desc: 'Пытается запретить скрипту использовать DNS, без которого определение блокировки по IP работать не будет. Используйте, если вам кажется, что мы проксируем слишком много сайтов. Запрет действует только для скрипта, браузер и др.программы продолжат использование DNS.', + desc: 'Пытается запретить скрипту использовать DNS, без которого определение блокировки по IP работать не будет (т.е. будет разблокироваться меньше сайтов). Используйте, чтобы получить прирост в производительности или если вам кажется, что мы проксируем слишком много сайтов. Запрет действует только для скрипта, браузер и др.программы продолжат использование DNS.', index: 2, }, ifUsePacScriptProxies: { diff --git a/extensions/chromium/runet-censorship-bypass/src/extension-common/37-sync-pac-script-with-pac-provider-api.js b/extensions/chromium/runet-censorship-bypass/src/extension-common/37-sync-pac-script-with-pac-provider-api.js index 54edc3b..ff82404 100644 --- a/extensions/chromium/runet-censorship-bypass/src/extension-common/37-sync-pac-script-with-pac-provider-api.js +++ b/extensions/chromium/runet-censorship-bypass/src/extension-common/37-sync-pac-script-with-pac-provider-api.js @@ -98,7 +98,7 @@ }; const setPacScriptFromProviderAsync = function setPacScriptFromProviderAsync( - provider, lastModified = mandatory(), cb = throwIfError + provider, lastModifiedStr = mandatory(), cb = throwIfError ) { const pacUrl = provider.pacUrls[0]; @@ -107,17 +107,20 @@ cb ); - httpLib.ifModifiedSince(pacUrl, lastModified, (err, newLastModified) => { + httpLib.ifModifiedSince(pacUrl, lastModifiedStr, (err, newLastModifiedStr) => { - if (!newLastModified) { - return cb( - null, - {lastModified}, - new Warning( - 'Ваш PAC-скрипт не нуждается в обновлении. Его дата: ' + - lastModified - ) - ); + if (!newLastModifiedStr) { + const res = {lastModified: lastModifiedStr}; + const ifWasEverModified = lastModifiedStr !== new Date(0).toUTCString(); + if (ifWasEverModified) { + return cb( + null, res, + new Warning( + 'Ваш PAC-скрипт не нуждается в обновлении. Его дата: ' + + lastModifiedStr + ) + ); + } } // Employ all urls, the latter are fallbacks for the former. @@ -141,7 +144,7 @@ pacData, (err, res) => cb( err, - Object.assign(res || {}, {lastModified: newLastModified}) + Object.assign(res || {}, {lastModified: newLastModifiedStr}) ) ); diff --git a/extensions/chromium/runet-censorship-bypass/src/extension-common/pages/choose-pac-provider/index.html b/extensions/chromium/runet-censorship-bypass/src/extension-common/pages/choose-pac-provider/index.html index 971ad0a..94a92a2 100644 --- a/extensions/chromium/runet-censorship-bypass/src/extension-common/pages/choose-pac-provider/index.html +++ b/extensions/chromium/runet-censorship-bypass/src/extension-common/pages/choose-pac-provider/index.html @@ -454,9 +454,9 @@
-
Проксировать указанный сайт?
+
Проксировать указанный сайт?
- *. + *.
    diff --git a/extensions/chromium/runet-censorship-bypass/src/extension-common/pages/choose-pac-provider/index.js b/extensions/chromium/runet-censorship-bypass/src/extension-common/pages/choose-pac-provider/index.js index 4c93d34..2a7b801 100644 --- a/extensions/chromium/runet-censorship-bypass/src/extension-common/pages/choose-pac-provider/index.js +++ b/extensions/chromium/runet-censorship-bypass/src/extension-common/pages/choose-pac-provider/index.js @@ -348,7 +348,7 @@ chrome.runtime.getBackgroundPage( (backgroundPage) => { const maxIndentFromRightInPx = 15; ifTriangleClicked = ifClick - && !excEditor.selectionStart && !excEditor.selectionStart + && !excEditor.selectionStart && !excEditor.selectionEnd && event.x > excEditor.getBoundingClientRect().right - maxIndentFromRightInPx; } @@ -426,7 +426,7 @@ chrome.runtime.getBackgroundPage( (backgroundPage) => } // Exact found! - hideOpt(exactOpt); + excList.childNodes.forEach(hideOpt); if(exactOpt.label === labelIfProxied) { thisYes.checked = true; excEditor.parentNode.classList.add(yesClass); diff --git a/extensions/chromium/runet-censorship-bypass/src/extension-common/pages/exceptions/index.html b/extensions/chromium/runet-censorship-bypass/src/extension-common/pages/exceptions/index.html new file mode 100644 index 0000000..ad7740d --- /dev/null +++ b/extensions/chromium/runet-censorship-bypass/src/extension-common/pages/exceptions/index.html @@ -0,0 +1,37 @@ + + + + + Исключения + + + + + + + + \ No newline at end of file diff --git a/extensions/chromium/runet-censorship-bypass/src/extension-common/pages/exceptions/index.js b/extensions/chromium/runet-censorship-bypass/src/extension-common/pages/exceptions/index.js new file mode 100644 index 0000000..11ef6c9 --- /dev/null +++ b/extensions/chromium/runet-censorship-bypass/src/extension-common/pages/exceptions/index.js @@ -0,0 +1,24 @@ +'use strict'; + +chrome.runtime.getBackgroundPage( (backgroundPage) => + backgroundPage.apis.errorHandlers.installListenersOn( + window, 'EXC', () => { + + const editor = document.getElementById('editor'); + const mods = backgroundPage.apis.pacKitchen.getPacMods(); + editor.innerText = `# Комментарии начинаются с # и действуют до конца строки. +# Сначала идёт список проксируемых сайтов, +# затем ---- на отдельной строке, +# затем исключённые сайты. + +# ПРОКСИРОВАТЬ: + +${mods.included.join('\n')} + +----------------------------- +# НЕ ПРОКСИРОВАТЬ: + +${mods.excluded.join('\n')}`; + + }) +); diff --git a/extensions/chromium/runet-censorship-bypass/src/extension-full/20-ip-to-host-api.js b/extensions/chromium/runet-censorship-bypass/src/extension-full/20-ip-to-host-api.js index c66575e..77cca97 100644 --- a/extensions/chromium/runet-censorship-bypass/src/extension-full/20-ip-to-host-api.js +++ b/extensions/chromium/runet-censorship-bypass/src/extension-full/20-ip-to-host-api.js @@ -104,6 +104,14 @@ reinit(); + const generateRandomHexString = function generateRandomHexString(minLen, maxLen) { + + return Array.from(window.crypto.getRandomValues(new Uint8Array(maxLen))) + .slice(minLen + Math.floor(Math.random()*(maxLen - minLen))) + .map((i) => i.toString(16)).join(''); + + }; + const getIpsFor = function getIpsFor(host, cb = mandatory()) { if (host.trim() === 'localhost') { @@ -113,7 +121,7 @@ const promises = types.map( (type) => new Promise((resolve) => httpLib.get( - `https://dns.google.com/resolve?type=${type}&name=${host}&edns_client_subnet=0.0.0.0/0`, + `https://dns.google.com/resolve?type=${type}&name=${host}&random_padding=${generateRandomHexString(30,500)}`, (err, res) => { if (res) {