login über soap api geht nicht.

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());
}
 

ZooL

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';
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
 

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
 

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
 

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
 

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';
}
 

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);
 

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.

was bedeuten die felder $client_id und $reseller_id?

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.

ist $client_id das feld customer_no oder das feld id(primärschlüßel)?

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.

muß ich diese reseller_id immer mit angeben?

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

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.
 

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
 

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.
 

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
 

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
 

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
 

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
 

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
 

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.
 

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
 

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
 

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
 

Werbung

Top