API: sites_ftp_user_add

Dieses Thema im Forum "Tipps - Tricks - Mods" wurde erstellt von ThomasTonius, 3. Aug. 2016.

  1. ThomasTonius

    ThomasTonius New Member

    Hilfe, ich bin am verzweifeln.
    Ich kann mit der API keinen FTP User anlegen (ISPConfig 3.1b2)
    Fehlermeldung: directory_error_notinweb
    PHP:
    public function sitesFtpUserAdd($login false)
        {
            
    // /var/www/clients/client0/web21
            
    $dir '/var/www/clients/client' $this->clientID '/web' $this->domainID;
            
    $params = [
                
    'server_id' => $this->serverID,
                
    'parent_domain_id' => $this->domainID,
                
    'username' => $this->ftpUserName,
                
    'password' => $this->ftpPass,
                
    'quota_size' => 0,
                
    'active' => 'y',
                
    'uid' => 'web' $this->domainID,
                
    'gid' => 'client' $this->clientID,
                
    'dir' => $dir
            
    ];
            if(
    $login)
            {
                if(!
    $this->login())
                {
                    
    error_log("Login failed");
                    return 
    false;
                }
            }
            try
            {
                
    $result $this->soapClient->sites_ftp_user_add($this->sessionID$this->clientID$params);
                return 
    is_numeric($result) ? true false;
            }
            catch (
    Exception $ex)
            {
                
    $this->error[] = $ex->getMessage();
                return 
    false;
            }
        }
    Könnte es sich hier evtl. um einen Bug handeln?

    Danke für's lesen - hoffe es gibt eine Lösung
     
    Zuletzt bearbeitet: 3. Aug. 2016
  2. florian030

    florian030 Member

    $dir passt zum doc-root der Domain? Sonst sieh Dir mal interface/lib/classes/validate_ftpuser.inc.php an.
     
  3. ThomasTonius

    ThomasTonius New Member

    Hallo und danke Florian,
    ja die Datei hatte ich mir bereits angeschaut. Da kann ich aber mit meinem mangelhaften Wissen nicht wirklich was feststellen (ausser, dass in Zeile 91 evtl. ein "=" fehlt).
    Allerdings habe ich festgestellt, dass zwar nach dem Anlegen der Domain mittels "sites_web_domain_add" diese auch im Adminpanel erscheint, jedoch nicht der Pfad auf dem Server erstellt wird. Da ich keine Fehlermeldung erhalten hatte, habe ich das nicht kontrolliert. Also läuft da schon etwas verkehrt mit meinem Skript.
    Werde jetzt mal versuchen herauszufinden, warum das Verzeichnis nicht erstellt wurde.
     
  4. Till

    Till Administrator

    steht denn der richtige pfad bei der domain in der datenbank? Am besten mal eine website im ispconfig interface anlegen, dann eine mit der api und dann die beiden in der web_domain tabelle vergleichen. Du kannst im $params array des api aufrufes alle felder außer den sys_* Feldern setzen.

    Noch ein Hinweis zum web pfad: falls /var/www ein symlink ist, legt ispconfig keine Ordner an da der Pfad manipuliert worden sein könnte.
     
  5. ThomasTonius

    ThomasTonius New Member

    Ich komme zwar einigermaßen mit Php zurecht, aber ISPConfig ist Neuland für mich :) Wie komme ich denn in die Datenbank rein (schäm)?
    Ich habe mittels "sites_web_domain_get" die Daten ausgelesen, dementsprechend habe ich den $params Array angepasst. Hier ist auch der document_root passend.
    Allerdings fällt mir hier auf, dass "added_date" und "added_by" leer ist, wenn ich über die API eine Domain anlege.
    Ich teste mal was passiert, wenn ich die auch im $params übergebe.
    Anfangs hatte ich in den Parametern nicht den "document_root" angegeben, da mir die Domain-ID zu der Laufzeit ja noch nicht bekannt war. Habe das entsprechend angepasst, aber das Verzeichnis wird trotzdem nicht angelegt....
     
  6. Till

    Till Administrator

    phpmyadmin. Mit root einloggen und dann auf die dbispconfig Datenbank klicken.
     
  7. ThomasTonius

    ThomasTonius New Member

  8. ThomasTonius

    ThomasTonius New Member

    Ok, also ins phpMyAdmin komme ich nun rein. Wenn ich die Einträge nun vergleiche, sehe ich dass alle Daten exakt gleich sind (ausser natürlich z.B. document_root, system_user). Allerdings gibt es einige Felder die in der über's Webinterface eingefügten Domain NULL sind und bei der über die API nur leer sind (e.g. apache_directives, ssl_*).
    So, nun steh ich da wie der Ochs vorm Berg...
     

Diese Seite empfehlen