function phpAds_checkForUpdates($already_seen = 0, $send_sw_data = true)
{
    global $phpAds_config, $phpAds_updatesServer;
    global $xmlrpcerruser;
    // Create client object
    $client = new xmlrpc_client($phpAds_updatesServer['script'], $phpAds_updatesServer['host'], $phpAds_updatesServer['port']);
    $params = array(new xmlrpcval($GLOBALS['phpAds_productname'], "string"), new xmlrpcval($phpAds_config['config_version'], "string"), new xmlrpcval($already_seen, "string"), new xmlrpcval($phpAds_config['updates_dev_builds'] ? 'dev' : '', "string"), new xmlrpcval($phpAds_config['instance_id'], "string"));
    if ($send_sw_data) {
        // Prepare software data
        $params[] = phpAds_xmlrpcEncode(array('os_type' => php_uname('s'), 'os_version' => php_uname('r'), 'webserver_type' => isset($_SERVER['SERVER_SOFTWARE']) ? preg_replace('#^(.*?)/.*$#', '$1', $_SERVER['SERVER_SOFTWARE']) : '', 'webserver_version' => isset($_SERVER['SERVER_SOFTWARE']) ? preg_replace('#^.*?/(.*?)(?: .*)?$#', '$1', $_SERVER['SERVER_SOFTWARE']) : '', 'db_type' => $GLOBALS['phpAds_dbmsname'], 'db_version' => phpAds_dbResult(phpAds_dbQuery("SELECT VERSION()"), 0, 0), 'php_version' => phpversion(), 'php_sapi' => ucfirst(php_sapi_name()), 'php_extensions' => get_loaded_extensions(), 'php_register_globals' => (bool) ini_get('register_globals'), 'php_magic_quotes_gpc' => (bool) ini_get('magic_quotes_gpc'), 'php_safe_mode' => (bool) ini_get('safe_mode'), 'php_open_basedir' => (bool) strlen(ini_get('open_basedir')), 'php_upload_tmp_readable' => (bool) is_readable(ini_get('upload_tmp_dir') . DIRECTORY_SEPARATOR)));
    }
    // Create XML-RPC request message
    $msg = new xmlrpcmsg("Openads.Sync", $params);
    // Send XML-RPC request message
    if ($response = $client->send($msg, 10)) {
        // XML-RPC server found, now checking for errors
        if (!$response->faultCode()) {
            $ret = array(0, phpAds_xmlrpcDecode($response->value()));
            // Prepare cache
            $cache = $ret[1];
        } else {
            $ret = array($response->faultCode(), $response->faultString());
            // Prepare cache
            $cache = false;
        }
        // Save to cache
        phpAds_dbQuery("\n\t\t\tUPDATE\n\t\t\t\t" . $phpAds_config['tbl_config'] . "\n\t\t\tSET\n\t\t\t\tupdates_cache = '" . addslashes(serialize($cache)) . "',\n\t\t\t\tupdates_timestamp = " . time() . "\n\t\t");
        return $ret;
    }
    return array(-1, 'No response from the server');
}
 function view_raw($what, $clientid = 0, $target = '', $source = '', $withtext = 0, $context = 0, $richmedia = true)
 {
     // Create context XML-RPC array
     if (is_array($context)) {
         for ($i = 0; $i < sizeof($context); $i++) {
             $context[$i] = phpAds_xmlrpcEncode($context[$i]);
         }
     } else {
         $context = array();
     }
     $xmlcontext = new xmlrpcval($context, "array");
     // Create XML-RPC request message
     $msg = new xmlrpcmsg("phpAds.view", array($this->remote_info, new xmlrpcval($what, "string"), new xmlrpcval($clientid, "int"), new xmlrpcval($target, "string"), new xmlrpcval($source, "string"), new xmlrpcval($withtext, "boolean"), $xmlcontext));
     // Reset $output cache
     $this->output = '';
     // Send XML-RPC request message
     if ($response = $this->client->send($msg)) {
         // XML-RPC server found, now checking for errors
         if ($response->faultCode() == 0) {
             $this->output = phpAds_xmlrpcDecode($response->value());
             return $this->output;
         }
     }
     return false;
 }
