<?php
 
$base_path=dirname(__FILE__);
 
include("{$base_path}/config.php");
 
$username=$openinviter_settings['username'];
 
$private_key=$openinviter_settings['private_key'];
 
$transport=$openinviter_settings['transport'];
 
function talk_to_server($signature,$xml)
 
    {
 
    global $transport,$username;
 
    if ($transport=='curl')
 
        {
 
        $ch=curl_init();
 
        curl_setopt($ch, CURLOPT_URL, "http://update.openinviter.com/updater/auto_updater.php");
 
        curl_setopt($ch, CURLOPT_POST,true);
 
        curl_setopt($ch,CURLOPT_HTTPHEADER,Array("Content-Type:application/xml","X-Username: {$username}","X-Signature: {$signature}"));
 
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
 
        curl_setopt($ch, CURLOPT_POSTFIELDS, "{$xml}");
 
        curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);
 
        curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
 
        $result=curl_exec($ch);
 
        curl_close($ch);
 
        return $result;
 
        }
 
    elseif ($transport=='wget')
 
        {
 
        $string_wget=" --timeout=5";
 
        $string_wget.=" --no-check-certificate";
 
        $string_wget.=" --header=\"Content-Type:application/xml\"";
 
        $string_wget.=" --header=\"X-Username: {$username}\"";
 
        $string_wget.=" --header=\"X-Signature: {$signature}\"";
 
        $url=escapeshellcmd($url);
 
        $string_wget.=" --post-data=\"{$xml}\"";
 
        $string_wget.=" --quiet --output-document=-";
 
        $command="wget {$string_wget} http://update.openinviter.com/updater/auto_updater.php";
 
        ob_start(); passthru($command,$return_var); $buffer = ob_get_contents(); ob_end_clean();
 
        if((strlen($buffer)==0)or($return_var!=0)) return(false);
 
        else return $buffer;
 
        }
 
    }
 
 
function log_action($message,$type='error')
 
    {
 
    global $base_path;
 
    $log_path="{$base_path}/log_{$type}.log";
 
    $log_file=fopen($log_path,'a');
 
    $final_message='['.date("Y-m-d H:i:s")."] {$message}\n";
 
    if ($log_file)
 
        {
 
        fwrite($log_file,$final_message);
 
        fclose($log_file);
 
        }
 
    }
 
 
$openinviter_md5=md5(file_get_contents("{$base_path}/openinviter.php"));
 
$openinviter_base_md5=md5(file_get_contents("{$base_path}/openinviter_base.php"));
 
 
include("{$base_path}/openinviter.php");
 
$inviter=new OpenInviter();
 
$plugins=$inviter->getPlugins();
 
$plugin_md5s=array();
 
foreach ($plugins as $plugin=>$dummy)
 
    $plugin_md5s[$plugin]=md5(file_get_contents("{$base_path}/plugins/{$plugin}.php"));
 
 
$xml="<openinviter_updater operation='file_check'>
 
<file path='openinviter.php' checksum='{$openinviter_md5}'></file>
 
<file path='openinviter_base.php' checksum='{$openinviter_base_md5}'></file>\n";
 
foreach ($plugin_md5s as $plugin=>$md5)
 
    $xml.="<file path='plugins/{$plugin}.php' checksum='{$md5}'></file>\n";
 
$xml.="</openinviter_updater>";
 
$signature = md5(md5($xml.$private_key).$private_key);
 
 
$file_check=talk_to_server($signature,$xml);
 
 
if (!$file_check)
 
    {
 
    log_action("AutoUpdater - Unable to connect to update server.");
 
    exit;
 
    }
 
echo $file_check;exit;
 
libxml_use_internal_errors(true);
 
$parsed_xml=simplexml_load_string($file_check);
 
libxml_use_internal_errors(false);
 
 
if (!$parsed_xml)
 
    {
 
    log_action("AutoUpdater - Incomplete server response.");
 
    exit;
 
    }
 
if (empty($parsed_xml->error))
 
    {
 
    log_action("AutoUpdater - Incomplete server response.");
 
    exit;
 
    }
 
if ($parsed_xml->error['code']!=0)
 
    {
 
    log_action("AutoUpdater - ".$parsed_xml->error);
 
    exit;                
 
    }
 
if (empty($parsed_xml->update_status))
 
    {
 
    log_action("AutoUpdater - Incomplete server response.");
 
    exit;
 
    }
 
if ($parsed_xml->update_status['code']==0)
 
    exit;
 
if (!isset($parsed_xml->file))
 
    {
 
    log_action("AutoUpdater - Incomplete server response.");
 
    exit;
 
    }
 
 
$must_update=array();
 
foreach ($parsed_xml->file as $file)
 
    $must_update[(string)$file['path']]=(string)$file['type'];
 
 
foreach ($must_update as $file=>$type)
 
    {
 
    $xml="<openinviter_updater operation='get_file'><file path='{$file}'></file></openinviter_updater>";
 
    $signature = md5(md5($xml.$private_key).$private_key);
 
    $file_contents=talk_to_server($signature,$xml);
 
//    if (!$file_contents)
 
//        log_action("AutoUpdater - Failed to update {$file}");
 
//    else
 
//        {
 
//        file_put_contents("{$base_path}/{$file}",$file_contents);
 
//        log_action("AutoUpdater - Updated {$file}",'info');
 
//        }
 
echo $file_contents."<BR><BR><BR><BR><BR>";
 
    }
 
 
?>
 
 
 |