Add replaceRedirectWith modifier in own proxies, see #62

This commit is contained in:
ilyaigpetrov 2019-09-18 17:10:55 +00:00
parent a6fd4d44f1
commit 12db4afe55
3 changed files with 43 additions and 2 deletions

View File

@ -130,6 +130,14 @@
desc: 'Проксировать особые домены. Необходима поддержка со стороны СВОИХ прокси.', desc: 'Проксировать особые домены. Необходима поддержка со стороны СВОИХ прокси.',
order: 8, order: 8,
}, },
replaceDirectWith: {
ifDisabled: true,
dflt: false,
category: 'ownProxies',
label: 'подменять DIRECT на',
desc: 'Использовать в PAC-скрипте указанную строку для запросов напрямую (вместо директивы DIRECT). Данная строка не проверяется на требования к шифрованию связи до прокси! Строка должна соответствовать формату возвращаемого значения PAC-скрипта, который подобен <a href="https://rebrand.ly/ac-own-proxies#user-content-Формат">формату своих прокси</a>.',
order: 9,
},
}); });
@ -327,7 +335,7 @@
/******/ "use strict"; /******/ "use strict";
/******/ /******/
/******/ const originalFindProxyForURL = FindProxyForURL; /******/ const originalFindProxyForURL = FindProxyForURL;
/******/ const tmp = function(url, host) { /******/ let tmp = function(url, host) {
/******/ /******/
${ ${
function() { function() {
@ -465,7 +473,16 @@ ${ pacMods.filteredCustomsString
} }
/******/ }; /******/ };
${
!pacMods.replaceDirectWith
? ''
: `
/******/ const oldTmp = tmp;
/******/ tmp = function(url, host) {
/******/ return oldTmp.call(this, url, host).replace(/(;|^)\\s*DIRECT\\s*(?=;|$)/g, "$1${pacMods.replaceDirectWith}");
/******/ };
`
}
/******/ if (global) { /******/ if (global) {
/******/ global.FindProxyForURL = tmp; /******/ global.FindProxyForURL = tmp;
/******/ } else { /******/ } else {

View File

@ -25,6 +25,9 @@ export default function getInfoLi() {
.infoRow { .infoRow {
position: relative; position: relative;
} }
.infoRow a {
text-decoration: underline;
}
.infoRow > input[type="checkbox"] { .infoRow > input[type="checkbox"] {
position: relative; position: relative;
top: -0.08em; top: -0.08em;

View File

@ -31,6 +31,7 @@ export default function getMain(theState) {
const Notifications = getNotifications(theState); const Notifications = getNotifications(theState);
const checksName = 'pacMods'; const checksName = 'pacMods';
let selection = [0, 0]; // TODO: dirty hack but seems ok.
return class Main extends Component { return class Main extends Component {
@ -161,6 +162,26 @@ export default function getMain(theState) {
orderedConfigs: this.state.catToOrderedMods['ownProxies'], orderedConfigs: this.state.catToOrderedMods['ownProxies'],
childrenOfMod: { childrenOfMod: {
customProxyStringRaw: ProxyEditor, customProxyStringRaw: ProxyEditor,
replaceDirectWith: ({ conf, onNewValue, ifInputsDisabled }) =>
(<input
style="width: 100%; margin: 0.5em 0"
disabled={ifInputsDisabled}
value={conf.value || ''}
onInput={(event) => {
const t = event.target;
selection = [t.selectionStart, t.selectionEnd];
onNewValue(true, t.value);
}}
ref={(input) => {
if (input) {
input.focus();
input.selectionStart = selection[0];
input.selectionEnd = selection[1];
}
}}
/>),
}, },
name: checksName, name: checksName,
}, modsHandlers) }, modsHandlers)