Skip to content

Commit 79d9555

Browse files
author
Marius Cramer
committed
Fixed: FS#3453 - Renaming vhost subdomains leaves stale log mount entries
1 parent 1890caf commit 79d9555

File tree

2 files changed

+36
-11
lines changed

2 files changed

+36
-11
lines changed

server/plugins-available/apache2_plugin.inc.php

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -355,13 +355,26 @@ function update($event_name, $data) {
355355

356356
$web_folder = 'web';
357357
$log_folder = 'log';
358+
$old_web_folder = 'web';
359+
$old_log_folder = 'log';
358360
if($data['new']['type'] == 'vhostsubdomain') {
361+
// new one
359362
$tmp = $app->db->queryOneRecord('SELECT `domain` FROM web_domain WHERE domain_id = '.intval($data['new']['parent_domain_id']));
360363
$subdomain_host = preg_replace('/^(.*)\.' . preg_quote($tmp['domain'], '/') . '$/', '$1', $data['new']['domain']);
361364
if($subdomain_host == '') $subdomain_host = 'web'.$data['new']['domain_id'];
362365
$web_folder = $data['new']['web_folder'];
363366
$log_folder .= '/' . $subdomain_host;
364367
unset($tmp);
368+
369+
if(isset($data['old']['parent_domain_id'])) {
370+
// old one
371+
$tmp = $app->db->queryOneRecord('SELECT `domain` FROM web_domain WHERE domain_id = '.intval($data['old']['parent_domain_id']));
372+
$subdomain_host = preg_replace('/^(.*)\.' . preg_quote($tmp['domain'], '/') . '$/', '$1', $data['old']['domain']);
373+
if($subdomain_host == '') $subdomain_host = 'web'.$data['old']['domain_id'];
374+
$old_web_folder = $data['old']['web_folder'];
375+
$old_log_folder .= '/' . $subdomain_host;
376+
unset($tmp);
377+
}
365378
}
366379

367380
// Create group and user, if not exist
@@ -473,9 +486,9 @@ function update($event_name, $data) {
473486
if($apache_chrooted) $this->_exec('chroot '.escapeshellcmd($web_config['website_basedir']).' '.$command);
474487

475488
//* Change the log mount
476-
$fstab_line = '/var/log/ispconfig/httpd/'.$data['old']['domain'].' '.$data['old']['document_root'].'/'.$log_folder.' none bind';
489+
$fstab_line = '/var/log/ispconfig/httpd/'.$data['old']['domain'].' '.$data['old']['document_root'].'/'.$old_log_folder.' none bind';
477490
$app->system->removeLine('/etc/fstab', $fstab_line);
478-
$fstab_line = '/var/log/ispconfig/httpd/'.$data['old']['domain'].' '.$data['old']['document_root'].'/'.$log_folder.' none bind,nobootwait';
491+
$fstab_line = '/var/log/ispconfig/httpd/'.$data['old']['domain'].' '.$data['old']['document_root'].'/'.$old_log_folder.' none bind,nobootwait';
479492
$app->system->removeLine('/etc/fstab', $fstab_line);
480493
$fstab_line = '/var/log/ispconfig/httpd/'.$data['new']['domain'].' '.$data['new']['document_root'].'/'.$log_folder.' none bind,nobootwait,_netdev 0 0';
481494
$app->system->replaceLine('/etc/fstab', $fstab_line, $fstab_line, 1, 1);
@@ -507,14 +520,14 @@ function update($event_name, $data) {
507520
// Remove the symlink for the site, if site is renamed
508521
if($this->action == 'update' && $data['old']['domain'] != '' && $data['new']['domain'] != $data['old']['domain']) {
509522
if(is_dir('/var/log/ispconfig/httpd/'.$data['old']['domain'])) exec('rm -rf /var/log/ispconfig/httpd/'.$data['old']['domain']);
510-
if(is_link($data['old']['document_root'].'/'.$log_folder)) $app->system->unlink($data['old']['document_root'].'/'.$log_folder);
523+
if(is_link($data['old']['document_root'].'/'.$old_log_folder)) $app->system->unlink($data['old']['document_root'].'/'.$old_log_folder);
511524

512525
//* remove old log mount
513-
$fstab_line = '/var/log/ispconfig/httpd/'.$data['old']['domain'].' '.$data['old']['document_root'].'/'.$log_folder.' none bind';
526+
$fstab_line = '/var/log/ispconfig/httpd/'.$data['old']['domain'].' '.$data['old']['document_root'].'/'.$old_log_folder.' none bind';
514527
$app->system->removeLine('/etc/fstab', $fstab_line);
515528

516529
//* Unmount log directory
517-
exec('umount '.escapeshellarg($data['old']['document_root'].'/'.$log_folder));
530+
exec('umount '.escapeshellarg($data['old']['document_root'].'/'.$old_log_folder));
518531
}
519532

520533
//* Create the log dir if nescessary and mount it
@@ -1620,7 +1633,6 @@ function update($event_name, $data) {
16201633

16211634
//* Unset action to clean it for next processed vhost.
16221635
$this->action = '';
1623-
16241636
}
16251637

16261638
function delete($event_name, $data) {

server/plugins-available/nginx_plugin.inc.php

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -362,13 +362,26 @@ function update($event_name, $data) {
362362

363363
$web_folder = 'web';
364364
$log_folder = 'log';
365+
$old_web_folder = 'web';
366+
$old_log_folder = 'log';
365367
if($data['new']['type'] == 'vhostsubdomain') {
368+
// new one
366369
$tmp = $app->db->queryOneRecord('SELECT `domain` FROM web_domain WHERE domain_id = '.intval($data['new']['parent_domain_id']));
367370
$subdomain_host = preg_replace('/^(.*)\.' . preg_quote($tmp['domain'], '/') . '$/', '$1', $data['new']['domain']);
368371
if($subdomain_host == '') $subdomain_host = 'web'.$data['new']['domain_id'];
369372
$web_folder = $data['new']['web_folder'];
370373
$log_folder .= '/' . $subdomain_host;
371374
unset($tmp);
375+
376+
if(isset($data['old']['parent_domain_id'])) {
377+
// old one
378+
$tmp = $app->db->queryOneRecord('SELECT `domain` FROM web_domain WHERE domain_id = '.intval($data['old']['parent_domain_id']));
379+
$subdomain_host = preg_replace('/^(.*)\.' . preg_quote($tmp['domain'], '/') . '$/', '$1', $data['old']['domain']);
380+
if($subdomain_host == '') $subdomain_host = 'web'.$data['old']['domain_id'];
381+
$old_web_folder = $data['old']['web_folder'];
382+
$old_log_folder .= '/' . $subdomain_host;
383+
unset($tmp);
384+
}
372385
}
373386

374387
// Create group and user, if not exist
@@ -477,9 +490,9 @@ function update($event_name, $data) {
477490
if($nginx_chrooted) $this->_exec('chroot '.escapeshellcmd($web_config['website_basedir']).' '.$command);
478491

479492
//* Change the log mount
480-
$fstab_line = '/var/log/ispconfig/httpd/'.$data['old']['domain'].' '.$data['old']['document_root'].'/'.$log_folder.' none bind';
493+
$fstab_line = '/var/log/ispconfig/httpd/'.$data['old']['domain'].' '.$data['old']['document_root'].'/'.$old_log_folder.' none bind';
481494
$app->system->removeLine('/etc/fstab', $fstab_line);
482-
$fstab_line = '/var/log/ispconfig/httpd/'.$data['old']['domain'].' '.$data['old']['document_root'].'/'.$log_folder.' none bind,nobootwait';
495+
$fstab_line = '/var/log/ispconfig/httpd/'.$data['old']['domain'].' '.$data['old']['document_root'].'/'.$old_log_folder.' none bind,nobootwait';
483496
$app->system->removeLine('/etc/fstab', $fstab_line);
484497
$fstab_line = '/var/log/ispconfig/httpd/'.$data['new']['domain'].' '.$data['new']['document_root'].'/'.$log_folder.' none bind,nobootwait,_netdev 0 0';
485498
$app->system->replaceLine('/etc/fstab', $fstab_line, $fstab_line, 1, 1);
@@ -511,14 +524,14 @@ function update($event_name, $data) {
511524
// Remove the symlink for the site, if site is renamed
512525
if($this->action == 'update' && $data['old']['domain'] != '' && $data['new']['domain'] != $data['old']['domain']) {
513526
if(is_dir('/var/log/ispconfig/httpd/'.$data['old']['domain'])) exec('rm -rf /var/log/ispconfig/httpd/'.$data['old']['domain']);
514-
if(is_link($data['old']['document_root'].'/'.$log_folder)) $app->system->unlink($data['old']['document_root'].'/'.$log_folder);
527+
if(is_link($data['old']['document_root'].'/'.$old_log_folder)) $app->system->unlink($data['old']['document_root'].'/'.$old_log_folder);
515528

516529
//* remove old log mount
517-
$fstab_line = '/var/log/ispconfig/httpd/'.$data['old']['domain'].' '.$data['old']['document_root'].'/'.$log_folder.' none bind';
530+
$fstab_line = '/var/log/ispconfig/httpd/'.$data['old']['domain'].' '.$data['old']['document_root'].'/'.$old_log_folder.' none bind';
518531
$app->system->removeLine('/etc/fstab', $fstab_line);
519532

520533
//* Unmount log directory
521-
exec('umount '.escapeshellarg($data['old']['document_root'].'/'.$log_folder));
534+
exec('umount '.escapeshellarg($data['old']['document_root'].'/'.$old_log_folder));
522535
}
523536

524537
//* Create the log dir if nescessary and mount it

0 commit comments

Comments
 (0)