From e27cc59d969b0538f8d432635ac0aba1a177faa6 Mon Sep 17 00:00:00 2001 From: Ainar Garipov Date: Mon, 22 Aug 2022 19:44:27 +0300 Subject: [PATCH] Pull request: 4786-regexp-fix Updates AdguardTeam/AdGuardHome#4786. Squashed commit of the following: commit 66c1c39faaccaa8c19455e150472a8e3110efc6e Author: Ainar Garipov Date: Mon Aug 22 19:38:27 2022 +0300 Hosts-Blocklists: fmt more commit 8bdea76fe697b0a987024fb8c486c83a61ea802e Author: Ainar Garipov Date: Mon Aug 22 19:35:08 2022 +0300 Hosts-Blocklists: use correct regexp link, fmt --- Hosts-Blocklists.md | 34 ++++++++++++++++++++++------------ 1 file changed, 22 insertions(+), 12 deletions(-) diff --git a/Hosts-Blocklists.md b/Hosts-Blocklists.md index 1379410..40af232 100644 --- a/Hosts-Blocklists.md +++ b/Hosts-Blocklists.md @@ -17,6 +17,8 @@ * [Domains-Only Syntax](#domains-only) * [Hostlists Compiler](#hostlists-compiler) + + ## Introduction There are three different approaches to writing hosts blocklists: @@ -110,6 +112,8 @@ modifiers = [modifier0, modifier1[, ...[, modifierN]]] * `modifiers`: parameters that clarify the rule. They may limit the scope of the rule or even completely change the way it works. + + ### Special Characters * `*`: the wildcard character. It is used to represent any set of characters. @@ -128,6 +132,8 @@ modifiers = [modifier0, modifier1[, ...[, modifierN]]] `ample.org|` corresponds to `example.org` but not to `example.org.com`. `|example` corresponds to `example.org` but not to `test.example`. + + ### Regular Expressions If you want even more flexibility in making rules, you can use [regular @@ -138,33 +144,37 @@ want to use a regular expression, the pattern has to look like this: pattern = "/" regexp "/" ``` -**Examples:** +Examples: * `/example.*/` will block hosts matching the `example.*` regexp. * `@@/example.*/$important` will unblock hosts matching the `example.*` regexp. Note that this rule also implies the `important` modifier. + + ### Comments Any line that starts with an exclamation mark or a hash sign is a comment and it will be ignored by the filtering engine. Comments are usually placed above rules and used to describe what a rule does. -**Example:** +Example: ```none ! This is a comment. # This is also a comment. ``` + + ### Rule Modifiers You can change the behavior of a rule by adding modifiers. Modifiers must be located at the end of the rule after the `$` character and be separated by commas. -**Examples:** +Examples: * ```none ||example.org^$important @@ -228,7 +238,7 @@ supported. Use the backslash (`\`) to escape quotes (`"` and `'`), commas **NOTE:** When excluding a client, you **must** keep `~` out of the quotes. -**Examples:** +Examples: * `@@||*^$client=127.0.0.1`: unblock everything for localhost. @@ -282,7 +292,7 @@ how to solve this with `denyallow`: *$denyallow=com|net ``` -**Examples:** +Examples: * `*$denyallow=com|net`: block everything save for `*.com` and `*.net`. @@ -320,7 +330,7 @@ is equivalent to this: $dnstype=value2 ``` -**Examples:** +Examples: * `||example.org^$dnstype=AAAA`: block DNS queries for the IPv6 addresses of `example.org`. @@ -414,7 +424,7 @@ Name: example.net Address: 1.2.3.4 ``` -Next, the `CNAME` rewrite. After that, all other records's values are summed as +Next, the `CNAME` rewrite. After that, all other records' values are summed as one response, so this: ```none @@ -490,7 +500,7 @@ Exception rules remove one or all rules: The `important` modifier applied to a rule increases its priority over any other rule without the modifier. Even over basic exception rules. -**Examples:** +Examples: * In this example: @@ -517,7 +527,7 @@ The rules with the `badfilter` modifier disable other basic rules to which they refer. It means that the text of the disabled rule should match the text of the `badfilter` rule (without the `badfilter` modifier). -**Examples:** +Examples: * `||example.com$badfilter` disables `||example.com`. @@ -550,7 +560,7 @@ $ctag=~value1|~value2|... If one of client's tags matches the exclusion `ctag` values, this rule doesn't apply to the client. -**Examples:** +Examples: * `||example.org^$ctag=device_pc|device_phone`: block `example.org` for clients tagged as `device_pc` or `device_phone`. @@ -591,7 +601,7 @@ The list of allowed tags: * `user_child`: children. [adb]: https://kb.adguard.com/en/general/how-to-create-your-own-ad-filters -[regexp]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions +[regexp]: https://github.com/google/re2/wiki/Syntax [rfc1035]: https://tools.ietf.org/html/rfc1035#section-3.5 @@ -613,7 +623,7 @@ and periods (`.`). They must begin with an alphabetic character and end with an alphanumeric character. Optional aliases provide for name changes, alternate spellings, shorter hostnames, or generic hostnames (for example, `localhost`). -**Example:** +Example: ```none # This is a comment