function phpAds_xmlrpcView($msg)
{
    global $xmlrpcerruser;
    $view_params = array();
    // Parse parameters
    for ($i = 0; $i < $msg->getNumParams(); $i++) {
        $p = $msg->getParam($i);
        if ($i) {
            // Put the decoded value the view arg array
            $view_params[] = phpAds_xmlrpcDecode($p);
        } else {
            // First parameter: Remote information supplied be XML-RPC client
            $p = phpAds_xmlrpcDecode($p);
            if (!isset($p['remote_addr'])) {
                return new xmlrpcresp(0, $xmlrpcerruser + 1, "Missing 'remote_addr' member!");
            }
            while (list($k, $v) = each($p)) {
                switch ($k) {
                    case 'remote_addr':
                        $_SERVER['REMOTE_ADDR'] = $GLOBALS['REMOTE_ADDR'] = $v;
                        break;
                    case 'remote_host':
                        $_SERVER['REMOTE_HOST'] = $GLOBALS['REMOTE_HOST'] = $v;
                        break;
                    default:
                        $varname = 'HTTP_' . strtoupper($k);
                        $_SERVER[$varname] = $GLOBALS[$varname] = $v;
                        break;
                }
            }
        }
    }
    // Call view with supplied parameters
    $output = call_user_func_array('view_raw', $view_params);
    // What parameter should be always set
    if (!is_array($output)) {
        return new xmlrpcresp(0, $xmlrpcerruser + 99, "An error occurred while fetching banner code");
    }
    if (isset($GLOBALS['phpAds_xmlError'])) {
        return $GLOBALS['phpAds_xmlError'];
    }
    return new xmlrpcresp(phpAds_xmlrpcEncode($output));
}
function phpAds_checkForUpdates($already_seen = 0)
{
    global $phpAds_config, $phpAds_updatesServer;
    global $xmlrpcerruser;
    // Create client object
    $client = new xmlrpc_client($phpAds_updatesServer['script'], $phpAds_updatesServer['host'], $phpAds_updatesServer['port']);
    // Create XML-RPC request message
    $msg = new xmlrpcmsg("updateAdsNew.check", array(new xmlrpcval($phpAds_config['config_version'], "string"), new xmlrpcval($already_seen, "string")));
    // Send XML-RPC request message
    if ($response = $client->send($msg)) {
        // XML-RPC server found, now checking for errors
        if (!$response->faultCode()) {
            $ret = array(0, phpAds_xmlrpcDecode($response->value()));
            phpAds_dbQuery("\n\t\t\t\tUPDATE\n\t\t\t\t\t" . $phpAds_config['tbl_config'] . "\n\t\t\t\tSET\n\t\t\t\t\tupdates_last_seen = '" . $ret[1]['config_version'] . "',\n\t\t\t\t\tupdates_timestamp = " . time() . "\n\t\t\t");
        } else {
            $ret = array($response->faultCode(), $response->faultString());
        }
        return $ret;
    }
    return array(-1, 'No response from the server');
}
function phpAds_xmlrpcDecode($xmlrpc_val)
{
    $kind = $xmlrpc_val->kindOf();
    if ($kind == "scalar") {
        return $xmlrpc_val->scalarval();
    } else {
        if ($kind == "array") {
            $size = $xmlrpc_val->arraysize();
            $arr = array();
            for ($i = 0; $i < $size; $i++) {
                $arr[] = phpAds_xmlrpcDecode($xmlrpc_val->arraymem($i));
            }
            return $arr;
        } else {
            if ($kind == "struct") {
                $xmlrpc_val->structreset();
                $arr = array();
                while (list($key, $value) = $xmlrpc_val->structeach()) {
                    $arr[$key] = phpAds_xmlrpcDecode($value);
                }
                return $arr;
            }
        }
    }
}
Example #6
0
function phpAds_xmlrpcView($msg)
{
    global $xmlrpcerruser;
    $view_params = array();
    $view_arrays = array();
    $params = array(array('name' => 'remote_info', 'scalar' => false, 'type' => 'struct'), array('name' => 'what', 'scalar' => true, 'type' => 'string'), array('name' => 'clientid', 'scalar' => true, 'type' => 'int'), array('name' => 'campaignid', 'scalar' => true, 'type' => 'int'), array('name' => 'target', 'scalar' => true, 'type' => 'string'), array('name' => 'source', 'scalar' => true, 'type' => 'string'), array('name' => 'withtext', 'scalar' => true, 'type' => 'boolean'), array('name' => 'context', 'scalar' => false));
    // Parse parameters
    for ($i = 0; $i < $msg->getNumParams(); $i++) {
        $p = $msg->getParam($i);
        if ($params[$i]['name'] == 'remote_info') {
            // Remote information supplied be XML-RPC client
            $p = phpAds_xmlrpcDecode($p);
            if (!isset($p['remote_addr'])) {
                return new xmlrpcresp(0, $xmlrpcerruser + 1, "Missing 'remote_addr' member!");
            }
            while (list($k, $v) = each($p)) {
                switch ($k) {
                    case 'remote_addr':
                        $GLOBALS['HTTP_SERVER_VARS']['REMOTE_ADDR'] = $GLOBALS['REMOTE_ADDR'] = $v;
                        break;
                    case 'remote_host':
                        $GLOBALS['HTTP_SERVER_VARS']['REMOTE_HOST'] = $GLOBALS['REMOTE_HOST'] = $v;
                        break;
                    default:
                        $varname = 'HTTP_' . strtoupper($k);
                        $GLOBALS['HTTP_SERVER_VARS'][$varname] = $GLOBALS[$varname] = $v;
                        break;
                }
            }
        } elseif ($p->kindOf() == 'scalar') {
            // Scalar parameter - put the right value in view arg queue
            $p = $p->scalarval();
            switch ($params[$i]['type']) {
                case 'int':
                    $view_params[] = $p;
                    break;
                case 'boolean':
                    $view_params[] = $p ? 'true' : 'false';
                    break;
                default:
                    $view_params[] = "'" . addcslashes($p, "..'") . "'";
                    break;
            }
        } else {
            // Non-scalar parameter - put the decoded value in a temp array
            // for the view arg queue
            $view_arrays[] = phpAds_xmlrpcDecode($p);
            $view_params[] = '$view_arrays[' . (count($view_arrays) - 1) . ']';
        }
    }
    // Call view with supplied parameters
    eval('$output = view_raw(' . join(', ', $view_params) . ');');
    // What parameter should be always set
    if (!is_array($output)) {
        return new xmlrpcresp(0, $xmlrpcerruser + 99, "An error occurred while fetching banner code");
    }
    if (isset($GLOBALS['phpAds_xmlError'])) {
        return $GLOBALS['phpAds_xmlError'];
    }
    return new xmlrpcresp(phpAds_xmlrpcEncode($output));
}