Comodo Offline Updater

Посмотрите PM. ( Персональное сообщение )
Почту.

[attachment deleted by admin]

Выложен исходник (VB.NET 2010)
Так как в настоящее время нет времени заниматся Comodo Offline Updater, выкладываю исходник в свободное плавание.
Надеюсь найдутся люди которые сумеют разобратся в коде, и подолжат развитие программы.
Условия использования:

  1. Программы реализованные на этих исходных кодах (или ее части) должны оставатся бесплатными для использования (допускается использовать схему Donationware на нового разработчика)
  2. В окне “О программе”, указывать активную ссылку “Основан на исходном коде Comodo Offline Updater” с направлением на эту ветку форума.
    Спасибо за понимание.

Новая сборка Comodo Offline Updater, версия 1.3.8.4

Исправлены ошибки:

  • при первом запуске программа не могла получить список папок для скачивания из запроса клиента
  • клиент (Comodo Antivirus 6.3) не мог получить полный список файлов для обновления клиента (до версии 7.0)

Описание ошибок:

  1. При первом запуске программа пыталась установить фокус на первой строке списка на вкладке “Информация”. Т.к. список изначально пуст, это вызывало ошибку и деактивацию функций программы, в результате чего, в том числе, она не реагировала на запросы клиента.

  2. При получении запроса GET от клиента на передачу файла thdefault_header.png (нужного для обновления клиента), программа ошибочно считала этот запрос запросом типа HEAD, и не отправляла клиенту нужный файл.

Вопрос:
Неужели ни у кого не было так, что при первом запуске программа не могла выкачать все файлы обновлений, потому что спотыкалась на одном из них, и прерывала закачку?
У меня это происходит постоянно, в результате чего скачать все файлы, нужные для обновления антивируса получается только постоянным перезапуском апдейтера (в среднем около 50 раз), и закачкой по несколько файлов за раз.
Иногда из-за этого же не скачивается versioninfo.ini - файл просто пропадает.

[attachment deleted by admin]

Не знаю как в VB.NET, но от сервера раздачи Comodo ждет только файлы, поэтому на запрос клиента я всегда отправляю только поток наподобие MemoryStream. Что касается прерывания закачки, то тут рациональное зерно есть - если интернета нет, какой смысл пытаться скачивать под 50 файлов подряд если после первого же файла ясно что инета нет, нужно просто внимательно отслеживать коды WinSocks.

Что касается прерывания закачки, то тут рациональное зерно есть - если интернета нет, какой смысл пытаться скачивать под 50 файлов подряд если после первого же файла ясно что инета нет, нужно просто внимательно отслеживать коды WinSocks.

В том то и дело, что Интернет есть, ведь файлы закачиваются. Но закачиваются не все. И как только закачка одного из них срывается (не потому, что его нет на сервере, и не потому, что нет Интернета), другие файлы уже не закачиваются.

Лично меня интересует, происходит ли такое у кого-либо еще, чтобы понять, зависит это от программы или от особенностей моего компьютера или локальной сети. Проще всего это увидеть, если попытаться запустить “чистую” программу, т.е. без скачанных баз.

Чтобы исключить разночтения, опишу ошибку подробнее:

  1. Начинается закачка файлов антивирусной базы (BASE_UPD_END_USER_vXXX.cav.z)
  2. На одном из файлов базы закачка прерывается, в итоге скачиваются не все файлы базы
  3. При попытке нажать на кнопку “Обновить” могут произойти следующие события:
  • скачиваются еще несколько файлов базы
  • не скачивается ни одного нового файла базы
  • программа надолго “зависает”
  1. Т.к. зависания при повторном нажатии на кнопку “Обновить” происходят очень часто, быстрее перезапустить программу и запустить обновление еще раз
  2. Т.к. в среднем скачивается по 3 файла базы, а программа пытается закачать последние 150 файлов базы, отсюда и получается около 50 попыток закачки файлов для полного скачивания всех файлов антивирусной базы, нужных для обновления клиента (антивируса)

