Server IP : 195.201.23.43 / Your IP : 18.222.54.32 Web Server : Apache System : Linux webserver2.vercom.be 5.4.0-192-generic #212-Ubuntu SMP Fri Jul 5 09:47:39 UTC 2024 x86_64 User : kdecoratie ( 1041) PHP Version : 7.1.33-63+ubuntu20.04.1+deb.sury.org+1 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals, MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /usr/share/webmin/virtual-server/ |
Upload File : |
#!/usr/bin/perl # Migrate some virtual server backup file require './virtual-server-lib.pl'; $can = &can_migrate_servers(); $can || &error($text{'migrate_ecannot'}); &error_setup($text{'migrate_err'}); &ReadParseMime(); &require_migration(); # Parse source file input $src = &parse_backup_destination("src", \%in, $can > 1, undef, undef); ($mode) = &parse_backup_url($src); if ($mode == 0) { -r $src || &error($text{'migrate_efile'}); } if ($can < 3) { if (!$in{'user_def'}) { $in{'user'} =~ /^[a-z0-9\.\-\_]+$/i || &error($text{'migrate_euser'}); $user = $in{'user'}; defined(getpwnam($in{'user'})) && &error($text{'migrate_euserclash'}); } if (!$in{'pass_def'}) { $pass = $in{'pass'}; } } $tmpl = &get_template($in{'template'}); &can_use_template($tmpl) || &error($text{'setup_etmpl'}); if ($can < 3) { # Parent can be chosen if (!$in{'parent_def'}) { $parent = &get_domain_by("user", $in{'parent'}, "parent", ""); &can_config_domain($parent) || &error($text{'edit_ecannot'}); } } else { # This user's master domain $parent = &get_domain_by_user($base_remote_user); $parent && &can_edit_domain($parent) || &error($text{'edit_ecannot'}); } if ($parent && !$tmpl->{'for_sub'}) { &error($text{'migrate_etmplsub'}); } elsif (!$parent && !$tmpl->{'for_parent'}) { &error($text{'migrate_etmplparent'}); } $ipinfo = { }; ($ipinfo->{'ip'}, $ipinfo->{'virt'}, $ipinfo->{'virtalready'}, $ipinfo->{'netmask'}) = &parse_virtual_ip($tmpl, $parent ? $parent->{'reseller'} : &reseller_admin() ? $base_remote_user : undef); if (&supports_ip6()) { ($ipinfo->{'ip6'}, $ipinfo->{'virt6'}, $ipinfo->{'virt6already'}, $ipinfo->{'netmask6'}) = &parse_virtual_ip6($tmpl, $parent ? $parent->{'reseller'} : &reseller_admin() ? $base_remote_user : undef); } if (!$in{'prefix_def'}) { $in{'prefix'} =~ /^[a-z0-9\.\-]+$/i || &error($text{'setup_eprefix'}); $prefix = $in{'prefix'}; } $in{'email_def'} || $in{'email'} =~ /\S/ || &error($text{'setup_eemail'}); my @footer_action = &vui_footer_history_back(); &ui_print_unbuffered_header(undef, $text{'migrate_title'}, ""); # Download the file $oldsrc = $src; $nice = &nice_backup_url($oldsrc); if ($mode == 5) { # Uploaded data .. save to temp file &$first_print(&text('migrate_uploading', $in{'src_file'})); $src = &transname(); &open_tempfile(SRC, ">$src", 0, 1); &print_tempfile(SRC, $in{'src_upload'}); &close_tempfile(SRC); @st = stat($src); &$second_print(&text('migrate_uploaded', &nice_size($st[7]))); } elsif ($mode > 0) { # Fetch from some server &$first_print(&text('migrate_downloading', $nice)); $temp = &transname(); $err = &download_backup($src, $temp); if ($err) { &$second_print(&text('migrate_edownload', $err)); goto DONE; } $src = $temp; @st = stat($src); &$second_print(&text('migrate_downloaded', &nice_size($st[7]))); } # Validate the file &$first_print($text{'migrate_validating'}); $vfunc = "migration_$in{'type'}_validate"; ($err, $domain, $user, $pass) = &$vfunc($src, undef, $user, $parent, $prefix, $pass); if ($err) { &$second_print(&text('migrate_evalidate', $err)); goto DONE; } elsif (&domain_name_clash($domain)) { &$second_print($text{'migrate_eclash'}); goto DONE; } @footer_action = ("", $text{'index_return'}); &$second_print($text{'setup_done'}); # Call the migration function &lock_domain_name($domain); &$first_print(&text('migrate_doing1', "<tt>$domain</tt>", $nice)); &$indent_print(); $mfunc = "migration_$in{'type'}_migrate"; @doms = &$mfunc($src, $domain, $user, $in{'webmin'}, $in{'template'}, $ipinfo, $pass, $parent, $prefix, $in{'email_def'} ? undef : $in{'email'}); &unlock_domain_name($domain); &run_post_actions(); &$outdent_print(); # Fix htaccess files foreach my $d (@doms) { &fix_script_htaccess_files($d, &public_html_dir($d)); } # If this user is a reseller, grant any new domains to him if (&reseller_admin()) { foreach my $d (@doms) { $d->{'reseller'} = $base_remote_user; &save_domain($d); } } if (@doms) { $d = $doms[0]; &$second_print(&text('migrate_ok', "edit_domain.cgi?dom=$d->{'id'}", "<tt>".&html_escape($in->{'dom'} || $d->{'dom'})."</tt>")); # Call any theme post command if (defined(&theme_post_save_domain)) { &theme_post_save_domain($d, 'create'); } } else { @footer_action = &vui_footer_history_back(); &$second_print(&text('migrate_failed')); } DONE: &ui_print_footer(@footer_action);Private