NOD32 AMC - automatic mirror creater

Тема в разделе ".:: Готовые решения", создана пользователем admLoki, 22 дек 2007.

Статус темы:
Закрыта.
  1. admLoki

    admLoki генератор случайного PHP

    Регистр.:
    14 сен 2006
    Сообщения:
    481
    Симпатии:
    93
    Вчера лазил по интернету, нашел скрипт на перле для создания логального зеркала обновлений NOD32 .
    Он мне не понравился, поэтому написал его же, но на PHP :) .
    Один минус - пока не дописал возможность создания зеркала с официалки, но это временно :-] .
    Запускать сей скрипт лучше с консоли, либо кроном .

    PHP:
    <?php

    /**
     * @name NOD32 AMC - automatic mirror creater
     * @version 1.1
     * @author CodexFactory
     * @uses PHP5
     * @uses sockets
     */

    set_time_limit(0); //На всякий случай .

    class nod32upd
    {
        
    /**
         * Данный класс автоматически загружает файлы для обновления NOD32 с серверов-зеркал .
         * На данный момент авторизация на официальных серверах не имплементирована .
         * Необходимые переменные :
         *
         * @var string $server Удаленный сервер
         * @var string $save_path Путь для сохранения файлов
         * @var string $handler Не трогать вообще .
         * @var array $updfiles Аналогично .
         */
        
    public $server 'http://nod32.vareza.net/';
        public 
    $save_path '/webprojects/localhost.lan/public_html/nod32upd/';
        private 
    $handler '';
        private 
    $updfiles = array();
        
    #private $login = ''; //Will be implemented soon
        #private $password = ''; //Will be implemented soon
        
        /**
         * Конструктор
         *
         * @return none
         */
        
    public function nod32upd()
        {
            
    //Contructor
            
    $this->checkUPDFiles();
        }
        
        
    /**
         * Парсит файл update.ver и заносит данные в массив класса
         * @param none
         * @return null
         */
        
    private function getNparse()
        {
            
    $this->handler file_get_contents($this->server 'update.ver');
            
    preg_match_all("/file\=(.*)\n/",$this->handler,$file_parse);
            
    $file_parse array_pop($file_parse);
            
            foreach(
    $file_parse as $k => $v)
            {
                
    $this->updfiles[] = trim($v);
            }
        }
        
        
    /**
         * Проверяет, актуально ли текущее зеркало и качает обновление при необходимости .
         * По пути удаляет старые файлы .
         * @param none
         * @return null
         */
        
    private function checkUPDFiles()
        {
            if(
    count($this->updfiles == 1))
            {
                
    $this->getNparse();
            }
            
            if(
    file_exists($this->save_path 'update.ver'))
            {
                if(
    crc32($this->handler) != crc32(file_get_contents($this->save_path 'update.ver')))
                {
                    @
    unlink($this->save_path 'update.ver');
                    
    $fd opendir('.');
                    while(
    $file readdir($fd))
                    {
                        if(
    preg_match("/.+?\.nup/",$file))
                        {
                            @
    unlink($file);
                        }
                    }
                    @
    file_put_contents($this->save_path 'update.ver',$this->handler);
                    
    $this->getFiles();
                }
                else 
                {
                    print(
    'All right.');
                }
            }
            else 
            {
                @
    file_put_contents($this->save_path 'update.ver',$this->handler);
                
    $this->getFiles();
            }
        }
        
        
    /**
         * Измененный алиас к saveContent()
         * @see saveContent
         * @param none
         * @return null
         */
        
    private function getFiles()
        {
            foreach (
    $this->updfiles as $k => $v)
            {
                
    $this->saveContent($this->server $v,$this->save_path $v);
            }
        }
        
        
    /**
         * Достает контент файла и инкрементно пишет его в новый файл .
         * @param string $host Remote host
         * @param string $path Remote file
         * @return bool true|false
         */    
        
    private function saveContent($path,$destination)
        {
            
    $fh fopen($path,'r');
            
    $fw fopen($destination,'w+');
            if(!
    $fh)
            {
                die(
    'Cannot open remote file - 404/403 error or wrong URL');
            }
            while(
    $fr fread($fh,8012))
            {
                
    fwrite($fw,$fr);
            }
            print(
    $path "successfully downloaded .");
            unset(
    $fr);
            
    fclose($fh);
            
    fclose($fw);
            return 
    true;
        }    
        
    }

    /**
     * Создаем обьект .
     */
    $do = new nod32upd();

    ?>
     
    lan_, dobs, xdemon и 3 другим нравится это.
  2. CrazyFool

    CrazyFool

    Регистр.:
    11 июл 2007
    Сообщения:
    170
    Симпатии:
    26
    Есть ли чтото подобно для касперского? Для 6-7 версии
     
  3. admLoki

    admLoki генератор случайного PHP

    Регистр.:
    14 сен 2006
    Сообщения:
    481
    Симпатии:
    93
    Не наблюдал .
     
  4. CrazyFool

    CrazyFool

    Регистр.:
    11 июл 2007
    Сообщения:
    170
    Симпатии:
    26
    Пока что только это нашёл

    http://softsearch.ru/programs/188-677-create-update-mirror-download.shtml

    А вообще Kaspersky Internet Security 6.0.2.614ru хорошо зеркало обновления делает.
     
  5. xdemon

    xdemon Постоялец

    Регистр.:
    20 июн 2007
    Сообщения:
    125
    Симпатии:
    13
    nod32.vareza.net не пашет больше. Может поправишь?
     
  6. admLoki

    admLoki генератор случайного PHP

    Регистр.:
    14 сен 2006
    Сообщения:
    481
    Симпатии:
    93
    Используй любое другое зеркало.
     
  7. xdemon

    xdemon Постоялец

    Регистр.:
    20 июн 2007
    Сообщения:
    125
    Симпатии:
    13
    А прикрутить авторизацию по логину\пассу на оффициальных серваках можешь?
     
  8. admLoki

    admLoki генератор случайного PHP

    Регистр.:
    14 сен 2006
    Сообщения:
    481
    Симпатии:
    93
    Щас попробую...
     
  9. dobs

    dobs Создатель

    Регистр.:
    5 янв 2007
    Сообщения:
    40
    Симпатии:
    12
    Ну как успехи?
    А то что сервак будет лезть на официалку его не забанят?

    П.С. В нем нет юзер агента NOD32 Update
     
  10. admLoki

    admLoki генератор случайного PHP

    Регистр.:
    14 сен 2006
    Сообщения:
    481
    Симпатии:
    93
    Успехи есть, есть и проблемы.
    Дело в том, что на официалке update.ver является RAR-файлом, т.е. на сервере вы должны будете иметь бинарник unrar и доступ на его выполнение.

    Щас пока завален работой, сделаю на днях - там осталась тока одна проблема с путями и все.
     
    dobs нравится это.
Статус темы:
Закрыта.