function um_xml_rpc_client_call($server_host, $server_path, $server_port, $proxy, $proxy_port, $proxy_user, $proxy_pass, $function, $parameters)
{
    $msg = new xmlrpcmsg($function, $parameters);
    $client = new xmlrpc_client($server_path, $server_host, $server_port);
    $client->setProxy($proxy, $proxy_port, $proxy_user, $proxy_pass);
    if (defined('XMLRPC_DEBUG')) {
        $client->setDebug(XMLRPC_DEBUG);
    }
    $result = $client->send($msg, XMLRPC_TIMEOUT, '');
    if (!$result) {
        trigger_error('<strong>Open Update Manager</strong> Server comunication error. ' . $client->errstr);
        return 0;
    }
    switch ($result->faultCode()) {
        case 0:
            break;
        case 5:
            trigger_error('<strong>Open Update Manager</strong> Server comunication error. ' . $result->faultString());
            return 0;
        default:
            trigger_error('<strong>Open Update Manager</strong> XML-RPC error. ' . $result->faultString());
            return 0;
    }
    return $result;
}
 /**
  * Ping the pingomatic RPC service.
  */
 function ItemSendPing(&$params)
 {
     global $debug;
     global $outgoing_proxy_hostname, $outgoing_proxy_port, $outgoing_proxy_username, $outgoing_proxy_password;
     $item_Blog = $params['Item']->get_Blog();
     $client = new xmlrpc_client('/', 'rpc.pingomatic.com', 80);
     $client->debug = $debug && $params['display'];
     // Set proxy for outgoing connections:
     if (!empty($outgoing_proxy_hostname)) {
         $client->setProxy($outgoing_proxy_hostname, $outgoing_proxy_port, $outgoing_proxy_username, $outgoing_proxy_password);
     }
     $message = new xmlrpcmsg("weblogUpdates.ping", array(new xmlrpcval($item_Blog->get('name')), new xmlrpcval($item_Blog->get('url'))));
     $result = $client->send($message);
     $params['xmlrpcresp'] = $result;
     return true;
 }
Пример #3
0
 /**
  * Send a ping to the configured service.
  */
 function ItemSendPing(&$params)
 {
     global $debug;
     global $outgoing_proxy_hostname, $outgoing_proxy_port, $outgoing_proxy_username, $outgoing_proxy_password;
     $url = $this->parse_ping_url($this->Settings->get('ping_service_url'));
     $Item = $params['Item'];
     $item_Blog = $Item->get_Blog();
     $client = new xmlrpc_client($url['path'], $url['host'], $url['port']);
     $client->debug = $debug && $params['display'];
     // Set proxy for outgoing connections:
     if (!empty($outgoing_proxy_hostname)) {
         $client->setProxy($outgoing_proxy_hostname, $outgoing_proxy_port, $outgoing_proxy_username, $outgoing_proxy_password);
     }
     if ($this->Settings->get('ping_service_extended')) {
         $message = new xmlrpcmsg("weblogUpdates.extendedPing", array(new xmlrpcval($item_Blog->get('name')), new xmlrpcval($item_Blog->get('url')), new xmlrpcval($Item->get_permanent_url()), new xmlrpcval($item_Blog->get('atom_url'))));
     } else {
         $message = new xmlrpcmsg("weblogUpdates.ping", array(new xmlrpcval($item_Blog->get('name')), new xmlrpcval($item_Blog->get('url'))));
     }
     $result = $client->send($message);
     $params['xmlrpcresp'] = $result;
     return true;
 }
