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; } } } }
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)); }