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 758ce70..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; - }, []); + }, []); }; 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 3efdf4e..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 @@ -82,6 +82,10 @@ padding-left: 1.4em; padding-right: 1.4em; } + .horizontal-list, + .horizontal-list li { + line-height: 100%; + } .horizontal-list li { display: inline-block; } @@ -147,6 +151,7 @@ :root:not(.if-options-page) #acc-pac:not(:checked) ~ .main-nav section[data-for="acc-pac"], :root:not(.if-options-page) #acc-exc:not(:checked) ~ .main-nav section[data-for="acc-exc"], + :root:not(.if-options-page) #acc-own:not(:checked) ~ .main-nav section[data-for="acc-own"], :root:not(.if-options-page) #acc-mods:not(:checked) ~ .main-nav section[data-for="acc-mods"], :root:not(.if-options-page) #acc-ntf:not(:checked) ~ .main-nav section[data-for="acc-ntf"] { @@ -164,6 +169,7 @@ } :root:not(.if-options-page) #acc-pac:not(:checked) ~ .main-nav section[data-for="acc-pac"] *, :root:not(.if-options-page) #acc-exc:not(:checked) ~ .main-nav section[data-for="acc-exc"] *, + :root:not(.if-options-page) #acc-own:not(:checked) ~ .main-nav section[data-for="acc-own"] *, :root:not(.if-options-page) #acc-mods:not(:checked) ~ .main-nav section[data-for="acc-mods"] *, :root:not(.if-options-page) #acc-ntf:not(:checked) ~ .main-nav section[data-for="acc-ntf"] * { @@ -171,47 +177,50 @@ margin-bottom: 0 !important; } .nav-labels { + background-color: #eef; text-align: center; } .nav-labels li label { display: inline-block; - border: 2px solid var(--blue-bg); - border-radius: 0.7em; + border: 1px solid var(--blue-bg); + border-radius: 0.2em; background-color: white; color: var(--ribbon-color); - padding: 0.2em 0.65em 0.3em 0.4em; - line-height: 0.9em; + padding: 0.2em 0.3em 0.3em 0.2em; + line-height: 0.8em; margin: 0.1em 0; } .nav-labels li label:hover { background-color: var(--blue-bg); color: white; + /* border-color: white; - border-style: dotted; + border-style: dotted;*/ } /* CHECKED LABELS */ #acc-pac:checked ~ .nav-labels label[for="acc-pac"]:not(:hover), #acc-exc:checked ~ .nav-labels label[for="acc-exc"]:not(:hover), + #acc-own:checked ~ .nav-labels label[for="acc-own"]:not(:hover), #acc-mods:checked ~ .nav-labels label[for="acc-mods"]:not(:hover), #acc-ntf:checked ~ .nav-labels label[for="acc-ntf"]:not(:hover) { background-color: var(--blue-bg); color: white; - - line-height: 0.8em; } /* ★★★★★ */ .nav-labels label:before { - content: '★ '; + content: '★'; + padding-right: 0.1em; visibility: hidden; } .nav-labels li label:hover:before, #acc-pac:checked ~ .nav-labels label[for="acc-pac"]:before, #acc-exc:checked ~ .nav-labels label[for="acc-exc"]:before, + #acc-own:checked ~ .nav-labels label[for="acc-own"]:before, #acc-mods:checked ~ .nav-labels label[for="acc-mods"]:before, #acc-ntf:checked ~ .nav-labels label[for="acc-ntf"]:before { @@ -435,15 +444,17 @@ + -