Allow Google fonts for Google services by default and permanently (#1560)

This commit is contained in:
nobody 2023-10-13 08:55:30 +02:00
parent e5e4482853
commit 5ee66f2a99
No known key found for this signature in database
GPG Key ID: 8F6DE3D614FCFD7A
5 changed files with 267 additions and 4 deletions

View File

@ -34,6 +34,7 @@
"BadResources": true, "BadResources": true,
"LogString": true, "LogString": true,
"BlockedRequestMethods": true, "BlockedRequestMethods": true,
"GoogleDomains": true,
"fileGuard": true, "fileGuard": true,
"files": true, "files": true,

View File

@ -450,6 +450,258 @@ const LogString = {
'IFRAME': 'Possible iframe request:', 'IFRAME': 'Possible iframe request:',
}; };
/**
* https://codeberg.org/nobody/LocalCDN/issues/1560
*/
const GoogleDomains = {
'google.com': true,
'youtube.com': true,
'ytimg.com': true,
'withgoogle.com': true,
'withyoutube.com': true,
'google.ws': true,
'google.vu': true,
'google.vg': true,
'google.tt': true,
'google.to': true,
'google.tn': true,
'google.tm': true,
'google.tl': true,
'google.tk': true,
'google.tg': true,
'google.td': true,
'google.st': true,
'google.sr': true,
'google.so': true,
'google.sn': true,
'google.sm': true,
'google.sk': true,
'google.si': true,
'google.sh': true,
'google.se': true,
'google.sc': true,
'google.rw': true,
'google.ru': true,
'google.rs': true,
'google.ro': true,
'google.pt': true,
'google.ps': true,
'google.pn': true,
'google.pl': true,
'google.nu': true,
'google.nr': true,
'google.no': true,
'google.nl': true,
'google.ne': true,
'google.mw': true,
'google.mv': true,
'google.mu': true,
'google.ms': true,
'google.mn': true,
'google.ml': true,
'google.mk': true,
'google.mg': true,
'google.me': true,
'google.md': true,
'google.lv': true,
'google.lu': true,
'google.lt': true,
'google.lk': true,
'google.li': true,
'google.la': true,
'google.kz': true,
'google.ki': true,
'google.kg': true,
'google.jo': true,
'google.je': true,
'google.it': true,
'google.is': true,
'google.iq': true,
'google.io': true,
'google.im': true,
'google.ie': true,
'google.hu': true,
'google.ht': true,
'google.hr': true,
'google.hn': true,
'google.gy': true,
'google.gr': true,
'google.gp': true,
'google.gm': true,
'google.gl': true,
'google.gg': true,
'google.gf': true,
'google.ge': true,
'google.ga': true,
'google.fr': true,
'google.fm': true,
'google.fi': true,
'google.es': true,
'google.ee': true,
'google.dz': true,
'google.dm': true,
'google.dk': true,
'google.dj': true,
'google.de': true,
'google.cz': true,
'google.cv': true,
'google.com.vn': true,
'google.com.vc': true,
'google.com.uy': true,
'google.com.ua': true,
'google.com.tw': true,
'google.com.tr': true,
'google.com.tj': true,
'google.com.sv': true,
'google.com.sl': true,
'google.com.sg': true,
'google.com.sb': true,
'google.com.sa': true,
'google.com.qa': true,
'google.com.py': true,
'google.com.pr': true,
'google.com.pk': true,
'google.com.ph': true,
'google.com.pg': true,
'google.com.pe': true,
'google.com.pa': true,
'google.com.om': true,
'google.com.np': true,
'google.com.ni': true,
'google.com.ng': true,
'google.com.nf': true,
'google.com.na': true,
'google.com.my': true,
'google.com.mx': true,
'google.com.mt': true,
'google.com.mm': true,
'google.com.ly': true,
'google.com.lc': true,
'google.com.lb': true,
'google.com.kw': true,
'google.com.kh': true,
'google.com.jm': true,
'google.com.hk': true,
'google.com.gt': true,
'google.com.gi': true,
'google.com.gh': true,
'google.com.fj': true,
'google.com.et': true,
'google.com.eg': true,
'google.com.ec': true,
'google.com.do': true,
'google.com.cy': true,
'google.com.cu': true,
'google.com.co': true,
'google.com.bz': true,
'google.com.br': true,
'google.com.bo': true,
'google.com.bn': true,
'google.com.bh': true,
'google.com.bd': true,
'google.com.au': true,
'google.com.ar': true,
'google.com.ai': true,
'google.com.ag': true,
'google.com.af': true,
'google.co.zw': true,
'google.co.zm': true,
'google.co.za': true,
'google.co.vi': true,
'google.co.ve': true,
'google.co.uz': true,
'google.co.uk': true,
'google.co.ug': true,
'google.co.tz': true,
'google.co.th': true,
'google.co.pn': true,
'google.co.nz': true,
'google.co.mz': true,
'google.co.ma': true,
'google.co.ls': true,
'google.co.kr': true,
'google.co.ke': true,
'google.co.jp': true,
'google.co.in': true,
'google.co.il': true,
'google.co.id': true,
'google.co.cr': true,
'google.co.ck': true,
'google.co.bw': true,
'google.co.ao': true,
'google.cn': true,
'google.cm': true,
'google.cl': true,
'google.ci': true,
'google.ch': true,
'google.cg': true,
'google.cf': true,
'google.cd': true,
'google.cc': true,
'google.cat': true,
'google.ca': true,
'google.by': true,
'google.bt': true,
'google.bs': true,
'google.bj': true,
'google.bi': true,
'google.bg': true,
'google.bf': true,
'google.be': true,
'google.ba': true,
'google.az': true,
'google.at': true,
'google.as': true,
'google.am': true,
'google.al': true,
'google.ae': true,
'google.ad': true,
'google.ac': true,
'g.cn': true,
'yt.be': true,
'youtubegaming.com': true,
'youtubeeducation.com': true,
'youtube-nocookie.com': true,
'youtu.be': true,
'igoogle.com': true,
'gooogle.com': true,
'goolge.com': true,
'googlr.com': true,
'googlesyndication.com': true,
'googlesource.com': true,
'googlescholar.com': true,
'googlepagecreator.com': true,
'googlemembers.com': true,
'googlemember.com': true,
'googlemaps.com': true,
'googlemail.com': true,
'googleearth.com': true,
'googlee.com': true,
'googledrive.com': true,
'googlecommerce.com': true,
'googlecode.com': true,
'googlebot.com': true,
'googlearth.com': true,
'googleapps.com': true,
'googleapis.com': true,
'googleanalytics.com': true,
'googleadservices.com': true,
'google.org': true,
'google.net': true,
'google-analytics.com': true,
'googl.com': true,
'googil.com': true,
'googel.com': true,
'goo.gl': true,
'gogole.com': true,
'gogle.com': true,
'gmail.com': true,
'ggoogle.com': true,
'g.co': true,
'android.com': true,
'developer.android.com': true,
};
// Supported charsets for TextDecoder() // Supported charsets for TextDecoder()
// https://developer.mozilla.org/en-US/docs/Web/API/TextDecoder/TextDecoder // https://developer.mozilla.org/en-US/docs/Web/API/TextDecoder/TextDecoder
const EncodingTypes = { const EncodingTypes = {

View File

@ -32,7 +32,7 @@ var interceptor = {};
interceptor.handleRequest = function (requestDetails, tabIdentifier, tab) { interceptor.handleRequest = function (requestDetails, tabIdentifier, tab) {
let validCandidate, targetDetails, targetDomain, isGoogleFont, isGoogleMaterialIcons, initiatorDomain, isListed, let validCandidate, targetDetails, targetDomain, isGoogleFont, isGoogleMaterialIcons, initiatorDomain, isListed,
iframe; iframe, isGoogleDomain;
iframe = ''; iframe = '';
if (tab.url !== requestDetails.originUrl) { if (tab.url !== requestDetails.originUrl) {
@ -95,8 +95,9 @@ interceptor.handleRequest = function (requestDetails, tabIdentifier, tab) {
if (BrowserType.FIREFOX && isGoogleFont && !isGoogleMaterialIcons) { if (BrowserType.FIREFOX && isGoogleFont && !isGoogleMaterialIcons) {
initiatorDomain = helpers.extractDomainFromUrl(tab.url, true); initiatorDomain = helpers.extractDomainFromUrl(tab.url, true);
isListed = helpers.checkAllowlisted(initiatorDomain, interceptor.allowedDomainsGoogleFonts); isListed = helpers.checkAllowlisted(initiatorDomain, interceptor.allowedDomainsGoogleFonts);
isGoogleDomain = helpers.isGoogleDomain(initiatorDomain);
// Check if the website is allowed to load Google Fonts // Check if the website is allowed to load Google Fonts
if (interceptor.blockGoogleFonts === true && isListed === false) { if (interceptor.blockGoogleFonts === true && isListed === false && isGoogleDomain === false) {
console.log(`${LogString.PREFIX} Google fonts blocked ${requestDetails.url}`); console.log(`${LogString.PREFIX} Google fonts blocked ${requestDetails.url}`);
log.append(tab.url, requestDetails.url, '-', true, iframe); log.append(tab.url, requestDetails.url, '-', true, iframe);
interceptor._handleMissingCandidate(requestDetails.url, tabIdentifier); interceptor._handleMissingCandidate(requestDetails.url, tabIdentifier);
@ -104,6 +105,11 @@ interceptor.handleRequest = function (requestDetails, tabIdentifier, tab) {
return { return {
'redirectUrl': chrome.runtime.getURL('resources/google-fonts-placeholder.css') 'redirectUrl': chrome.runtime.getURL('resources/google-fonts-placeholder.css')
}; };
} else if (isGoogleDomain === true) {
console.log(`${LogString.PREFIX} Google fonts allowed, because Google Website ${initiatorDomain}`);
return {
'cancel': false
};
} else if (interceptor.blockGoogleFonts === false || isListed === true) { } else if (interceptor.blockGoogleFonts === false || isListed === true) {
return { return {
'cancel': false 'cancel': false

View File

@ -294,3 +294,7 @@ helpers.compareVersion = function (v1, v2) {
} }
return v1.length === v2.length ? true : v1.length < v2.length ? false : true; return v1.length === v2.length ? true : v1.length < v2.length ? false : true;
}; };
helpers.isGoogleDomain = function (initiatorDomain) {
return GoogleDomains[initiatorDomain.replace('www.', '')] || false;
};

View File

@ -25,9 +25,9 @@
<h2>New in LocalCDN:</h2> <h2>New in LocalCDN:</h2>
</div> </div>
<div class="release-notes-area"> <div class="release-notes-area">
<p></p> <p>Improved</p>
<ul> <ul>
<li></li> <li>Allow Google fonts for Google services by default and permanently (<a href="https://codeberg.org/nobody/LocalCDN/issues/1560">#1560</a>)</li>
</ul> </ul>
</div> </div>
<div id="generator-section"> <div id="generator-section">