Commit graph

30 commits

Author SHA1 Message Date
Raymond Hill
3a564c1992
Add ability to uncloak CNAME records
Related issue:
- https://github.com/uBlockOrigin/uBlock-issues/issues/780

New webext permission added: `dns`, which purpose is
to allow an extension to fetch the DNS record of
specific hostnames, reference documentation:

https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/dns

The webext API `dns` is available in Firefox 60+ only.

The new API will enable uBO to "uncloak" the actual
hostname used in network requests. The ability is
currently disabled by default for now -- this is only
a first commit related to the above issue to allow
advanced users to immediately use the new ability.

Four advanced settings have been created to control the
uncloaking of actual hostnames:

cnameAliasList: a space-separated list of hostnames.
Default value: unset => empty list.
Special value: * => all hostnames.
A space-separated list of hostnames => this tells uBO
to "uncloak" the  hostnames in the list will.

cnameIgnoreList: a space-separated list of hostnames.
Default value: unset => empty list.
Special value: * => all hostnames.
A space-separated list of hostnames => this tells uBO
to NOT re-run the network request through uBO's
filtering engine with the CNAME hostname. This is
useful to exclude commonly used actual hostnames
from being re-run through uBO's filtering engine, so
as to avoid pointless overhead.

cnameIgnore1stParty: boolean.
Default value: true.
Whether uBO should ignore to re-run a network request
through the filtering engine when the CNAME hostname
is 1st-party to the alias hostname.

cnameMaxTTL: number of minutes.
Default value: 120.
This tells uBO to clear its CNAME cache after the
specified time. For efficiency purpose, uBO will
cache alias=>CNAME associations for reuse so as
to reduce calls to `browser.dns.resolve`. All the
associations will be cleared after the specified time
to ensure the map does not grow too large and too
ensure uBO uses up to date CNAME information.
2019-11-19 12:05:33 -05:00
Raymond Hill
c161d45230
Use const, let instead of var 2019-02-24 09:01:58 -05:00
Raymond Hill
1c26afe874
Remove caching the result of domain extraction from hostname
With the new PSL implementation, benchmarks do not show benefit
from caching the domain extracted from a hostname for later
reuse -- the caching seems to even add an overhead instead with
the new publicSuffixList implementation.
2019-02-20 08:51:14 -05:00
Raymond Hill
4da340384a
Update publicSuffixLibrary to latest (WASM-able) version
See https://github.com/gorhill/publicsuffixlist.js
2019-02-10 12:19:05 -05:00
Raymond Hill
1d7e3e8f82
fix https://github.com/uBlockOrigin/uBlock-issues/issues/339 2018-12-14 07:03:19 -05:00
Raymond Hill
9b27a98f90
Fix https://github.com/gorhill/uBlock/issues/3654
Additionally, there has been refactoring work done regarding
filtering context used throughout uBO, motivated by the fix
here.
2018-12-13 12:30:54 -05:00
Raymond Hill
4504040344
minor code review: do not cache hostname/domain pairs when parsing filters 2018-11-24 12:09:27 -05:00
Raymond Hill
7bd76150a1
code review: fix bad lookup causing [hostname,domain] cache to never be hit 2018-06-04 08:18:13 -04:00
Raymond Hill
c0387835fa
code review: modernize old code 2018-04-05 15:22:19 -04:00
Raymond Hill
a9f68fe02f
Fix #3069, and consequently #3374, #3378.
A new filtering class has been created: "static extended filtering".
This new class is an umbrella class for more specialized filtering
engines:
- Cosmetic filtering
- Scriptlet filtering
- HTML filtering

HTML filtering is available only on platforms which support modifying
the response body on the fly, so only Firefox 57+ at the moment.

With the ability to modify the response body, HTML filtering has
been introduced: removing elements from the DOM before the source
data has been parsed by the browser.

A consequence of HTML filtering ability is to bring back script tag
filtering feature.
2017-12-28 13:49:02 -05:00
Raymond Hill
6a8c27b6df
fix #3331: ability to fetch sublists using !# include directives 2017-12-15 07:39:21 -05:00
gorhill
f1036395f7
add workaround for https://bugzilla.mozilla.org/show_bug.cgi?id=1360285 2017-07-19 09:36:17 -04:00
gorhill
39aeaa12a7
new feature: element zapper 2017-05-27 11:51:24 -04:00
gorhill
b2193a2b54 probably fix #2053 2016-10-29 11:15:04 -04:00
gorhill
71d2eed225 this fixes #1598 2016-04-28 11:28:08 -04:00
gorhill
63d27b1d25 this fixes #1559 2016-04-12 08:48:24 -04:00
gorhill
8b721f654c removed commented out code
This addresses debian package warning that a line is longer than 512 chars:
https://lintian.debian.org/maintainer/pkg-mozext-maintainers@lists.alioth.debian.org.html#ublock-origin
2016-01-28 15:09:24 -05:00
gorhill
606522cd62 minor: removed spurious trailing space 2016-01-24 16:09:47 -05:00
gorhill
8b5108db93 code review: fixed broken sort in domainCachePrune().
A negative side-effect of not sorting properly the entries was to
cause raw filter lists to linger in memory due to v8's sliced-
string implementation, which caused the parent string (a whole
filter list possibly) to be kept around forever even though it was
no longer used by uBO (raw filter lists are compiled then discarded).
2016-01-24 16:03:08 -05:00
gorhill
1f345b585f this should fix #1276 2016-01-22 11:13:29 -05:00
gorhill
ea49484dd3 this fixes #1067 + partially fixes #1070 2015-12-15 10:40:40 -05:00
gorhill
6fcad5dc9f minor code review re. #150 2015-04-29 12:03:06 -04:00
gorhill
ff41aed7cf maybe this will address #150 2015-04-29 10:29:44 -04:00
gorhill
c119be04ed this fixes hostnames with trailing dot as seen on nytimes.com 2015-04-07 09:41:08 -04:00
gorhill
d2a6a38db2 related to #953 2015-03-18 07:13:53 -04:00
Deathamns
95b778fbc7 Change extension description 2015-03-07 19:20:18 +01:00
gorhill
0c152b2859 fixed flawed 1st-/3rd-party test 2015-01-08 10:37:19 -05:00
Raymond Hill
27eeea3618 no longer needed 2014-11-26 16:25:14 -02:00
Deathamns
0886f7e886 Add .jshintrc, and use the "use strict" directive
.jshintrc's otion-set is a personal choice, merely a suggestion.
Beside that, it includes some common globals for specific browsers, so
there's no need to set the globals in every .js file.

In order to force strict coding, "use strict" directive was added into
every .js file.
2014-11-09 17:39:17 +01:00
Deathamns
5b79bf3536 Work on vendor API abstraction, and near complete Safari support 2014-11-09 17:39:12 +01:00
Renamed from js/uritools.js (Browse further)