login über soap api geht nicht.

Dieses Thema im Forum "Entwicklerforum" wurde erstellt von tkaulen, 5. März 2012.

  1. tkaulen

    tkaulen New Member

    wenn ich mich über die SOAP xml api verbinden möchte, bekomme ich immer diese login failed meldung.

    login_failedThe login failed. Username or password wrong. SOAP Error: The login failed. Username or password wrong.

    da das system womit ich entwickle ein testsystem ist, ist der username admin mit dem passwort admin vorhanden.


    $username = 'admin';
    $password = 'admin';


    $soap_location = 'http://188.246.9.50/remote/index.php';
    $soap_uri = 'http://188.246.9.50/remote/'

    $client = new SoapClient(null, array('location' => $soap_location,
    'uri' => $soap_uri,
    'trace' => 1,
    'exceptions' => 1));


    try {
    if($session_id = $client->login($username,$password)) {
    echo 'Logged successfull. Session ID:'.$session_id.'<br />';
    }

    //* Set the function parameters.
    $var_client_id = 1;

    $client_record = $client->client_get($session_id, $var_client_id);

    print_r($client_record);

    if($client->logout($session_id)) {
    echo 'Logged out.<br />';
    }


    } catch (SoapFault $e) {
    echo $client->__getLastResponse();
    die('SOAP Error: '.$e->getMessage());
    }
     
  2. ZooL

    ZooL Member

    Hallo,

    du machst einen fehler deswegen geht es nicht ;)
    Du loggts dich jetzt mal auf deinem ISPConfig Testsystem in der oberfläche ein.
    Dann gehst du auf System und schaust ob du den Eintrag Remote User findest, dort legts du einen User mit Passwort an und nutzt diesen in deinem PHP Script und es sollte Laufen ;)

    viel vergnügen.

    Greetz
     
  3. BHD84

    BHD84 New Member

    Und noch drauf achten ob du wirklich http hast oder httpS hast. Also so wie an der Oberfläche mit http oder https
     
  4. ZooL

    ZooL Member

    das habe ich mal aussen vor gelassen wenn du oben die kopierte adresse (ip)
    testest ist es ohne http korrekt.
    Aber mir ist aufgefallen viele machen den fehler mit dem Benutzernamen ohne Remote User.

    greetz
     
  5. tkaulen

    tkaulen New Member

    Danke das anlegen des Remoteusers hat mein Problem gelößt.

    Ich habe noch 2 weitere Fragen:


    1)Wenn ich die Funktion $client->client_get benutze, dann suche ich den Kunden über die Datenbank ID. Ich möchte den Kunden aber anhand der Kundennummer suchen. Wie mache ich das?
    Ich möchte mit Ispconfig ausschließlich über die Soap API kommunizieren. Wie das mittels einer SQL abfrage direkt ans Backend geht weis ich natürlich.

    2) Wie ist das Passwort/Hash verschlüßelt? Ich möchte das Passwort aus Ispconfig mit dem Passwort einer Formulareingabe vergleichen und wenn das übereinstimmt eine bestimmte Aktion ausführen. Mir ist klaar, das man das Passwort aus Ispconfig nicht auslesen kann und soll. Alternativ würde mir eine Api Funktion ausreichen, die einfach nur true oder false zurückgibt.



    gruß
    Thomas
     
  6. Till

    Till Administrator

    1)

    Code:
    $client->client_get($session_id, array('customer_no' => 'abc1234'));
    2) Das Passwort ist nach Linux Standard mit crypt-md5 Algorythmus verschlüsselt. Du kannst es z.B. so vergleichen:

    Code:
    $saved_password = stripslashes($mailuser['password']);
    $salt = '$1$'.substr($saved_password,3,8).'$';
    if(crypt(stripslashes($passwort),$salt) == $saved_password) {
     echo 'Passwort korrekt';
    }
     
  7. tkaulen

    tkaulen New Member

    $client->client_update($session_id, $c_id, $reseller_id, $client_record);
    wenn ich die client_update funktion benutze kommt immer:

    data_processing_errorweb_php_options_notempty<br>
    ssh_chroot_notempty<br>
    SOAP Error: web_php_options_notempty
    ssh_chroot_notempty


    Funktionsbeschreibung:
    Input Variables:
    $session_id, $client_id, $reseller_id, $params

    was bedeuten die felder $client_id und $reseller_id? ist $client_id das feld customer_no oder das feld id(primärschlüßel)? muß ich diese reseller_id immer mit angeben?

    sind die notwendigen informationen denn nicht in $params(wie $client_record im beispiel) schon mit enthalten?

    ich möchte einfach einen datensatz, den ich mit $client_record = $client->client_get($session_id, array('customer_no' => $ID)); ausgelesen habe wieder zurückschreiben mit

    $client->client_update($session_id, $c_id, $reseller_id, $client_record);
     
  8. Till

    Till Administrator

    Der Fehler besagt dass die Felder für die PHP Optionen und SSH chroot nicht leer sein dürfen. Wahrscheinlich hast Du sie also bei dem Client auf dem Limit tab nicht gesetzt bzw. gespeichert.

    client_id ist der Primärschlüssel des Clients und die reseller_id ist die client_id ID des Resellers oder 0, wenn der Client keinem Reseller zugeprdnet ist.

    customer_no ist ein Optionales Beschreibungsfeld, es ist kein Schlüssel. Es dient lediglich dazu um Kunden optional mit externen faltura Systemen die eine eigene Kundennummer vergeben abzugleichen.

    Ja. Sie kann aber 0 sein, wenn der kunde keinem Reseller zugeordnet ist.
     
  9. tkaulen

    tkaulen New Member

    ok, das lag daran ,das client_get keinen einzelnen datensatz zurückgibt, sondern eine liste von datensätzen und ich die liste versucht habe mit client_update reinzuschreiben *g*

    vielen dank für eure hilfe !!! hat mir sehr weitergeholfen.
     
  10. ZooL

    ZooL Member

    Hallo,

    ich beschäftige mich erst seid Mittwoch mit ISPc3 und der API.
    Aber ich möchte dich doch bitten fals dir etwas auffällt, ein fehler oder es fehlt etwas, dieses zu erwähnen ich habe meinem System schon 3 API Methoden geschenkt, weil es vieles einfacher macht ;)


    Danke im vorraus und schön das man dir helfen konnte ;)

    greetz
     
  11. tkaulen

    tkaulen New Member

    ok. jetzt hab ich noch eine frage:

    es gibt die funktion:
    $client->domains_domain_get($session_id, $domain_id);

    die setzt natürlich vorraus,das der primärschlüßel des domaindatensatzes bekannt ist.

    dann gibt es noch:
    $record_record = $client->domains_get_all_by_user($session_id, $group_id);
    diese verlangt als eingabeparameter die gruppen_id.

    ich bräuchte aber eine funktion, die mir zu einem kunden(customer_no) alle registrierten domains auflistet.
     
  12. PatrickR

    PatrickR Member

    Hi,

    ich stehe vor dem selben problem.

    alternativ zu customer_no würde auch username gehen.

    auf jedenfall bräuchte ich eine möglichkeit, die domains aufzulisten die dem jeweiligen user gehören...

    Wäre um einen schnellen Tip sehr dankbar.

    Danke, viele Grüße
    Patrick
     
  13. ZooL

    ZooL Member

    Schneller Tip:
    PHP:
    /**
         * Aus der tabelle sys_user ergebnis übergabe Kundennummer.
         * 
         * Array
         * (
         * [client_id] => 6
         * [userid] => 7
         * )
         * 
         */
    PHP:
    /**
    *
    */
    $get_client $client->client_get_id($session_id$this->customerno);
    /**
    *
    */
    PHP:
    /**
    *
    */
    $domain_sites_by_user =  $client->client_get_sites_by_user($session_id$get_client['client_id'], $get_client['userid']);
            
    $this->objSmarty->assign('domain_daten'$domain_sites_by_user);
    /**
    *
    */
    Liefert alle zum z.B client1 gehörende Domains.


    Das Sollte aber als Tip denke ich reichen, Programmieren müsst ihr selber.

    Greetz
     
  14. PatrickR

    PatrickR Member

    Hi ZooL,

    programmieren können wir selber :D
    aber mal eine andere Frage, wo hast du die ganzen Infos her? Sind dies deine eigenen erfahrungswerte? weil in der Doku steht das ja alles nicht drinne...
    Lesen ist irgendwie doch angenehmer wie anderen ständig auf den Deckel zu gehen :rolleyes:


    Gruß
    Patrick
     
  15. ZooL

    ZooL Member

    Also ich habe die infos aus der Mysql Tabelle ;) und wenn man sich die remote.inc.php ansieht hilft das ungemein weiter. Gewisse abfragen werden direkt aus der SQL gelesen andere mit den Methoden aus dem ISPC3 Interface genutzt.

    Soviele infos habe ich bisher noch nicht es fehlen noch viele ;)

    Wer Lesen kann ist klar im vorteil :p

    greetz
     
  16. PatrickR

    PatrickR Member

    Hi,

    das funktioniert soweit :)
    jetzt kommt aber das aaaabbber:
    ich bekomme damit die daten zurück die unter websites angelegt wurden sind (also Website-->Domain)
    ich benötige aber die Daten, die im Domain modul drin stehen.

    also über domains_get_all_by_user // allerdings ist mir nicht klar was es mit der $group_id aufsich hat.

    bzw. bei domains_domain_get mit $primary_id

    Viele Grüße
    Patrick
     
  17. ZooL

    ZooL Member

    Tut mir leid ich habe vom Domain-Modul abstand genommen da es mir eigentlich nicht geholfen hat, oder ich den sinn dieses Moduls, nicht verstanden habe.
     
  18. PatrickR

    PatrickR Member

    Ja, denn sinn von diesem Modul habe ich auch nicht verstanden, wird aber doch für eine bestimmte sache benötigt:

    z.B. wenn ich mehrere webs auf eine domain verweisen lassen will
    web 1 --> shop.domain.de
    web 2 --> forum.domain.de
    web 3 --> Domain.de

    es ist nur blöd das der Kunde den support anschreiben muss um die dementsprechende sub bzw. third level domain anzulegen.
    habe ich so auch noch bei keinem ISP gesehen, das der provider eine änderung vornehmen muss die unter dem second level liegt.
    Dem domain modul möchte ich nun halt einen sinn verschaffen,
    indem der kunde seine domains einsehen kann, anlegen kann, und im nächsten schritt diese, falls es sich um eine secondlevel domain handelt auch registrieren kann.

    ich werde mir dann jetzt auch mal die remote.inc.php und Datenbank vorknüpfen

    Ich bedanke mich für deine Hilfe.

    Gruß
    Patrick
     
  19. ZooL

    ZooL Member

    Hallo,
    habe dir grade wissen von einem 32std Wochenende geliefert ... ich wäre dir dankbar wenn du mir Informationen zu diesem Domain modul liefern kannst, sobald du welche hast ;)

    greetz
     
  20. PatrickR

    PatrickR Member

    klar, kann ich gerne machen :)

    das problem wird momentan sein, falls Till keine aussage liefert was diese Group_id und deren zuordnung zu einem user angeht, dass ich diese über ein SQL Statement direkt in der datenbank herausfinden muss, dies würde ich natürlich gerne vermeiden wollen....

    Gruß
    Patrick
     

Diese Seite empfehlen