Удалённые блоклисты
Группа может брать записи не из конфига, а из удалённого hosts-списка. Список скачивается один раз, кешируется и дальше используется из кеша.
hostsctl source add \ https://raw.githubusercontent.com/StevenBlack/hosts/master/data/StevenBlack/hosts \ --group ads --rewrite-ip 0.0.0.0 --allow analytics.google.com --updateВ конфиге это выглядит так:
- name: ads enabled: true source: url: https://raw.githubusercontent.com/StevenBlack/hosts/master/data/StevenBlack/hosts rewrite_ip: 0.0.0.0 allow: [analytics.google.com]Что делают опции
Заголовок раздела «Что делают опции»--rewrite-ip заменяет адрес у всех записей списка. Большинство блоклистов приходят с
0.0.0.0, некоторые с 127.0.0.1; 0.0.0.0 обычно лучше — соединение с ним падает сразу,
а не упирается в то, что слушает на localhost.
--allow — список исключений: имена, которые выбрасываются из скачанного списка. Для
нескольких имён повтори флаг.
--file кладёт группу в файл-зону. Зона обязана быть .yaml — обычный hosts-синтаксис
source выразить не умеет.
Обновление
Заголовок раздела «Обновление»hostsctl source update # все источникиhostsctl source update ads # одинhostsctl source update ads --force # игнорировать кешированный ETaghostsctl source update --apply # скачать и сразу перерисовать /etc/hostsОбновление условное: hostsctl хранит ETag рядом с кешем и отправляет If-None-Match,
поэтому неизменившийся список стоит один 304 и ноль скачанных байт.
Списки кешируются в ~/.cache/hostsctl/sources/ (или $XDG_CACHE_HOME/hostsctl, или
$HOSTSCTL_CACHE).
apply не ходит в сеть
Заголовок раздела «apply не ходит в сеть»apply читает только кеш. Это осознанное ограничение: применение конфига должно давать
один и тот же файл независимо от того, есть ли сейчас интернет, и не должно зависать
из-за медленного хоста с блоклистом. Если у удалённой группы кеша ещё нет, apply
пропускает её и предупреждает, называя команду, которая кеш наполнит.
Что отфильтровывается
Заголовок раздела «Что отфильтровывается»При разборе скачанного списка hostsctl выбрасывает комментарии, localhost,
localhost.localdomain, broadcasthost, local и повторяющиеся имена, затем применяет
allow и rewrite_ip. Фильтрация происходит и при скачивании, и при рендере, поэтому
правка allow в конфиге работает без повторной загрузки.
Посмотреть, что есть
Заголовок раздела «Посмотреть, что есть»hostsctl source listhostsctl search doubleclick # ищет и в кеше, не только в конфигеsource list показывает URL каждого источника, адрес подстановки и список исключений, а
также состояние кеша — сколько записей и когда скачано. Ещё он предупредит, если кеш был
скачан с другого URL, чем сейчас указан в конфиге.
Удаление
Заголовок раздела «Удаление»hostsctl source rm ads # удалит группу и кеш; -y пропускает вопросЧтобы сохранить список, но перестать им пользоваться, выключи группу:
hostsctl group disable ads --apply