Kollissionsprüfung auf Aliases erweitert
Bernd Wurst

Bernd Wurst commited on 2013-03-19 06:18:44
Zeige 1 geänderte Dateien mit 24 Einfügungen und 5 Löschungen.

... ...
@@ -252,6 +252,29 @@ function make_webapp_vhost($id, $webapp)
252 252
 }
253 253
 
254 254
 
255
+function check_hostname_collision($hostname, $domain) 
256
+{
257
+  # Neuer vhost => Prüfe Duplikat
258
+  $hostnamecheck = "hostname='".mysql_real_escape_string($hostname)."'";
259
+  if (! $hostname) {
260
+    $hostnamecheck = "hostname IS NULL";
261
+  }
262
+  $domaincheck = "domain=". (int) $domain ;
263
+  if ($domain == -1) {
264
+    $domaincheck = "domain IS NULL";
265
+  }
266
+  $result = db_query("SELECT id FROM vhosts.vhost WHERE {$hostnamecheck} AND {$domaincheck}");
267
+  if (mysql_num_rows($result) > 0) {
268
+    system_failure('Eine Konfiguration mit diesem Namen gibt es bereits.');
269
+  }
270
+  $result = db_query("SELECT id, vhost FROM vhosts.alias WHERE {$hostnamecheck} AND {$domaincheck}");
271
+  if (mysql_num_rows($result) > 0) {
272
+    $data = mysql_fetch_assoc($result);
273
+    $vh = get_vhost_details($data['vhost']);
274
+    system_failure('Dieser Hostname ist bereits als Alias für »'.$vh['fqdn'].'« eingerichtet');
275
+  }
276
+}
277
+
255 278
 function save_vhost($vhost)
256 279
 {
257 280
   if (! is_array($vhost))
... ...
@@ -264,11 +287,7 @@ function save_vhost($vhost)
264 287
   if ($vhost['domain_id'] == -1)
265 288
     $domain = 'NULL';
266 289
   if ($id == 0) {
267
-    # Neuer vhost
268
-    $result = db_query("SELECT id FROM vhosts.v_vhost WHERE hostname={$hostname} AND domain_id={$domain}");
269
-    if (mysql_num_rows($result) > 0) {
270
-      system_failure('Eine Konfiguration mit diesem Namen gibt es bereits.');
271
-    }
290
+    check_hostname_collision($vhost['hostname'], $vhost['domain_id']);
272 291
   }
273 292
   $docroot = maybe_null($vhost['docroot']);
274 293
   $php = maybe_null($vhost['php']);
275 294