Аналогичная ситуация. Comodo при обновлении с COU 1.3.8.1 спотыкался: версия 6.3 выдавала ошибку, а версия 5.12 указывала на файл thdefault_header.png («…файл не полон…»).
Попробуем версию 1.3.8.4.
С COU версии 1.3.8.4 что-то вообще не желает обновиться:
v.5.12 - «Текущая версия продукта не требует обновления»,
v.6.3 - «Последняя версия».

А в папках апдейтера (/cis/download/updates/release/) есть загруженные файлы, и сколько весят?
Какие папки для загрузки обновлений программы прописаны в настройках апдейтера?
Какие порты прописаны в настройках апдейтера и антивируса? Точно ли антивирус обращается именно к этому апдейтеру (возможно, вы настраивали другие).
Обновляются ли базы антивируса?

А в папках апдейтера (/cis/download/updates/release/) есть загруженные файлы, и сколько весят?
Есть, весят 845МВ (базы загрузились несжатые, пока в конфиг Folder Zip=“True” не добавил — галки в настройках программы не ставятся, если размер шрифта в настройках экрана увеличен)
Какие папки для загрузки обновлений программы прописаны в настройках апдейтера?
Конфиг вложил
Какие порты прописаны в настройках апдейтера и антивируса? Точно ли антивирус обращается именно к этому апдейтеру (возможно, вы настраивали другие).
Порты аналогично (88), обращение к PC, где COU стоит, по IP
Обновляются ли базы антивируса?
Да

[attachment deleted by admin]

С COU версии 1.3.8.4 что-то вообще не желает обновиться: v.5.12 - «Текущая версия продукта не требует обновления», v.6.3 - «Последняя версия».

Посмотрите, пожалуйста, размер файла /cis/download/updates/release/inis_2001/cis_update_x32.xml (или он же с расширением 7z).
Если он всего 72 байта, значит на сервере обновлений COMODO он недоступен, в этом случае обновить антивирус не получится.

На данный момент доступно только обновление по папке inis_3000 с версией 7.0.317799.4142. Со временем и другие наверно сделают.

ё

