Progi1984 / PhpGlances

A PHP library for the Glances XML RPC API
8 stars 1 forks source link

Enlever les prérequis (extension XMLRPC, Curl, json) #3

Closed Progi1984 closed 11 years ago

spin0us commented 11 years ago

Pour Metaglances (qui interroge également l'interface XML-RPC de glances), je n'utilise ni l’extension PHP-Curl, ni l’extension PHP-XML-RPC.

Pour remplacer Curl, j'utilise la fonction suivante :

function do_post_request($url, $data, $optional_headers = null) {
    $params = array('http' => array(
        'method' => 'POST',
        'content' => $data
        ));

    if ($optional_headers !== null) {
        $params['http']['header'] = $optional_headers;
    }
    $ctx = stream_context_create($params);
    $stream = @fopen($url, 'rb', false, $ctx);
    if (!$stream) {
        if(isset($php_errormsg) && preg_match("/401/", $php_errormsg)) header("HTTP/1.1 401 Authentication failed");
        else header("HTTP/1.1 403 Forbidden");
        die();
    }
    $response = @stream_get_contents($stream);
    fclose($stream);
    if ($response === false || empty($response)) {
        throw new Exception("Problem reading data from $url");
    }
    return $response;
}

Et pour remplacer XML-RPC :

$authorization_header = (isset($_POST['pass']) && !empty($_POST['pass'])) ? "Authorization: Basic ".base64_encode("glances:".$_POST['pass'])."\r\n" : null;
$getAll = '<?xml version="1.0"?><methodCall><methodName>getAll</methodName></methodCall>';
$output = do_post_request('http://'.$ipv4.':'.$port.'/RPC2', $getAll, $authorization_header);
$xml = simplexml_load_string($output);
$json = json_decode($xml->params->param->value->string);

json_decode requiert PHP 5 >= 5.2.0 et PECL json >= 1.2.0 simplexml_load_string requiert PHP 5 Dans les deux cas on doit pouvoir trouver des codes sources pour remplacer ces deux fonctions pour les anciennes versions de PHP.

Progi1984 commented 11 years ago

Je travaille actuellement à enlever le support de XMLRPC, puis j'enleverais le support de CURL, et finalement JSON.

Le problème de ta solution est d'utiliser simplexml_load_string($output) donc réutiliser une autre extension.

Actuellement, je cherche une solution à xmlrpc_decode et j'ai pensé à utiliser des regex, voire travailler avec du substr et strpos.

Progi1984 commented 11 years ago

Extension XMLRPC : désactivé : OK !

Progi1984 commented 11 years ago

Extension CURL: désactivé : OK !

Progi1984 commented 11 years ago

Extension JSON: désactivé : OK !

Progi1984 commented 11 years ago

Manque l'alternative à simplexml_load_string.

Progi1984 commented 11 years ago

Extension SimpleXML: désactivé : OK !