function ispcfg3_CreateAccount($params) { $productid = $params['pid']; $accountid = $params['accountid']; $domain = strtolower($params['domain']); $username = $params['username']; $password = $params['password']; $clientsdetails = $params['clientsdetails']; $soapuser = $params['configoption1']; $soappassword = $params['configoption2']; $soapsvrurl = $params['configoption3']; $soapsvrssl = $params['configoption4']; $templateid = $params['configoption5']; $designtheme = $params['configoption6']; $globalphp = $params['configoption7']; $chrootenable = $params['configoption8']; $webcreation = $params['configoption9']; $domaintool = $params['configoption10']; $webwriteprotect = $params['configoption11']; $webquota = $params['configoption12']; $webtraffic = $params['configoption13']; $websettings = explode(',', $params['configoption14']); $subdomain = $params['configoption15']; $phpmode = $params['configoption16']; $webactive = $params['configoption17']; $dns = $params['configoption18']; $dnssettings = explode(',', $params['configoption19']); $defaultlanguage = $params['configoption20']; $addmaildomain = $params['configoption21']; $addftpuser = $params['configoption22']; $nameserver1 = $dnssettings[0]; $nameserver2 = $dnssettings[1]; $soaemail = $dnssettings[2] . '.' . $domain; $dnstemplate = $dnssettings[3]; $zoneip = $dnssettings[4]; $websettings[0] == 'n' ? $enablecgi = '' : ($enablecgi = 'y'); $websettings[1] == 'n' ? $enablessi = '' : ($enablessi = 'y'); $websettings[2] == 'n' ? $enableperl = '' : ($enableperl = 'y'); $websettings[3] == 'n' ? $enableruby = '' : ($enableruby = 'y'); $websettings[4] == 'n' ? $enablepython = '' : ($enablepython = 'y'); $websettings[5] == 'n' ? $enablesuexec = '' : ($enablesuexec = 'y'); $websettings[6] == 'n' ? $enableerrdocs = '' : ($enableerrdocs = '1'); $websettings[7] == 'n' ? $wildcardsubdom = '' : ($wildcardsubdom = '1'); $websettings[8] == 'n' ? $enablessl = '' : ($enablessl = 'y'); $webactive == 'on' ? $webactive = 'y' : ($webactive = 'n'); logModuleCall('ispconfig', 'CreateClient', $params['clientsdetails'], $params, '', ''); if ($soapsvrssl == 'on') { $soap_url = 'https://' . $soapsvrurl . '/remote/index.php'; $soap_uri = 'https://' . $soapsvrurl . '/remote/'; } else { $soap_url = 'http://' . $soapsvrurl . '/remote/index.php'; $soap_uri = 'http://' . $soapsvrurl . '/remote/'; } /* * Make sure that a username and password have been set * or exit with error. */ if (isset($username) && $username != '' && (isset($password) && $password != '')) { try { /* Connect to SOAP Server */ $client = new SoapClient(null, array('location' => $soap_url, 'uri' => $soap_uri, 'exceptions' => 1, 'trace' => false)); /* Authenticate with the SOAP Server */ $session_id = $client->login($soapuser, $soappassword); $fullname = htmlspecialchars_decode($clientsdetails['firstname']); $fullname .= ' ' . htmlspecialchars_decode($clientsdetails['lastname']); $companyname = htmlspecialchars_decode($clientsdetails['companyname']); $address = $clientsdetails['address1']; if (!empty($clientsdetails['address2'])) { $address .= ',' . $clientsdetails['address2']; } $zip = $clientsdetails['postcode']; $city = $clientsdetails['city']; $state = $clientsdetails['state']; $mail = $clientsdetails['email']; $country = $clientsdetails['country']; $phonenumber = $clientsdetails['phonenumberformatted']; $customerno = $clientsdetails['userid']; /* Get the serverid's from WHMCS */ $sql = 'SELECT serverid FROM tblservergroupsrel WHERE groupid = ' . '( SELECT servergroup FROM tblproducts ' . 'WHERE id = "' . $productid . '")'; $res = mysql_query($sql); $servernames = array(); /* Loop through the serverid's and retrieve the hostnames of the * servers from WHMCS */ $i = 0; while ($groupservers = mysql_fetch_array($res)) { $sql = 'SELECT hostname FROM tblservers ' . 'WHERE id = "' . $groupservers['serverid'] . '"'; $db_result = mysql_query($sql); $servernames2 = mysql_fetch_array($db_result); $servernames[$i] = $servernames2['hostname']; $i++; } $a = 0; $b = 0; $c = 0; $d = 0; $e = 0; $i = 0; $j = 1; $server = array(); while ($j <= count($servernames)) { /* Retreive the serverid from ispconfig */ $result = $client->server_get_serverid_by_name($session_id, $servernames[$i]); /* Retrieve the services for the server from ispconfig */ $servicesresult = $client->server_get_functions($session_id, $result[0]['server_id']); /* Loop through the results to find the services on each server */ if ($servicesresult[0]['mail_server'] == 1) { $server['mail_server'][$a]['server_id'] = $result[0]['server_id']; $server['mail_server'][$a]['hostname'] = $servernames[$i]; $a++; } if ($servicesresult[0]['web_server'] == 1) { $server['web_server'][$b]['server_id'] = $result[0]['server_id']; $server['web_server'][$b]['hostname'] = $servernames[$i]; $b++; } if ($servicesresult[0]['dns_server'] == 1) { $server['dns_server'][$c]['server_id'] = $result[0]['server_id']; $server['dns_server'][$c]['hostname'] = $servernames[$i]; $c++; } if ($servicesresult[0]['file_server'] == 1) { $server['file_server'][$d]['server_id'] = $result[0]['server_id']; $server['file_server'][$d]['hostname'] = $servernames[$i]; $d++; } if ($servicesresult[0]['db_server'] == 1) { $server['db_server'][$e]['server_id'] = $result[0]['server_id']; $server['db_server'][$e]['hostname'] = $servernames[$i]; $e++; } ++$i; ++$j; } unset($a); unset($b); unset($c); unset($d); unset($e); logModuleCall('ispconfig', 'CreateClient', $servicesresult, $server, '', ''); if (count($server['mail_server']) == 1) { $defaultmailserver = $server['mail_server'][0]['server_id']; } else { $rnd = rand(0, count($server['mail_server']) - 1); $defaultmailserver = $server['mail_server'][$rnd]['server_id']; } if (count($server['web_server']) == 1) { $defaultwebserver = $server['web_server'][0]['server_id']; } else { $a = 1; $b = 0; while ($a <= count($server['web_server'])) { $result = array(); $result = $client->sites_web_domain_get($session_id, array('server_id' => $server['web_server'][$b]['server_id'], 'type' => 'vhost')); if (!isset($webservercnt)) { $webservercnt = count(array_keys($result)); } if ($webservercnt > count(array_keys($result)) or !isset($defaultwebserver)) { $webservercnt = count(array_keys($result)); $defaultwebserver = $server['web_server'][$b]['server_id']; } $a++; $b++; } unset($a); unset($b); } if (count($server['db_server']) == 1) { $defaultdbserver = $server['db_server'][0]['server_id']; } else { $rnd = rand(0, count($server['db_server']) - 1); $defaultdbserver = $server['db_server'][$rnd]['server_id']; } if (count($server['dns_server']) == 1) { $defaultdnsserver = $server['dns_server'][0]['server_id']; } else { $rnd = rand(0, count($server['dns_server']) - 1); $defaultdnsserver = $server['dns_server'][$rnd]['server_id']; } if (count($server['file_server']) == 1) { $defaultfileserver = $server['file_server'][0]['server_id']; } else { $rnd = rand(0, count($server['file_server']) - 1); $defaultfileserver = $server['file_server'][$rnd]['server_id']; } logModuleCall('ispconfig', 'CreateClient', $server, $server, '', ''); $ispcparams = array('company_name' => $companyname, 'contact_name' => $fullname, 'customer_no' => $accountid, 'username' => $username, 'password' => $password, 'language' => $defaultlanguage, 'usertheme' => $designtheme, 'street' => $address, 'zip' => $zip, 'city' => $city, 'state' => $state, 'country' => $country, 'telephone' => $phonenumber, 'mobile' => '', 'fax' => '', 'email' => $mail, 'template_master' => $templateid, 'web_php_options' => $globalphp, 'ssh_chroot' => $chrootenable, 'default_mailserver' => $defaultmailserver, 'default_webserver' => $defaultwebserver, 'default_dbserver' => $defaultdbserver, 'default_dnsserver' => $defaultdnsserver, 'locked' => '0', 'created_at' => date('Y-m-d')); $reseller_id = 0; $client_id = $client->client_add($session_id, $reseller_id, $ispcparams); logModuleCall('ispconfig', 'CreateClient', $client_id, $ispcparams, '', ''); if ($domaintool == 'on') { $ispcparams = array('domain' => $domain); $domain_id = $client->domains_domain_add($session_id, $client_id, $ispcparams); logModuleCall('ispconfig', 'CreateDomainAdd', $domain_id, $ispcparams, '', ''); } if ($dns == 'on') { $dns_id = $client->dns_templatezone_add($session_id, $client_id, $dnstemplate, $domain, $zoneip, $nameserver1, $nameserver2, $soaemail); logModuleCall('ispconfig', 'CreateDNSZone', $domain, 'DNS Template ' . $dnstemplate, '', ''); } if ($webcreation == 'on') { $ispcparams = array('server_id' => $defaultwebserver, 'ip_address' => '*', 'domain' => $domain, 'type' => 'vhost', 'parent_domain_id' => '0', 'vhost_type' => 'name', 'hd_quota' => $webquota, 'traffic_quota' => $webtraffic, 'cgi' => $enablecgi, 'ssi' => $enablessi, 'perl' => $enableperl, 'ruby' => $enableruby, 'python' => $enablepython, 'suexec' => $enablesuexec, 'errordocs' => $enableerrdocs, 'is_subdomainwww' => 1, 'subdomain' => $subdomain, 'php' => $phpmode, 'ruby' => $enableruby, 'redirect_type' => '', 'redirect_path' => '', 'ssl' => $enablessl, 'ssl_state' => '', 'ssl_locality' => '', 'ssl_organisation' => '', 'ssl_organisation_unit' => '', 'ssl_country' => '', 'ssl_domain' => '', 'ssl_request' => '', 'ssl_key' => '', 'ssl_cert' => '', 'ssl_bundle' => '', 'ssl_action' => '', 'stats_password' => $password, 'stats_type' => 'awstats', 'allow_override' => 'All', 'php_open_basedir' => '/', 'php_fpm_use_socket' => 'y', 'pm' => 'dynamic', 'pm_max_children' => '10', 'pm_start_servers' => '2', 'pm_min_spare_servers' => '1', 'pm_max_spare_servers' => '5', 'pm_process_idle_timeout' => '10', 'pm_max_requests' => '0', 'custom_php_ini' => '', 'backup_interval' => '', 'backup_copies' => 1, 'active' => $webactive, 'traffic_quota_lock' => 'n', 'added_date' => date("Y-m-d"), 'added_by' => $soapuser); if ($webwriteprotect == 'on') { $readonly = true; } else { $readonly = false; } $website_id = $client->sites_web_domain_add($session_id, $client_id, $ispcparams, $readonly); logModuleCall('ispconfig', 'CreateWebDomain', $website_id, $ispcparams, '', ''); if ($addftpuser == 'on') { $domain_arr = $client->sites_web_domain_get($session_id, $website_id); $ispcparams = array('server_id' => $defaultwebserver, 'parent_domain_id' => $website_id, 'username' => $username, 'password' => $password, 'quota_size' => $webquota, 'active' => 'y', 'uid' => $domain_arr['system_user'], 'gid' => $domain_arr['system_group'], 'dir' => $domain_arr['document_root'] . '/private', 'quota_files' => -1, 'ul_ratio' => -1, 'dl_ratio' => -1, 'ul_bandwidth' => -1, 'dl_bandwidth' => -1); $ftp_id = $client->sites_ftp_user_add($session_id, $client_id, $ispcparams); logModuleCall('ispconfig', 'CreateFtpUser', $ftp_id, $ispcparams, '', ''); } // Add A Record and CNAME Records for website to dns. if ($dns == 'on') { $zone_id = $client->dns_zone_get_by_user($session_id, $client_id, $defaultdnsserver); $dns_svr = $client->dns_zone_get($session_id, $zone_id[0]['id']); $a_svr = $client->server_get_all($session_id); // Loop through the array till we find the mail server name while ($arec == '') { $poparr = array_pop($a_svr); if ($poparr['server_id'] == $defaultwebserver) { $arec = $poparr['server_name']; } } $sql = 'SELECT ipaddress FROM tblservers ' . 'WHERE hostname = "' . $arec . '"'; $db_result = mysql_query($sql); $a_ip = mysql_fetch_array($db_result); logModuleCall('ispconfig', 'CreateDNSA', $zone_mx, $a_ip, '', ''); $params = array('server_id' => $dns_svr['server_id'], 'zone' => $zone_id[0]['id'], 'name' => $domain . '.', 'type' => 'A', 'data' => $a_ip['ipaddress'], 'aux' => '0', 'ttl' => '3600', 'active' => 'y', 'stamp' => date('Y-m-d H:i:s'), 'serial' => ''); $zone_mx = $client->dns_a_add($session_id, $client_id, $params); logModuleCall('ispconfig', 'CreateDNSA', $zone_mx, $params, '', ''); // Add cname record $params = array('server_id' => $dns_svr['server_id'], 'zone' => $zone_id[0]['id'], 'name' => 'www', 'type' => 'CNAME', 'data' => $domain . '.', 'aux' => '0', 'ttl' => '3600', 'active' => 'y', 'stamp' => date('Y-m-d H:i:s'), 'serial' => ''); $zone_mx = $client->dns_cname_add($session_id, $client_id, $params); logModuleCall('ispconfig', 'CreateDNSCNAME', $zone_mx, $params, '', ''); } } if ($addmaildomain == 'on') { $ispcparams = array('server_id' => $defaultmailserver, 'domain' => $domain, 'active' => 'y'); $maildomain_id = $client->mail_domain_add($session_id, $client_id, $ispcparams); logModuleCall('ispconfig', 'CreateMailDomain', $maildomain_id, $ispcparams, '', ''); // Add MX Record to dns. if ($dns == 'on') { $zone_id = $client->dns_zone_get_by_user($session_id, $client_id, $defaultdnsserver); $dns_svr = $client->dns_zone_get($session_id, $zone_id[0]['id']); $mx_svr = $client->server_get_all($session_id); // Loop through the array till we find the mail server name while ($mx == '') { $poparr = array_pop($mx_svr); if ($poparr['server_id'] == $defaultmailserver) { $mx = $poparr['server_name']; } } $params = array('server_id' => $dns_svr['server_id'], 'zone' => $zone_id[0]['id'], 'name' => $domain . '.', 'type' => 'mx', 'data' => $mx . '.', 'aux' => '0', 'ttl' => '3600', 'active' => 'y', 'stamp' => date('Y-m-d H:i:s'), 'serial' => ''); $zone_mx = $client->dns_mx_add($session_id, $client_id, $params); logModuleCall('ispconfig', 'CreateDNSMX', $zone_mx, $params, '', ''); } } if ($client->logout($session_id)) { } $successful = 1; } catch (SoapFault $e) { $error = 'SOAP Error: ' . $e->getMessage(); $successful = 0; logModuleCall('ispconfig', 'Create Failed', $e->getMessage(), $params, '', ''); } if ($successful == 1) { $result = "success"; } else { $result = $error; } } else { /* * No username or password set. */ $result = 'Username or Password is Blank or Not Set'; } return $result; }
<?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 = 1; $params = array('server_id' => 1, 'domain' => 'test.tld', 'active' => 'y'); $domain_id = $client->mail_domain_add($session_id, $client_id, $params); echo "Domain ID: " . $domain_id . "<br>"; if ($client->logout($session_id)) { echo 'Logged out.<br />'; } } catch (SoapFault $e) { echo $client->__getLastResponse(); die('SOAP Error: ' . $e->getMessage()); }
* atributes default user the first one created, but does not show in options - user is now created first and added to params * * */ //* Set the function parameters. $paramsDBAdd = array('server_id' => 1, 'type' => 'mysql', 'parent_domain_id' => $newDomainID, 'database_name' => $newDb, 'database_user_id' => $newDBUserID, 'database_ro_user_id' => '0', 'database_charset' => 'UTF8', 'remote_access' => 'n', 'remote_ips' => '', 'backup_interval' => 'none', 'backup_copies' => 1, 'active' => 'y'); $newDBID = $client->sites_database_add($session_id, $client_id, $paramsDBAdd); echo "Database ID: " . $newDBID . "<br>"; //*/ /* mail_domain_add * * db : dbispconfig -> mail_domain * * */ //* Set the function parameters. $paramsMailDomainAdd = array('server_id' => 1, 'domain' => $newDomain, 'active' => 'y'); $newMailDomainID = $client->mail_domain_add($session_id, $client_id, $paramsMailDomainAdd); echo "Mail Domain ID: " . $newMailDomainID . "<br>"; //*/ /* mail_user_add * * db : dbispconfig -> mail_user * * */ //* Set the function parameters. $paramsMailUserAdd = array('server_id' => 1, 'email' => 'info' . '@' . $newDomain, 'login' => 'info' . '@' . $newDomain, 'password' => $password_email, 'name' => 'info', 'uid' => 5000, 'gid' => 5000, 'maildir' => '/var/vmail/' . $newDomain . '/' . 'info', 'quota' => $quota_mail, 'cc' => '', 'homedir' => '/var/vmail', 'autoresponder' => 'n', 'autoresponder_start_date' => '0000-00-00 00:00:00', 'autoresponder_end_date' => '0000-00-00 00:00:00', 'move_junk' => 'n', 'postfix' => 'y', 'access' => 'y', 'disableimap' => 'n', 'disablepop3' => 'n', 'disabledeliver' => 'n', 'disablesmtp' => 'n'); $newMailUserID = $client->mail_user_add($session_id, $client_id, $paramsMailUserAdd); echo "New user: "******"<br>"; //*/ /* logging out */ if ($client->logout($session_id)) { echo 'Logged out.<br />';