The first release candidate (RC1) version of the upcoming ISPConfig 3.0.3.3 is available for download. RC versions are released for testing purposes, it is not recommended to use them on production systems. This release is a bugfix release for ISPConfig 3.0.3.2 Changelog http://bugtracker.ispconfig.org/index.php?do=index&tasks=&project=3&due=51&status[]= Download http://www.ispconfig.org/downloads/ISPConfig-3.0.3.3-rc1.tar.gz Update instructions Code: cd /tmp rm -rf /tmp/ispconfig3_install wget http://www.ispconfig.org/downloads/ISPConfig-3.0.3.3-rc1.tar.gz tar xvfz ISPConfig-3.0.3.3-rc1.tar.gz cd ispconfig3_install/install php -q update.php
2 Problems with API -> addclient password dose not work (updateClient work) Problem is remoting_lib.inc.php PHP: Line 695 $password = crypt(stripslashes($password),$salt); This is normal md5 pw and if you comment out this line it work -> Delete a User Domain stays. Not sites i mean module Domain -> updateclient template_master not included Lines PHP: if(isset($params['template_master']) and $params['template_master'] > 0) { $template=$app->db->queryOneRecord("SELECT * FROM client_template WHERE template_id=".intval($params['template_master'])); $params=array_merge($params,$template); } -> My own function in remoting.inc.php for getting next webID without SQL in my API. PHP: /* Get next AutoIncrement for sites_web_domain_add */ public function sites_web_domain_nextID($session_id) { global $app; if(!$this->checkPerm($session_id, 'sites_web_domain_get')) { $this->server->fault('permission_denied', 'You do not have the permissions to access this function.'); return false; } $table_info = $app->db->queryOneRecord("SHOW TABLE STATUS LIKE 'web_domain'"); return $table_info["Auto_increment"]; }
If you use API and dont comment it out, password wont work. In next lines are the insert with md5('.$password.') in the query. UPDATE in remoting_lib.inc.php -> NO crypt -> after a update the account work perfect: PHP: function ispconfig_sysuser_update($params,$client_id){ global $app; $username = $app->db->quote($params["username"]); $password = $app->db->quote($params["password"]); $client_id = intval($client_id); $sql = "UPDATE sys_user set username = '$username', passwort = md5('$password') WHERE client_id = $client_id"; $app->db->query($sql); } ADD in remoting_lib.inc.php -> crypt -> login with API created account wont work: PHP: $salt="$1$"; $base64_alphabet='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'; for ($n=0;$n<8;$n++) { $salt.=$base64_alphabet[mt_rand(0,63)]; } $salt.="$"; $password = crypt(stripslashes($password),$salt); $sql1 = "INSERT INTO sys_user (username,passwort,modules,startmodule,app_theme,typ,active,language,groups,default_group,client_id) VALUES ('$username',md5('$password'),'$modules','$startmodule','$usertheme','$type','$active','$language',$groups,$groupid,$insert_id)"; Add a normal account in ispconfig and look into the database in sys_user table -> its md5. client table is crypt.
[I checked the file. The crypt line is correct. The bug was in line 697 which has to be: Code: VALUES ('$username','$password','$modules','$startmodule','$usertheme','$type','$active','$language',$groups,$groupid,$insert_id)"; Thanks for reporting the bug. I fixed the sql statement in svn.
Ok this way work too i hope you give Domain Module and client_update with templates a look too getNextID, maybe next version -> The Idear was for a post in forum. The post used mysql connection... I have still another problem and found no solution. I wrote 3 versions for API use. 1. version i changed a lot in remote.inc.php for add a website and it worked 2. version never in use on my system.. 3. on dev server no problem, on productive server wont work. if i setup a account with api, it work but client is always client0 -> but variable isset.... if i setup with interface, document root, system group .. everything is same as i send with API. PHP: public function addWebsite($traffic,$webspace){ $this->web_id = $this->sites_web_domain_nextID(); $documentroot = "/var/www/clients/client".$this->client_id."/web".$this->web_id; $system_user = "web".$this->web_id; $system_group = 'client'.$this->client_id; $php_open_basedir="/var/www/clients/client".$this->client_id."/web".$this->web_id."/web:/var/www/clients/client".$this->client_id."/web".$this->web_id."/tmp:/var/www/".$this->domain."/web:/usr/share/php5:/tmp"; try { $params = array('server_id' => $this->serverid, 'ip_address' => '*', 'domain' => $this->domain, 'type' => 'vhost', 'parent_domain_id' =>'', 'vhost_type' =>'name', 'hd_quota' => $webspace, 'traffic_quota' => $traffic, 'cgi' =>'n', 'ssi' =>'n', 'suexec' =>'n', 'errordocs' =>'1', 'subdomain' =>'www', 'ssl' =>'n', 'php' =>'mod', 'active' => 'y', 'redirect_type' =>'', 'redirect_path' =>'', 'ssl_state' =>'', 'ssl_locality' =>'', 'ssl_organisation' =>'', 'ssl_organisation_unit' =>'', 'ssl_country' =>'', 'ssl_domain' =>'', 'ssl_request' =>'', 'ssl_cert' =>'', 'ssl_bundle' =>'', 'ssl_action' =>'', 'stats_type' => 'webalizer', 'stats_password' =>'', 'document_root' => $documentroot, 'system_user' =>$system_user, 'system_group' =>$system_group, 'allow_override' =>'Indexes AuthConfig FileInfo', 'php_open_basedir' => $php_open_basedir, 'apache_directives' =>'', 'backup_interval' => 'none', 'custom_php_ini' => NULL, 'backup_copies' => 1, ); $this->web_id = $this->session->sites_web_domain_add($this->session_id, $this->client_id, $params); } catch (SoapFault $e) { die('SOAP Error: '.$e->getMessage()); }} i hope its understandable. xaver
In the $params array, the parameter "client_group_id" is missing and the paramaters: 'document_root' => $documentroot, 'system_user' =>$system_user, 'system_group' =>$system_group, 'php_open_basedir' => $php_open_basedir, are obsolete as they are set by ispconfig now automatically. client_group_id is the sys_groupid of the website or in other words, the groupid of the client or reseller that owns the website. A function to get the next webID is then not needed anymore I guess as all variables relating to the webID are now set by ispconfig.
I get this problem without this params: SOAP Error: documentroot_error_empty sysuser_error_empty sysgroup_error_empty php_open_basedir_error_empty Wont work without this params
Hello, till told me you need for client_group_id the groupid form sys_group. I dont wanna use MySQL in a API... i created a new functionfor this in remote.inc.php PHP: public function client_id_get_SysGroupID($session_id, $client_id){ global $app; if(!$this->checkPerm($session_id, 'sites_web_domain_get')) { $this->server->fault('permission_denied', 'You do not have the permissions to access this function.'); return false; } $sysGroupID = $app->db->queryOneRecord("SELECT groupid FROM sys_group WHERE client_id = '$client_id'"); return $sysGroupID["groupid"]; }
Hello, I tried adding the client_id_get_SysGroupID function shared by xaver to get the client_group_id as till was suggesting but I still get the same error: documentroot_error_empty sysuser_error_empty sysgroup_error_empty php_open_basedir_error_empty I don't understand, as these params are supposed to be filled by ISPConfig... I'm using ISPConfig 3.0.3.3 downloaded from sourceforge, maybe I need to download the last version from SVN? Thanks!
This has been fixed in SVN. Please either sue the SVN version if this is for testing / Development only or wait for the 3.0.4 version which will be released soon.