Releases: SHULKERPLAY/Zapretyan-Go
v2.1.2.8
Запретян-Go - Это кроссплатформенный локальный API/консольное приложение для обработки списков блокировок интернет-ресурсов с поддержкой кастомных плагинов для любых операций с данными о новых блокировках
Установка
Обновление
Конфигурация
Страница на нашем сайте
Документация
Сообщить об ошибке
Zapretyan Go \=> v2.1.2.8
Нововведения
- В сборку добавлин плагин
Daily Statistics v1.0.1 - В сборку добавлин плагин
Discord Sender v1.0.1
Исправления и оптимизации
- Установлено более жёсткое поведение сборщика мусора в ядре, если не указана иная переменная окружения
GOGCилиGOMEMLIMIT - Функции дампа данных о используемой памяти теперь сразу завершаются если не установлен флаг
-log debug - Исправлена ошибка, когда при отсутствии файла
community.txtядро не позволяло сделать ротацию для сохранения первого файла - Исправлена ошибка когда пользователь мог часто видеть ошибку
read |0: file already closedпри корректном завершении работы плагина
Discord Sender 1.0.1
- Исправлена ошибка, мешавшая валидации плагина на Linux системах. Плагин не мог корректно закрыть поток
stdin, поэтому сканнер не позволял плагину завершить работу. Теперь работа сканнера закрывается через новый канал управления. - Обновлена логика сканнера
- Добавлено обрезание пробелов на вводе в сканнер
Full Changelog: v2.1.1.1...v2.1.2.8
v2.1.1.1
Запретян-Go - Это кроссплатформенный локальный API/консольное приложение для обработки списков блокировок интернет-ресурсов с поддержкой кастомных самописных плагинов для любых операций с данными о новых блокировках
Установка
Обновление
Конфигурация
Страница на нашем сайте
Документация
Сообщить об ошибке
Zapretyan Go \=> v2.1.1.1
Нововведения
- (#2) Добавлен новый лог который выводит информацию о сборке текущей версии приложения и информацию о системном окружении при запуске
- (#3) Добавлен автоматический запрос прав администратора через UAC при установке ядра как сервис на Windows. Если права будут предоставлены, запустится отдельная консоль с установкой, если нет, будет выведен старый диалог нехватки прав
- Добавлены новые перезаписи флагов: Цвет логов отключается при установке/удалении сервиса. Это решает проблему, когда в отдельном терминале Windows, запущенном от администратора, логи становились нечитаемыми, поскольку рендеринг цвета в них не поддерживается
- (#6) Добавлен счётчик попыток запуска для плагинов с типом
STREAM.- Если этот счётчик превышает 10 попыток, плагин будет автоматически отключен до перезапуска ядра
- Добавлена проверка на имена плагинов. Ядро завершит работу принудительно, если в конфиге указано повторяющееся имя плагина
- (#4) Добавлено преобразование
http://иhttps://ссылок в название домена при сборке списка. - (#5) Добавлена защита при распаковке подсетей в сплошной список адресов от подсетей с размером больше чем (маской подсети меньше чем)
/12. Это спасёт от переполнения ОЗУ или Дискового пространства при попытке распаковать миллионы адресов из одной строки.
Исправления и оптимизации
- (#1) Файлы
.cmdи.batтеперь принудительно исполняются через терминал Windows. - (#1) Файлы
.shтоже перенаправляются в терминал Windows, но терминал сам решает через что выполнять такие файлы. Это может бытьgit bashилиWSL - Скорректирован вывод логов в случае если вышли из строя все загруженные плагины
- Время последнего изменения локальных файлов теперь принудительно меняется если после цикла сканирования ротация была не нужна. Это сэкономит сетевые ресурсы и ОЗУ на бессмысленные загрузки и слияния файлов, в которых точно нет изменений.
В режиме проверки обновлений
httpвремя на удалённом сервере сравнивается с временем обновления локальных файлов. В случае если удалённый сервер обновит заголовокLast-Modifiedфайла, но не изменит содержание файла, ротации не произойдёт, соответственно не изменится время модификации локального файла, соответственно каждое новое сканирование ядро будет скачивать файл заново считая его новым, хотя на самом деле новым он не является.
Full Changelog: v2.1.0.0...v2.1.1.1
v2.1.0.0
Zapretyan Go \=> v2.1.0.0
В этом обновлениии введено огромное количество оптимизаций и нововведений в ядро для оптимального потребления ресурсов и гибкости настроек.
Нововведения
- Разрешён запуск ядра без расширений. Ядро выдаст предупреждение и запустится с сохранением функционала скачивания, слияния и дедубликации списков
- Источники доменов и IP адресов принимают массив ссылок вместо одного значения и объединяются в один файл без дубликатов
- Добавлен отдельный флаг для отключения цвета в консоли
- Добавлена возможность установки приложения на автозапуск как системный сервис для Windows и дистрибутивов Linux с помощью флага
--install- Если у вас возникли проблемы при установке на системах со средами под управлением
OpenRC,SysVinitилиUpstart. Создайте issue или внесите исправление и отправьте нам Pull Request с подробностями ошибки с которой вы столкнулись.
- Если у вас возникли проблемы при установке на системах со средами под управлением
- Добавлена поддержка установки сервиса для Linux сред
systemd,openrc,upstartиsysvinit - Добавлена Полноценная поддержка работы в качестве системного сервиса Windows с полной поддержкой корректного запуска/остановки/перезапуска сервиса из services.msc или taskmgr
- Добавлен флаг
--uninstallдля удаления ранее устаовленного системного сервиса для Windows и дистрибутивов Linux - Добавлен технический флаг
--runдля исполнения приложения в режиме системного сервиса для управления некоторыми функциями и коммуникацией с системой в случае Winsvc - При слиянии списков IP адресов распаковываются CIDR префиксы если таковые есть в файле. Это позволяет пользователю указывать в одном файле и/или разных ссылках одновременно и IP (как 1.1.1.1) адреса и целые подсети (как 1.1.0.0/16)
- При ротации файлов добавлен лог для каких типов файлов будет выполнена ротация
- Функция объединения и удаления дубликатов строк списков была модифицирована и теперь поддерживает любые из трёх типов списков
- Многопоточный подход скачивания и сборки данных повсеместно заменён линейными последовательными функциями в целях экономии ОЗУ. Например, теперь все файлы скачиваются, смешиваются и дедублицируются последовательно, не выделяя память на несколько горутин выполняющих одинаковое действие одновременно. Это не повлияет на функционал и скорость, так как минимальный интервал итерации - 1 час. За 1 час далеко не у всех ресурсов появляются обновления
- Добавлен флаг
-dumpeventдля отладочной записи первого отправленного события в JSON файл каждую итерацию. - Добавлено больше информации в стандартные выводимые логи
- Добавлены дополнительные логи стадий сканнера
- Добавлено предупреждение в консоль если старый файл типа списков не найден, предотвращая дальнейшую ошибку при попытке сравнить несуществующий файл
- Переход на использование внешней сортировки при сравнении и слиянии файлов. Размер буфера строго ограничен и результаты сортировки записываются во временные файлы на диске, после чего сливаются в один отсортированный файл. Это очень сильно экономит ОЗУ, так как в памяти хранится не больше указанного количества строк и не нужно хранить и сортировать карту размером в 1.5млн элементов
- Слияние, распаковка и дедубликация доменов, адресов и подсетей в списках переведена на байтовое сравнение строк, ограничена строгим размером буфера и записывает временные файлы на диск сортируя и удаляя дубликаты в памяти
- Добавлены переопределения параметров при указании некоторых флагов
- Добавлены паузы при ошибках приложения чтобы пользователь мог успеть прочитать ошибку перед закрытием в случае запуска из UI Windows. Паузы игнорируются в режиме системного сервиса
- Добавлено отображение текущего статуса использования ОЗУ после этапов сканирования в логах отладки
Исправления и оптимизации
- На основе прошлого билда было видно, что при огромных диффах пиковое потребление ОЗУ из-за постоянной аллокации места в памяти для карт достигало ~1ГБ во время процесса, что недопустимо. В аналогичных тестах этого обновления удалось снизить пиковое потребление ОЗУ до ~75МБ, что само по себе невероятная разница
- Оптимизировано потребление ОЗУ при записи списков на диск
- Оптимизировано потребление ОЗУ при записи строк в карты
- Текстовый метод сравнения двух файлов заменён на построчное сканирование байт для экономии ОЗУ
- Исправлена ошибка, когда при завершении работы программы до начала первого сканирования приложение завершало работу принудительно
- Тяжёлые карты в памяти при сравнении двух файлов заменены на слайсы хранящие разницу
- Точечные оптимизации выделения оперативной памяти под карты значений
- Сборщик мусора запускается после каждого сканирования, в том числе и первого
- Максимальный размер файла лога до ротации снижен до 8МБ
- Изменён стандартный источник для IP адресов
- Распаковка подсетей в адреса теперь происходит "на лету" при чтении скачанных файлов
- Оптимизация этапов сбора данных для режимов
httpиhash. - Файлы из списка будут скачиваться только только при наличии хотя бы одного обновления на удалённом сервере (при "http") и в зависимости от настроек (при
hash) - При ошибке загрузки файла, функция попытается повторить скачивание снова несколько раз, прежде чем вернуть ошибку
- Скачивание файлов вынесено в этап отдельный от проверки наличия обновлений
- Проверка хэша проводится для режимов
hashиhttpи на её основе определяется необходимость ротации файлов. Даже если сервер отдаёт ложный заголовок Last-Modified, если файл не имеет обновлений, ротация не будет произведена, и вы не потеряете данные при сравнениях - Ротация файлов сообщества вынесена в единую функцию ротации файлов для всех типов списков
- Сборщик мусора вызывается после итерации сканирования, а не в окончании функции самой итерации как было раньше
- Исправлена ошибка, когда логи сохранялись в рабочую директорию окружения вместо директории с приложением
- Исправлено отображение отсутствующего файла в логах при проверке на наличие обновлений списков
- Исправлена ошибка, когда функция проверки хэша запрещала ротацию файлов если не найден новый файл конкретного списка
- Исправлена ошибка, когда при проверке хэша запрет на ротацию типа списков заменялся разрешением или наоборот
- Теперь хэш вычисляется только для типов списков, новые файлы которых были успешно загружены и слиты в один файл
- Теперь при проверке заголовков на удалённом сервере пользователю отображается предупреждение только в случае неудачи
- Исправлена ошибка, когда при отправке события фильтр проходили только события с пустыми диффами
- Слияние списков доменов и адресов объединено в один пайплайн с динамическим поведением в зависимости от выбора режима
Full Changelog: v2.0.0.0...v2.1.0.0
v2.0.0.0
ZapretyanGo // v2.0.0.0
- Первая полноценная версия ядра. Тестовая версия, в следующем билде будут изменения в конфигурации
