Воскресенье, 19.05.2024, 03:17
Мой сайт
Меню сайта
Мини-чат
Наш опрос
Оцените мой сайт
Всего ответов: 18
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Форма входа
Главная » 2013 » Февраль » 1 » Maxiru
05:48
 

Maxiru

Сегодня мне бы хотелось рассказать как можно сделать свой сервер обновлений для NOD32.
Для начала нам понадобится специальный скрипт, который будет загружать обновления с чужого сайта.

Код файла: update.php Сегодня мне бы хотелось рассказать как можно сделать свой сервер обновлений для NOD32.
Для начала нам понадобится специальный скрипт, который будет загружать обновления с чужого сайта.

Код файла: update.php


<?php

define("DEFAULT_SAVE_PATH","/home/users1/f/fiamma/domains/vcevidim.ru");

$servers = array(
array('host'=>'http://lavnod.tapochek.net/eset_upd/','savepath'=>DEFAULT_SAVE_PATH."/nod/")
,array('host'=>'nod32.tapochek.net/eset_upd/')
//,array('host'=>'http://89.202.157.135/eset_upd/','user'=>'EAV-06787424','password'=>'ums5sfbhwf')
);

/**
* Quick & Dirty Script to manage NOD 32 Updates
*
* @author Kode
* @email Этот e-mail адрес защищен от спам-ботов, для его просмотра у Вас должен быть включен Javascript
* @version 1.1
*
*/

ini_set("display_errors",0);
ini_set("user_agent","WGET");

include("functions.php");

$start = microtime(true);

foreach ($servers as $server){
if(!isset($server['savepath'])){
$server['savepath'] = DEFAULT_SAVE_PATH;
}

if(file_exists($server['savepath']."update.ver"))
$current_db = parseDB(file_get_contents($server['savepath']."update.ver"));



echo "Checking {$server['host']}\n";
$updatedb = parseDB(getHTTPFile($server['host'],"update.ver","",@$server['user'],@$server['password']));

if(!$updatedb){
echo "Invalid server!\n";
continue;
}

foreach ($updatedb as $section=>$vars){
echo "Checking {$section} ({$vars['file']},".@$vars['date'].")\n";

if(!isset($current_db) or ((@$current_db[$section]['versionid'] < @$vars['versionid'] ) or (@$current_db[$section]['build'] < @$vars['build']))){
echo "Obtaining {$vars['file']} (size: {$vars['size']}, verison: {$vars['date']})\n";
getHTTPFile($server['host'],$vars['file'],$server['savepath'].$vars['file'],@$server['user'],@$server['password']);
$current_db[$section] = $vars;
}else{
echo "Also have rather version\n";
}

}

echo "Generation new update.ver\n";
$new_db = createDB($current_db);
echo "Saving new update.ver\n";
file_put_contents($server['savepath']."update.ver",$new_db);
}

echo "Execution time ",round(microtime(true)-$start,4)," sec.";
?>


Код файла: functions.php


<?php

if(!function_exists("file_put_contents")){
/**
* file_put_contents PHP4 replace
*
* @param string $file
* @param string $data
* @return boolean
*/
function file_put_contents($file,$data){
$fp = fopen($file,"w");
if(!$fp){
return false;
}
fwrite($fp,$data);
fclose($fp);
return true;
}
}


if(!function_exists("file_get_contents")){
/**
* file_put_contents PHP4 replace
*
* @param string $file
* @return mixed
*/
function file_get_contents($file){
$fp = fopen($file,"r");
if(!$fp){
return false;
}
$result = "";
while (!feof($fp)) {
$result .= fread($fp,1024);
}
fclose($fp);
return $result;
}
}

/**
* parses update.ver
*
* @param string $db
* @return array
*/
function parseDB($db){
$result = array();
$last_section = "";
$lines = explode("\n",$db);

foreach ($lines as $line){
$line = trim($line);
if(!empty($line)){
if(@$line[0] == "[" and $line[strlen($line)-1]=="]"){
$last_section = trim($line,"[]");
$result[$last_section] = array();
}else{
@list($var,$val) = explode("=",$line);
$result[$last_section][$var] = $val;
}
}
}

return $result;
}

/**
* Creates update.ver from array
*
* @param unknown_type $arr
* @return unknown
*/
function createDB($arr){
$return = ";
foreach ($arr as $section=>$params){
$return .= "[{$section}]\n";
foreach ($params as $key=>$value){
$return .= "{$key}={$value}\n";
}
}
return $return;
}

/**
* Small function to help parse HTTP Headers
*
* @param unknown_type $array
* @return unknown
*/
function parseHeader($array){
$result = array();
foreach ($array as $value){
if(substr_count($value,":")){
$data = explode(":",$value);
$result[trim($data[0])] = trim($data[1]);
}
}
return $result;
}

/**
* Downloads file from given host
*
* @param string $host HTTP Host
* @param string $file File on host to download
* @param string $save If not empty - save to file
* @param string $user HTTP Auth User
* @param string $password HTTP Auth Password
* @return mixed
*/
function getHTTPFile($host,$file,$save="",$user="",$password=""){
$host = trim(str_replace("http://","",$host),"/");

$data = "";
$last_percent = 0;
$user_password = ($user)?"$user".(($password)?":{$password}":"")."@":"";

$open_url = "http://{$user_password}{$host}/{$file}";

$fp = fopen($open_url,"r",false,stream_context_create(array('http'=>array('user_agent'=>'WGET'))));


if($fp){

if($save){
echo "Creating file {$save}\n";
$sp = fopen($save,"w+",false,stream_context_create(array('ftp' => array('overwrite' => true))));

if(!$sp){
echo "Error: Failed to create file!!!\n"; return false;
}
}

echo "Downloading {$open_url}: ";
$params = stream_get_meta_data($fp);
$params = parseHeader($params['wrapper_data']);
$length = $params['Content-Length'];

while (!feof($fp)) {
$percent = round(ftell($fp)/$length*100);
if($last_percent < $percent and $percent==0){
$last_percent = $percent;
echo "...{$percent}%";
}
if(!isset($sp)){
$data .= fread($fp,128);
}else{
fwrite($sp,fread($fp,128));
}
}
echo "...OK \n";
}else{
echo "Failed to download {$open_url}!!!\n";
}
fclose($fp);
if(!$save){
return $data;
}
fclose($sp);
}
?>


В корневом каталоге вашего сайта сохраняем эти два файла. Нам необходима папочка, куда будут складываться обновления, поэтому создаем папку с названием nod и устанавливаем права 777.

Подготовка закончена. А теперь давайте поговорим о настройке скрипта для Nod32. Ниже выложено изображение и приведено описания для каждого пункта.

Делаем свой сервер обновлений для NOD32

1. Здесь нужно указать абсолютный путь к вашему сайту. Его можно спросить у вашего хостера или найти в техническом разделе.
2. Это папка куда буду складываться обновления. Если она вас устраивает то оставьте ее без изменений.
3. Адрес сайта, откуда будут копироваться обновления.

Ну, думаю вот и все. Установка скрипта завершена. Для доступа к скрипту, в адресной строке браузера набираем “ http://имя вашего сайта.ru/update.php”


P.S. Удачного использования

Просмотров: 607 | Добавил: illich | Рейтинг: 0.0/0
Всего комментариев: 0
Поиск
Календарь
«  Февраль 2013  »
ПнВтСрЧтПтСбВс
    123
45678910
11121314151617
18192021222324
25262728
Архив записей
Друзья сайта
  • Официальный блог
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz
  • Copyright MyCorp © 2024

    Бесплатный конструктор сайтов - uCoz