Ergebnis 1 bis 13 von 13
  1. #1
    Kundenservice-Team Avatar von Dietmar Leher
    Registriert seit
    27.07.2005
    Beiträge
    3.655

    Fragen und Beispielskripte rund um die API von JiffyBox

    Sehr geehrte Kundin, Sehr geehrter Kunde,

    in diesem Bereich des Forums können Sie Fragen und Beiträge erstellen rund um die Nutzung der Schnittstelle zur Programmierung (API), mit der Sie die JiffyBox fernsteuern können.


    Dokumentation im PDF-Format

    Alle zur Verfügung stehenden Funktionen der Schnittstelle sind für Sie in der API-Dokumentation erfasst und beschrieben, die Sie über nachstehenden Link als PDF-Datei herunterladen können:

    API-Dokumentation herunterladen


    Generierung API-Token im Control-Panel

    Der Zugriff auf die Schnittstelle ist nur nach Authentifizierung möglich. In Ihrem Control-Panel können Sie dazu einen so genannten "API-Token" erstellen.

    Loggen Sie sich bitte zunächst in Ihr Control-Panel ein, um einen API-Token für Ihren JiffyBox-Account zu generieren. Nach dem Login klicken Sie bitte auf "Account" und anschließend auf "API-Zugriff". Über den Button "Generieren" können Sie nun den für Sie gültigen API-Token erstellen lassen.


    Mit freundlichen Grüßen

  2. #2
    Kunde
    Registriert seit
    23.11.2010
    Beiträge
    21
    Da es ja leider noch keine php-Bibliothek für die Jiffybox gibt, stelle ich hier mal meine selbstgestrickte php-Klasse zur Verfügung. Das ganz ist sehr rudimentär und relativ fix für meine Bedürfnisse zusammen geschrieben, aber vielleicht hat ja jemand Lust, das ganze weiter auszubauen.
    PHP-Code:
    class JiffyBox {

        function 
    __construct($id=NULL) {
            
    define('HOST','https://api.jiffybox.de/<deinToken>/v1.0/');
            
    define('DEFAULT_PLAN_ID',10);
            
    $this->id $id;
            if (
    $id) {
                
    $this->getInfo();

            }
            
        }
        
        function 
    requestCurl$id$method='GET'$data=array(), $command='jiffyBoxes' ) {
        
            
    $ch curl_initHOST.$command.'/'.$id );
            
            
    curl_setopt$chCURLOPT_RETURNTRANSFER);    
            
    curl_setopt($ch,CURLOPT_SSL_VERIFYHOSTFALSE);
            
    curl_setopt($ch,CURLOPT_SSL_VERIFYPEERFALSE);
            
            if (
    strtoupper($method) == 'POST') {
                
    curl_setopt($chCURLOPT_POST);
                
    curl_setopt$chCURLOPT_POSTFIELDShttp_build_query($data) ); 
            }
            if (
    strtoupper($method) == 'GET'curl_setopt($chCURLOPT_HTTPGET);
            if (
    strtoupper($method) == 'PUT') {
                
    curl_setopt($chCURLOPT_CUSTOMREQUEST'PUT'); 
                
    curl_setopt($chCURLOPT_HTTPHEADER, array('Content-Length: ' strlen($data)));
                
    curl_setopt($chCURLOPT_POSTFIELDS$data); 
            }

            if( !
    $data curl_exec$ch )) {
                echo 
    "Curl execusion error."curl_error$ch ) ."\n";
                return 
    FALSE;
            }
            if(
    $data->messages[0]->type == 'error') {
                die(
    $data->messages[0]->message);
            }

            
    curl_close$ch );

            return 
    $data;
        }

        
        function 
    getInfo() {
            
    $json $this->requestCurl($id $this->id$method 'GET');
            
    $json json_decode($json);
            if (
    is_object($json)) {
                foreach(
    $json->result AS $var=>$value){
                    
    $this->$var $value;
                }
                return 
    $json->result;
            }
            else {
                return 
    FALSE;
            }
        }
        

        function 
    getBackups() {
            
    $json $this->requestCurl($id $this->id$method 'GET',$data=NULL$command='backups');
            return 
    json_decode($json);
        }
        
        function 
    create($name$planid DEFAULT_PLAN_ID$backupid=NULL$distribution=NULL$password=NULL$use_sshkey TRUE$metadata=NULL) {
            
    $data = array(
                        
                        
    'name' => $name,
                        
    'planid' => $planid,
                        
    'backupid' => $backupid,
                        
    'distribution' => $distribution,
                        
    'password' => $password,
                        
    'use_sshkey' => $use_sshke
                        
    'metadata' => $metadata
                    
    );
            return 
    $this->requestCurl($id $this->id$method 'POST'$data);
        }
        
        function 
    stop() {
            if (
    $this->getStatus() == 'READY') {
                
    $json json_encode(array('status'=>'SHUTDOWN'));
                return 
    $this->requestCurl($id $this->id$method 'PUT'$data $json);
            }
            else return 
    FALSE;
        }
        
        function 
    thaw($planid=DEFAULT_PLAN_ID) {
            if (
    $this->getStatus() == 'FROZEN') {
                
    $json json_encode(array('status'=>'THAW''planid'=>$planid));
                return 
    $this->requestCurl($id $this->id$method 'PUT'$data $json);
            }
            else return 
    FALSE;
        }
        
        function 
    freeze() {
            if (
    $this->getStatus() == 'READY') {
                
    $json json_encode(array('status'=>'FREEZE'));
                return 
    $this->requestCurl($id $this->id$method 'PUT'$data $json);
            }
            else return 
    FALSE;
        }
        
        function 
    start() {
            if (
    $this->getStatus() == 'READY') {
                
    $json json_encode(array('status'=>'START'));
                return 
    $this->requestCurl($id $this->id$method 'PUT'$data $json);
            }
            else return 
    FALSE;
        }
        
        function 
    getStatus() {
            
    $json $this->requestCurl($id $this->id$method 'GET'$data NULL);        
            
    $json json_decode($json);
            return 
    $json->result->status;
        }
        

    Mit
    PHP-Code:
    $j = new JiffyBox($id_der_jiffybox); 
    wird eine Box instantiiert und kann dann gestartet, gestoppt, eingefroren und aufgetaut werden mit:
    PHP-Code:
    $j->start();
    $j->stop();
    $j->freeze();
    $j->thaw(); 
    Beachtet werden muss, dass die Aktionen asynchron ablaufen, d.h. das php-Script wartet z.B. nach einem stop() nicht so lange, bis die Box wirklich herunter gefahren ist, sondern es stößt nur de stop-Vorgang an.

    Beim Auftauen kann eine Tarif-ID mit übergeben werden, ansonsten habe ich '10' als Default-Wert gewählt, was wohl dem günstigsten Tarif entspricht (ohne Gewähr).

    Mit create() kann man neue Boxen anlegen.

  3. #3
    Kunde
    Registriert seit
    20.08.2011
    Beiträge
    5
    API-Dokumentation und Beispielclient
    An dieser Stelle bieten wir Ihnen in Kürze die Gelegenheit, vollwertige Clients und Bibliotheken für den externen Zugriff auf die JiffyBox-API herunterzuladen.
    Gibt es vielleicht auch schon nähere Informationen darüber?

  4. #4
    Communityservice Avatar von Nils Dornblut
    Registriert seit
    15.10.2000
    Beiträge
    42.632
    Hallo DR01D5,

    wo finden Sie den Text genau? Einen Client gibt es leider noch nicht.

    Mit freundlichen Grüßen

    Nils Dornblut
    Communityservice
    __________________
    Blog - Facebook - Twitter
    Communitybetreiber: domainfactory GmbH
    Impressum / Pflichtangaben

  5. #5
    Kunde
    Registriert seit
    20.08.2011
    Beiträge
    5
    Zitat Zitat von Nils Dornblut Beitrag anzeigen
    Hallo DR01D5,

    wo finden Sie den Text genau? Einen Client gibt es leider noch nicht.

    Mit freundlichen Grüßen
    Im Control-Panel unter Account und API-Zugriff.

    Versuche mich gerade an einer Google Chrome Extension mit Hilfe der API und daher hätte mich interessiert was da geplant wird.

  6. #6
    Communityservice Avatar von Nils Dornblut
    Registriert seit
    15.10.2000
    Beiträge
    42.632
    Hallo DR01D5,

    in der verlinkten Anleitung finden sich diverse Beispiele. Da speziell auf andere Systeme anzupassen, ist nicht geplant. Die Dokumentation sollte soweit leicht verständlich sein. Den Text im Control-Panel werden wir anpassen. Danke für den Hinweis.

    Mit freundlichen Grüßen

    Nils Dornblut
    Communityservice
    __________________
    Blog - Facebook - Twitter
    Communitybetreiber: domainfactory GmbH
    Impressum / Pflichtangaben

  7. #7
    Kunde
    Registriert seit
    16.02.2012
    Beiträge
    3
    Das ist total klasse und funktioniert super. Wenn mir jetzt noch einmal einer Helfen könnte, die Information einer JiffyBox anzeigen zu können. Irgendwie hapert es bei mir gerade.

    Gruß
    Markus

  8. #8
    Communityservice Avatar von Nils Dornblut
    Registriert seit
    15.10.2000
    Beiträge
    42.632
    Hallo Markus,

    auf welche Informationen beziehen Sie sich die Sie anzeigen lassen wollen?

    Mit freundlichen Grüßen

    Nils Dornblut
    Communityservice
    __________________
    Blog - Facebook - Twitter
    Communitybetreiber: domainfactory GmbH
    Impressum / Pflichtangaben

  9. #9
    Kunde
    Registriert seit
    16.02.2012
    Beiträge
    3
    Hallo Herr Dornblut,

    bin noch nicht mal sicher, dass das tatsächlich in dieses Forum gehört: bevor ich eine Box mit den aus den PHP Klassen bereitgestellten Informationen starte/stoppe, etc. wäre es natürlich schön, zum einen eine Ansicht aller zur Verfügung stehender Boxen zu erhalten und darüberhinaus die Status Info (Box Status, läuft seit oder gestoppt seit, etc.) für eine dedizierte Box.

    Das liegt aber wohl ehr an meinen 'rudimentären' PHP Kenntnissen ... ich hätte gedacht, dass ich über die Funktion GetInfo() den Status einer Box abfragen und auch auf meiner Webseite darstellen kann. Meine Versuche diesbezüglich scheiterten allerdings bisher.

    Gruß
    Markus

  10. #10
    Kunde
    Registriert seit
    16.02.2012
    Beiträge
    3
    *duck - eledigt!

    Code:
    echo $j->name
    und so weiter. SORRY

  11. #11
    Communityservice Avatar von Nils Dornblut
    Registriert seit
    15.10.2000
    Beiträge
    42.632
    Hallo Markus,

    kein Problem. Man kann ja nicht alles wissen

    Mit freundlichen Grüßen

    Nils Dornblut
    Communityservice
    __________________
    Blog - Facebook - Twitter
    Communitybetreiber: domainfactory GmbH
    Impressum / Pflichtangaben

  12. #12
    Reseller
    Registriert seit
    13.11.2006
    Beiträge
    11

    AW: Fragen und Beispielskripte rund um die API von JiffyBox

    Hallo JB_flow123,

    ich habe soeben das von Dir zur Verfügung gestellte PHP-Script das erste mal getestet und damit den Status von 10 JiffyBoxen abgefragt.

    Dies funktioniert auch, aber leider nur manchmal. Ich bekomme in der Schleife der Abfrage (ich habe für die ID's der JB's eine MySQL-Tabelle erstellt) die folgende Fehlermeldung:
    Code:
    Warning: Invalid argument supplied for foreach() in /class-jiffybox.php on line 52
    Hast Du oder ein anderer Leser einen Tipp, woran dieser sporatische Fehler liegen könnte ?

    Gruß und Dank im Voraus
    TobiLei

  13. #13
    Reseller
    Registriert seit
    13.11.2006
    Beiträge
    11

    AW: Fragen und Beispielskripte rund um die API von JiffyBox

    Hallo,

    gleich noch eine weitere Frage dazu :

    Ich lese ja den Status von x JiffyBoxen über eine Schleife aus und möchte mit einem Klick je nach Status der Box einfrieren oder auftauen können. Zum Einfrieren nutze ich z.B. den folgenden Code :
    PHP-Code:
    <form action="<? $j->freeze($jid);?>">
    <input type="Submit" value="Einfrieren">
    </form>
    Die Klasse habe ich dahingehend geändert, dass ich beim Auftauen und Einfrieren die ID der JiffyBox mit übergebe :
    PHP-Code:
    function freeze($jid) {
        if (
    $this->getStatus() == 'READY') {
            
    $json json_encode(array('status'=>'FREEZE'));
            return 
    $this->requestCurl($id $jid$method 'PUT'$data $json);
        }
        else return 
    FALSE;

    Wenn ich jetzt den Button betätige, werden aber alle JiffyBoxen z.B. eingefroren - hat jemand einen Tipp, wo der Denkfehler liegt ?

    TobiLei

Ähnliche Themen

  1. Debian Anleitungen rund um Debian im JiffyBox-Wiki
    Von PeterMueller im Forum Distributionen
    Antworten: 14
    Letzter Beitrag: 22.09.2014, 18:22
  2. Ubuntu Anleitungen rund um Ubuntu im JiffyBox-Wiki
    Von PeterMueller im Forum Distributionen
    Antworten: 2
    Letzter Beitrag: 28.01.2011, 10:43
  3. Antworten: 1
    Letzter Beitrag: 26.07.2010, 19:05
  4. LiveDisk®: Informationen und Links rund um die WebDAV-Funktionalität
    Von domainFACTORY im Forum [df Labs abgeschlossen] LiveDisk® - Your Data Everywhere
    Antworten: 1
    Letzter Beitrag: 20.07.2007, 15:26

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •