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/save_provision.cgi |
#!/usr/bin/perl # Save provisioning settings require './virtual-server-lib.pl'; &can_edit_templates() || &error($text{'provision_ecannot'}); &error_setup($text{'provision_err'}); &ReadParse(); %oldconfig = %config; # Validate and store inputs foreach $f (&list_provision_features()) { push(@oldpfeatures, $f) if ($config{'provision_'.$f}); push(@pfeatures, $f) if ($in{'provision_'.$f}); } if ($in{'provision_cloudmin'}) { # Use Virtualmin's provisioning service $in{'provision_server'} = $cloudmin_provisioning_server; $in{'provision_port'} = $cloudmin_provisioning_port; $in{'provision_ssl'} = $cloudmin_provisioning_ssl; } if (@pfeatures) { &to_ipaddress($in{'provision_server'}) || defined(&to_ip6address) && &to_ip6address($in{'provision_server'}) || &error($text{'provision_eserver'}); $in{'provision_port'} =~ /^[1-9][0-9]*$/ || &error($text{'provision_eport'}); $in{'provision_user'} =~ /^[a-zA-Z0-9\.\-\_\@]+$/ || &error($text{'provision_euser'}); $in{'provision_pass'} =~ /:/ && &error($text{'provision_epass'}); } $config{'provision_server'} = $in{'provision_server'}; $config{'provision_port'} = $in{'provision_port'}; $config{'provision_ssl'} = $in{'provision_ssl'} || 0; $config{'provision_user'} = $in{'provision_user'}; $config{'provision_pass'} = $in{'provision_pass'}; foreach $f (&list_provision_features()) { $config{'provision_'.$f} = $in{'provision_'.$f} || 0; } &ui_print_header(undef, $text{'provision_title'}, ""); # Check that provisioning works for the server and login &$first_print(&text('provision_checking', "<tt>$in{'provision_server'}</tt>")); $err = &check_provision_login(); if ($err) { &$second_print(&text('provision_echeck', $err)); goto FAILED; } else { &$second_print($text{'setup_done'}); } # If any domains exist that were provisioned old-style for mysql, complain if ($in{'provision_mysql'} && !$oldconfig{'provision_mysql'}) { &$first_print($text{'provision_mysqlcheck'}); @mydoms = grep { $_->{'mysql'} && !$_->{'provision_mysql'} } &list_domains(); if (@mydoms && $in{'override'}) { # Some exist, but override mode is on &$second_print($text{'provision_mysqlcheckskip'}); } elsif (@mydoms) { # Some exist .. show error and override button &$second_print(&text('provision_mysqlcheckfail', join(" ", map { $_->{'dom'} } @mydoms))); print &ui_form_start("save_provision.cgi"); foreach $i (keys %in) { print &ui_hidden($i, $in{$i}); } print "<b>",$text{'provision_mysqlcheckoverride'},"</b><p>\n"; print &ui_form_end([ [ "override", $text{'provision_override'} ] ]); goto FAILED; } else { &$second_print($text{'provision_mysqlcheckok'}); } } # If virus provisioning is enabled, force use of clamd-stream-client for # all domains if ($in{'provision_virus'} && !$config{'provision_virus_host'}) { &$first_print($text{'provision_virussetup'}); ($ok, $msg) = &provision_api_call("provision-virus", { }, 0); if (!$ok || $msg !~ /ip=\S+/ || $msg !~ /port=\d+/ || $msg !~ /host=\S+/) { &$second_print(&text('provision_evirussetup', $msg)); } else { $msg =~ /ip=(\S+)/; $clamhost = $1; $msg =~ /port=(\S+)/; $clamhost .= ":$1" if ($1 != 3310); $err = &test_virus_scanner("clamd-stream-client", $clamhost); if ($err) { &$second_print(&text('provision_evirustest', $clamhost, $err)); } else { &save_global_virus_scanner("clamd-stream-client", $clamhost); $msg =~ /host=(\S+)/; $config{'provision_virus_host'} = $1; &save_module_config(); &$second_print(&text('provision_virusgot', $clamhost)); if (&check_clamd_status() == 1) { # Can now disable clamd &disable_clamd(); } } } } elsif (!$in{'provision_virus'} && $config{'provision_virus_host'}) { # Un-provision virus access &$first_print($text{'provision_virusunsetup'}); $clamhost = $config{'provision_virus_host'}; $clamhost =~ s/:\d+$//; ($ok, $msg) = &provision_api_call("unprovision-virus", { 'host' => $clamhost }, 0); if (!$ok) { &$second_print(&text('provision_evirusunsetup', $msg)); } else { # Done .. switch back to clamscan &save_global_virus_scanner("clamscan"); &$second_print($text{'setup_done'}); } delete($config{'provision_virus_host'}); &save_module_config(); } # If spam provisioning is enabled, force use of spamc for # all domains if ($in{'provision_spam'} && !$config{'provision_spam_host'}) { &$first_print($text{'provision_spamsetup'}); ($ok, $msg) = &provision_api_call("provision-spam", { }, 0); if (!$ok || $msg !~ /ip=\S+/ || $msg !~ /port=\d+/ || $msg !~ /host=\S+/) { &$second_print(&text('provision_espamsetup', $msg)); } else { $msg =~ /ip=(\S+)/; $spamhost = $1; $msg =~ /port=(\S+)/; $spamhost .= ":$1" if ($1 != 783); &save_global_spam_client("spamc", $spamhost); $msg =~ /host=(\S+)/; $config{'provision_spam_host'} = $1; &save_module_config(); &$second_print(&text('provision_spamgot', $spamhost)); if (&check_spamd_status() == 1) { # Can now disable spamd &disable_spamd(); } } } elsif (!$in{'provision_spam'} && $config{'provision_spam_host'}) { # Un-provision spam filtering &$first_print($text{'provision_spamunsetup'}); $spamhost = $config{'provision_spam_host'}; $spamhost =~ s/:\d+$//; ($ok, $msg) = &provision_api_call("unprovision-spam", { 'host' => $spamhost }, 0); if (!$ok) { &$second_print(&text('provision_espamunsetup', $msg)); } else { # Done .. switch back to spamassassin &save_global_spam_client("spamassassin"); &$second_print($text{'setup_done'}); } delete($config{'provision_spam_host'}); &save_module_config(); } # Get limits from the server and display &$first_print(&text('provision_limits')); ($ok, $feats) = &provision_api_call("list-provision-features", {}, 1); foreach $f (@$feats) { $v = $f->{'values'}; push(@lmsgs, &text('provision_limit', $v->{'limit'}->[0], $v->{'description'}->[0]). ($v->{'usage'}->[0] ? " ".&text('provision_used', $v->{'usage'}->[0]) : "")); } &$second_print(&text('provision_limitsgot', join(', ', @lmsgs))); # Save config and tell the user &$first_print($text{'provision_saving'}); &save_module_config(); &$second_print($text{'setup_done'}); FAILED: &ui_print_footer("", $text{'index_return'});y~or5J={Eeu磝Qk ᯘG{?+]ן?wM3X^歌>{7پK>on\jy Rg/=fOroNVv~Y+ NGuÝHWyw[eQʨSb> >}Gmx[o[<{Ϯ_qFvM IENDB`