mirror of
https://gitlab.com/magnolia1234/bypass-paywalls-firefox-clean.git
synced 2024-09-20 06:33:42 +02:00
Add rules for new sites (opt-in to custom sites)
This commit is contained in:
parent
29d753c91d
commit
9636dadcaf
7 changed files with 77 additions and 56 deletions
|
@ -23,7 +23,8 @@ By default BPC has limited permissions, but you can opt-in to enable custom site
|
||||||
|
|
||||||
### Update
|
### Update
|
||||||
Check for updates (in about:addons) and allow permissions for newly supported sites (else no update will be installed).\
|
Check for updates (in about:addons) and allow permissions for newly supported sites (else no update will be installed).\
|
||||||
You can also check for update of site rules at startup (opt-in).
|
You can also check for update of site rules at startup (opt-in).\
|
||||||
|
For new sites you also have to opt-in to custom sites/request permissions for new domains (or wait for new release).
|
||||||
|
|
||||||
#### Android
|
#### Android
|
||||||
On Android this add-on doesn't work with latest Firefox v84 (Fenix); it only supports a number of 'recommended' add-ons (for now).\
|
On Android this add-on doesn't work with latest Firefox v84 (Fenix); it only supports a number of 'recommended' add-ons (for now).\
|
||||||
|
|
|
@ -137,7 +137,9 @@ function set_rules(sites, sites_updated, sites_custom) {
|
||||||
rule = defaultSites[site];
|
rule = defaultSites[site];
|
||||||
if (sites_updated.hasOwnProperty(site))
|
if (sites_updated.hasOwnProperty(site))
|
||||||
rule = sites_updated[site];
|
rule = sites_updated[site];
|
||||||
} else if (sites_custom.hasOwnProperty(site)) { // custom sites
|
} else if (sites_updated.hasOwnProperty(site)) { // updated (new) sites
|
||||||
|
rule = sites_updated[site];
|
||||||
|
} else if (sites_custom.hasOwnProperty(site)) { // custom (new) sites
|
||||||
rule = sites_custom[site];
|
rule = sites_custom[site];
|
||||||
custom = true;
|
custom = true;
|
||||||
} else
|
} else
|
||||||
|
@ -278,8 +280,9 @@ ext_api.storage.local.get({
|
||||||
var sites = items.sites;
|
var sites = items.sites;
|
||||||
optionSites = sites;
|
optionSites = sites;
|
||||||
var sites_default = items.sites_default;
|
var sites_default = items.sites_default;
|
||||||
var sites_custom = items.sites_custom;
|
customSites = items.sites_custom;
|
||||||
var sites_updated = items.sites_updated;
|
customSites_domains = Object.values(customSites).map(x => x.domain);
|
||||||
|
updatedSites = items.sites_updated;
|
||||||
var ext_version_old = items.ext_version_old;
|
var ext_version_old = items.ext_version_old;
|
||||||
optin_setcookie = items.optIn;
|
optin_setcookie = items.optIn;
|
||||||
optin_update = items.optInUpdate;
|
optin_update = items.optInUpdate;
|
||||||
|
@ -294,9 +297,9 @@ ext_api.storage.local.get({
|
||||||
// Enable new sites by default (opt-in)
|
// Enable new sites by default (opt-in)
|
||||||
if (ext_version > ext_version_old) {
|
if (ext_version > ext_version_old) {
|
||||||
if (enabledSites.includes('#options_enable_new_sites')) {
|
if (enabledSites.includes('#options_enable_new_sites')) {
|
||||||
var sites_new = Object.keys(defaultSites).filter(x => !defaultSites[x].domain.match(/^(#options_|###$)/) && !sites_default.includes(x));
|
let sites_new = Object.keys(defaultSites).filter(x => !defaultSites[x].domain.match(/^(#options_|###$)/) && !sites_default.includes(x));
|
||||||
for (let site_new of sites_new) {
|
for (let site_new of sites_new) {
|
||||||
sites[site_new] = defaultSites[site_new];
|
sites[site_new] = defaultSites[site_new].domain;
|
||||||
}
|
}
|
||||||
ext_api.storage.local.set({
|
ext_api.storage.local.set({
|
||||||
sites: sites
|
sites: sites
|
||||||
|
@ -309,9 +312,6 @@ ext_api.storage.local.get({
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
customSites = sites_custom;
|
|
||||||
customSites_domains = Object.values(sites_custom).map(x => x.domain);
|
|
||||||
updatedSites = sites_updated;
|
|
||||||
disabledSites = defaultSites_domains.concat(customSites_domains).filter(x => !enabledSites.includes(x) && x !== '###');
|
disabledSites = defaultSites_domains.concat(customSites_domains).filter(x => !enabledSites.includes(x) && x !== '###');
|
||||||
add_grouped_enabled_domains(grouped_sites);
|
add_grouped_enabled_domains(grouped_sites);
|
||||||
set_rules(sites, updatedSites, customSites);
|
set_rules(sites, updatedSites, customSites);
|
||||||
|
|
|
@ -4,6 +4,7 @@ Changelog Bypass Paywalls Clean - Firefox
|
||||||
Post-release
|
Post-release
|
||||||
Fix Nikkei Asian Review (cookies)
|
Fix Nikkei Asian Review (cookies)
|
||||||
Fix Repubblica sites (re-enable Googlebot)
|
Fix Repubblica sites (re-enable Googlebot)
|
||||||
|
Add rules for new sites (opt-in to custom sites)
|
||||||
Check for update version on startup/options (now opt-out)
|
Check for update version on startup/options (now opt-out)
|
||||||
|
|
||||||
* v2.4.3.0 (2021-11-07)
|
* v2.4.3.0 (2021-11-07)
|
||||||
|
|
|
@ -558,5 +558,5 @@
|
||||||
"*://*.wallkit.net/*",
|
"*://*.wallkit.net/*",
|
||||||
"*://*.wsj.net/*"
|
"*://*.wsj.net/*"
|
||||||
],
|
],
|
||||||
"version": "2.4.3.3"
|
"version": "2.4.3.4"
|
||||||
}
|
}
|
|
@ -31,54 +31,64 @@ function save_options() {
|
||||||
function renderOptions() {
|
function renderOptions() {
|
||||||
var labelEl;
|
var labelEl;
|
||||||
ext_api.storage.local.get({
|
ext_api.storage.local.get({
|
||||||
sites: {}, sites_custom: {}, sites_excluded: []
|
sites: {},
|
||||||
}, function(items) {
|
sites_updated: {},
|
||||||
|
sites_custom: {},
|
||||||
|
sites_excluded: []
|
||||||
|
}, function (items) {
|
||||||
var sites = items.sites;
|
var sites = items.sites;
|
||||||
|
var sites_updated = items.sites_updated;
|
||||||
|
var sites_custom = items.sites_custom;
|
||||||
var sites_excluded = items.sites_excluded;
|
var sites_excluded = items.sites_excluded;
|
||||||
var sitesEl = document.getElementById('bypass_sites');
|
var sitesEl = document.getElementById('bypass_sites');
|
||||||
for (var key in defaultSites) {
|
var site_types = {
|
||||||
if (!defaultSites.hasOwnProperty(key)) {
|
"updated": {
|
||||||
continue;
|
sites: sites_updated,
|
||||||
|
title: '* Updated (new) Sites (opt-in to custom sites)',
|
||||||
|
default_sites: false
|
||||||
|
},
|
||||||
|
"default": {
|
||||||
|
sites: defaultSites,
|
||||||
|
title: '* Default Sites',
|
||||||
|
default_sites: true
|
||||||
|
},
|
||||||
|
"custom": {
|
||||||
|
sites: sites_custom,
|
||||||
|
title: '* Custom (new) Sites',
|
||||||
|
default_sites: false
|
||||||
}
|
}
|
||||||
var value = defaultSites[key].domain;
|
};
|
||||||
|
var first = true;
|
||||||
|
for (let site_type in site_types) {
|
||||||
|
if (!first)
|
||||||
|
labelEl.appendChild(document.createElement('hr'));
|
||||||
|
else
|
||||||
|
first = false;
|
||||||
labelEl = document.createElement('label');
|
labelEl = document.createElement('label');
|
||||||
var inputEl = document.createElement('input');
|
labelEl.setAttribute('style', ' font-weight: bold;');
|
||||||
inputEl.type = 'checkbox';
|
labelEl.appendChild(document.createTextNode(site_types[site_type].title));
|
||||||
inputEl.dataset.key = key;
|
|
||||||
inputEl.dataset.value = value;
|
|
||||||
inputEl.checked = Object.keys(sites).some(title => compareKey(title, key)) && !sites_excluded.includes(value);
|
|
||||||
if (value !== '###') {
|
|
||||||
labelEl.appendChild(inputEl);
|
|
||||||
} else {
|
|
||||||
labelEl.appendChild(document.createElement('hr'));
|
|
||||||
labelEl.setAttribute('style', ' font-weight: bold;');
|
|
||||||
}
|
|
||||||
labelEl.appendChild(document.createTextNode(' ' + key));
|
|
||||||
sitesEl.appendChild(labelEl);
|
|
||||||
}
|
|
||||||
// custom
|
|
||||||
labelEl.appendChild(document.createElement('hr'));
|
|
||||||
labelEl = document.createElement('label');
|
|
||||||
labelEl.setAttribute('style', ' font-weight: bold;');
|
|
||||||
labelEl.appendChild(document.createTextNode('* Custom Sites'));
|
|
||||||
sitesEl.appendChild(labelEl);
|
|
||||||
var sites_custom = items.sites_custom;
|
|
||||||
for (var key in sites_custom) {
|
|
||||||
var domain = sites_custom[key]['domain'];
|
|
||||||
if (defaultSites.hasOwnProperty(key) || defaultSites_domains.includes(domain)) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
labelEl = document.createElement('label');
|
|
||||||
var inputEl = document.createElement('input');
|
|
||||||
inputEl.type = 'checkbox';
|
|
||||||
inputEl.dataset.key = key;
|
|
||||||
inputEl.dataset.value = domain;
|
|
||||||
inputEl.checked = Object.keys(sites).some(title => compareKey(title, key)) && !sites_excluded.includes(domain);
|
|
||||||
if (value !== '' && value !== '###') {
|
|
||||||
labelEl.appendChild(inputEl);
|
|
||||||
}
|
|
||||||
labelEl.appendChild(document.createTextNode(' '+key));
|
|
||||||
sitesEl.appendChild(labelEl);
|
sitesEl.appendChild(labelEl);
|
||||||
|
let sites_arr = site_types[site_type].sites
|
||||||
|
for (let key in sites_arr) {
|
||||||
|
let domain = sites_arr[key]['domain'];
|
||||||
|
if (!site_types[site_type].default_sites && (defaultSites.hasOwnProperty(key) || defaultSites_domains.includes(domain))) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
labelEl = document.createElement('label');
|
||||||
|
let inputEl = document.createElement('input');
|
||||||
|
inputEl.type = 'checkbox';
|
||||||
|
inputEl.dataset.key = key;
|
||||||
|
inputEl.dataset.value = domain;
|
||||||
|
inputEl.checked = Object.keys(sites).some(title => compareKey(title, key)) && !sites_excluded.includes(domain);
|
||||||
|
if (domain !== '' && domain !== '###') {
|
||||||
|
labelEl.appendChild(inputEl);
|
||||||
|
} else {
|
||||||
|
labelEl.appendChild(document.createElement('hr'));
|
||||||
|
labelEl.setAttribute('style', ' font-weight: bold;');
|
||||||
|
}
|
||||||
|
labelEl.appendChild(document.createTextNode(' ' + key));
|
||||||
|
sitesEl.appendChild(labelEl);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
// excluded
|
// excluded
|
||||||
labelEl.appendChild(document.createElement('hr'));
|
labelEl.appendChild(document.createElement('hr'));
|
||||||
|
|
|
@ -24,7 +24,7 @@
|
||||||
Custom sites (new) are enabled automatically in <small><button><a href="options.html" style="text-decoration:none;color:inherit">Options</a></button></small> (cookies will be removed by default unless you enable allow_cookies).<br>
|
Custom sites (new) are enabled automatically in <small><button><a href="options.html" style="text-decoration:none;color:inherit">Options</a></button></small> (cookies will be removed by default unless you enable allow_cookies).<br>
|
||||||
If you want to use custom sites (for non-listed sites) enable it in <small><button><a href="optin/opt-in.html" style="text-decoration:none;color:inherit">Opt-in</a></button></small>
|
If you want to use custom sites (for non-listed sites) enable it in <small><button><a href="optin/opt-in.html" style="text-decoration:none;color:inherit">Opt-in</a></button></small>
|
||||||
<strong>Custom sites enabled: <span id="custom-enabled"></span></strong><br>
|
<strong>Custom sites enabled: <span id="custom-enabled"></span></strong><br>
|
||||||
You can also just request permissions for the custom sites you added yourself (below).<br>
|
You can also just request permissions for the custom sites you added yourself & post-release added sites (below).<br>
|
||||||
On Android: to enable custom sites you need the 'custom' add-on version (with access to all sites): <a href="https://addons.mozilla.org/en-US/firefox/addon/bypass-paywalls-clean-custom" target="_blank">Bypass Paywalls Clean (custom)</a>
|
On Android: to enable custom sites you need the 'custom' add-on version (with access to all sites): <a href="https://addons.mozilla.org/en-US/firefox/addon/bypass-paywalls-clean-custom" target="_blank">Bypass Paywalls Clean (custom)</a>
|
||||||
<br><br>
|
<br><br>
|
||||||
</div>
|
</div>
|
||||||
|
@ -48,7 +48,7 @@
|
||||||
<button id="edit">Edit (re-Add)</button>
|
<button id="edit">Edit (re-Add)</button>
|
||||||
<button id="perm_request">Request<br>permissions</button>
|
<button id="perm_request">Request<br>permissions</button>
|
||||||
<button id="perm_remove">Remove<br>permissions</button><br>
|
<button id="perm_remove">Remove<br>permissions</button><br>
|
||||||
permissions granted (for all in custom list): <strong><span id="perm-custom"></span></strong>
|
permissions granted (for all in custom list + updated): <strong><span id="perm-custom"></span></strong>
|
||||||
</span>
|
</span>
|
||||||
<div style="clear:both;"></div>
|
<div style="clear:both;"></div>
|
||||||
<div style="width:90%;">
|
<div style="width:90%;">
|
||||||
|
|
|
@ -224,9 +224,12 @@ var perm_origins;
|
||||||
// Restores checkbox input states using the preferences stored in ext_api.storage.
|
// Restores checkbox input states using the preferences stored in ext_api.storage.
|
||||||
function renderOptions() {
|
function renderOptions() {
|
||||||
ext_api.storage.local.get({
|
ext_api.storage.local.get({
|
||||||
sites_custom: {}
|
sites_custom: {},
|
||||||
|
sites_updated: {}
|
||||||
}, function (items) {
|
}, function (items) {
|
||||||
var sites_custom = items.sites_custom;
|
var sites_custom = items.sites_custom;
|
||||||
|
var sites_updated = items.sites_updated;
|
||||||
|
var sites_updated_new = Object.keys(sites_updated).filter(x => !defaultSites_domains.includes(x.domain));
|
||||||
var sitesEl = document.getElementById('bypass_sites');
|
var sitesEl = document.getElementById('bypass_sites');
|
||||||
sitesEl.innerHTML = '';
|
sitesEl.innerHTML = '';
|
||||||
var labelEl = document.createElement('label');
|
var labelEl = document.createElement('label');
|
||||||
|
@ -316,6 +319,12 @@ function renderOptions() {
|
||||||
labelEl.appendChild(selectEl);
|
labelEl.appendChild(selectEl);
|
||||||
custom_sitesEl.appendChild(labelEl);
|
custom_sitesEl.appendChild(labelEl);
|
||||||
|
|
||||||
|
for (let key in sites_updated_new) {
|
||||||
|
let domain = sites_updated_new[key]['domain'];
|
||||||
|
if (!perm_origins.includes(domain))
|
||||||
|
perm_origins.push('*://*.' + domain + '/*');
|
||||||
|
}
|
||||||
|
|
||||||
var perm_custom = document.getElementById('perm-custom');
|
var perm_custom = document.getElementById('perm-custom');
|
||||||
ext_api.permissions.contains({
|
ext_api.permissions.contains({
|
||||||
origins: perm_origins
|
origins: perm_origins
|
||||||
|
|
Loading…
Reference in a new issue