@@ -4268,55 +4268,70 @@ sub get_default_apache_website
4268
4268
# entries in httpd.conf
4269
4269
sub set_default_website
4270
4270
{
4271
- local ($d ) = @_ ;
4272
- local $p = &domain_has_website($d );
4271
+ my ($d ) = @_ ;
4272
+ my $p = &domain_has_website($d );
4273
4273
if ($p ne ' web' ) {
4274
4274
return &plugin_call($p , " feature_set_web_default" , $d );
4275
4275
}
4276
4276
&require_apache();
4277
4277
foreach my $port ($d -> {' web_port' },
4278
4278
$d -> {' ssl' } ? ( $d -> {' web_sslport' } ) : ( )) {
4279
- local ($virt , $vconf , $conf ) = &get_apache_virtual($d -> {' dom' }, $port );
4279
+ my ($virt , $vconf , $conf ) = &get_apache_virtual($d -> {' dom' }, $port );
4280
4280
$virt || return " No Apache virtualhost found for $d ->{'dom'}:$port " ;
4281
- local ($oldvirt , $oldd ) = &get_default_apache_website($d , $port );
4281
+ my ($oldvirt , $oldd ) = &get_default_apache_website($d , $port );
4282
4282
if ($virt && $oldvirt && $virt ne $oldvirt ) {
4283
4283
if ($virt -> {' file' } eq $oldvirt -> {' file' }) {
4284
- # Need to move up in file
4285
- local $lref = &read_file_lines($virt -> {' file' });
4286
- local @oldl = @$lref [$virt -> {' line' } .. $virt -> {' eline' }];
4287
- splice (@$lref , $virt -> {' line' },
4288
- $virt -> {' eline' } - $virt -> {' line' } + 1);
4289
- splice (@$lref , $oldvirt -> {' line' }, 0, @oldl );
4284
+ # Swap virtualhosts in the file
4285
+ my $oldvirtcopy = { %$oldvirt };
4286
+ $oldvirtcopy -> {' members' } =
4287
+ [ &clone_apache_config($oldvirt -> {' members' }) ];
4288
+ my $virtcopy = { %$virt };
4289
+ $virtcopy -> {' members' } =
4290
+ [ &clone_apache_config($virt -> {' members' }) ];
4291
+ delete ($oldvirtcopy -> {' file' });
4292
+ delete ($oldvirtcopy -> {' line' });
4293
+ delete ($oldvirtcopy -> {' eline' });
4294
+ &apache::save_directive_struct(
4295
+ $oldvirt , $virtcopy , $conf , $conf );
4296
+ &apache::save_directive_struct(
4297
+ $virt , $oldvirtcopy , $conf , $conf );
4290
4298
&flush_file_lines($virt -> {' file' });
4291
4299
}
4292
4300
else {
4293
4301
# Swap file order
4294
4302
$virt -> {' file' } =~ / ^(.*)\/ ([^\/ ]+)$ / ;
4295
- local ($dir , $file ) = ($1 , $2 );
4303
+ my ($dir , $file ) = ($1 , $2 );
4296
4304
$oldvirt -> {' file' } =~ / ^(.*)\/ ([^\/ ]+)$ / ;
4297
- local ($olddir , $oldfile ) = ($1 , $2 );
4298
- local $adddir = $apache::config {' virt_file' } ?
4305
+ my ($olddir , $oldfile ) = ($1 , $2 );
4306
+ my $adddir = $apache::config {' virt_file' } ?
4299
4307
&apache::server_root($apache::config {' virt_file' }) :
4300
4308
undef ;
4301
4309
if ($dir eq $olddir && $dir eq $adddir ) {
4302
4310
# Separate files in the add-to dir
4303
4311
&apache::delete_webfile_link(" $dir /$file " );
4304
4312
&rename_logged(" $dir /$file " , " $dir /0-$file " );
4305
4313
&apache::create_webfile_link(" $dir /0-$file " );
4314
+ &apache::recursive_set_lines_files(
4315
+ $virt -> {' members' },
4316
+ $virt -> {' line' }+1,
4317
+ " $dir /0-$file " );
4306
4318
if ($oldfile =~ / ^0-(.*)$ / ) {
4307
4319
&apache::delete_webfile_link(
4308
4320
" $dir /$oldfile " );
4309
4321
&rename_logged(" $dir /$oldfile " ,
4310
4322
" $dir /$1 " );
4311
4323
&apache::create_webfile_link(" $dir /$1 " );
4324
+ &apache::recursive_set_lines_files(
4325
+ $oldvirt -> {' members' },
4326
+ $oldvirt -> {' line' }+1,
4327
+ " $dir /$1 " );
4312
4328
}
4313
4329
}
4314
4330
else {
4315
4331
# Cannot handle this case
4316
4332
return " Cannot handle swap between $virt ->{'file'} and $oldvirt ->{'file'}" ;
4317
4333
}
4318
4334
}
4319
- undef (@apache::get_config_cache );
4320
4335
®ister_post_action(\&restart_apache);
4321
4336
}
4322
4337
}
0 commit comments