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;
 }
Exemplo n.º 3
0
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));
}
Exemplo n.º 4
0
function phpAds_xmlrpcEncode($php_val)
{
    global $xmlrpcInt;
    global $xmlrpcDouble;
    global $xmlrpcString;
    global $xmlrpcArray;
    global $xmlrpcStruct;
    global $xmlrpcBoolean;
    $type = gettype($php_val);
    $xmlrpc_val = new xmlrpcval();
    switch ($type) {
        case "array":
        case "object":
            $arr = array();
            while (list($k, $v) = each($php_val)) {
                $arr[$k] = phpAds_xmlrpcEncode($v);
            }
            $xmlrpc_val->addStruct($arr);
            break;
        case "integer":
            $xmlrpc_val->addScalar($php_val, $xmlrpcInt);
            break;
        case "double":
            $xmlrpc_val->addScalar($php_val, $xmlrpcDouble);
            break;
        case "string":
            $xmlrpc_val->addScalar($php_val, $xmlrpcString);
            break;
            // <G_Giunta_2001-02-29>
            // Add support for encoding/decoding of booleans, since they are supported in PHP
        // <G_Giunta_2001-02-29>
        // Add support for encoding/decoding of booleans, since they are supported in PHP
        case "boolean":
            $xmlrpc_val->addScalar($php_val, $xmlrpcBoolean);
            break;
            // </G_Giunta_2001-02-29>
        // </G_Giunta_2001-02-29>
        case "unknown type":
        default:
            // giancarlo pinerolo <*****@*****.**>
            // it has to return
            // an empty object in case (which is already
            // at this point), not a boolean.
            break;
    }
    return $xmlrpc_val;
}
Exemplo n.º 5
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));
}