@ -2,6 +2,7 @@
'use strict' ;
var ext _api = ( typeof browser === 'object' ) ? browser : chrome ;
var url _loc = ( typeof browser === 'object' ) ? 'firefox' : 'chrome' ;
var manifestData = ext _api . runtime . getManifest ( ) ;
var ext _name = manifestData . name ;
var ext _version = manifestData . version ;
@ -88,6 +89,7 @@ var disabledSites = [];
var optionSites = { } ;
var customSites = { } ;
var customSites _domains = [ ] ;
var updatedSites = { } ;
var excludedSites = [ ] ;
function setDefaultOptions ( ) {
@ -103,7 +105,24 @@ function setDefaultOptions() {
} ) ;
}
function set _rules ( sites , sites _custom ) {
function check _sites _updated ( ) {
var sites _updated _json = 'https://gitlab.com/magnolia1234/bypass-paywalls-' + url _loc + '-clean/-/raw/master/sites_updated.json' ;
fetch ( sites _updated _json )
. then ( response => {
if ( response . ok ) {
response . json ( ) . then ( json => {
expandSiteRules ( json ) ;
ext _api . storage . local . set ( {
sites _updated : json
} ) ;
} )
}
} ) . catch ( function ( err ) {
false ;
} ) ;
}
function set _rules ( sites , sites _updated , sites _custom ) {
initSetRules ( ) ;
for ( let site in sites ) {
let site _domain = sites [ site ] . toLowerCase ( ) ;
@ -112,7 +131,9 @@ function set_rules(sites, sites_custom) {
let rule = { } ;
if ( defaultSites . hasOwnProperty ( site ) ) {
rule = defaultSites [ site ] ;
} else { // custom sites
if ( sites _updated . hasOwnProperty ( site ) )
rule = sites _updated [ site ] ;
} else { // custom sites
rule = sites _custom [ site ] ;
custom = true ;
}
@ -145,8 +166,9 @@ function set_rules(sites, sites_custom) {
let block _regex _default = '' ;
if ( rule . hasOwnProperty ( 'block_regex' ) )
block _regex _default = rule . block _regex ;
rule = sites _custom [ customSite _title ] ;
rule = { } ;
for ( let key in sites _custom [ customSite _title ] )
rule [ key ] = sites _custom [ customSite _title ] [ key ] ;
if ( block _regex _default ) {
if ( rule . hasOwnProperty ( 'block_regex' ) ) {
if ( block _regex _default instanceof RegExp )
@ -221,6 +243,7 @@ function set_rules(sites, sites_custom) {
disableJavascriptOnListedSites ( ) ;
}
// add grouped sites to en/disabledSites (and exclude sites)
function add _grouped _enabled _domains ( groups ) {
for ( let key in groups ) {
if ( enabledSites . includes ( key ) )
@ -236,24 +259,21 @@ function add_grouped_enabled_domains(groups) {
}
}
// add grouped sites to en/disabledSites (and exclude sites)
function add _grouped _sites ( grouped _sites , sites , sites _custom ) {
add _grouped _enabled _domains ( grouped _sites ) ;
set _rules ( sites , sites _custom ) ;
}
// Get the enabled sites (from local storage) & set_rules for sites
ext _api . storage . local . get ( {
sites : { } ,
sites _default : Object . keys ( defaultSites ) . filter ( x => ! defaultSites [ x ] . domain . match ( /^(#options_|###$)/ ) ) ,
sites _custom : { } ,
sites _updated : { } ,
sites _excluded : [ ] ,
ext _version _old : '2.3.9.0' ,
optIn : false
} , function ( items ) {
var sites = items . sites ;
optionSites = sites ;
var sites _default = items . sites _default ;
var sites _custom = items . sites _custom ;
var sites _updated = items . sites _updated ;
var ext _version _old = items . ext _version _old ;
optin _setcookie = items . optIn ;
excludedSites = items . sites _excluded ;
@ -284,9 +304,12 @@ 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 !== '###' ) ;
add _grouped _enabled _domains ( grouped _sites ) ;
set _rules ( sites , customSites ) ;
set _rules ( sites , updatedSites , customSites ) ;
if ( enabledSites . includes ( '#options_optin_update_rules' ) )
check _sites _updated ( ) ;
} ) ;
// Listen for changes to options
@ -305,7 +328,7 @@ ext_api.storage.onChanged.addListener(function (changes, namespace) {
} ) ;
disabledSites = defaultSites _domains . concat ( customSites _domains ) . filter ( x => ! enabledSites . includes ( x ) && x !== '###' ) ;
add _grouped _enabled _domains ( grouped _sites ) ;
set _rules ( sites , customSites) ;
set _rules ( sites , updatedSites, customSites) ;
}
if ( key === 'sites_custom' ) {
var sites _custom = storageChange . newValue ? storageChange . newValue : { } ;
@ -333,10 +356,14 @@ ext_api.storage.onChanged.addListener(function (changes, namespace) {
true ;
} ) ;
} else
set _rules ( sites , customSites) ;
set _rules ( sites , updatedSites, customSites) ;
} ) ;
}
if ( key === 'sites_updated' ) {
var sites _updated = storageChange . newValue ? storageChange . newValue : { } ;
updatedSites = sites _updated ;
set _rules ( optionSites , updatedSites , customSites ) ;
}
if ( key === 'sites_excluded' ) {
var sites _excluded = storageChange . newValue ? storageChange . newValue : [ ] ;
var sites _excluded _old = storageChange . oldValue ? storageChange . oldValue : [ ] ;
@ -959,7 +986,7 @@ function updateBadge(activeTab) {
var ext _version _new ;
check _update ( ) ;
function check _update ( ) {
var manifest _new = 'https:// bitbucket.org/magnolia1234/bypass-paywalls-firefox-clean /raw/master/manifest.json';
var manifest _new = 'https:// gitlab.com/magnolia1234/bypass-paywalls-' + url _loc + '-clean/- /raw/master/manifest.json';
fetch ( manifest _new )
. then ( response => {
if ( response . ok ) {