ISPmanager API. Exemples API (ISPmanager)
De ISPWiki.
Ici on traite les exemples de la connexion aux fonctions d'ISPmanager avec l'emploi des différents langages de programmation et des commandes shell. L'un des exemples c'est la fonction d'affichage de la liste des sites. Toutes les autres fonctions doivent être appelées de la même façon. Dans ces exemples on n'examine que la connexion locale. Pour se connecter à distance à ISPmanager il est nécessaire d'utiliser le protocole HTPPS au lieu de HTTP et de s'identifier en s'adressant à URL
https://Adresse IP/manager/ispmgr?out=xml&func= auth&username=nom_d'utilisateur&password=mot_de_passe
Ensuite il faut trouver le numéro de session dans le document obtenu à l'aide des fonctions de traitement des documents XML ou manuellement, et l'indiquer lors de chaque requete suivante dans le paramètre auth. Le numéro de session est valide pendant 30 minutes, à l'expiration de ce délai il faut passer de nouveau par l'identification.
<?xml version="1.0" encoding="UTF-8"?> <doc> <auth id="numéro de session"/> </doc>
Sommaire |
Commande fetch
fetch -q -o - "http://adresse IP/manager/ispmgr?out= xml&func=site"
Commande curl
curl -k -s "http://adresse IP/manager/ispmgr?out=xml& func=site"
Langage Perl
Il est nécessaire d'installer la librairie [http:%20%20//search.cpan.org/~gaas/libwww-perl-5.76/ LWP] pour s'adresser à URL et XML::LibXML pour traiter les documents XML.
#!/usr/bin/perl -w use CGI::Carp qw(fatalsToBrowser); print "Content-type: text/html\n\n"; use LWP::UserAgent; use XML::LibXML; my $result; #Nous créons un pseudo-navigateur qui "ferra semblant d'etre" MSIE et envoyons la requête $ua = LWP::UserAgent->new; $ua->agent("Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"); my $req = HTTP::Request->new(POST => 'https://adresse IP/manager/ispmgr'); $req->content("authinfo=login:mot de passe&out=xml&func=site"); my $res = $ua->request($req); # Puis nous vérifions le résultat if ($res->is_success) { $result = $res->content; } else { die $res->status_line."\n"; } # Maintenant la variable $result contient le document XML avec la liste des sites # ou le message d'erreur my $parser = XML::LibXML->new(); my $doc = $parser->parse_string( $result ); my $root = $doc->documentElement(); # obtenons la liste des noms des sites my @sites = (); for( $root->findnodes( "elem/name" ) ){ push @sites, $_->textContent; } # Enfin nous affichons le résultat à l'écran for( sort @sites ){ print $_."<br>\n"; }
Language PHP
Le language PHP donne la possibilité de travailler avec URL qu'avec les fichiers standards. Pour traiter les documents XML, il faut utiliser la librairie suivante DOM XML.
<?php $result = ""; $fh = fopen( "http://127.0.0.1/manager/ispmgr?out=xml& func=site", "r" ); while( $data = fread( $fh, 4096 ) ){ $result .= $data; } fclose( $fh ); // Maintenant la variable $result contient le document XML avec la liste des sites // ou le message d'erreur if( $doc = domxml_open_mem( $result ) ){ $root = $doc->document_element(); for( $elem = $root->first_child(); $elem; $elem = $elem->next_sibling() ){ for( $node = $elem->first_child(); $node; $node = $node->next_sibling() ){ if( $node->node_name() == "name" ){ echo $node->get_content(); echo "\n"; } } } } ?>
