Skip to content

Commit f43ef97

Browse files
committed
- Make sure ISPConfig shows the correct error message (instad of an SQL error) when a website is renamed after an alias domain that still exists.
- It should be possible to create two websites with the same domain on the same server as long as the IP differs. I therefore changed the serverdomain index of the web_domain table to include the IP address.
1 parent efbb88f commit f43ef97

File tree

3 files changed

+5
-3
lines changed

3 files changed

+5
-3
lines changed
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
ALTER TABLE `web_domain` DROP INDEX `serverdomain`, ADD UNIQUE `serverdomain` ( `server_id` , `ip_address`, `domain` );

install/sql/ispconfig3.sql

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1879,7 +1879,7 @@ CREATE TABLE `web_domain` (
18791879
`added_date` date NOT NULL DEFAULT '0000-00-00',
18801880
`added_by` varchar(255) DEFAULT NULL,
18811881
PRIMARY KEY (`domain_id`),
1882-
UNIQUE KEY `serverdomain` ( `server_id` , `domain` )
1882+
UNIQUE KEY `serverdomain` ( `server_id` , `ip_address`, `domain` )
18831883
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
18841884

18851885
-- --------------------------------------------------------

interface/lib/classes/validate_domain.inc.php

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,8 @@ function _check_unique($domain_name, $only_domain = false) {
137137
//if($check['cnt'] > 0) return false;
138138

139139
// we can have the same domain on different servers or different IPs, so we have to check for identical domains on the same IP (or wildcard IPs)
140-
$checks = $app->db->queryAllRecords("SELECT * FROM `web_domain` WHERE (`domain` = '" . $app->db->quote($domain_name) . "'".$additional_sql1.") AND `server_id` = ".intval($domain['server_id'])." AND `domain_id` != " . $app->functions->intval($primary_id).($additional_sql1 != '' ? " AND `parent_domain_id` != ".$app->functions->intval($primary_id) : ""));
140+
$checks = $app->db->queryAllRecords("SELECT * FROM `web_domain` WHERE (`domain` = '" . $app->db->quote($domain_name) . "'".$additional_sql1.") AND `server_id` = ".intval($domain['server_id'])." AND `domain_id` != " . $app->functions->intval($primary_id).($additional_sql1 != '' && $domain['parent_domain_id'] > 0 ? " AND `parent_domain_id` != ".$app->functions->intval($primary_id) : ""));
141+
141142

142143
if(is_array($checks) && !empty($checks)){
143144
foreach($checks as $check){
@@ -207,7 +208,7 @@ function _check_unique($domain_name, $only_domain = false) {
207208
//$check = $app->db->queryOneRecord("SELECT COUNT(*) as `cnt` FROM `web_domain` WHERE CONCAT(`subdomain`, '.', `domain`) = '" . $app->db->quote($domain_name) . "' AND `domain_id` != " . $app->functions->intval($primary_id));
208209
//if($check['cnt'] > 0) return false;
209210
// we can have the same domain on different servers or different IPs, so we have to check for identical domains on the same IP (or wildcard IPs)
210-
$checks = $app->db->queryAllRecords("SELECT * FROM `web_domain` WHERE (CONCAT(`subdomain`, '.', `domain`) = '" . $app->db->quote($domain_name) . "'".$additional_sql2.") AND `server_id` = ".intval($domain['server_id'])." AND `domain_id` != " . $app->functions->intval($primary_id).($additional_sql2 != '' ? " AND `parent_domain_id` != ".$app->functions->intval($primary_id) : ""));
211+
$checks = $app->db->queryAllRecords("SELECT * FROM `web_domain` WHERE (CONCAT(`subdomain`, '.', `domain`) = '" . $app->db->quote($domain_name) . "'".$additional_sql2.") AND `server_id` = ".intval($domain['server_id'])." AND `domain_id` != " . $app->functions->intval($primary_id).($additional_sql2 != '' && $domain['parent_domain_id'] > 0 ? " AND `parent_domain_id` != ".$app->functions->intval($primary_id) : ""));
211212
if(is_array($checks) && !empty($checks)){
212213
foreach($checks as $check){
213214
if($domain['ip_address'] == '*') return false;

0 commit comments

Comments
 (0)