Merge: + filter rules: add ctag modifier

Squashed commit of the following:

commit f0e201285f0e41751f6dede9553cf4b1aac7f904
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Tue Jan 28 14:33:02 2020 +0300

    tags list

commit 6a6fa89e7b72a535a89d6c5b17d18a8ccbe57ca7
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Thu Jan 23 18:37:03 2020 +0300

    minor

commit 5645772e36750060f3af597432335a427c8af382
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Thu Jan 23 17:20:14 2020 +0300

    more details

commit 73113836985111447134e5dd863fd5ce8ca9914b
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Thu Jan 23 13:30:30 2020 +0300

    + filter rules: add ctag modifier
Simon Zolin 2020-01-29 19:04:21 +03:00
parent e89b04a038
commit 3251dd7d8c
1 changed files with 49 additions and 0 deletions

@ -138,3 +138,52 @@ The rules with the `$badfilter` modifier disable other basic rules to which they
- `||example.com$badfilter` disables `||example.com` - `||example.com$badfilter` disables `||example.com`
- `@@||example.org^$badfilter` disables `@@||example.org^` - `@@||example.org^$badfilter` disables `@@||example.org^`
#### <a id="ctag"></a> `ctag`
`$ctag` modifier allows to block domains only for specific types of DNS clients. You can assign tags to clients in AdGuardHome UI. In the future we plan to assign tags automatically by analyzing the behaviour of each client.
The syntax is:
$ctag=value1|value2|...
If one of client's tags matches the `$ctag` values - this rule applies to this client.
The syntax for exclusion is:
$ctag=~value1|~value2|...
If one of client's tags matches the exclusion `$ctag` values - this rule doesn't apply to this client.
**Examples:**
- `||example.org^$ctag=device_pc|device_phone` - block `example.org` for clients tagged as `device_pc` or `device_phone`
- `||example.org^$ctag=~device_phone` - block `example.org` for all clients except those tagged as `device_phone`
The list of allowed tags:
By device type:
* device_audio - Audio device
* device_gameconsole - Game Console
* device_laptop - Laptop
* device_nas - NAS (Network-attached Storage)
* device_other - Other device
* device_pc - PC
* device_phone - Phone
* device_printer - Printer
* device_tablet - Tablet
* device_tv - TV
By Operating System:
* os_android - Android
* os_ios - iOS
* os_linux - Linux
* os_macos - Macos
* os_other - Other OS
* os_windows - Windows
By user group:
* user_admin - Administrator
* user_child - Child
* user_regular - Regular user