Пример #4
0
function wordpress_get_options($xmlrpcurl, $username, $password, $blogid = 0, $proxyipports = "")
{
    global $globalerr;
    $client = new xmlrpc_client($xmlrpcurl);
    $client->setSSLVerifyPeer(false);
    $params[] = new xmlrpcval($blogid);
    $params[] = new xmlrpcval($username);
    $params[] = new xmlrpcval($password);
    $msg = new xmlrpcmsg("wp.getOptions", $params);
    if (is_array($proxyipports)) {
        $proxyipport = $proxyipports[array_rand($proxyipports)];
    } elseif ($proxyipports != "") {
        $proxyipport = $proxyipports;
    } else {
        $proxyipport = "";
    }
    if ($proxyipport != "") {
        if (preg_match("/@/", $proxyipport)) {
            $proxyparts = explode("@", $proxyipport);
            $proxyauth = explode(":", $proxyparts[0]);
            $proxyuser = $proxyauth[0];
            $proxypass = $proxyauth[1];
            $proxy = explode(":", $proxyparts[1]);
            $proxyip = $proxy[0];
            $proxyport = $proxy[1];
            $client->setProxy($proxyip, $proxyport, $proxyuser, $proxypass);
        } else {
            $proxy = explode(":", $proxyipport);
            $proxyip = $proxy[0];
            $proxyport = $proxy[1];
            $client->setProxy($proxyip, $proxyport);
        }
    }
    $r = $client->send($msg);
    if ($r === false) {
        $globalerr = "XMLRPC ERROR - Could not send xmlrpc message";
        return false;
    }
    if (!$r->faultCode()) {
        return php_xmlrpc_decode($r->value());
    } else {
        $globalerr = "XMLRPC ERROR - Code: " . htmlspecialchars($r->faultCode()) . " Reason: '" . htmlspecialchars($r->faultString()) . "'";
    }
    return false;
}
 /**
  * @brief Actually send the request to the cloudcache API server.
  *
  * @param namespace Namespace of the request
  * @param rpcMsg	  XML-RPC message Object containing the actual request
  *
  * @return Reply from the server
  */
 private function _sendRequest($namespace, $rpcMsg)
 {
     $this->lastRpcRequest = $rpcMsg;
     // Initialize the XML-RPL client
     $rpcClient = new xmlrpc_client($this->apiURI . $namespace, $this->apiURL, $this->port, $this->httpMethod);
     if (file_exists(dirname(__FILE__) . '/proxy.inc.php')) {
         include dirname(__FILE__) . '/proxy.inc.php';
         $rpcClient->setProxy($proxy->host, $proxy->port, $proxy->username, $proxy->password);
     }
     // Send the message
     $this->lastRpcResponse = $rpcClient->send($rpcMsg);
     return !$this->getLastFaultCode() ? php_xmlrpc_decode($this->lastRpcResponse->value()) : false;
 }
Пример #6
0
/**
 * Request abuse list from central blacklist.
 *
 * @return boolean true = success, false = error
 */
function antispam_poll_abuse()
{
    global $Messages, $Settings, $baseurl, $debug, $antispamsrv_host, $antispamsrv_port, $antispamsrv_uri;
    global $outgoing_proxy_hostname, $outgoing_proxy_port, $outgoing_proxy_username, $outgoing_proxy_password;
    // Construct XML-RPC client:
    load_funcs('xmlrpc/model/_xmlrpc.funcs.php');
    $client = new xmlrpc_client($antispamsrv_uri, $antispamsrv_host, $antispamsrv_port);
    // yura: I commented this because xmlrpc_client prints the debug info on screen and it breaks header_redirect()
    // $client->debug = $debug;
    // Set proxy for outgoing connections:
    if (!empty($outgoing_proxy_hostname)) {
        $client->setProxy($outgoing_proxy_hostname, $outgoing_proxy_port, $outgoing_proxy_username, $outgoing_proxy_password);
    }
    // Get datetime from last update, because we only want newer stuff...
    $last_update = $Settings->get('antispam_last_update');
    // Encode it in the XML-RPC format
    $Messages->add(T_('Latest update timestamp') . ': ' . $last_update, 'note');
    $startat = mysql2date('Ymd\\TH:i:s', $last_update);
    //$startat = iso8601_encode( mktime(substr($m,11,2),substr($m,14,2),substr($m,17,2),substr($m,5,2),substr($m,8,2),substr($m,0,4)) );
    // Construct XML-RPC message:
    $message = new xmlrpcmsg('b2evo.pollabuse', array(new xmlrpcval(0, 'int'), new xmlrpcval('annonymous', 'string'), new xmlrpcval('nopassrequired', 'string'), new xmlrpcval($startat, 'dateTime.iso8601'), new xmlrpcval(0, 'int')));
    $Messages->add(sprintf(T_('Requesting abuse list from %s...'), $antispamsrv_host), 'note');
    $result = $client->send($message);
    if ($ret = xmlrpc_logresult($result, $Messages, false)) {
        // Response is not an error, let's process it:
        $response = $result->value();
        if ($response->kindOf() == 'struct') {
            // Decode struct:
            $response = xmlrpc_decode_recurse($response);
            if (!isset($response['strings']) || !isset($response['lasttimestamp'])) {
                $Messages->add(T_('Incomplete reponse.'), 'error');
                $ret = false;
            } else {
                // Start registering strings:
                $value = $response['strings'];
                if (count($value) == 0) {
                    $Messages->add(T_('No new blacklisted strings are available.'), 'note');
                } else {
                    // We got an array of strings:
                    $Messages->add(T_('Adding strings to local blacklist:'), 'note');
                    foreach ($value as $banned_string) {
                        if (antispam_create($banned_string, 'central')) {
                            // Creation successed
                            $Messages->add(T_('Adding:') . ' &laquo;' . $banned_string . '&raquo;: ' . T_('OK.'), 'note');
                        } else {
                            // Was already handled
                            $Messages->add(T_('Adding:') . ' &laquo;' . $banned_string . '&raquo;: ' . T_('Not necessary! (Already handled)'), 'note');
                            antispam_update_source($banned_string, 'central');
                        }
                    }
                    // Store latest timestamp:
                    $endedat = date('Y-m-d H:i:s', iso8601_decode($response['lasttimestamp']));
                    $Messages->add(T_('New latest update timestamp') . ': ' . $endedat, 'note');
                    $Settings->set('antispam_last_update', $endedat);
                    $Settings->dbupdate();
                }
                $Messages->add(T_('Done.'), 'success');
            }
        } else {
            $Messages->add(T_('Invalid response.'), 'error');
            $ret = false;
        }
    }
    return $ret;
}
Пример #7
0
/**
 * Get updates from b2evolution.net
 *
 * @param boolean useful when trying to upgrade to a release that has just been published (in the last 12 hours)
 * @return NULL|boolean True if there have been updates, false on error,
 *                      NULL if the user has turned off updates.
 */