Отвечу как автор, это особенность программы потому что:

                    If DownloadFile(ServerUpdate & BaseFolder & "sigs/updates/BASE_UPD_END_USER_v" & N & ExtFile, DataFolder & "\" & LocalFolder & "sigs/updates/BASE_UPD_END_USER_v" & N & ExtFile) Then
                        MAV = N
                    Else
                        Exit For
                    End If

т.е. после срыва закачки происходит выход из цикла. Почему это сделано? Логика такова: если в обновлениях есть битый файл CIS тоже спотыкается об него и дальше не обновляется не в зависимости от того есть еще файлы или нет.
К стати там же в форме ComodoUpdater.vb в процедуре DownloadBase() есть такая конструкция:

            For N = MaxAvailVersion - MaxDiff + 1 To MaxAvailVersion
                'Обновления базы сигнатур
                If Not IO.File.Exists(DataFolder & "/" & LocalFolder & "sigs/updates/BASE_UPD_END_USER_v" & N & ExtFile) Then
                    If DownloadFile(ServerUpdate & BaseFolder & "sigs/updates/BASE_UPD_END_USER_v" & N & ExtFile, DataFolder & "\" & LocalFolder & "sigs/updates/BASE_UPD_END_USER_v" & N & ExtFile) Then
                        MAV = N
                    Else
                        Exit For
                    End If
                Else
                    MAV = N
                End If
                If Not IO.File.Exists(DataFolder & "/" & LocalFolder & "sigs/updates/BASE_UPD_END_USER_v" & N & ExtFile) Then
                    If DownloadFile(ServerUpdate & BaseFolder & "sigs/updates/BASE_UPD_END_USER_v" & N & ExtFile, DataFolder & "\" & LocalFolder & "sigs/updates/BASE_UPD_END_USER_v" & N & ExtFile) Then
                        MAV = N
                    Else
                        Exit For
                    End If
                Else
                    MAV = N
                End If
            Next N

там видать при копировании ошибочно продублировался код закачки, один раз можно смело убрать

Уже доступна папка inis_2001 - как раз для обновления антивируса от версии 6.3 до 7.0. Так что можно пробовать обновлять антивирус :slight_smile:

т.е. после срыва закачки происходит выход из цикла. Почему это сделано? Логика такова: если в обновлениях есть битый файл CIS тоже спотыкается об него и дальше не обновляется не в зависимости от того есть еще файлы или нет.

В самой функции DownloadFile есть строка получения ответа на HTTP-запрос: “URLRes = URLReq.GetResponse()”. Так вот, GetResponse иногда возвращает пустой объект URLRes (= Nothing). Err при этом возвращает ошибку 91 (пустая ссылка на объект), а если перехватить исключение, пишет что-то про нарушение протокола сервером. Такое происходит, видимо, только при работе через прокси.
Решается повторными запросами к серверу (т.е., в цикле несколько раз вызываем эту функцию, пока не получим непустой ответ).

При обновлении с COU 1.3.8.1 тот же затык.
С версией 1.3.8.4 обновились и 6.3 и 5.12!
Спасибо!

Comodo Offline Updater 1.3.8.6

Исправил наконец-то ошибку, описанную мной выше:

В том то и дело, что Интернет есть, ведь файлы закачиваются. Но закачиваются не все. И как только закачка одного из них срывается (не потому, что его нет на сервере, и не потому, что нет Интернета), другие файлы уже не закачиваются.

Это та же ошибка, которая возникала у пользователя fot67, описана вот в этом посте:

При обновлении COU начинает скачивать файл BASE_END_USER_v17761cav.z, в шапке показывает, что последняя база 17778(17761), но после того, как заканчивается обновление, в шапке меняется версия на 17632 и клиенты не обновляются.

Возникала она при работе через прокси сервер, если происходило перенаправление на другой сервер обновлений Comodo, и при этом свойство KeepAlive HTTP запроса было установлено в True.
По умолчанию в программе забит сервер обновлений download.comodo.com, с него происходит перенаправление на cdn.download.comodo.com (для каждого файла). При KeepAlive=True, прокси сервер (Squid) на некоторых файлах обрывал соединение.

Изменения в новой версии:
[1.3.8.5]
Исправлены ошибки:

  • зависания при повторном нажатии кнопки Update (отсутствовал метод HttpWebResponse.Close, который нужно вызывать после завершения работы с объектом HttpWebResponse)
    [1.3.8.6]
    Небольшой рефакторинг кода (выделен метод CreateRequest)
    Изменен сервер обновлений по умолчанию с download.comodo.com на cdn.download.comodo.com
    Для всех HTTP запросов теперь выставляется параметр KeepAlive=False для более стабильной работы с прокси-серверами
С версией 1.3.8.4 обновились и 6.3 и 5.12! Спасибо!

Не за что )

[attachment deleted by admin]

Ещё бы возможность менять настройки COU, когда в Win выбран средний размер текста для экрана…

[attachment deleted by admin]

Приветствую.
Может обсуждался вопрос, но я не нашел.
От чего зависит скачивание файлов больших файлов обновлений (например BASE_END_USER_v18173.cav.z = 172 МБ ) ?

Подскажите, пожалуйста, вашу версию Windows и какой конкретно параметр системы вы меняли (чтобы изменить размер шрифта). Мне нужно это для тестирования программы.

В файле versioninfo.ini в папке обновлений антивируса (av\updates58) есть следующие параметры:
MaxAvailVersion=18191
MaxDiff=150
MaxBase=18084

Если текущая версия базовых (“больших”) файлов обновлений более чем на MaxDiff отличается от MaxAvailVersion, скачивается файл обновлений под номером MaxBase.

Также, если установлена опция “Минимизировать траффик”, кумулятивные базы не скачиваются.

Win 7
Панель управления → Экран → Средний-125%

Что за ошибки:
2 05.05.2014 22:07:19 При загрузке ‘http://cdn.download.comodo.com/av/tvl/deletedvendors.txt’ произошла ошибка.
2 05.05.2014 22:07:19 При загрузке ‘http://cdn.download.comodo.com/cis/cmc/cmc_free_1049.xml’ произошла ошибка.
2 05.05.2014 22:07:20 При загрузке ‘http://cdn.download.comodo.com/cis/download/installs/dialogs/defaults/dialogs_descriptor.xml’ произошла ошибка.

Реализовал ли кто-нибудь подобное решение в linux?