Add whitelisting for sites to be proxied

This commit is contained in:
ilyaigpetrov 2021-05-17 17:12:45 +00:00
parent d3caee1483
commit 57a2a8c1ac
6 changed files with 4721 additions and 307 deletions

File diff suppressed because it is too large Load Diff

View File

@ -9,7 +9,7 @@
"subpages": "cd ./src/extension-common/pages/options/ && npm run build && cd -",
"subpages:dev": "cd ./src/extension-common/pages/options/ && npm run build:dev:nocomp && cd -",
"start": "npm run release",
"release": "npm run subpages && npm run gulp buildAll"
"release": "npm run subpages && npx gulp -- buildAll"
},
"author": "Ilya Ig. Petrov",
"license": "GPLv3",

View File

@ -101,20 +101,12 @@
dflt: false,
category: 'ownProxies',
label: 'использовать СВОЙ локальный Tor',
desc: 'Установите <a href="https://rebrand.ly/ac-tor">Tor</a> на свой компьютер и используйте его как прокси-сервер. <a href="https://rebrand.ly/ac-tor">ВАЖНО</a>',
desc: 'Установите <a href="https://rebrand.ly/ac-tor">Tor</a> на свой компьютер и используйте его как прокси-сервер. <a href="https://rebrand.ly/ac-tor">ВАЖНО</a>.',
order: 5,
},
exceptions: {
dflt: null,
category: 'exceptions',
order: 5.5,
},
whitelist: {
dflt: [],
category: 'exceptions',
label: 'белый список'
desc: 'Разрешить расширению работать только с адресами из белого списка',
order: 5.6,
},
ifMindExceptions: {
dflt: true,
@ -123,6 +115,17 @@
desc: 'Учитывать сайты, добавленные вручную. Только для своих прокси-серверов! Без своих прокси работать не будет.',
order: 6,
},
whitelist: {
dflt: [],
category: 'exceptions',
},
ifMindWhitelist: {
dflt: false,
category: 'exceptions',
label: 'Ограничиться только <a href="../exceptions/index.html">белым списком</a>',
desc: 'Разрешить расширению работать только с адресами из белого списка.',
order: 6.5,
},
customProxyStringRaw: {
dflt: '',
category: 'ownProxies',
@ -165,7 +168,6 @@
return acc;
}, {});
};
const getCurrentConfigs = function getCurrentConfigs(ifRaw = false) {
@ -228,7 +230,8 @@
});
const self = {};
Object.assign(self, getDefaults(), mods);
const gdft = getDefaults();
Object.assign(self, gdft, mods);
self.ifNoMods = ifNoMods;
let customProxyArray = [];
@ -355,26 +358,20 @@
/******/ const dotHost = '.' + host;
${
function() {
// TODO: STOPPED HERE
const wlstr = JSON.stringify(pacMods.whitelist);
let generatedPac = `
/******/ if (${pacMods.ifMindWhitelist && pacMods.whitelist.length}) {
/******/ const ifWhitelisted =
/******/ .some((whiteHost) => {
/******/ const ifWild = whiteHost.startsWith('*');
/******/ if (ifWild) {
/******/ return `dotHost.endsWith(whiteHost.substr(1));
/******/ }
/******/ return host === whiteHost;
/******/ })
/******/ if (ifWhiteListed) {
/******/ return 'DIRECT';
/******/ }
/******/
if (!ifWhitelisted) {
return 'DIRECT';
}
)
/******/ ${JSON.stringify(pacMods.whitelist)}.some((whiteHost) => {
/******/ const ifWild = whiteHost.startsWith('*');
/******/ if (ifWild) {
/******/ return dotHost.endsWith(whiteHost.substr(1));
/******/ }
/******/ return host === whiteHost;
/******/ })
/******/ if (!ifWhitelisted) {
/******/ return 'DIRECT';
/******/ }
/******/ }`;
generatedPac += pacMods.ifProhibitDns ? `
/******/

View File

@ -17,7 +17,9 @@ chrome.runtime.getBackgroundPage( (backgroundPage) =>
# Сначала идёт список проксируемых сайтов,
# затем ==== на отдельной строке,
# затем исключённые сайты.
# После ещё одной строки с ==== идёт белый список.
# Сортировка с конца строки.
# Адреса со звёздочками поддерживаются: *.kasparov.ru, например.
# ПРОКСИРОВАТЬ:

View File

@ -12,6 +12,7 @@
"concat-stream": "^1.6.2",
"csjs-inject": "^1.0.1",
"flow-bin": "^0.45.0",
"gulp": "^4.0.2",
"inferno": "~3.2.0",
"inferno-component": "^3.10.1",
"inferno-create-element": "^3.10.1",