Mail-User importieren?

Dieses Thema im Forum "Allgemein" wurde erstellt von Daniel26, 18. Juni 2015.

  1. Daniel26

    Daniel26 New Member

    Hallo,

    ich würde gerne die User unseres Systems importieren.
    Alle User stecken im LDAP. Ich hab mir also ein Script gebaut, das mir die User aus dem LDAP zieht und eine SQL-Datei bastelt.
    Diese würde ich dann gern per mysql impotieren.

    Momentan machen mir nur die mail_userid, sys_userid und sys_groupid sorgen. Die werden ja immer hochgezählt. Für die mail_userid der impotierten User hätte ich deren UID unsers Systems genommen.

    Es kann passieren das im ISPconfig auch User von Hand angelegt werden. Kann ich ISPconfig irgendwo konfigurieren das es bei Neuanlagen eien ID größer z.B. 10000 nimmt um Überschneidungen auszuschließen?

    Gruß

    Daniel
     
  2. wotan2005

    wotan2005 Member

    schau dir mal die API von ISPConfig an, damit würde sich das sehr gut machen lassen.
     
  3. Daniel26

    Daniel26 New Member

    Was ngenau würde sich damit machen lassen? Das Importieren?
     
  4. wotan2005

    wotan2005 Member

    das richtige angelegen der Mail-Account unter den richtigen IDs. Damit musst dann nicht umbiegen.
     
  5. Daniel26

    Daniel26 New Member

    Und wie und wo? Gibts da eine Doku dazu?

    Btw: Ich bin Sysadmin, kein Programmierer :)
     
  6. florian030

    florian030 Member

    Ich würde die Daten nicht direkt in mysql importieren, sondern dafür auch die API nehmen. Schau mal im Archiv ins Verzeichnis remoting_client
     
  7. Daniel26

    Daniel26 New Member

    Hmm, hab mir mal das Mail_user_add.php angeschaut..geht schon in die richtige Richtigung. Wenn ich das richtig verstehe müsste ich einfach für jeden Eintrag die PHP-Datei mit den Optionen rufen, richtig? GEht das nur über den Browser oder auch von der Shell?

    Parameter sind u.a. client_id und session_id...wo krieg ich die her?

    Danke schonmal

    Gruß

    Daniel
     
  8. florian030

    florian030 Member

    Die remoteAPI geht über die Shell. Die Client-ID findest Du in der Datenbank zu dem jeweiligen Kunden. Eine Session-ID brauchst Du nicht. Im Prinzip musst Du aus dem Beispiel nur $params anpassen.
     
  9. Daniel26

    Daniel26 New Member

    Kunden habe ich keinen Angelegt. Ich habe jetzt nur mal einen "Entfernetn Benutzer" angelegt, Dessen ID ist dann die Client_id? In welchem Format müssen die Parameter angegeben werden?
     
  10. florian030

    florian030 Member

    Nein, der ist der Nutzer, mit dem Du dich über die API anmelden kannst. Wenn die Emails unter admin läufen sollen, dann die client_id 0.
     
  11. Daniel26

    Daniel26 New Member

    Danke, importuieren kann ich nun über die Api. Aber wie soll das Updaten ablaufen? mail_user_update will die mailuser_id, die weiß ich nicht. Eine Möglichkeit die mailuser_id über einen Login o.ä. über die API rauszukriegen gibts nicht?

    Gruß

    Daniel
     
  12. Till

    Till Administrator

    Doch, das geht. über die *_get funktionen, denn Du kannst an die Funktionen als ID auch ein array übergeben mit dem wert, nach dem gesucht werden soll, also z.B.

    array ('email' => 'ich@domain.tld')
     
  13. Daniel26

    Daniel26 New Member

    KAnnich beim Update nur Werte angeben die sich unterscheiden oder auch welche, die sich eigentlich nicht geändert haben?
    SOnst muss ich beim Ubergeben der Daten an die Api zuerst selbst nachschauen obs sich was geändert hat und nur die Daten der Api übergeben, sonst hätte ich einfach den ganzen Datensatz wie beim Import angegeben.
     
  14. Till

    Till Administrator

    Du kannst alle werte angeben, also nicht nur die geänderten.
     
  15. Daniel26

    Daniel26 New Member

    PHP:
    <?php

    require 'soap_config.php';


    $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.
                    
    $client_id 0;
                    
    $mailuser_id 1;
                    
    $params = array(
                            
    'server_id' => 1,
                           
    'email' => 'xxx@xxx',          
                            
    'name' => 'hurz-test'
                   
    );

                    
    $affected_rows $client->mail_user_update($session_id$client_id$mailuser_id$params);

                   

                     
    //if($client->logout($session_id)) {
                      //echo 'Logged out.<br />';
                    //}
            
    } catch (SoapFault $e) {
            echo 
    $client->__getLastResponse();
            die(
    'SOAP Error: '.$e->getMessage());
            }


    ?>

    Eigentlich müsste ja obiges Konstrukt funktionieren, oder? Ich kriege aber nur als faultcode "data_processing_error" und als faultstring "login_error_regex"
    Die soap_config.php tut aber beim importieren, nur beim Updaten nicht.

    Gruß

    Daniel
     
  16. Till

    Till Administrator

    Hast Du bei Dir in ISPConfig die optionalen login usernamen für mailuser aktiviert?
     
  17. Daniel26

    Daniel26 New Member

    Nicht das ich wüsste....
     
  18. Daniel26

    Daniel26 New Member

    Neuer Versuch, das ganze etwas abgewandelt:

    PHP:
    <?php

    require 'soap_config.php';


    $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 />';
                    }
                    
    $username 'yy@xxx';
                    
    $mailrecord_old $client->mail_user_get($session_id, array('email' => $username));
                    
    $primary_id $mailrecord_old[0]['mailuser_id'];
                    
    $sys_userid $mailrecord_old[0]['sys_userid'];
                    
    $client_id $client->client_get_id($session_id$sys_userid);
                    echo 
    "\nmailuser_id wurde ermittelt: ".$primary_id." !!!!\n";
                    echo 
    "\nsys_userid wurde ermittelt: ".$sys_userid." !!!!\n";
                    echo 
    "\nclient_id wurde ermittelt: ".$client_id." !!!!\n";
                    echo 
    "\n alle Parameter: !!!!\n";
                    
    print_r(array_values($mailrecord_old));
                    
    $mailrecord_new $mailrecord_old;
                    
    $mailrecord_new[0]['name'] = 'hurz-test';

                    
    $client->mail_user_update($session_id$client_id$primary_id$mailrecord_new[0]);

                    
    print_r(array_values($mailrecord_new));
            } catch (
    SoapFault $e) {
            echo 
    $client->__getLastResponse();
            echo 
    "\n\n\n";
            
    //die('SOAP Error: '.$e->getMessage());
            
    }

    ?>
    Nach dem Ausführen krieg ich das:

    Code:
    Logged successfull. Session ID:09b58be01cb93ecf6e61005e4098cac5<br />
    mailuser_id wurde ermittelt: 1 !!!!
    
    sys_userid wurde ermittelt: 1 !!!!
    
    client_id wurde ermittelt: 0 !!!!
    
    alle Parameter: !!!!
    Array
    (
        [0] => Array
            (
                [mailuser_id] => 1
                [sys_userid] => 1
                [sys_groupid] => 0
                [sys_perm_user] => riud
                [sys_perm_group] => riud
                [sys_perm_other] =>
                [server_id] => 1
                [email] => yy@xxx
                [login] => yy@xxx
                [password] => $1$+IepnJYl$p2dsffwewet/Ms0G1
                [name] => Spanni
                [uid] => 5000
                [gid] => 5000
                [maildir] => /var/vmail/xxx/yy
                [quota] => 0
                [cc] =>
                [homedir] => /var/vmail
                [autoresponder] => n
                [autoresponder_start_date] => 0000-00-00 00:00:00
                [autoresponder_end_date] => 0000-00-00 00:00:00
                [autoresponder_subject] => Out of office reply
                [autoresponder_text] =>
                [move_junk] => n
                [custom_mailfilter] =>
                [postfix] => y
                [access] => y
                [disableimap] => n
                [disablepop3] => n
                [disabledeliver] => n
                [disablesmtp] => n
                [disablesieve] => n
                [disablesieve-filter] => n
                [disablelda] => n
                [disablelmtp] => n
                [disabledoveadm] => n
                [last_quota_notification] =>
                [backup_interval] => none
                [backup_copies] => 1
            )
    
    )
    #0  db->query(UPDATE `mail_user` SET `server_id` = '1', `email` = 'yy@xxx, `login` = 'yy@xxx', `password` = '$1$RM+VcYul$DSZQ5qU3mqsdafsdafsdafLnxa4W1', `name` = 'hurz-test', `quota` = '0', `cc` = '', `maildir` = '/var/vmail/xxx/yy', `homedir` = '/var/vmail', `uid` = '5000', `gid` = '5000', `postfix` = 'y', `disablesmtp` = 'n', `disableimap` = 'n', `disablepop3` = 'n', `autoresponder_subject` = 'Out of office reply', `autoresponder_text` = '', `autoresponder` = 'n', `autoresponder_start_date` = '', `autoresponder_end_date` = '', `move_junk` = 'n', `custom_mailfilter` = '' WHERE mailuser_id = 1) called at [/usr/local/ispconfig/interface/lib/classes/remoting.inc.php:3368]
    #1  remoting->updateQueryExecute(UPDATE `mail_user` SET `server_id` = '1', `email` = 'yy@xxx', `login` = 'yy@xxx', `password` = '$1$RM+VcYul$DSZQ5qU3mq6yb5aLnxa4W1', `name` = 'hurz-test', `quota` = '0', `cc` = '', `maildir` = '/var
    
    SOAP Error: looks like we got no XML document
    
    Mach ich denn da irgendwas falsch? Verstehe ich die DOku nicht richtig?

    Gruß

    Spanni


    Edit: Es kommt am Schluss noch die Meldung "SOAP Error: looks like we got no XML document"
    LEider nix im Apache-Log
     
    Zuletzt bearbeitet: 23. Juni 2015
  19. Daniel26

    Daniel26 New Member

    Keiner ne Idee wie ich das Debuggen könnte?
     
  20. Till

    Till Administrator

    Welchen Fehler erhältst Du denn wenn du folgende sql query mit phpmadmin ausführst:

    UPDATE `mail_user` SET `server_id` = '1', `email` = 'yy@xxx, `login` = 'yy@xxx', `password` = '$1$RM+VcYul$DSZQ5qU3mqsdafsdafsdafLnxa4W1', `name` = 'hurz-test', `quota` = '0', `cc` = '', `maildir` = '/var/vmail/xxx/yy', `homedir` = '/var/vmail', `uid` = '5000', `gid` = '5000', `postfix` = 'y', `disablesmtp` = 'n', `disableimap` = 'n', `disablepop3` = 'n', `autoresponder_subject` = 'Out of office reply', `autoresponder_text` = '', `autoresponder` = 'n', `autoresponder_start_date` = '', `autoresponder_end_date` = '', `move_junk` = 'n', `custom_mailfilter` = '' WHERE mailuser_id = 1
     

Diese Seite empfehlen