Dominik
2014-01-23 6250b7ea002fd99e40d0170d31e7e19e69f97ccd
interface/web/sites/web_domain_edit.php
@@ -76,9 +76,11 @@
         }
         // Get the limits of the client
         $client_group_id = $app->functions->intval($_SESSION["s"]["user"]["default_group"]);
         $client = $app->db->queryOneRecord("SELECT client.default_webserver FROM sys_group, client WHERE sys_group.client_id = client.client_id and sys_group.groupid = $client_group_id");
         $app->tpl->setVar("server_id_value", $client['default_webserver']);
         $client_group_id = $_SESSION["s"]["user"]["default_group"];
         $client = $app->db->queryOneRecord("SELECT client.web_servers FROM sys_group, client WHERE sys_group.client_id = client.client_id and sys_group.groupid = $client_group_id");
         $web_servers = explode(',', $client['web_servers']);
         $app->tpl->setVar("server_id_value", $web_servers[0]);
         unset($web_servers);
      }
      $app->tform->formDef['tabs']['domain']['readonly'] = false;
@@ -96,21 +98,56 @@
      if($_SESSION["s"]["user"]["typ"] != 'admin' && !$app->auth->has_clients($_SESSION['s']['user']['userid'])) {
         // Get the limits of the client
         $client_group_id = $app->functions->intval($_SESSION["s"]["user"]["default_group"]);
         $client = $app->db->queryOneRecord("SELECT client.limit_web_domain, client.default_webserver, client." . implode(", client.", $read_limits) . " FROM sys_group, client WHERE sys_group.client_id = client.client_id and sys_group.groupid = $client_group_id");
         $client_group_id = $_SESSION["s"]["user"]["default_group"];
         $client = $app->db->queryOneRecord("SELECT client.limit_web_domain, client.web_servers, client." . implode(", client.", $read_limits) . " FROM sys_group, client WHERE sys_group.client_id = client.client_id and sys_group.groupid = $client_group_id");
         $client['web_servers_ids'] = explode(',', $client['web_servers']);
         $only_one_server = count($client['web_servers_ids']) === 1;
         $app->tpl->setVar('only_one_server', $only_one_server);
         //* Get global web config
         $web_config = $app->getconf->get_server_config($client['default_webserver'], 'web');
         foreach ($client['web_servers_ids'] as $web_server_id) {
            $web_config[$web_server_id] = $app->getconf->get_server_config($web_server_id, 'web');
         }
         // Set the webserver to the default server of the client
         $tmp = $app->db->queryOneRecord("SELECT server_name FROM server WHERE server_id = ".intval($client['default_webserver']));
         $app->tpl->setVar("server_id", "<option value='$client[default_webserver]'>$tmp[server_name]</option>");
         unset($tmp);
         $sql = "SELECT server_id, server_name FROM server WHERE server_id IN (" . $client['web_servers'] . ");";
         $web_servers = $app->db->queryAllRecords($sql);
         $options_web_servers = "";
         foreach ($web_servers as $web_server) {
            $options_web_servers .= "<option value='$web_server[server_id]'>$web_server[server_name]</option>";
         }
         $app->tpl->setVar("server_id", $options_web_servers);
         unset($options_web_servers);
         if($this->id > 0) {
            if(!isset($this->dataRecord["server_id"])){
               $tmp = $app->db->queryOneRecord("SELECT server_id FROM web_domain WHERE domain_id = ".$app->functions->intval($this->id));
               $this->dataRecord["server_id"] = $tmp["server_id"];
               unset($tmp);
            }
            $server_id = intval(@$this->dataRecord["server_id"]);
         } else {
            $server_id = (isset($web_servers[0])) ? intval($web_servers[0]) : 0;
         }
         if($app->functions->intval($this->dataRecord["server_id"]) > 0) {
            // check if server is in client's servers or add it.
            $chk_sid = explode(',', $client['web_servers']);
            if(in_array($this->dataRecord["server_id"], $client['web_servers']) == false) {
               if($client['web_servers'] != '') $client['web_servers'] .= ',';
               $client['web_servers'] .= $app->functions->intval($this->dataRecord["server_id"]);
            }
         }
         //* Fill the IPv4 select field with the IP addresses that are allowed for this client
         $sql = "SELECT ip_address FROM server_ip WHERE server_id = ".$app->functions->intval($client['default_webserver'])." AND ip_type = 'IPv4' AND (client_id = 0 OR client_id=".$app->functions->intval($_SESSION['s']['user']['client_id']).")";
         $sql = "SELECT ip_address FROM server_ip WHERE server_id IN (" . $client['web_servers'] . ") AND ip_type = 'IPv4' AND (client_id = 0 OR client_id=".$_SESSION['s']['user']['client_id'].")";
         $ips = $app->db->queryAllRecords($sql);
         $ip_select = ($web_config['enable_ip_wildcard'] == 'y')?"<option value='*'>*</option>":"";
         //if(!in_array($this->dataRecord["ip_address"], $ips)) $ip_select .= "<option value='".$this->dataRecord["ip_address"]."' SELECTED>".$this->dataRecord["ip_address"]."</option>\r\n";
         //$ip_select = "";
         if(is_array($ips)) {
            foreach( $ips as $ip) {
@@ -123,7 +160,7 @@
         unset($ips);
         //* Fill the IPv6 select field with the IP addresses that are allowed for this client
         $sql = "SELECT ip_address FROM server_ip WHERE server_id = ".$app->functions->intval($client['default_webserver'])." AND ip_type = 'IPv6' AND (client_id = 0 OR client_id=".$app->functions->intval($_SESSION['s']['user']['client_id']).")";
         $sql = "SELECT ip_address FROM server_ip WHERE server_id IN (" . $client['web_servers'] . ") AND ip_type = 'IPv6' AND (client_id = 0 OR client_id=".$_SESSION['s']['user']['client_id'].")";
         $ips = $app->db->queryAllRecords($sql);
         $ip_select = "<option value=''></option>";
         //$ip_select = "";
@@ -174,12 +211,21 @@
         $client = $app->db->queryOneRecord("SELECT client.client_id, client.limit_web_domain, client.default_webserver, client.contact_name, CONCAT(IF(client.company_name != '', CONCAT(client.company_name, ' :: '), ''), client.contact_name, ' (', client.username, IF(client.customer_no != '', CONCAT(', ', client.customer_no), ''), ')') as contactname, sys_group.name, client." . implode(", client.", $read_limits) . " FROM sys_group, client WHERE sys_group.client_id = client.client_id and sys_group.groupid = $client_group_id");
         //* Get global web config
         $web_config = $app->getconf->get_server_config($client['default_webserver'], 'web');
         foreach ($client['web_servers_ids'] as $web_server_id) {
            $web_config[$web_server_id] = $app->getconf->get_server_config($web_server_id, 'web');
         }
         // Set the webserver to the default server of the client
         $tmp = $app->db->queryOneRecord("SELECT server_name FROM server WHERE server_id = ".$app->functions->intval($client['default_webserver']));
         $app->tpl->setVar("server_id", "<option value='$client[default_webserver]'>$tmp[server_name]</option>");
         unset($tmp);
         $sql = "SELECT server_id, server_name FROM server WHERE server_id IN (" . $client['web_servers'] . ");";
         $web_servers = $app->db->queryAllRecords($sql);
         $options_web_servers = "";
         foreach ($web_servers as $web_server) {
            $options_web_servers .= "<option value='$web_server[server_id]'>$web_server[server_name]</option>";
         }
         $app->tpl->setVar("server_id", $options_web_servers);
         unset($options_web_servers);
         // Fill the client select field
         $sql = "SELECT sys_group.groupid, sys_group.name, CONCAT(IF(client.company_name != '', CONCAT(client.company_name, ' :: '), ''), client.contact_name, ' (', client.username, IF(client.customer_no != '', CONCAT(', ', client.customer_no), ''), ')') as contactname FROM sys_group, client WHERE sys_group.client_id = client.client_id AND client.parent_client_id = ".$client['client_id']." ORDER BY sys_group.name";
@@ -198,10 +244,20 @@
         }
         $app->tpl->setVar("client_group_id", $client_select);
         if($app->functions->intval($this->dataRecord["server_id"]) > 0) {
            // check if server is in client's servers or add it.
            $chk_sid = explode(',', $client['web_servers']);
            if(in_array($this->dataRecord["server_id"], $client['web_servers']) == false) {
               if($client['web_servers'] != '') $client['web_servers'] .= ',';
               $client['web_servers'] .= $app->functions->intval($this->dataRecord["server_id"]);
            }
         }
         //* Fill the IPv4 select field with the IP addresses that are allowed for this client
         $sql = "SELECT ip_address FROM server_ip WHERE server_id = ".$app->functions->intval($client['default_webserver'])." AND ip_type = 'IPv4' AND (client_id = 0 OR client_id=".$app->functions->intval($_SESSION['s']['user']['client_id']).")";
         $sql = "SELECT ip_address FROM server_ip WHERE server_id IN (" . $client['web_servers'] . ") AND ip_type = 'IPv4' AND (client_id = 0 OR client_id=".$_SESSION['s']['user']['client_id'].")";
         $ips = $app->db->queryAllRecords($sql);
         $ip_select = ($web_config['enable_ip_wildcard'] == 'y')?"<option value='*'>*</option>":"";
         //if(!in_array($this->dataRecord["ip_address"], $ips)) $ip_select .= "<option value='".$this->dataRecord["ip_address"]."' SELECTED>".$this->dataRecord["ip_address"]."</option>\r\n";
         //$ip_select = "";
         if(is_array($ips)) {
            foreach( $ips as $ip) {
@@ -214,7 +270,7 @@
         unset($ips);
         //* Fill the IPv6 select field with the IP addresses that are allowed for this client
         $sql = "SELECT ip_address FROM server_ip WHERE server_id = ".$app->functions->intval($client['default_webserver'])." AND ip_type = 'IPv6' AND (client_id = 0 OR client_id=".$app->functions->intval($_SESSION['s']['user']['client_id']).")";
         $sql = "SELECT ip_address FROM server_ip WHERE server_id IN (" . $client['web_servers'] . ") AND ip_type = 'IPv6' AND (client_id = 0 OR client_id=".$_SESSION['s']['user']['client_id'].")";
         $ips = $app->db->queryAllRecords($sql);
         $ip_select = "<option value=''></option>";
         //$ip_select = "";
@@ -259,6 +315,53 @@
         // add limits to template to be able to hide settings
         foreach($read_limits as $limit) $app->tpl->setVar($limit, $client[$limit]);
         $sites_config = $app->getconf->get_global_config('sites');
         if($sites_config['reseller_can_use_options']) {
            // Directive Snippets
            $php_directive_snippets = $app->db->queryAllRecords("SELECT * FROM directive_snippets WHERE type = 'php' AND active = 'y'");
            $php_directive_snippets_txt = '';
            if(is_array($php_directive_snippets) && !empty($php_directive_snippets)){
               foreach($php_directive_snippets as $php_directive_snippet){
                  $php_directive_snippets_txt .= '<a href="javascript:void(0);" class="addPlaceholderContent">['.$php_directive_snippet['name'].']<pre class="addPlaceholderContent" style="display:none;">'.htmlentities($php_directive_snippet['snippet']).'</pre></a> ';
               }
            }
            if($php_directive_snippets_txt == '') $php_directive_snippets_txt = '------';
            $app->tpl->setVar("php_directive_snippets_txt", $php_directive_snippets_txt);
            if($server_type == 'apache'){
               $apache_directive_snippets = $app->db->queryAllRecords("SELECT * FROM directive_snippets WHERE type = 'apache' AND active = 'y'");
               $apache_directive_snippets_txt = '';
               if(is_array($apache_directive_snippets) && !empty($apache_directive_snippets)){
                  foreach($apache_directive_snippets as $apache_directive_snippet){
                     $apache_directive_snippets_txt .= '<a href="javascript:void(0);" class="addPlaceholderContent">['.$apache_directive_snippet['name'].']<pre class="addPlaceholderContent" style="display:none;">'.htmlentities($apache_directive_snippet['snippet']).'</pre></a> ';
                  }
               }
               if($apache_directive_snippets_txt == '') $apache_directive_snippets_txt = '------';
               $app->tpl->setVar("apache_directive_snippets_txt", $apache_directive_snippets_txt);
            }
            if($server_type == 'nginx'){
               $nginx_directive_snippets = $app->db->queryAllRecords("SELECT * FROM directive_snippets WHERE type = 'nginx' AND active = 'y'");
               $nginx_directive_snippets_txt = '';
               if(is_array($nginx_directive_snippets) && !empty($nginx_directive_snippets)){
                  foreach($nginx_directive_snippets as $nginx_directive_snippet){
                     $nginx_directive_snippets_txt .= '<a href="javascript:void(0);" class="addPlaceholderContent">['.$nginx_directive_snippet['name'].']<pre class="addPlaceholderContent" style="display:none;">'.htmlentities($nginx_directive_snippet['snippet']).'</pre></a> ';
                  }
               }
               if($nginx_directive_snippets_txt == '') $nginx_directive_snippets_txt = '------';
               $app->tpl->setVar("nginx_directive_snippets_txt", $nginx_directive_snippets_txt);
            }
            $proxy_directive_snippets = $app->db->queryAllRecords("SELECT * FROM directive_snippets WHERE type = 'proxy' AND active = 'y'");
            $proxy_directive_snippets_txt = '';
            if(is_array($proxy_directive_snippets) && !empty($proxy_directive_snippets)){
               foreach($proxy_directive_snippets as $proxy_directive_snippet){
                  $proxy_directive_snippets_txt .= '<a href="javascript:void(0);" class="addPlaceholderContent">['.$proxy_directive_snippet['name'].']<pre class="addPlaceholderContent" style="display:none;">'.htmlentities($proxy_directive_snippet['snippet']).'</pre></a> ';
               }
            }
            if($proxy_directive_snippets_txt == '') $proxy_directive_snippets_txt = '------';
            $app->tpl->setVar("proxy_directive_snippets_txt", $proxy_directive_snippets_txt);
         }
         //* Admin: If the logged in user is admin
      } else {
@@ -513,8 +616,10 @@
      if($_SESSION["s"]["user"]["typ"] != 'admin') {
         // Get the limits of the client
         $client_group_id = $app->functions->intval($_SESSION["s"]["user"]["default_group"]);
         $client = $app->db->queryOneRecord("SELECT limit_traffic_quota, limit_web_domain, default_webserver, parent_client_id, limit_web_quota, client." . implode(", client.", $read_limits) . " FROM sys_group, client WHERE sys_group.client_id = client.client_id and sys_group.groupid = $client_group_id");
         $client_group_id = $_SESSION["s"]["user"]["default_group"];
         $client = $app->db->queryOneRecord("SELECT limit_traffic_quota, limit_web_domain, web_servers, parent_client_id, limit_web_quota, client." . implode(", client.", $read_limits) . " FROM sys_group, client WHERE sys_group.client_id = client.client_id and sys_group.groupid = $client_group_id");
         $client['web_servers_ids'] = explode(',', $client['web_servers']);
         if($client['limit_cgi'] != 'y') $this->dataRecord['cgi'] = '-';
         if($client['limit_ssi'] != 'y') $this->dataRecord['ssi'] = '-';
@@ -529,8 +634,8 @@
         // only generate quota and traffic warnings if value has changed
         if($this->id > 0) {
            $old_web_values = $app->db->queryOneRecord("SELECT * FROM web_domain WHERE domain_id = ".$app->functions->intval($this->id));
         } else {
            $old_web_values = $_POST;
         }  else {
            $old_web_values = array();
         }
         //* Check the website quota of the client
@@ -567,7 +672,7 @@
         if($client['parent_client_id'] > 0) {
            // Get the limits of the reseller
            $reseller = $app->db->queryOneRecord("SELECT limit_traffic_quota, limit_web_domain, default_webserver, limit_web_quota FROM client WHERE client_id = ".$app->functions->intval($client['parent_client_id']));
            $reseller = $app->db->queryOneRecord("SELECT limit_traffic_quota, limit_web_domain, web_servers, limit_web_quota FROM client WHERE client_id = ".$client['parent_client_id']);
            //* Check the website quota of the client
            if(isset($_POST["hd_quota"]) && $reseller["limit_web_quota"] >= 0 && $_POST["hd_quota"] != $old_web_values["hd_quota"]) {
@@ -622,8 +727,10 @@
            unset($tmp);
            // When the record is inserted
         } else {
            //* set the server ID to the default webserver of the client
            $this->dataRecord["server_id"] = $client["default_webserver"];
            //* display an error if chosen server is not allowed for this client
            if (!is_array($client['web_servers_ids']) || !in_array($this->dataRecord['server_id'], $client['web_servers_ids'])) {
               $app->error($app->tform->wordbook['server_chosen_not_ok']);
            }
            // Check if the user may add another web_domain
            if($client["limit_web_domain"] >= 0) {
@@ -905,7 +1012,7 @@
         $records = $app->db->queryAllRecords("SELECT domain_id, `domain`, `type`, `web_folder` FROM web_domain WHERE parent_domain_id = ".$this->id);
         foreach($records as $rec) {
            $update_columns = "sys_userid = '".$web_rec['sys_userid']."', sys_groupid = '".$web_rec['sys_groupid']."'";
            if($rec['type'] == 'vhostsubdomain') {
            if($rec['type'] == 'vhostsubdomain' || $rec['type'] == 'vhostalias') {
               $php_open_basedir = str_replace("[website_path]/web", $document_root.'/'.$rec['web_folder'], $web_config["php_open_basedir"]);
               $php_open_basedir = str_replace("[website_domain]/web", $rec['domain'].'/'.$rec['web_folder'], $php_open_basedir);
               $php_open_basedir = str_replace("[website_path]", $document_root, $php_open_basedir);
@@ -930,7 +1037,7 @@
      //* If the domain name has been changed, we will have to change all subdomains + APS instances
      if(!empty($this->dataRecord["domain"]) && !empty($this->oldDataRecord["domain"]) && $this->dataRecord["domain"] != $this->oldDataRecord["domain"]) {
         $records = $app->db->queryAllRecords("SELECT domain_id,domain FROM web_domain WHERE (type = 'subdomain' OR type = 'vhostsubdomain') AND domain LIKE '%.".$app->db->quote($this->oldDataRecord["domain"])."'");
         $records = $app->db->queryAllRecords("SELECT domain_id,domain FROM web_domain WHERE (type = 'subdomain' OR type = 'vhostsubdomain' OR type = 'vhostalias') AND domain LIKE '%.".$app->db->quote($this->oldDataRecord["domain"])."'");
         foreach($records as $rec) {
            $subdomain = $app->db->quote(str_replace($this->oldDataRecord["domain"], $this->dataRecord["domain"], $rec['domain']));
            $app->db->datalogUpdate('web_domain', "domain = '".$subdomain."'", 'domain_id', $rec['domain_id']);
@@ -990,9 +1097,9 @@
         unset($backup_interval);
      }
      //* Change vhost subdomain ip/ipv6 if domain ip/ipv6 has changed
      //* Change vhost subdomain and alias ip/ipv6 if domain ip/ipv6 has changed
      if(isset($this->dataRecord['ip_address']) && ($this->dataRecord['ip_address'] != $this->oldDataRecord['ip_address'] || $this->dataRecord['ipv6_address'] != $this->oldDataRecord['ipv6_address'])) {
         $records = $app->db->queryAllRecords("SELECT domain_id FROM web_domain WHERE type = 'vhostsubdomain' AND parent_domain_id = ".$this->id);
         $records = $app->db->queryAllRecords("SELECT domain_id FROM web_domain WHERE (type = 'vhostsubdomain' OR type = 'vhostalias') AND parent_domain_id = ".$this->id);
         foreach($records as $rec) {
            $app->db->datalogUpdate('web_domain', "ip_address = '".$app->db->quote($web_rec['ip_address'])."', ipv6_address = '".$app->db->quote($web_rec['ipv6_address'])."'", 'domain_id', $rec['domain_id']);
         }