Bernd Wurst commited on 2014-12-17 08:35:33
Zeige 3 geänderte Dateien mit 66 Einfügungen und 9 Löschungen.
| ... | ... |
@@ -46,8 +46,12 @@ else {
|
| 46 | 46 |
} |
| 47 | 47 |
|
| 48 | 48 |
$defaultdocroot = $vhost['domain']; |
| 49 |
-if (! $vhost['domain']) |
|
| 49 |
+if (! $vhost['domain']) {
|
|
| 50 | 50 |
$defaultdocroot = $_SESSION['userinfo']['username'].'.'.config('masterdomain');
|
| 51 |
+} |
|
| 52 |
+if ($vhost['domain_id'] == -1) {
|
|
| 53 |
+ $defaultdocroot = $_SESSION['userinfo']['username'].'.'.config('user_vhosts_domain');
|
|
| 54 |
+} |
|
| 51 | 55 |
if ($vhost['hostname']) |
| 52 | 56 |
$defaultdocroot = $vhost['hostname'].'.'.$defaultdocroot; |
| 53 | 57 |
|
| ... | ... |
@@ -80,8 +80,8 @@ function empty_vhost() |
| 80 | 80 |
$vhost['id'] = NULL; |
| 81 | 81 |
$vhost['hostname'] = NULL; |
| 82 | 82 |
|
| 83 |
- $vhost['domain_id'] = -1; |
|
| 84 |
- $vhost['domain'] = $_SESSION['userinfo']['username'].'.'.config('masterdomain');
|
|
| 83 |
+ $vhost['domain_id'] = NULL; |
|
| 84 |
+ $vhost['domain'] = NULL; |
|
| 85 | 85 |
|
| 86 | 86 |
$vhost['homedir'] = $_SESSION['userinfo']['homedir']; |
| 87 | 87 |
$vhost['docroot'] = NULL; |
| ... | ... |
@@ -121,6 +121,16 @@ function empty_alias() |
| 121 | 121 |
} |
| 122 | 122 |
|
| 123 | 123 |
|
| 124 |
+function userdomain() {
|
|
| 125 |
+ if (config('user_vhosts_domain') === NULL) {
|
|
| 126 |
+ return NULL; |
|
| 127 |
+ } |
|
| 128 |
+ $result = db_query("SELECT id,name FROM vhosts.v_domains WHERE name=:dom", array(":dom" => config('user_vhosts_domain')));
|
|
| 129 |
+ $res = $result->fetch(); |
|
| 130 |
+ return $res; |
|
| 131 |
+} |
|
| 132 |
+ |
|
| 133 |
+ |
|
| 124 | 134 |
function domainselect($selected = NULL, $selectattribute = '') |
| 125 | 135 |
{
|
| 126 | 136 |
global $domainlist, $config; |
| ... | ... |
@@ -130,8 +140,6 @@ function domainselect($selected = NULL, $selectattribute = '') |
| 130 | 140 |
$selected = (int) $selected; |
| 131 | 141 |
|
| 132 | 142 |
$ret = '<select id="domain" name="domain" size="1" '.$selectattribute.' >'; |
| 133 |
- $ret .= ' <option value="-1">'.$_SESSION['userinfo']['username'].'.'.config('masterdomain').'</option>';
|
|
| 134 |
- $ret .= ' <option value="" disabled="disabled">--------------------------------</option>'; |
|
| 135 | 143 |
$found = false; |
| 136 | 144 |
foreach ($domainlist as $dom) |
| 137 | 145 |
{
|
| ... | ... |
@@ -142,6 +150,16 @@ function domainselect($selected = NULL, $selectattribute = '') |
| 142 | 150 |
} |
| 143 | 151 |
$ret .= "<option value=\"{$dom->id}\"{$s}>{$dom->fqdn}</option>\n";
|
| 144 | 152 |
} |
| 153 |
+ if (count($domainlist) > 0) {
|
|
| 154 |
+ $ret .= ' <option value="" disabled="disabled">--------------------------------</option>'; |
|
| 155 |
+ } |
|
| 156 |
+ $userdomain = userdomain(); |
|
| 157 |
+ if ($userdomain) {
|
|
| 158 |
+ $s = ($selected == -1 ? ' selected="selected"' : ''); |
|
| 159 |
+ $ret .= ' <option value="-1"'.$s.'>'.$_SESSION['userinfo']['username'].'.'.$userdomain['name'].'</option>'; |
|
| 160 |
+ } |
|
| 161 |
+ $s = ($selected == -2 ? ' selected="selected"' : ''); |
|
| 162 |
+ $ret .= ' <option value="-2"'.$s.'>'.$_SESSION['userinfo']['username'].'.'.config('masterdomain').'</option>';
|
|
| 145 | 163 |
$ret .= '</select>'; |
| 146 | 164 |
if ($selected > 0 and ! $found) {
|
| 147 | 165 |
system_failure("Hier wird eine Domain benutzt, die nicht zu diesem Benutzeraccount gehört. Bearbeiten würde Daten zerstören!");
|
| ... | ... |
@@ -161,6 +179,21 @@ function get_vhost_details($id) |
| 161 | 179 |
|
| 162 | 180 |
$ret = $result->fetch(); |
| 163 | 181 |
|
| 182 |
+ if ($ret['domain_id'] === NULL) {
|
|
| 183 |
+ $ret['domain_id'] = -2; |
|
| 184 |
+ } |
|
| 185 |
+ $userdomain = userdomain(); |
|
| 186 |
+ if ($ret['domain_id'] == $userdomain['id']) {
|
|
| 187 |
+ $user = $_SESSION['userinfo']['username']; |
|
| 188 |
+ $ret['domain_id'] = -1; |
|
| 189 |
+ if ($ret['hostname'] == $user) {
|
|
| 190 |
+ $ret['hostname'] = NULL; |
|
| 191 |
+ } elseif (substr($ret['hostname'], -count($user), count($user)) == $user) {
|
|
| 192 |
+ $ret['hostname'] = substr($ret['hostname'], 0, -count($user)-1); // Punkt mit entfernen! |
|
| 193 |
+ } else {
|
|
| 194 |
+ system_failure('Userdomain ohne Username!');
|
|
| 195 |
+ } |
|
| 196 |
+ } |
|
| 164 | 197 |
if ($ret['hsts'] === NULL) {
|
| 165 | 198 |
DEBUG('HSTS: '.$ret['hsts']);
|
| 166 | 199 |
$ret['hsts'] = -1; |
| ... | ... |
@@ -282,6 +315,10 @@ function check_hostname_collision($hostname, $domain) |
| 282 | 315 |
} |
| 283 | 316 |
$domaincheck = "domain=:domain"; |
| 284 | 317 |
if ($domain == -1) {
|
| 318 |
+ $args[":uid"] = $uid; |
|
| 319 |
+ $domaincheck = "domain=-1 AND user=:uid"; |
|
| 320 |
+ } |
|
| 321 |
+ if ($domain == -2) {
|
|
| 285 | 322 |
$args[":uid"] = $uid; |
| 286 | 323 |
unset($args[":domain"]); |
| 287 | 324 |
$domaincheck = "domain IS NULL AND user=:uid"; |
| ... | ... |
@@ -310,7 +347,7 @@ function save_vhost($vhost) |
| 310 | 347 |
$domain = (int) $vhost['domain_id']; |
| 311 | 348 |
if ($domain == 0) |
| 312 | 349 |
system_failure('$domain == 0');
|
| 313 |
- if ($vhost['domain_id'] == -1) |
|
| 350 |
+ if ($vhost['domain_id'] == -2) |
|
| 314 | 351 |
$domain = NULL; |
| 315 | 352 |
if ($id == 0) {
|
| 316 | 353 |
check_hostname_collision($vhost['hostname'], $vhost['domain_id']); |
| ... | ... |
@@ -450,7 +487,7 @@ function save_alias($alias) |
| 450 | 487 |
$domain = (int) $alias['domain_id']; |
| 451 | 488 |
if ($domain == 0) |
| 452 | 489 |
system_failure('$domain == 0');
|
| 453 |
- if ($alias['domain_id'] == -1) |
|
| 490 |
+ if ($alias['domain_id'] == -2) |
|
| 454 | 491 |
$domain = NULL; |
| 455 | 492 |
$vhost = get_vhost_details( (int) $alias['vhost']); |
| 456 | 493 |
if (! $alias['hostname']) {
|
| ... | ... |
@@ -40,11 +40,19 @@ if ($_GET['action'] == 'edit') |
| 40 | 40 |
$hostname = filter_input_hostname($_POST['hostname'], true); |
| 41 | 41 |
|
| 42 | 42 |
$domain_id = (int) $_POST['domain']; |
| 43 |
- if ($domain_id != -1) {
|
|
| 43 |
+ if ($domain_id >= 0) {
|
|
| 44 | 44 |
$domain = new Domain( (int) $_POST['domain'] ); |
| 45 | 45 |
$domain->ensure_userdomain(); |
| 46 | 46 |
$domain_id = $domain->id; |
| 47 | 47 |
} |
| 48 |
+ if ($domain_id == -1) {
|
|
| 49 |
+ # use configured user_vhosts_domain |
|
| 50 |
+ $userdomain = userdomain(); |
|
| 51 |
+ $domain = new Domain( (int) $userdomain['id'] ); |
|
| 52 |
+ $domain_id = $domain->id; |
|
| 53 |
+ $hostname = $hostname.'.'.$_SESSION['userinfo']['username']; |
|
| 54 |
+ $hostname = trim($hostname, " .-"); |
|
| 55 |
+ } |
|
| 48 | 56 |
|
| 49 | 57 |
if (! (isset($_POST['options']) && is_array($_POST['options']))) |
| 50 | 58 |
$_POST['options'] = array(); |
| ... | ... |
@@ -236,11 +244,19 @@ elseif ($_GET['action'] == 'addalias') |
| 236 | 244 |
|
| 237 | 245 |
$hostname = filter_input_hostname($_POST['hostname'], true); |
| 238 | 246 |
$domainid = (int) $_POST['domain']; |
| 239 |
- if ($domainid != -1) {
|
|
| 247 |
+ if ($domainid >= 0) {
|
|
| 240 | 248 |
$domain = new Domain( (int) $_POST['domain'] ); |
| 241 | 249 |
$domain->ensure_userdomain(); |
| 242 | 250 |
$domainid = $domain->id; |
| 243 | 251 |
} |
| 252 |
+ if ($domainid == -1) {
|
|
| 253 |
+ # use configured user_vhosts_domain |
|
| 254 |
+ $userdomain = userdomain(); |
|
| 255 |
+ $domain = new Domain( (int) $userdomain['id'] ); |
|
| 256 |
+ $domainid = $domain->id; |
|
| 257 |
+ $hostname = $hostname.'.'.$_SESSION['userinfo']['username']; |
|
| 258 |
+ $hostname = trim($hostname, " .-"); |
|
| 259 |
+ } |
|
| 244 | 260 |
|
| 245 | 261 |
if (! is_array($_POST['options'])) |
| 246 | 262 |
$_POST['options'] = array(); |
| 247 | 263 |