Bernd Wurst commited on 2015-02-18 17:05:57
Zeige 3 geänderte Dateien mit 49 Einfügungen und 21 Löschungen.
... | ... |
@@ -130,6 +130,19 @@ function userdomain() { |
130 | 130 |
return $res; |
131 | 131 |
} |
132 | 132 |
|
133 |
+function user_uses_userdomain() |
|
134 |
+{ |
|
135 |
+ global $config; |
|
136 |
+ $uid = (int) $_SESSION['userinfo']['uid']; |
|
137 |
+ $userdomain = userdomain(); |
|
138 |
+ $result = db_query("SELECT id FROM vhosts.vhost WHERE domain=:domid AND user=:uid", array(":uid" => $uid, ":domid" => $userdomain['id'])); |
|
139 |
+ if ($result->rowCount() > 0) { |
|
140 |
+ DEBUG("User hat ".$result->rowCount()." Domains *.schokokeks.net"); |
|
141 |
+ return True; |
|
142 |
+ } |
|
143 |
+ DEBUG("User hat keine Domains *.schokokeks.net"); |
|
144 |
+ return false; |
|
145 |
+} |
|
133 | 146 |
|
134 | 147 |
function domainselect($selected = NULL, $selectattribute = '') |
135 | 148 |
{ |
... | ... |
@@ -150,20 +163,24 @@ function domainselect($selected = NULL, $selectattribute = '') |
150 | 163 |
} |
151 | 164 |
$ret .= "<option value=\"{$dom->id}\"{$s}>{$dom->fqdn}</option>\n"; |
152 | 165 |
} |
153 |
- if (count($domainlist) > 0) { |
|
166 |
+ $userdomain = userdomain(); |
|
167 |
+ $user_needs_userdomain = $userdomain && (count($domainlist) == 0 || user_uses_userdomain()); |
|
168 |
+ $user_needs_userdomain = $user_needs_userdomain || ($selected == -2); |
|
169 |
+ if (count($domainlist) > 0 && $user_needs_userdomain) { |
|
154 | 170 |
$ret .= ' <option value="" disabled="disabled">--------------------------------</option>'; |
155 | 171 |
} |
156 |
- $userdomain = userdomain(); |
|
157 |
- if ($userdomain) { |
|
172 |
+ if ($userdomain && (count($domainlist) == 0 || user_uses_userdomain())) { |
|
158 | 173 |
$s = ($selected == -1 ? ' selected="selected"' : ''); |
159 | 174 |
$ret .= ' <option value="-1"'.$s.'>'.$_SESSION['userinfo']['username'].'.'.$userdomain['name'].'</option>'; |
160 | 175 |
} |
176 |
+ if ($selected == -2) { |
|
161 | 177 |
$s = ($selected == -2 ? ' selected="selected"' : ''); |
162 |
- $ret .= ' <option value="-2"'.$s.'>'.$_SESSION['userinfo']['username'].'.'.config('masterdomain').'</option>'; |
|
163 |
- $ret .= '</select>'; |
|
178 |
+ $ret .= ' <option value="-2"'.$s.'>'.$_SESSION['userinfo']['username'].'.'.config('masterdomain').' (Bitte nicht mehr benutzen!)</option>'; |
|
164 | 179 |
if ($selected > 0 and ! $found) { |
165 | 180 |
system_failure("Hier wird eine Domain benutzt, die nicht zu diesem Benutzeraccount gehört. Bearbeiten würde Daten zerstören!"); |
166 | 181 |
} |
182 |
+ } |
|
183 |
+ $ret .= '</select>'; |
|
167 | 184 |
return $ret; |
168 | 185 |
} |
169 | 186 |
|
... | ... |
@@ -171,6 +188,7 @@ function domainselect($selected = NULL, $selectattribute = '') |
171 | 188 |
|
172 | 189 |
function get_vhost_details($id) |
173 | 190 |
{ |
191 |
+ DEBUG("Lese #{$id}..."); |
|
174 | 192 |
$id = (int) $id; |
175 | 193 |
$uid = (int) $_SESSION['userinfo']['uid']; |
176 | 194 |
$result = db_query("SELECT vh.*,IF(dav.id IS NULL OR dav.type='svn', 0, 1) AS is_dav,IF(dav.id IS NULL OR dav.type='dav', 0, 1) AS is_svn, IF(webapps.id IS NULL, 0, 1) AS is_webapp FROM vhosts.v_vhost AS vh LEFT JOIN vhosts.dav ON (dav.vhost=vh.id) LEFT JOIN vhosts.webapps ON (webapps.vhost = vh.id) WHERE uid=:uid AND vh.id=:id", array(":uid" => $uid, ":id" => $id)); |
... | ... |
@@ -307,30 +325,32 @@ function check_hostname_collision($hostname, $domain) |
307 | 325 |
{ |
308 | 326 |
$uid = (int) $_SESSION['userinfo']['uid']; |
309 | 327 |
# Neuer vhost => Prüfe Duplikat |
310 |
- $args = array(":hostname" => $hostname, ":domain" => $domain); |
|
311 |
- $hostnamecheck = "hostname=:hostname"; |
|
312 |
- if (! $hostname) { |
|
313 |
- $hostnamecheck = "hostname IS NULL"; |
|
314 |
- unset($args[":hostname"]); |
|
315 |
- } |
|
328 |
+ $args = array(":hostname" => $hostname, ":domain" => $domain, ":uid" => $uid); |
|
316 | 329 |
$domaincheck = "domain=:domain"; |
317 | 330 |
if ($domain == -1) { |
318 |
- $args[":uid"] = $uid; |
|
319 |
- $domaincheck = "domain=-1 AND user=:uid"; |
|
331 |
+ $userdomain = userdomain(); |
|
332 |
+ if ($hostname) { |
|
333 |
+ $hostname .= ".".$_SESSION['userinfo']['username']; |
|
334 |
+ } |
|
335 |
+ $args[":domain"] = $userdomain['id']; |
|
320 | 336 |
} |
321 | 337 |
if ($domain == -2) { |
322 |
- $args[":uid"] = $uid; |
|
323 | 338 |
unset($args[":domain"]); |
324 |
- $domaincheck = "domain IS NULL AND user=:uid"; |
|
339 |
+ $domaincheck = "domain IS NULL"; |
|
325 | 340 |
} |
326 |
- $result = db_query("SELECT id FROM vhosts.vhost WHERE {$hostnamecheck} AND {$domaincheck}", $args); |
|
341 |
+ $hostnamecheck = "hostname=:hostname"; |
|
342 |
+ if (! $hostname) { |
|
343 |
+ $hostnamecheck = "hostname IS NULL"; |
|
344 |
+ unset($args[":hostname"]); |
|
345 |
+ } |
|
346 |
+ $result = db_query("SELECT id FROM vhosts.vhost WHERE {$hostnamecheck} AND {$domaincheck} AND user=:uid", $args); |
|
327 | 347 |
if ($result->rowCount() > 0) { |
328 | 348 |
system_failure('Eine Konfiguration mit diesem Namen gibt es bereits.'); |
329 | 349 |
} |
330 |
- if ($domain == -1) { |
|
350 |
+ if ($domain <= -1) { |
|
331 | 351 |
return ; |
332 | 352 |
} |
333 |
- $result = db_query("SELECT id, vhost FROM vhosts.alias WHERE {$hostnamecheck} AND {$domaincheck}", $args); |
|
353 |
+ $result = db_query("SELECT id, vhost FROM vhosts.v_alias WHERE {$hostnamecheck} AND {$domaincheck}", $args); |
|
334 | 354 |
if ($result->rowCount() > 0) { |
335 | 355 |
$data = $result->fetch(); |
336 | 356 |
$vh = get_vhost_details($data['vhost']); |
... | ... |
@@ -39,20 +39,27 @@ if ($_GET['action'] == 'edit') |
39 | 39 |
|
40 | 40 |
$hostname = filter_input_hostname($_POST['hostname'], true); |
41 | 41 |
|
42 |
+ $domainname = NULL; |
|
42 | 43 |
$domain_id = (int) $_POST['domain']; |
43 | 44 |
if ($domain_id >= 0) { |
44 | 45 |
$domain = new Domain( (int) $_POST['domain'] ); |
45 | 46 |
$domain->ensure_userdomain(); |
46 | 47 |
$domain_id = $domain->id; |
48 |
+ $domainname = $domain->fqdn; |
|
47 | 49 |
} |
48 |
- if ($domain_id == -1) { |
|
50 |
+ elseif ($domain_id == -1) { |
|
49 | 51 |
# use configured user_vhosts_domain |
50 | 52 |
$userdomain = userdomain(); |
51 | 53 |
$domain = new Domain( (int) $userdomain['id'] ); |
52 | 54 |
$domain_id = $domain->id; |
55 |
+ $domainname = $domain->fqdn; |
|
53 | 56 |
$hostname = $hostname.'.'.$_SESSION['userinfo']['username']; |
54 | 57 |
$hostname = trim($hostname, " .-"); |
55 | 58 |
} |
59 |
+ elseif ($domain_id == -2) { |
|
60 |
+ # use system masterdomain |
|
61 |
+ $domainname = $_SESSION['userinfo']['username'].".".config('masterdomain'); |
|
62 |
+ } |
|
56 | 63 |
|
57 | 64 |
if (! (isset($_POST['options']) && is_array($_POST['options']))) |
58 | 65 |
$_POST['options'] = array(); |
... | ... |
@@ -61,7 +68,7 @@ if ($_GET['action'] == 'edit') |
61 | 68 |
$docroot = ''; |
62 | 69 |
if ($_POST['vhost_type'] == 'regular' || $_POST['vhost_type'] == 'dav') |
63 | 70 |
{ |
64 |
- $defaultdocroot = $vhost['homedir'].'/websites/'.((strlen($hostname) > 0) ? $hostname.'.' : '').($domain->fqdn).'/htdocs'; |
|
71 |
+ $defaultdocroot = $vhost['homedir'].'/websites/'.((strlen($hostname) > 0) ? $hostname.'.' : '').($domainname).'/htdocs'; |
|
65 | 72 |
|
66 | 73 |
$docroot = ''; |
67 | 74 |
if (isset($_POST['docroot'])) |
68 | 75 |