Server IP : 195.201.23.43 / Your IP : 3.22.187.118 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 # Show the details of one plan for editing require './virtual-server-lib.pl'; &ReadParse(); $canplans = &can_edit_plans(); $canplans || &error($text{'plans_ecannot'}); if (!$in{'new'}) { # Get the plan to edit @allplans = &list_plans(); @plans = &list_editable_plans(); ($plan) = grep { $_->{'id'} eq $in{'id'} } @plans; $plan || &error($text{'plan_ecannot'}); } elsif ($in{'clone'} ne '') { # Cloning some existing plan $clone = &get_plan($in{'clone'}); $plan = { %$clone }; delete($plan->{'id'}); $plan->{'name'} = "Clone of $clone->{'name'}"; } &ui_print_header(undef, $in{'new'} ? $text{'plan_title1'} : $text{'plan_title2'}, ""); # Form block start print &ui_form_start("save_plan.cgi", "post"); print &ui_hidden("id", $in{'id'}); print &ui_hidden("new", $in{'new'}); @tds = ( "width=30%" ); # Basic plan details, quota, bw and other limits print &ui_hidden_table_start($text{'plan_header1'}, 'width=100%', 2, 'main', 1, \@tds); print &ui_table_row(&hlink($text{'plan_name'}, "plan_name"), &ui_textbox("name", $plan->{'name'}, 40)); # Default domain quota print &ui_table_row(&hlink($text{'tmpl_quota'}, "template_quota"), &ui_radio("quota_def", $plan->{'quota'} ? 0 : 1, [ [ 1, $text{'form_unlimit'} ], [ 0, $text{'tmpl_quotasel'} ] ])." ". "a_input("quota", $plan->{'quota'}, "home")); # Default admin user quota print &ui_table_row(&hlink($text{'tmpl_uquota'}, "template_uquota"), &ui_radio("uquota_def", $plan->{'uquota'} ? 0 : 1, [ [ 1, $text{'form_unlimit'} ], [ 0, $text{'tmpl_quotasel'} ] ])." ". "a_input("uquota", $plan->{'uquota'}, "home")); # Show limits on numbers of things foreach my $l (@plan_maxes) { print &ui_table_row(&hlink($text{'tmpl_'.$l.'limit'}, "template_".$l."limit"), &ui_radio($l.'limit_def', $plan->{$l.'limit'} eq '' ? 1 : 0, [ [ 1, $text{'form_unlimit'} ], [ 0, $text{'tmpl_atmost'} ] ])."\n". ($l eq "bw" ? &bandwidth_input($l.'limit', $plan->{$l.'limit'}, 1) : &ui_textbox($l.'limit', $plan->{$l.'limit'}, 10))); } # Rename and DB name limits foreach my $n (@plan_restrictions) { my @o = $n eq "migrate" ? (1, 0) : (0, 1); print &ui_table_row(&hlink($text{'limits_'.$n}, 'limits_'.$n), &ui_radio($n, int($plan->{$n}), [ [ $o[0], $text{'yes'} ], [ $o[1], $text{'no'} ] ])); } print &ui_hidden_table_end(); # Allowed features print &ui_hidden_table_start($text{'plan_header2'}, 'width=100%', 2, 'features', 0, \@tds); %flimits = map { $_, 1 } split(/\s+/, $plan->{'featurelimits'}); $dis1 = &js_disable_inputs([ "featurelimits" ], [ ], "onClick"); $dis2 = &js_disable_inputs([ ], [ "featurelimits" ], "onClick"); $dis = $plan->{'featurelimits'} ? 0 : 1; $ftable = &ui_radio('featurelimits_def', $dis, [ [ 1, $text{'tmpl_featauto'}, $dis1 ], [ 0, $text{'tmpl_below'}, $dis2 ] ])."<br>\n"; @grid = ( ); @grid_order = ( ); foreach my $f (@opt_features, "virt") { push(@grid_order, $f); push(@grid, &ui_checkbox("featurelimits", $f, " ".($text{'feature_'.$f} || $f), $flimits{$f}, undef, $dis)); } foreach my $f (&list_feature_plugins()) { push(@grid_order, $f); push(@grid, &ui_checkbox("featurelimits", $f, " ".&plugin_call($f, "feature_name"), $flimits{$f}, undef, $dis)); } features_sort(\@grid, \@grid_order); $ftable .= &vui_features_sorted_grid(\@grid) . &ui_links_row([ &select_all_link("featurelimits"), &select_invert_link("featurelimits") ]); print &ui_table_row(&hlink($text{'tmpl_featurelimits'}, "template_featurelimits"), $ftable); print &ui_hidden_table_end(); # Allowed capabilities print &ui_hidden_table_start($text{'plan_header3'}, 'width=100%', 2, 'caps', 0, \@tds); # Edit capabilities %caps = map { $_, 1 } split(/\s+/, $plan->{'capabilities'}); $dis1 = &js_disable_inputs([ "capabilities" ], [ ], "onClick"); $dis2 = &js_disable_inputs([ ], [ "capabilities" ], "onClick"); $dis = $plan->{'capabilities'} ? 0 : 1; if ($dis) { %caps = map { $_, 1 } &list_automatic_capabilities($plan->{'domslimit'}); } $etable = &ui_radio('capabilities_def', $dis, [ [ 1, $text{'tmpl_capauto'}, $dis1 ], [ 0, $text{'tmpl_below'}, $dis2 ] ])."<br>\n"; @grid = ( ); foreach my $ed (@edit_limits) { push(@grid, &ui_checkbox("capabilities", $ed, " ".($text{'limits_edit_'.$ed} || $ed), $caps{$ed}, undef, $dis)); } $etable .= &ui_grid_table(\@grid, 2). &ui_links_row([ &select_all_link("capabilities"), &select_invert_link("capabilities") ]); print &ui_table_row(&hlink($text{'tmpl_capabilities'}, "template_capabilities"), $etable); # Allowed scripts if (defined(&list_scripts)) { @sfields = ( "scripts_opts", "scripts_vals", "scripts_add", "scripts_remove" ); $dis1 = &js_disable_inputs(\@sfields, [ ], "onClick"); $dis2 = &js_disable_inputs([ ], \@sfields, "onClick"); $stable = &ui_radio('scripts_def', $plan->{'scripts'} ? 0 : 1, [ [ 1, $text{'plan_scriptsall'}, $dis1 ], [ 0, $text{'tmpl_below'}, $dis2 ] ])."<br>\n"; @scripts = &list_scripts(); foreach $s (@scripts) { $script = &get_script($s); next if (!$script->{'enabled'}); next if (&script_migrated_disallowed($script->{'migrated'})); $scriptname{$s} = $script->{'desc'} if ($script); } @scripts = grep { $scriptname{$_} } @scripts; @scripts = sort { lc($scriptname{$a}) cmp lc($scriptname{$b}) }@scripts; $stable .= &ui_multi_select("scripts", [ map { [ $_, $scriptname{$_} ] } $plan->{'scripts'} ? split(/\s+/, $plan->{'scripts'}) : @scripts ], [ map { [ $_, $scriptname{$_} ] } @scripts ], 10, 1, !$plan->{'scripts'}, $text{'plan_scriptsopts'}, $text{'plan_scriptssel'}); print &ui_table_row(&hlink($text{'plan_scripts'}, "plan_scripts"), $stable); } print &ui_hidden_table_end(); # Granted to resellers (for master admin) @resels = $virtualmin_pro ? &list_resellers() : ( ); if ($canplans == 2 && @resels) { print &ui_hidden_table_start($text{'plan_header4'}, 'width=100%', 2, 'resellers', 0, \@tds); $dis1 = &js_disable_inputs([ "resellers" ], [ ], "onClick"); $dis2 = &js_disable_inputs([ ], [ "resellers" ], "onClick"); $mode = $plan->{'resellers'} eq "" ? 1 : $plan->{'resellers'} eq "none" ? 2 : 0; print &ui_table_row( &hlink($text{'plan_resellers'}, "plan_resellers"), &ui_radio("resellers_def", $mode, [ [ 1, $text{'tmpl_resellers_all'}, $dis1 ], [ 2, $text{'tmpl_resellers_none'}, $dis1 ], [ 0, $text{'tmpl_resellers_sel'}, $dis2 ] ])."<br>\n". &ui_select("resellers", [ split(/\s+/, $plan->{'resellers'}) ], [ map { [ $_->{'name'}, $_->{'name'}. ($_->{'acl'}->{'desc'} ? " ($_->{'acl'}->{'desc'})" : "") ] } @resels ], 5, 1, 0, $mode != 0)); print &ui_hidden_table_end(); } # Virtual servers currently on this plan @doms = ( ); if (!$in{'new'}) { @doms = grep { !$_->{'parent'} } &get_domain_by("plan", $plan->{'id'}); @doms = &sort_indent_domains(\@doms); } if (@doms) { print &ui_hidden_table_start($text{'plan_header5'}, 'width=100%', 2, 'doms', 0, \@tds); if ($config{'display_max'} && @doms > $config{'display_max'}) { # Too many to show print &ui_table_row(undef, &text('plan_toomany', scalar(@doms), $config{'display_max'}), 2); } else { # Show the domains local $config{'show_quotas'} = scalar(@doms) > 100 ? 0 : 1; print &ui_table_row(undef, &domains_table(\@doms, 0, 1), 2); } print &ui_hidden_table_end(); } # Form end and buttons if ($in{'new'}) { print &ui_form_end([ [ undef, $text{'create'} ] ]); } else { print &ui_form_end([ [ undef, $text{'save'} ], @doms ? ( [ 'apply', $text{'plan_apply'} ] ) : ( ), [ 'clone', $text{'plan_clone'} ], @allplans > 1 ? ( [ 'delete', $text{'delete'} ] ) : ( ) ]); } &ui_print_footer("edit_newplan.cgi", $text{'plans_return'}, "", $text{'index_return'});Private