pac-setter hits 0.0.0.2: more transparent code
11
extensions/chromium/minimalistic-pac-setter/README.md
Executable file
|
@ -0,0 +1,11 @@
|
|||
Обход Интернет-цензуры в России пока что не является нарушением закона.
|
||||
|
||||
Расширение позволяет обходить блокировки РосКомНадзора, давая вам доступ
|
||||
к библиотекам, энциклопедиям и сайтам оппоцизионного движения в России.
|
||||
|
||||
Проксирует только заблокированные сайты, оставляя нетронутыми все остальные.
|
||||
|
||||
Известные недостатки: ресурсы с динамичным IP, попадающих под блокировку, некорректно проксируются. Непричастные к блокировкам сайты рушатся.
|
||||
|
||||
Неофициальное расширение на базе antizapret.prostovpn.org
|
||||
Обновляет PAC-скрипт каждые два часа.
|
BIN
extensions/chromium/minimalistic-pac-setter/archive.org.png
Executable file
After Width: | Height: | Size: 78 KiB |
54
extensions/chromium/minimalistic-pac-setter/extnesion/block-informer.js
Executable file
|
@ -0,0 +1,54 @@
|
|||
'use strict';
|
||||
|
||||
// Shows user PageAction icon if any part of the current site is being blocked and proxied.
|
||||
|
||||
|
||||
function getHostname(url) {
|
||||
var a = document.createElement('a');
|
||||
a.href = url;
|
||||
return a.hostname;
|
||||
}
|
||||
|
||||
function blockInform(details) {
|
||||
if (details.tabId !== -1 && details.ip === antizapret.proxyIp) {
|
||||
|
||||
chrome.pageAction.setIcon({
|
||||
path: '/icons/rkn-empty.png',
|
||||
tabId: details.tabId
|
||||
});
|
||||
|
||||
chrome.pageAction.getTitle(
|
||||
{ tabId: details.tabId },
|
||||
result => {
|
||||
|
||||
if (!/\n/.test(result))
|
||||
result = 'Разблокированы:';
|
||||
|
||||
var hostname = getHostname(details.url).trim();
|
||||
|
||||
var ifListed = result.split(/\r?\n/g).some(
|
||||
line => line.trim() === hostname
|
||||
);
|
||||
|
||||
if (!ifListed)
|
||||
chrome.pageAction.setTitle({
|
||||
title: result +'\n'+ hostname,
|
||||
tabId: details.tabId
|
||||
});
|
||||
}
|
||||
);
|
||||
|
||||
chrome.pageAction.show(details.tabId);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
chrome.webRequest.onCompleted.addListener(
|
||||
blockInform,
|
||||
{ urls: ['<all_urls>'] }
|
||||
);
|
||||
|
||||
chrome.webRequest.onErrorOccurred.addListener(
|
||||
blockInform,
|
||||
{ urls: ['<all_urls>'] }
|
||||
);
|
Before Width: | Height: | Size: 7.7 KiB After Width: | Height: | Size: 7.7 KiB |
Before Width: | Height: | Size: 7.1 KiB After Width: | Height: | Size: 7.1 KiB |
Before Width: | Height: | Size: 7.8 KiB After Width: | Height: | Size: 7.8 KiB |
|
@ -3,7 +3,12 @@
|
|||
|
||||
"name": "Антизапрет",
|
||||
"description": "Безопасный Интернет с возможностью отказаться",
|
||||
"version": "0.0.0.1",
|
||||
"version": "0.0.0.2",
|
||||
"icons": {
|
||||
"128": "/icons/rkn-empty.png"
|
||||
},
|
||||
"author": "ilyaigpetrov@gmail.com",
|
||||
"homepage_url": "https://github.com/ilyaigpetrov/anti-censorship-russia",
|
||||
|
||||
"permissions": [
|
||||
"proxy",
|
||||
|
@ -11,15 +16,8 @@
|
|||
"alarms",
|
||||
"<all_urls>"
|
||||
],
|
||||
"icons": {
|
||||
"128": "/icons/rkn-empty.png"
|
||||
},
|
||||
"background": {
|
||||
"scripts": ["install.js", "proxy.js"]
|
||||
"scripts": ["sync-pac-script-with-antizapret.js", "block-informer.js"]
|
||||
},
|
||||
"page_action": {},
|
||||
|
||||
"author": "ilyaigpetrov@gmail.com",
|
||||
"homepage_url": "https://github.com/ilyaigpetrov/anti-censorship-russia",
|
||||
"short_name": "Антизапрет"
|
||||
"page_action": {}
|
||||
}
|
|
@ -1,5 +1,12 @@
|
|||
'use strict';
|
||||
|
||||
/*
|
||||
Task 1. Gets IP for host proxy.antizapret.prostovpn.org with dns-lg.com.
|
||||
This IP is used in block-informer to inform user when proxy is ON.
|
||||
Task 2. Downloads PAC proxy script from Antizapret and sets it in Chromium settings.
|
||||
Task 3. Schedules tasks 1 & 2 for every 2 hours.
|
||||
*/
|
||||
|
||||
var antizapret = {
|
||||
pacUrl: 'http://antizapret.prostovpn.org/proxy.pac',
|
||||
proxyHost: 'proxy.antizapret.prostovpn.org',
|
||||
|
@ -20,15 +27,26 @@ function httpGet(url, cb) {
|
|||
req.send();
|
||||
}
|
||||
|
||||
function UpdatePac() {
|
||||
|
||||
function getIpForHost(host, cb) {
|
||||
httpGet(
|
||||
'http://www.dns-lg.com/google1/'+antizapret.proxyHost+'/A',
|
||||
'http://www.dns-lg.com/google1/'+host+'/A',
|
||||
cb
|
||||
);
|
||||
}
|
||||
|
||||
function updateAntizapretProxyIp() {
|
||||
getIpForHost(
|
||||
antizapret.proxyHost,
|
||||
(err, res) => {
|
||||
if (err)
|
||||
console.log(err)
|
||||
else
|
||||
antizapret.proxyIp = JSON.parse(res).answer[0].rdata;
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
function setPacScriptFromAntizapret() {
|
||||
httpGet(
|
||||
antizapret.pacUrl,
|
||||
(err, res) => {
|
||||
|
@ -48,7 +66,11 @@ function UpdatePac() {
|
|||
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
function syncWithAntizapret() {
|
||||
updateAntizapretProxyIp();
|
||||
setPacScriptFromAntizapret();
|
||||
}
|
||||
|
||||
chrome.runtime.onInstalled.addListener( details => {
|
||||
|
@ -56,14 +78,15 @@ chrome.runtime.onInstalled.addListener( details => {
|
|||
case 'install':
|
||||
case 'update':
|
||||
|
||||
UpdatePac();
|
||||
syncWithAntizapret();
|
||||
|
||||
var reason = 'Периодичное обновление PAC-скрипта Антизапрет';
|
||||
|
||||
chrome.alarms.onAlarm.addListener(
|
||||
alarm => {
|
||||
if (alarm.name === reason)
|
||||
UpdatePac();
|
||||
if (alarm.name === reason) {
|
||||
syncWithAntizapret();
|
||||
}
|
||||
}
|
||||
);
|
||||
|
|
@ -1,29 +0,0 @@
|
|||
'use strict';
|
||||
|
||||
function blockInform(details) {
|
||||
if (details.tabId !== -1 && details.ip === antizapret.proxyIp) {
|
||||
|
||||
chrome.pageAction.setIcon({
|
||||
path: '/icons/rkn-empty.png',
|
||||
tabId: details.tabId
|
||||
});
|
||||
|
||||
chrome.pageAction.setTitle({
|
||||
title: 'Сайт блокирован!',
|
||||
tabId: details.tabId
|
||||
});
|
||||
|
||||
chrome.pageAction.show(details.tabId);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
chrome.webRequest.onCompleted.addListener(
|
||||
blockInform,
|
||||
{ urls: ['<all_urls>'] }
|
||||
);
|
||||
|
||||
chrome.webRequest.onErrorOccurred.addListener(
|
||||
blockInform,
|
||||
{ urls: ['<all_urls>'] }
|
||||
);
|