mirror of
https://github.com/anticensority/runet-censorship-bypass.git
synced 2024-11-30 21:33:43 +03:00
Start adding copy-paste, fix exceptions UI, add dns padding, refactor
lastModifiedSTR
This commit is contained in:
parent
ae9e7b7471
commit
89e92c28d2
|
@ -2,7 +2,7 @@
|
|||
|
||||
{
|
||||
|
||||
const IF_DEBUG = false;
|
||||
const IF_DEBUG = true;
|
||||
|
||||
if (!IF_DEBUG) {
|
||||
// I believe logging objects precludes them from being GCed.
|
||||
|
|
|
@ -30,7 +30,7 @@
|
|||
ifProhibitDns: {
|
||||
dflt: false,
|
||||
label: 'запретить опредление по IP/DNS',
|
||||
desc: 'Пытается запретить скрипту использовать DNS, без которого определение блокировки по IP работать не будет. Используйте, если вам кажется, что мы проксируем слишком много сайтов. Запрет действует только для скрипта, браузер и др.программы продолжат использование DNS.',
|
||||
desc: 'Пытается запретить скрипту использовать DNS, без которого определение блокировки по IP работать не будет (т.е. будет разблокироваться меньше сайтов). Используйте, чтобы получить прирост в производительности или если вам кажется, что мы проксируем слишком много сайтов. Запрет действует только для скрипта, браузер и др.программы продолжат использование DNS.',
|
||||
index: 2,
|
||||
},
|
||||
ifUsePacScriptProxies: {
|
||||
|
|
|
@ -98,7 +98,7 @@
|
|||
};
|
||||
|
||||
const setPacScriptFromProviderAsync = function setPacScriptFromProviderAsync(
|
||||
provider, lastModified = mandatory(), cb = throwIfError
|
||||
provider, lastModifiedStr = mandatory(), cb = throwIfError
|
||||
) {
|
||||
|
||||
const pacUrl = provider.pacUrls[0];
|
||||
|
@ -107,18 +107,21 @@
|
|||
cb
|
||||
);
|
||||
|
||||
httpLib.ifModifiedSince(pacUrl, lastModified, (err, newLastModified) => {
|
||||
httpLib.ifModifiedSince(pacUrl, lastModifiedStr, (err, newLastModifiedStr) => {
|
||||
|
||||
if (!newLastModified) {
|
||||
if (!newLastModifiedStr) {
|
||||
const res = {lastModified: lastModifiedStr};
|
||||
const ifWasEverModified = lastModifiedStr !== new Date(0).toUTCString();
|
||||
if (ifWasEverModified) {
|
||||
return cb(
|
||||
null,
|
||||
{lastModified},
|
||||
null, res,
|
||||
new Warning(
|
||||
'Ваш PAC-скрипт не нуждается в обновлении. Его дата: ' +
|
||||
lastModified
|
||||
lastModifiedStr
|
||||
)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
// Employ all urls, the latter are fallbacks for the former.
|
||||
const pacDataPromise = provider.pacUrls.reduce(
|
||||
|
@ -141,7 +144,7 @@
|
|||
pacData,
|
||||
(err, res) => cb(
|
||||
err,
|
||||
Object.assign(res || {}, {lastModified: newLastModified})
|
||||
Object.assign(res || {}, {lastModified: newLastModifiedStr})
|
||||
)
|
||||
);
|
||||
|
||||
|
|
|
@ -454,9 +454,9 @@
|
|||
</section>
|
||||
<section data-for="acc-exc" class="hidden-for-options-page">
|
||||
|
||||
<div>Проксировать указанный сайт?</div>
|
||||
<div>Проксировать указанный сайт?
|
||||
<div id="exc-address">
|
||||
<span>*.</span><input placeholder="navalny.com" list="exc-list" name="browser" id="exc-editor" style=""/>
|
||||
<span>*.</span><input placeholder="navalny.com" list="exc-list" name="browser" id="exc-editor" style=""/><a href="../exceptions/index.html">☰</a></div>
|
||||
</div>
|
||||
<datalist id="exc-list"></datalist>
|
||||
<ol class="horizontal-list" id="exc-radio">
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -0,0 +1,37 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Исключения</title>
|
||||
<style>
|
||||
html, body {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
}
|
||||
body {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
textarea {
|
||||
display: block;
|
||||
border-width: 1px 0 0 0;
|
||||
padding: 1em;
|
||||
height: 100%;
|
||||
outline: none;
|
||||
}
|
||||
nav {
|
||||
padding: 0.2em;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<nav>
|
||||
<button>Сохранить в памяти</button>
|
||||
<button>Считать из памяти</button>
|
||||
</nav>
|
||||
<textarea id="editor"></textarea>
|
||||
<script src="./index.js"></script>
|
||||
</body>
|
||||
</html>
|
|
@ -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')}`;
|
||||
|
||||
})
|
||||
);
|
|
@ -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) {
|
||||
|
|
Loading…
Reference in New Issue
Block a user