function b2evonet_get_updates($force_short_delay = false)
{
    global $allow_evo_stats;
    // Possible values: true, false, 'anonymous'
    global $DB, $debug, $evonetsrv_host, $evonetsrv_port, $evonetsrv_uri, $servertimenow, $evo_charset;
    global $Messages, $Settings, $baseurl, $instance_name, $app_name, $app_version, $app_date;
    global $Debuglog;
    global $Timer;
    global $outgoing_proxy_hostname, $outgoing_proxy_port, $outgoing_proxy_username, $outgoing_proxy_password;
    if (!isset($allow_evo_stats)) {
        // Set default value:
        $allow_evo_stats = true;
        // allow (non-anonymous) stats
    }
    if ($allow_evo_stats === false) {
        // Get outta here:
        return NULL;
    }
    if ($debug == 2) {
        $update_every = 8;
        $attempt_every = 3;
    } elseif ($force_short_delay) {
        $update_every = 180;
        // 3 minutes
        $attempt_every = 60;
        // 1 minute
    } else {
        $update_every = 3600 * 12;
        // 12 hours
        $attempt_every = 3600 * 4;
        // 4 hours
    }
    // Note: do not put $baseurl in here since it would cause too frequently updates, when you have the same install with different $baseurls.
    //           Everytime this method gets called on another baseurl, there's a new check for updates!
    $version_id = $instance_name . ' ' . $app_name . ' ' . $app_version . ' ' . $app_date;
    // This is the last version we checked against the server:
    $last_version_checked = $Settings->get('evonet_last_version_checked');
    $servertime_last_update = $Settings->get('evonet_last_update');
    $servertime_last_attempt = $Settings->get('evonet_last_attempt');
    if ($last_version_checked == $version_id) {
        // Current version has already been checked, don't check too often:
        if ($servertime_last_update > $servertimenow - $update_every) {
            // The previous update was less than 12 hours ago, skip this
            // echo 'recent update';
            return false;
        }
        if ($servertime_last_attempt > $servertimenow - $attempt_every) {
            // The previous update attempt was less than 4 hours ago, skip this
            // This is so all b2evo's don't go crazy if the server ever is down
            // echo 'recent attempt';
            return false;
        }
    }
    $Timer->resume('evonet: check for updates');
    $Debuglog->add(sprintf('Getting updates from %s.', $evonetsrv_host), 'evonet');
    if ($debug) {
        $Messages->add(sprintf(T_('Getting updates from %s.'), $evonetsrv_host), 'note');
    }
    $Settings->set('evonet_last_attempt', $servertimenow);
    $Settings->dbupdate();
    // Construct XML-RPC client:
    load_funcs('xmlrpc/model/_xmlrpc.funcs.php');
    $client = new xmlrpc_client($evonetsrv_uri, $evonetsrv_host, $evonetsrv_port);
    if ($debug > 1) {
        $client->debug = 1;
    }
    // Set proxy for outgoing connections:
    if (!empty($outgoing_proxy_hostname)) {
        $client->setProxy($outgoing_proxy_hostname, $outgoing_proxy_port, $outgoing_proxy_username, $outgoing_proxy_password);
    }
    // Run system checks:
    load_funcs('tools/model/_system.funcs.php');
    // Get system stats to display:
    $system_stats = get_system_stats();
    // Construct XML-RPC message:
    $message = new xmlrpcmsg('b2evo.getupdates', array(new xmlrpcval($allow_evo_stats === 'anonymous' ? md5($baseurl) : $baseurl, 'string'), new xmlrpcval($instance_name, 'string'), new xmlrpcval($app_name, 'string'), new xmlrpcval($app_version, 'string'), new xmlrpcval($app_date, 'string'), new xmlrpcval(array('this_update' => new xmlrpcval($servertimenow, 'string'), 'last_update' => new xmlrpcval($servertime_last_update, 'string'), 'mediadir_status' => new xmlrpcval($system_stats['mediadir_status'], 'int'), 'install_removed' => new xmlrpcval($system_stats['install_removed'] == 'ok' ? 1 : 0, 'int'), 'evo_charset' => new xmlrpcval($system_stats['evo_charset'], 'string'), 'evo_blog_count' => new xmlrpcval($system_stats['evo_blog_count'], 'int'), 'cachedir_status' => new xmlrpcval($system_stats['cachedir_status'], 'int'), 'cachedir_size' => new xmlrpcval($system_stats['cachedir_size'], 'int'), 'general_pagecache_enabled' => new xmlrpcval($system_stats['general_pagecache_enabled'] ? 1 : 0, 'int'), 'blog_pagecaches_enabled' => new xmlrpcval($system_stats['blog_pagecaches_enabled'], 'int'), 'db_version' => new xmlrpcval($system_stats['db_version'], 'string'), 'db_utf8' => new xmlrpcval($system_stats['db_utf8'] ? 1 : 0, 'int'), 'php_uid' => new xmlrpcval($system_stats['php_uid'], 'int'), 'php_uname' => new xmlrpcval($system_stats['php_uname'], 'string'), 'php_gid' => new xmlrpcval($system_stats['php_gid'], 'int'), 'php_gname' => new xmlrpcval($system_stats['php_gname'], 'string'), 'php_version' => new xmlrpcval($system_stats['php_version'], 'string'), 'php_reg_globals' => new xmlrpcval($system_stats['php_reg_globals'] ? 1 : 0, 'int'), 'php_allow_url_include' => new xmlrpcval($system_stats['php_allow_url_include'] ? 1 : 0, 'int'), 'php_allow_url_fopen' => new xmlrpcval($system_stats['php_allow_url_fopen'] ? 1 : 0, 'int'), 'php_upload_max' => new xmlrpcval($system_stats['php_upload_max'], 'int'), 'php_post_max' => new xmlrpcval($system_stats['php_post_max'], 'int'), 'php_memory' => new xmlrpcval($system_stats['php_memory'], 'int'), 'php_mbstring' => new xmlrpcval($system_stats['php_mbstring'] ? 1 : 0, 'int'), 'php_xml' => new xmlrpcval($system_stats['php_xml'] ? 1 : 0, 'int'), 'php_imap' => new xmlrpcval($system_stats['php_imap'] ? 1 : 0, 'int'), 'php_opcode_cache' => new xmlrpcval($system_stats['php_opcode_cache'], 'string'), 'gd_version' => new xmlrpcval($system_stats['gd_version'], 'string')), 'struct')));
    $result = $client->send($message);
    if ($ret = xmlrpc_logresult($result, $Messages, false)) {
        // Response is not an error, let's process it:
        $response = $result->value();
        if ($response->kindOf() == 'struct') {
            // Decode struct:
            $response = xmlrpc_decode_recurse($response);
            /**
             * @var AbstractSettings
             */
            global $global_Cache;
            foreach ($response as $key => $data) {
                $global_Cache->set($key, serialize($data));
            }
            $global_Cache->delete('evonet_updates');
            // Cleanup
            $global_Cache->dbupdate();
            $Settings->set('evonet_last_update', $servertimenow);
            $Settings->set('evonet_last_version_checked', $version_id);
            $Settings->dbupdate();
            $Debuglog->add('Updates saved', 'evonet');
            $Timer->pause('evonet: check for updates');
            return true;
        } else {
            $Debuglog->add('Invalid updates received', 'evonet');
            $Messages->add(T_('Invalid updates received'), 'error');
        }
    }
    $Timer->pause('evonet: check for updates');
    return false;
}