php IHDR w Q )Ba pHYs sRGB gAMA a IDATxMk\U s&uo,mD )Xw+e?tw.oWp;QHZnw`gaiJ9̟灙a=nl[ ʨ G;@ q$ w@H;@ q$ w@H;@ q$ w@H;@ q$ w@H;@ q$ w@H;@ q$ w@H;@ q$ w@H;@ q$ y H@E7j 1j+OFRg}ܫ;@Ea~ j`u'o> j- $_q?qS XzG'ay
files >> /usr/libexec/webmin/virtual-server/ |
files >> //usr/libexec/webmin/virtual-server/move-domain.pl |
#!/usr/bin/perl =head1 move-domain.pl Change the owner of a virtual server This command can be used to move a sub-server from one parent domain to another, thus changing the administrator who is responsible for it. It can also be used to convert a parent server into a sub-server under some existing owner. In this mode, it takes only two parameters : C<--domain> followed by the domain name to move, and C<--parent> followed by the domain name of the new parent server. Naturally the new parent must be different from the old one, and a server cannot be moved under itself. This command should be used with care when moving a parent server, as information that is specific to it such as the password, quotas and bandwidth limit will be lost. Instead, the settings from the new parent will apply. The C<move-domain> command can also be used to convert a sub-server into a top-level server. In this case, you must give the C<--newuser> and C<--newpass> parameters, which are followed by the username and password for the new top-level server respectively. The original owner of the domain will no longer have access to it once the command completes. =cut package virtual_server; if (!$module_name) { $main::no_acl_check++; $ENV{'WEBMIN_CONFIG'} ||= "/etc/webmin"; $ENV{'WEBMIN_VAR'} ||= "/var/webmin"; if ($0 =~ /^(.*)\/[^\/]+$/) { chdir($pwd = $1); } else { chop($pwd = `pwd`); } $0 = "$pwd/move-domain.pl"; require './virtual-server-lib.pl'; $< == 0 || die "move-domain.pl must be run as root"; } @OLDARGV = @ARGV; &set_all_text_print(); # Parse command-line args while(@ARGV > 0) { local $a = shift(@ARGV); if ($a eq "--domain") { $domain = lc(shift(@ARGV)); } elsif ($a eq "--parent") { $parentdomain = lc(shift(@ARGV)); } elsif ($a eq "--newuser") { $newuser = shift(@ARGV); } elsif ($a eq "--newpass") { $newpass = shift(@ARGV); } elsif ($a eq "--multiline") { $multiline = 1; } else { &usage("Unknown parameter $a"); } } # Find the domains $domain || &usage("No domain to move specified"); $parentdomain || $newuser || &usage("No destination domain or new username specified"); $d = &get_domain_by("dom", $domain); $d || usage("Virtual server $domain does not exist."); if ($parentdomain) { # Get the new parent $parent = &get_domain_by("dom", $parentdomain); $parent || usage("Virtual server $parentdomain does not exist."); if ($d->{'parent'}) { $parent->{'id'} ==$d->{'parent'} && &usage($text{'move_esame'}); } else { $parent->{'id'} == $d->{'id'} && &error($text{'move_eparent'}); } } else { # Validate new username $newd = { %$d }; $newd->{'unix'} = 1; $newd->{'webmin'} = 1; $newd->{'user'} = $newuser; $newd->{'group'} = $newuser; $derr = &virtual_server_clashes($newd, undef, 'user') || &virtual_server_clashes($newd, undef, 'group'); &usage($derr) if ($derr); # Check if the domain already has a user with that name @dusers = &list_domain_users($d, 0, 1, 1, 1); ($clash) = grep { $_->{'user'} eq $newuser || &remove_userdom($_->{'user'}, $d) eq $newuser } @dusers; $clash && &usage("A user named $newuser already exists in $d->{'dom'}"); # Check if a user with that name exists anywhere defined(getpwnam($newuser)) && &usage("A user named $newuser already exists"); } # Check if this is a sub-domain if ($d->{'subdom'}) { &usage("Sub-domains cannot be moved independently - use unsub-domain.pl first"); } # Call the move function if ($parentdomain) { &$first_print(&text('move_doing', $d->{'dom'}, $parent->{'dom'})); $ok = &move_virtual_server($d, $parent); } else { &$first_print(&text('move_doing2', $d->{'dom'})); $ok = &reparent_virtual_server($d, $newuser, $newpass); } &run_post_actions_silently(); if ($ok) { &$second_print($text{'setup_done'}); &virtualmin_api_log(\@OLDARGV, $d); } else { &$second_print($text{'move_failed'}); } sub usage { print $_[0],"\n\n" if ($_[0]); print "Moves a virtual server under a new parent server, or converts it.\n"; print "into a parent server of its own.\n"; print "\n"; print "virtualmin move-domain --domain domain.name\n"; print " [--parent domain.name]\n"; print " [--newuser username]\n"; print " [--newpass password]\n"; exit(1); }y~or5J={Eeu磝Qk ᯘG{?+]ן?wM3X^歌>{7پK>on\jy Rg/=fOroNVv~Y+ NGuÝHWyw[eQʨSb> >}Gmx[o[<{Ϯ_qFvM IENDB`