Представляю последнее, на данный момент, обновление скрипта.
Основные отличия от предыдущих версий:
1. Очень высокая скорость работы (фундаментально переделал методику анализа);
2. Минимальное обращение к удаленному серверу, только для скачивания обновленных и новых файлов;
3. Улучшенная работа парсера страничек для вытягивания пар логин/пароль;
4. Большое кол-во проверок на различные ошибки.
5. Полностью переделан вывод в лог, он стал компактным, при этом информативность увеличена
Описание:
Версии:Code:Алгоритм работы: 1.Если сохраненной пары логин/пароль нет, то скачиваем страничку с ключами, парсим её и составляем список пар логин/пароль, после этого сохраняем этот список в файл. Если файл с сохраненным списком логин/пароль есть, то считываем его и в дальнейшем работаем с ним до тех пор, пока не будет отказ авторизации, в таком случае считываем следующую пару из файла со списком ключей, до тех пор пока он не окончиться, далее скачиваем страницу с ключами и вытягиваем оттуда обновленный список пар и проверям авторизацию до тех пор пока или пара подойдет, или закончаться все списки из разных сайтов с ключами. Если правильная пара так и не будет найдена, то скрипт прерывается с ошибкой с просьбой отредактировать переменную HTMLs_list с указанием ссылки на страницу в которой находятся актуальные ключи (пары логин/пароль) 2. Дальше проверям есть-ли список серверов, если нет, выкачиваем update.ver с основного сайта update.eset.com, парсим из него список серверов, сортируем случайным образом и сохраняем его в файл. Если список серверов есть в виде ранее сохраненного файла то загружаем его из файла, перемешиваем случайным образом и работает с этим списком. 3. Следующий шаг заключается в сравнении версии локальной антивирусной базы и версии, которая доступна на удаленном сервере. В случае если будет обнаружена новая версия, то пробегаем по базе в поисках несовпадающих размеров файлов (локальной и удаленной баз) и скачиваем только изменения (обычно это два-три файла), формируя новый локальный update.ver. Если всё успешно скачается, то скрипт завершается и при необходимости (если указано в конфиге) создает архив базы в виде одного файла (для оффлайн обновлений) Примечание: Вся логика работы скрипта сосредоточена на локальном анализе однократно скачанного за сессию файла update.ver. Никаких лишних обращений к удаленному серверу не производится, исключительно только для скачивания обновленных или недостающих файлов, а также для обновления раз в две недели списка серверов. В процессе работы скрипт создает такие файлы (имена файлов и их размещение задаются в конфигурации): key.txt - активная пара логин/пароль, которая используется для авторизации на серверах ESET keys.txt - список пар логин/пароль, из которого по мере необходимости извлекается новая пара, из-за этого список постепенно уменьшается в размере, пока не обнулиться. servers.txt - список серверов, которые используются скриптом для скачивания обновлений. С каждым запуском скрипта используется сервер взятый случайным образом. status.txt - файл статуса, в текстовом виде отображается текущее состояние базы или результат работы скрипта в случае ошибки ver.txt - актуальная версия локальной базы log.txt - подробный лог работы последнего запуска скрипта Примечание: В случае фатальных ошибок (при котором работа скрипта не возможна), подробный лог копируется в виде nod32upd_ERR_$DATE.log, где DATE - дата и время события. nod32upd.log - результат работы скрипта в виде времени и строки результата (успешное обновление, нет новых обновлений, ошибка обновления) Также результат работы скрипта записывается в системный лог ОС (syslog.log) Ключи при запуске: -h или --help - показывает список доступных ключей. -c или --check - принудительно указывает скрипту перепроверить все файлы в локальной базе, тем самым скрипт принудительно пофайлово сравнит локальную базу с удаленной. -n или --new - новый/чистый запуск скрипта, при этом перед работой удаляются локальная база и все дополнительные файлы, которые ранее создал скрипт в процесс своей работы. -f - если скрипт каким-то образом неожиданно прервался или пользователь прервал работу скрипта вручную (ctrl-C), скрипт в дальнейшем не будет стартовать, этот ключ позволит принудительно запустить скрипт.
Code:0.9.9 - Отключил перебор серверов в случае если не найдена новая версия, перебор серверов будет осуществляться только при недоступности сервера. 0.9.8 - Добавил постоянную рандомную сортировку серверов, увеличил "время жизни" списка серверов до 14 дней. 0.9.7 - Файл со списком серверов живет неделю, всегда используем ранее сформированный файл со списком ключей, удаляем из него ключи которые не проходят авторизацию. 0.9.6 - Сократил вывод в лог, теперь в лог выводится только успешно скачанные обновления, сервера сортируются в случайном порядке и сохраняются в файл. 0.9.5 - Небольшие исправления в алгоритме при некоторых ошибках, улучшил сообщения. 0.9.4 - Изменил процедуру скачивания при проблемах авторизации. 0.9.3 - Исправил поведение скрипта при проблемах нахождения ключей. 0.9.2 - Добавил ключи для запуска: -n -> удаление файлов базы, архива и дополнительных файлов, -с -> принудительно проверяем локальную базу. 0.9.1 - Проверяю версию базы на удаленном сервере, сохраняем список серверов что-бы постоянно его не скачивать. 0.9.0 - Переделал парсинг update.ver, скорость работы увеличилась в разы. 0.8.1 - Сравниваем размер файла на зеркале и сервере без попыток скачивания. 0.8.0 - Убрал отсылку SMS, кардинально улучшил вывод лога, массовые проверки на различные ошибки, добавил ключ -f -> принудительный запуск скрипта, если ранее он неожиданно прервался. 0.7.0 - Усовершенствовал обработку скачаных страниц с ключами. 0.6.16 - Добавил переменную PACKED, если она равна yes, то будет создаться архивная копия базы в виде одного файла. 0.6.15 - Решил проблему с багом 'rel-stop' - теперь не качается старая версия базы. 0.6.14 - Кардинально уменьшил размер базы (только для v4.x ESET EAV и ESS), подключил закачку x64. 0.6.13 - Отключена повторная проверка более свежих баз на других серверах в случае корректного скачивания базы, добавлен файл истории обновления. 0.6.12b2 - Заменил User Agent на User Agent который подставляет ESET ESS v4, имитируем подключения настоящего NOD32. 0.6.12b - Исправление в строке архивирования базы (спб BASik), добавил сайты с ключами (спб alex_optek). 0.6.11b - Косметические изменения в алгоритме вырезания ключей, база остается доступной (тестовый вариант). 0.6.10 - Доработал алгоритм вырезания ключей со страницы, убрал мусор. 0.6.9 - Исправил название языка на Голландский, поставил проверку на тел.номер, обновил список серверов. 0.6.8 - Добавил в исключения файлы билдов ESS, EAV и ESET Mail Security. 0.6.7 - Исправление ошибки, вынес конфигурацию в отдельный файл. 0.6.6 - Исправление ошибок, оптимизация 0.6.5 - Исправления и модернизация парсера страницы с ключами 0.6.4 - Добавил список из страниц, парсинг страничек сделал слегка универсальным 0.6.3 - Очередные изменения на сервере 0.6.2 - Возврат на разбор ключей из html-страницы 0.6.1 - Нужные ключи качаем напрямую с сайта 0.6 - Автоматический разбор ключей из html-страницы 0.5 - Автоматический разбор ключей из файла