From b31bb1f27f066a2d49f5ab9ee0ca15e985efc788 Mon Sep 17 00:00:00 2001 From: tbrehm Date: Mon, 26 Sep 2011 10:50:23 +0000 Subject: [PATCH] Fixed: FS#1619 - Add apache SNI / SAN support for SSL. --- interface/web/sites/lib/lang/en_web_domain.lng | 1 + interface/web/sites/web_domain_edit.php | 16 ++++++++++++---- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/interface/web/sites/lib/lang/en_web_domain.lng b/interface/web/sites/lib/lang/en_web_domain.lng index 40e1fad27..a49665586 100644 --- a/interface/web/sites/lib/lang/en_web_domain.lng +++ b/interface/web/sites/lib/lang/en_web_domain.lng @@ -78,4 +78,5 @@ $wb["seo_redirect_txt"] = 'SEO Redirect'; $wb["non_www_to_www_txt"] = 'Non-www -> www'; $wb["www_to_non_www_txt"] = 'www -> non-www'; $wb["php_fpm_use_socket_txt"] = 'Use Socket For PHP-FPM'; +$wb["error_no_sni_txt"] = 'SNI for SSL is not activated on this server. You can enable only one SSL certificate on each IP address.'; ?> \ No newline at end of file diff --git a/interface/web/sites/web_domain_edit.php b/interface/web/sites/web_domain_edit.php index ee865c59b..13af0a182 100644 --- a/interface/web/sites/web_domain_edit.php +++ b/interface/web/sites/web_domain_edit.php @@ -397,10 +397,9 @@ class page_action extends tform_actions { unset($tmp); // When the record is inserted } else { - // set the server ID to the default mailserver of the client + //* set the server ID to the default webserver of the client $this->dataRecord["server_id"] = $client["default_webserver"]; - // Check if the user may add another web_domain if($client["limit_web_domain"] >= 0) { $tmp = $app->db->queryOneRecord("SELECT count(domain_id) as number FROM web_domain WHERE sys_groupid = $client_group_id and type = 'vhost'"); @@ -410,7 +409,6 @@ class page_action extends tform_actions { } } - // Clients may not set the client_group_id, so we unset them if user is not a admin and the client is not a reseller if(!$app->auth->has_clients($_SESSION['s']['user']['userid'])) unset($this->dataRecord["client_group_id"]); @@ -418,7 +416,17 @@ class page_action extends tform_actions { //* make sure that the email domain is lowercase if(isset($this->dataRecord["domain"])) $this->dataRecord["domain"] = strtolower($this->dataRecord["domain"]); - + + //* get the server config for this server + $app->uses("getconf"); + $web_config = $app->getconf->get_server_config(intval($this->dataRecord["server_id"]),'web'); + //* Check for duplicate ssl certs per IP if SNI is disabled + if(isset($this->dataRecord['ssl']) && $this->dataRecord['ssl'] == 'y' && $web_config['enable_sni'] != 'y') { + $sql = "SELECT count(domain_id) as number FROM web_domain WHERE `ssl` = 'y' AND ip_address = '".$app->db->quote($this->dataRecord['ip_address'])."' and domain_id != ".$this->id; + $tmp = $app->db->queryOneRecord($sql); + if($tmp['number'] > 0) $app->tform->errorMessage .= $app->tform->lng("error_no_sni_txt"); + } + parent::onSubmit(); } -- GitLab