From c49ef2d9b7c74ab285eaa3e3e70755ee2f30c5ee Mon Sep 17 00:00:00 2001 From: "Ilya Ig. Petrov" Date: Fri, 21 Apr 2017 19:43:30 +0500 Subject: [PATCH] Split configs into cats, reflect cats in view (not finished) --- .../extension-common/35-pac-kitchen-api.js | 60 +++-- ...7-sync-pac-script-with-pac-provider-api.js | 2 +- .../pages/choose-pac-provider/index.html | 48 +--- .../pages/choose-pac-provider/index.js | 250 ++++++++++-------- 4 files changed, 181 insertions(+), 179 deletions(-) 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 c644437..a2aa381 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 @@ -19,53 +19,72 @@ dflt: false, label: 'проксировать только HTTPS-сайты', desc: 'Проксировать только сайты, доступные по шифрованному протоколу HTTPS. Прокси и провайдер смогут видеть только адреса проксируемых HTTPS-сайтов, но не их содержимое. Используйте, если вы не доверяете прокси-серверам ваш HTTP-трафик. Разумеется, что с этой опцией разблокировка HTTP-сайтов работать не будет.', - index: 0, + order: 0, }, ifUseSecureProxiesOnly: { dflt: false, label: 'только шифрованная связь с прокси', desc: 'Шифровать соединение до прокси от провайдера, используя только прокси типа HTTPS или локальный Tor. Провайдер всё же сможет видеть адреса (но не содержимое) проксируемых ресурсов из протокола DNS (даже с Tor). Опция вряд ли может быть вам полезна, т.к. шифруется не весь трафик, а лишь разблокируемые ресурсы.', - index: 1, + order: 1, }, ifProhibitDns: { dflt: false, label: 'запретить опредление по IP/DNS', desc: 'Пытается запретить скрипту использовать DNS, без которого определение блокировки по IP работать не будет (т.е. будет разблокироваться меньше сайтов). Используйте, чтобы получить прирост в производительности или если вам кажется, что мы проксируем слишком много сайтов. Запрет действует только для скрипта, браузер и др.программы продолжат использование DNS.', - index: 2, + order: 2, }, ifProxyOrDie: { dflt: true, ifDfltMods: true, label: 'проксируй или умри!', desc: 'Запрещает соединение с сайтами напрямую без прокси в случаях, когда все прокси отказывают. Например, если все ВАШИ прокси вдруг недоступны, то добавленные вручную сайты открываться не будут совсем. Однако смысл опции в том, что она препятствует занесению прокси в чёрные списки Хрома. Рекомендуется не отключать.', - index: 3, + order: 3, }, ifUsePacScriptProxies: { dflt: true, + category: 'ownProxies', label: 'использовать прокси PAC-скрипта', desc: 'Использовать прокси-сервера от авторов PAC-скрипта.', - index: 4, + order: 4, }, ifUseLocalTor: { dflt: false, + category: 'ownProxies', label: 'использовать СВОЙ локальный Tor', desc: 'Установите Tor на свой компьютер и используйте его как прокси-сервер. ВАЖНО', - index: 5, + order: 5, }, exceptions: { + category: 'exceptions', dflt: null, }, ifMindExceptions: { dflt: true, + category: 'exceptions', label: 'учитывать исключения', desc: 'Учитывать сайты, добавленные вручную. Только для своих прокси-серверов! Без своих прокси работать не будет.', - index: 6, + order: 6, + }, + ifProxyErrors: { + dflt: false, + category: 'exceptions', + label: 'проксировать выбранные ошибки', + desc: 'Предлагать добавить сайт в исключения при выбранных ошибках', + order: 7, }, customProxyStringRaw: { dflt: '', + category: 'ownProxies', label: 'использовать СВОИ прокси', url: 'https://rebrand.ly/ac-own-proxy', - index: 7, + order: 8, + }, + ifProxyMoreDomains: { + dflt: false, + category: 'ownProxies', + label: 'проксировать .onion, .i2p и OpenNIC', + desc: 'Проксировать особые домены. Необходима поддержка со стороны прокси.', + order: 9, }, }; @@ -91,20 +110,24 @@ }; - const getOrderedConfigsForUser = function getOrderedConfigs() { + const getOrderedConfigsForUser = function getOrderedConfigs(category) { const pacMods = getCurrentConfigs(); - return Object.keys(configs).reduce((arr, key) => { + return Object.keys(configs) + .sort((keyA, keyB) => configs[keyA].order - configs[keyB].order) + .reduce((arr, key) => { - const conf = configs[key]; - if(typeof(conf.index) === 'number') { - arr[conf.index] = conf; - conf.value = pacMods[key]; - conf.key = key; - } - return arr; + const conf = configs[key]; + if(typeof(conf.order) === 'number') { + if(!category || category === (conf.category || 'general')) { + arr.push(conf); + conf.value = pacMods[key]; + conf.key = key; + } + } + return arr; - }, []); + }, []); }; @@ -322,6 +345,7 @@ new RegExp(kitchenStartsMark + '[\\s\\S]*$', 'g'), '' ); + /a/.test('a'); // GC RegExp.input and friends. return chrome.proxy.settings.set(details, chromified(cb)); } } 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 8679370..fe0d5b0 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 @@ -213,7 +213,7 @@ getSortedEntriesForProviders() { - return Object.entries(this.pacProviders).sort((entryA, entryB) => entryA[1].order - entryB[1].order); + return Object.entries(this.pacProviders).sort((entryA, entryB) => entryA[1].order - entryB[1].order).map(([key, prov]) => Object.assign({key: key}, prov)); }, 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 43641ce..fa67d25 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 @@ -177,6 +177,7 @@ margin-bottom: 0 !important; } .nav-labels { + background-color: #eef; text-align: center; } .nav-labels li label { @@ -508,52 +509,7 @@
-