Skip to content

Commit

Permalink
change error logging level on setting cookie with mismatched domain a…
Browse files Browse the repository at this point in the history
…nd request url. AG-29457

AdguardTeam/AdguardBrowserExtension#2683

Squashed commit of the following:

commit 68cb1c3
Merge: 3e3b202 4411081
Author: Slava Leleka <v.leleka@adguard.com>
Date:   Mon Apr 15 14:32:10 2024 +0400

    Merge branch 'master' into fix/AG-29457

commit 3e3b202
Author: Slava Leleka <v.leleka@adguard.com>
Date:   Mon Apr 15 12:26:33 2024 +0400

    update changelog

commit 2b4faf4
Author: Slava Leleka <v.leleka@adguard.com>
Date:   Fri Apr 12 16:49:34 2024 +0400

    fix import

commit 5a2a60d
Author: Slava Leleka <v.leleka@adguard.com>
Date:   Fri Apr 12 16:48:53 2024 +0400

    improve BrowserCookieApi.doesDomainMatchUrl

commit be03c40
Author: Slava Leleka <v.leleka@adguard.com>
Date:   Fri Apr 12 16:43:42 2024 +0400

    add BrowserCookieApi.doesDomainMatchUrl() helper

commit 7adb9c4
Author: Slava Leleka <v.leleka@adguard.com>
Date:   Fri Apr 12 15:32:33 2024 +0400

    fix changelog

commit e4864aa
Author: Slava Leleka <v.leleka@adguard.com>
Date:   Fri Apr 12 14:24:05 2024 +0400

    change error logging level on setting cookie with mismatched domain and request url
  • Loading branch information
slavaleleka committed Apr 15, 2024
1 parent 4411081 commit cb4a3a6
Show file tree
Hide file tree
Showing 3 changed files with 38 additions and 2 deletions.
11 changes: 11 additions & 0 deletions packages/tswebextension/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,23 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
<!-- TODO: manually add compare links for version changes -->
<!-- e.g. [0.1.2]: https://github.com/AdguardTeam/tsurlfilter/compare/tswebextension-v0.1.1...tswebextension-v0.1.2 -->

## [1.0.23] - 2024-04-15

### Changed

- Error logging level on setting cookie with mismatched domain and request URL [AdguardBrowserExtension#2683]

[1.0.23]: https://github.com/AdguardTeam/tsurlfilter/releases/tag/tswebextension-v1.0.23
[AdguardBrowserExtension#2683]: https://github.com/AdguardTeam/AdguardBrowserExtension/issues/2683

## [1.0.21] - 2024-03-29

### Fixed

- Do not block "Should collapse" mechanism with `$popup` rules

[1.0.21]: https://github.com/AdguardTeam/tsurlfilter/releases/tag/tswebextension-v1.0.21

## [1.0.20] - 2024-03-28

### Changed
Expand Down
2 changes: 1 addition & 1 deletion packages/tswebextension/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@adguard/tswebextension",
"version": "1.0.22",
"version": "1.0.23",
"description": "This is a TypeScript library that implements AdGuard's extension API",
"main": "dist/index.js",
"typings": "dist/types/src/lib/mv2/background/index.d.ts",
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
/* eslint-disable class-methods-use-this */
import browser, { Cookies } from 'webextension-polyfill';
import { getDomain } from 'tldts';

import ParsedCookie from '../parsed-cookie';
import { logger } from '../../../../../common/utils/logger';
Expand Down Expand Up @@ -45,7 +46,10 @@ export default class BrowserCookieApi {
} catch (e) {
// If `domain` contains the `path` part, the cookie cannot be saved,
// since `domain` can only contain hostname.
if (cookie.domain?.includes('/')) {
if (cookie.domain?.includes('/')
// if url is not matched with domain, cookie cannot be set
// https://github.com/AdguardTeam/AdguardBrowserExtension/issues/2683
|| (cookie.domain && !BrowserCookieApi.doesDomainMatchUrl(cookie.domain, cookie.url))) {
logger.info((e as Error).message);
} else {
logger.error((e as Error).message);
Expand Down Expand Up @@ -74,6 +78,27 @@ export default class BrowserCookieApi {
return [];
}

/**
* Checks whether the cookie domain matches the url.
*
* @param rawCookieDomain Cookie domain.
* @param url Request url.
*
* @returns True if domain matches the url, false otherwise.
*/
private static doesDomainMatchUrl(rawCookieDomain: string, url: string): boolean {
let cookieDomain = rawCookieDomain;

// cookie domain can be '.example.com'
if (cookieDomain.startsWith('.')) {
cookieDomain = cookieDomain.slice(1);
}

const urlDomain = getDomain(url);

return !!urlDomain && cookieDomain.includes(urlDomain);
}

/**
* Converts cookie to SetDetailsType.
*
Expand Down

0 comments on commit cb4a3a6

Please sign in to comment.