Remote User - DNS A-Record leer

TDS

New Member
Hallo,
wenn ich mit einem Remote User die Funktion dns_a_get() aufrufe erhalte ich nichts zurück. Die Authentifizierung ist korrekt und eine Sessions-ID wird zurück gegeben.
Wenn ich mir die SQL-Abfrage zur DNS-Abfrage anschaue kommt folgendes:
SELECT * FROM `dns_rr` WHERE id = 858 AND (( dns_rr.sys_userid = AND dns_rr.sys_perm_user like '%r%') OR ( dns_rr.sys_groupid IN (0) AND dns_rr.sys_perm_group like '%r%') OR dns_rr.sys_perm_other like '%r%')
=> sys_userid ist leer
=> sys_groupid ist leer

Wo kann der Fehler liegen? Nutze die Vorlage aus den Beispielen. ID in dns_rr ist vorhanden. Muss ich auf eine SVN-Version zurückgreifen?
 

Till

Administrator
sys_userid und sys_groupid eines datensatzes dürfen niemals leer sein. Der Fehler liegt hier also im datensatz in der ispconfig DB und nicht in der remote abfrage via remoting. wie hast Du den datensatz denn in der ispconfig db angelegt.
 

TDS

New Member
sys_userid und sys_groupid eines datensatzes dürfen niemals leer sein. Der Fehler liegt hier also im datensatz in der ispconfig DB und nicht in der remote abfrage via remoting. wie hast Du den datensatz denn in der ispconfig db angelegt.

In der Datenbank ist alles korrekt eingetragen. Nur bei dem SOAP-Zugriff scheint er irgendwie die beiden Parameter nicht zu erhalten oder zu übergeben.
 

TDS

New Member
Übergibst Du denn die richtige client_id?

PHP:
<?php
/*
$soap_location = 'http://localhost:8080/ispconfig3/interface/web/remote/index.php';
$soap_uri = 'http://localhost:8080/ispconfig3/interface/web/remote/';
*/
$soap_location = 'https://localhost:8080/remote/index.php';
$soap_uri = 'https://localhost:8080/remote/';

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

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

        //* Parameters
        $id = $_REQUEST['id'];

        //* Get the dns record
        $dns_record = $client->dns_a_get($session_id, $id);

        //* Change active to inactive
        $dns_record['data'] = $_REQUEST['ip'];
        $affected_rows = $client->dns_a_update($session_id, null, $id, $dns_record);

        echo 'Number of records that have been changed in the database: '.$affected_rows.'<br>';

        if($client->logout($session_id)) {
                echo 'Logged out.<br />';
        }
} catch (SoapFault $e) {
        echo $client->__getLastResponse(); die('SOAP Error: '.$e->getMessage());
}
?>
Parameter:
  • username
  • password
  • id => dns_rr id
PHP:
$client->dns_a_update($session_id, null, $id, $dns_record);
2. Parameter ist null, auch wenn ich die z.B. 11 (Benutzer dem der DNS-Eintrag gehört und welcher in der Tabelle steht) übergebe erhalte ich den Fehler.
 

Till

Administrator
Verwechsele bitte nicht die client_id mit der sys_user oder sys_group ID. Die client_ID steht nirgends in der dns_rr tabelle, sie ist nur in der tabelle "client" zu finden.
 

TDS

New Member
sys_user oder sys_group sollten 11 sein. Jedenfalls wurde das von ISPConfig bei Erstellung so angelegt.
Die ID der Zeile ist 858.
Benutzer und Passwort ist der vom Remote User. Er hat alle DNS-Rechte.

Somit:
$_REQUEST['username'] = remote1
$_REQUEST['password'] = password1
$_REQUEST['id'] = 858

Hardcoded $client_id = 11 oder als NULL belassen bringt keine Änderung.
 

Till

Administrator
Du machst genau den Fehler den ich oben beschrieben habe, Du übergibst eine sys_userid als client ID, da muss der fehler ja auftreten da eine client_id nicht die sys_userid und auch nicht die sys_groupid ist. Schau mal in die Tabelle client, dort findest Du die clients und auch deren client_id und das ist die ID, die Du als client_id übergibst.
 

TDS

New Member
Du machst genau den Fehler den ich oben beschrieben habe, Du übergibst eine sys_userid als client ID, da muss der fehler ja auftreten da eine client_id nicht die sys_userid und auch nicht die sys_groupid ist. Schau mal in die Tabelle client, dort findest Du die clients und auch deren client_id und das ist die ID, die Du als client_id übergibst.

Ich glaub hier liegt ein Missverständnis vor.

1. Schritt:
Login und Session ID erhalten: OK
2. Schritt:
DNS Record erhalten via Session ID und übergebener ID (858): Leerer Wert
Die ID kann ich beliebig ändern (z.B. 1 für allerersten Eintrag). Keine Änderung.

Weitere Schritte werden nicht ausgeführt da ich hier bereits mit print_r und exit abbreche. Demzufolge kein dns_a_update.
Wenn ich $dns_record['data'] = 'xxx.xxx.xxx.xxx' zuweise dann hat das Array nur diesen einen Wert. Sollte aber durch dns_a_get() mehr haben.

Für das Update wäre die client_id = 10 laut Tabelle client, doch bis dahin komme ich nicht weil ich ja den DNS Record nicht korrekt erhalte.
 

Werbung

Top