Skip to content

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

15 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation

iplist-go-sidecar

Сборщик списков для iplist-go. Каждые шесть часов получает master из rekryt/iplist, beta и russia из публичных API, применяет custom, загружает external и актуальные префиксы ASN.

Готовые данные публикуются в релизе data. Постоянный адрес манифеста:

https://github.com/dexogen/iplist-go-sidecar/releases/download/data/manifest.json

Приложение получает изменения без пересборки образа. Файлы объектов имеют имена по SHA-256 сжатого содержимого. Сначала публикуются объекты, затем манифест; при временной недоступности манифеста потребитель сохраняет предыдущую версию. Предыдущие объекты удерживаются минимум два дня и пока они нужны текущему или предыдущему снимку. Генерируемые снимки не коммитятся в Git.

Надежность

С 22 сентября 2026 года каталог config/ удален и из текущего дерева, и из истории Git. После этой миграции старые рабочие копии следует клонировать заново; старые ветки не нужно сливать обратно. История сборщика и пользовательских конфигов сохранена. Публикации данных доступны независимо от истории Git через релиз data.

  • Gzip, два параллельных запроса, повторы с задержкой и учет Retry-After.
  • Проверка структуры, IP/CIDR и семейств адресов. Отдельные некорректные доменные строки исключаются с перечислением в rejected_domains; полностью поврежденное поле отклоняется.
  • При исчезновении сайта, обнулении непустого поля или уменьшении более чем на 35% сохраняется предыдущая запись. Проверка действует и на небольшие списки.
  • Смена группы не меняет идентичность сайта. Поврежденный JSON не восстанавливается догадками: поля запрашиваются отдельно, а при неудаче сохраняется прежний сайт.
  • Наборы обновляются независимо. Манифест сообщает status, last_success_at, checked_at и причины сохранения старых данных. Новая публикация не делает старый источник свежим.
  • Состояние первичных источников и внешних ресурсов хранится отдельным сжатым объектом state, чтобы пользовательские дополнения не накапливались при повторных обновлениях.

Для намеренного удаления или подтвержденного большого сокращения есть ручной параметр workflow allow_removals. Он разрешает уменьшения для одного запуска; ошибки структуры и контрольных сумм по-прежнему отклоняются.

Пользовательские списки

custom/<set>/<group>/<site>.json

Массивы объединяются с первичными данными, replace дополняется, явные dns и timeout заменяют исходные. Поле as содержит ASN, например AS57976. Домены, сети, дополнительные источники и ASN разрешаются перед публикацией. Локальный DNS выполняется отдельно каждой установкой приложения.

Проверка и ручной сбор

python -m unittest discover -s tools -p 'test_*.py' -v
python tools/update-configs.py --output dist

Обычный запуск требует предыдущий опубликованный снимок. Для первоначальной загрузки из старого дерева конфигов:

python tools/update-configs.py --seed-dir config --output dist

--previous-url позволяет использовать другой HTTP-хостинг, включая Pages. Публикация в release использует GH_TOKEN только в GitHub Actions; потребителям токен не нужен. Подробности текущего прохода находятся в collection-summary.json и отчете workflow.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages