From d58929022b7ab09254f06064c842de89fe2da0a0 Mon Sep 17 00:00:00 2001 From: Maxim Topciu Date: Fri, 22 Sep 2023 15:09:07 +0300 Subject: [PATCH] AG-26073 check trusted urls by hostnames Merge in ADGUARD-FILTERS/tsurlfilter from fix/AG-26073 to master Squashed commit of the following: commit 5ad3c8b1736ca18cba6d4b0f4df1924730c4824e Author: Maxim Topciu Date: Fri Sep 22 13:54:28 2023 +0300 AG-26073 add changelog commit cf3ee389d30ff5cee0e971662a63dbc854b64b53 Author: Maxim Topciu Date: Fri Sep 22 13:52:28 2023 +0300 AG-26073 check trusted urls by hostnames --- packages/tswebextension/CHANGELOG.md | 4 ++ .../services/document-blocking-service.ts | 4 +- .../document-blocking-service.test.ts | 41 +++++++++++++++++++ 3 files changed, 47 insertions(+), 2 deletions(-) create mode 100644 packages/tswebextension/test/lib/mv2/background/services/document-blocking-service.test.ts diff --git a/packages/tswebextension/CHANGELOG.md b/packages/tswebextension/CHANGELOG.md index b0cb76e48..5e7679857 100644 --- a/packages/tswebextension/CHANGELOG.md +++ b/packages/tswebextension/CHANGELOG.md @@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 +## Unreleased + +### Fixed +- Proceed anyway is not working for more than two level domains [#2497](https://github.com/AdguardTeam/AdguardBrowserExtension/issues/2497). ## [0.3.20] - 2023-09-19 diff --git a/packages/tswebextension/src/lib/mv2/background/services/document-blocking-service.ts b/packages/tswebextension/src/lib/mv2/background/services/document-blocking-service.ts index 74fb2e407..3242fefeb 100644 --- a/packages/tswebextension/src/lib/mv2/background/services/document-blocking-service.ts +++ b/packages/tswebextension/src/lib/mv2/background/services/document-blocking-service.ts @@ -1,5 +1,5 @@ import browser, { type WebRequest } from 'webextension-polyfill'; -import { getDomain } from 'tldts'; +import { getHostname } from 'tldts'; import type { NetworkRule } from '@adguard/tsurlfilter'; import { defaultFilteringLog, FilteringEventType } from '../../../common/filtering-log'; @@ -128,7 +128,7 @@ export class DocumentBlockingService { * @returns True, if request url domain is trusted, else false. */ private isTrustedDomain(url: string): boolean { - const domain = getDomain(url); + const domain = getHostname(url); if (domain) { return this.trustedDomains.includes(domain); diff --git a/packages/tswebextension/test/lib/mv2/background/services/document-blocking-service.test.ts b/packages/tswebextension/test/lib/mv2/background/services/document-blocking-service.test.ts new file mode 100644 index 000000000..e18e56d1d --- /dev/null +++ b/packages/tswebextension/test/lib/mv2/background/services/document-blocking-service.test.ts @@ -0,0 +1,41 @@ +import { DocumentBlockingService } from '@lib/mv2/background/services/document-blocking-service'; +import { NetworkRule } from '@adguard/tsurlfilter'; +import { ConfigurationMV2 } from '@lib/mv2'; +import { getConfigurationMv2Fixture } from '../fixtures/configuration'; + +describe('DocumentBlockingService', () => { + let documentBlockingService: DocumentBlockingService; + + beforeEach(() => { + documentBlockingService = new DocumentBlockingService(); + }); + + afterEach(() => { + jest.clearAllMocks(); + }); + + it('should not block URLs from trusted domains', () => { + const trustedUrl = 'https://opulent-space-telegram-g4wx56pwp9q2vp5j.github.dev/blabla'; + const trustedDomain = 'opulent-space-telegram-g4wx56pwp9q2vp5j.github.dev'; + const mockNetworkRule = new NetworkRule('example.org', 0); + + const mockConfig: ConfigurationMV2 = { + ...getConfigurationMv2Fixture(), + ...{ + trustedDomains: [trustedDomain], + }, + }; + + documentBlockingService.configure(mockConfig); + + const result = documentBlockingService.getDocumentBlockingResponse({ + tabId: 1, + eventId: 'someEvent', + rule: mockNetworkRule, + referrerUrl: 'someReferrer', + requestUrl: trustedUrl, + }); + + expect(result).toBeUndefined(); + }); +});