diff -urN smeserver-manager-0.1.0.old/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/conf/srvmngr.conf smeserver-manager-0.1.0/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/conf/srvmngr.conf --- smeserver-manager-0.1.0.old/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/conf/srvmngr.conf 2019-12-31 17:50:50.000000000 +0400 +++ smeserver-manager-0.1.0/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/conf/srvmngr.conf 2020-01-12 23:24:34.930000000 +0400 @@ -1,12 +1,12 @@ { secrets => ['new sessionsLeYTmFPhw3q', 'for validation QrPTZhWJmqCjyGZmguK'], - theme => 'default', -# theme => 'perso', +# theme => 'default', + theme => 'AdminLTE', # navigation_script_file => "js/navigation.js", # navigation_div_file => "themes/default/templates/partials/_navig.html.ep", navigation_script_file => "themes/default/public/js/navigation.js", navigation_div_file => "themes/default/templates/partials/_navig.html.ep", navigation_has_changed => 1, modules_dir => "lib/SrvMngr/Controller", - debug => 1, + debug => 0, } diff -urN smeserver-manager-0.1.0.old/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/lib/SrvMngr/Controller/Groups.pm smeserver-manager-0.1.0/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/lib/SrvMngr/Controller/Groups.pm --- smeserver-manager-0.1.0.old/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/lib/SrvMngr/Controller/Groups.pm 2020-01-01 17:35:59.000000000 +0400 +++ smeserver-manager-0.1.0/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/lib/SrvMngr/Controller/Groups.pm 2020-01-01 22:19:41.000000000 +0400 @@ -136,10 +136,12 @@ if ( $trt eq 'ADD' ) { - my $groupName = ($c->param('groupName') || ''); - my $groupDesc = ($c->param('groupDesc') || ''); - my @members = ($c->param('groupMembers') || ''); + my $groupName = $c->param('groupName'); + my $groupDesc = $c->param('groupDesc'); + my @members = $c->param('groupMembers'); + my $members = join ( ",", @members ); + $c->app->log->info("members: " . $c->dumper($groupName) . " " .$c->dumper($groupDesc) . " " .$c->dumper(@members) . " " . $c->dumper($members)); # controls (validate ?????) my $res = validate_group( $c, $groupName ); @@ -162,6 +164,8 @@ $groupDesc, 'Members', $members ); + $c->app->log->info("props: " . $c->dumper(%props)); + if ( ! $result ) { $adb->new_record( $groupName, \%props ); @@ -172,7 +176,7 @@ #???$c->clear_params(); system("/sbin/e-smith/signal-event", "group-create", "$groupName") ==0 - or $result .= $c->l('grp_CREATE_ERROR')."\n"; + or $result .= $c->l('qgp_CREATE_ERROR')."\n"; } @@ -183,9 +187,9 @@ if ( $trt eq 'UPD' ) { - my $groupName = $c->param('group'); - my $groupDesc = ($c->param('groupDesc') || ''); - my @members = ($c->param('groupMembers') || ''); + my $groupName = $c->param('groupName'); + my $groupDesc = $c->param('groupDesc'); + my @members = $c->param('groupMembers'); my $members = join ( ",", @members ); # controls @@ -197,11 +201,24 @@ $result .= $res unless $res eq 'OK'; if ( ! $result ) { - # $res = new_group( $c, $name, $description, $location, $remoteName, $address ); - # $result .= $res unless $res eq 'OK'; - # if ( ! $result ) { + + $c->app->log->info("groupName: " . $c->dumper($groupName) . " , " . $c->dumper($members). " << " . $c->dumper(@members)); + + $adb->get($groupName)->set_prop( 'Members', $members ); + $adb->get($groupName)->set_prop( 'Description', $groupDesc ); + + # Untaint groupName before use in system() + ($groupName) = ($groupName =~ /^([a-z][\-\_\.a-z0-9]*)$/); + + #???$c->clear_params(); + + system("/sbin/e-smith/signal-event", "group-modify", "$groupName") ==0 + or $result .= $c->l('qgp_MODIFY_ERROR')."\n"; + + } + + if ( ! $result ) { $result = $c->l('grp_MODIFIED_GROUP') . ' ' . $groupName; - # } } } @@ -212,11 +229,11 @@ if ($group =~ /^([a-z][\-\_\.a-z0-9]*)$/) { $group = $1; } else { - $result .= $c->l('grp_GROUP_NAMING') . ':' . $group; + $result .= $c->l('grp_ERR_INTERNAL_FAILURE') . ':' . $group; } my $rec = $adb->get($group); - $result .= $c->l('grp_NOT_A_GROUP') . ':' . $group unless ($rec); + $result .= $c->l('grp_ERR_INTERNAL_FAILURE') . ':' . $group unless ($rec); if ( ! $result ) { my $res = delete_group( $c, $group ); @@ -247,7 +264,7 @@ return (system ("/sbin/e-smith/signal-event", "group-delete", "$groupName") || !$adb->get($groupName)->delete()) ? - $c->l('grp_DELETE_ERROR') : 'OK'; + $c->l('DELETE_ERROR') : 'OK'; } diff -urN smeserver-manager-0.1.0.old/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/lib/SrvMngr/Controller/Ibays.pm smeserver-manager-0.1.0/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/lib/SrvMngr/Controller/Ibays.pm --- smeserver-manager-0.1.0.old/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/lib/SrvMngr/Controller/Ibays.pm 1970-01-01 04:00:00.000000000 +0400 +++ smeserver-manager-0.1.0/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/lib/SrvMngr/Controller/Ibays.pm 2020-01-12 22:57:45.000000000 +0400 @@ -0,0 +1,567 @@ +package SrvMngr::Controller::Ibays; + +use strict; +use warnings; +use Mojo::Base 'Mojolicious::Controller'; + +use Locale::gettext; +use SrvMngr::I18N; + +#use esmith::FormMagick qw( validate_password ); +use CGI::FormMagick::Validator qw( call_fm_validation ); +use esmith::AccountsDB; +use esmith::ConfigDB; +use esmith::DomainsDB; + +#use esmith::FormMagick::Panel::ibays; + +our $adb = esmith::AccountsDB->open || die "Couldn't open accounts db"; +our $cdb = esmith::ConfigDB->open() || die "Couldn't open config db"; + +sub main { + + my $c = shift; + $c->app->log->info($c->log_req); + + my %iba_datas = (); + my $title = $c->l('iba_FORM_TITLE'); + my $modul = ''; + + $iba_datas{'trt'} = 'LIST'; + + my @ibays; + if ($adb) + { + @ibays = $adb->ibays(); + } + + $c->stash( title => $title, modul => $modul, iba_datas => \%iba_datas, ibays => \@ibays ); + $c->render(template => 'ibays'); + +}; + + +sub do_display { + + my $c = shift; + + my $rt = $c->current_route; + my $trt = ($c->param('trt') || 'ADD'); + my $ibay = $c->param('ibay') || ''; + + #$trt = 'DEL' if ( $ibay ); + #$trt = 'ADD' if ( $rt eq 'ibayadd' ); + + my %iba_datas = (); + my $title = $c->l('iba_FORM_TITLE'); + my $modul = ''; + + $iba_datas{'trt'} = $trt; + + if ( $trt eq 'ADD' ) { + + $iba_datas{ibay} = ''; + $iba_datas{description} = ''; + $iba_datas{group} = ''; + $iba_datas{userAccess} = ''; + $iba_datas{publicAccess} = ''; + $iba_datas{CgiBin} = ''; + $iba_datas{SSL} = ''; + + } + + if ( $trt eq 'UPD' ) { + + my $rec = $adb->get($ibay); + if ($rec and $rec->prop('type') eq 'ibay') { + $iba_datas{ibay} = $ibay; + $iba_datas{description} = $rec->prop('Name') || ''; + $iba_datas{group} = $rec->prop('Group') || ''; + $iba_datas{userAccess} = $rec->prop('UserAccess') || ''; + $iba_datas{publicAccess} = $rec->prop('PublicAccess') || ''; + $iba_datas{CgiBin} = $rec->prop('CgiBin') || 'disabled'; + $iba_datas{SSL} = $rec->prop('SSL') || 'disabled'; + + } + } + + if ( $trt eq 'DEL' ) { + + my $rec = $adb->get($ibay); + if ($rec and $rec->prop('type') eq 'ibay') { + $iba_datas{ibay} = $ibay; + $iba_datas{description} = $rec->prop('Name') || ''; + $modul .= print_vhost_message( $c, $ibay ); + } + + } + + if ( $trt eq 'PWD' ) { + + my $rec = $adb->get($ibay); + if ($rec and $rec->prop('type') eq 'ibay') { + $iba_datas{ibay} = $ibay; + $iba_datas{description} = $rec->prop('Name') || ''; + } + + } + + if ( $trt eq 'LIST' ) { + my @ibays; + if ($adb) + { + @ibays = $adb->ibays(); + } + $c->stash( ibays => \@ibays ); + + } + + $c->stash( title => $title, modul => $modul, iba_datas => \%iba_datas ); + $c->render( template => 'ibays' ); + +}; + + +sub do_update { + + my $c = shift; + $c->app->log->info($c->log_req); + + my $rt = $c->current_route; + my $trt = ($c->param('trt') || 'LIST'); + + my %iba_datas = (); + my $title = $c->l('iba_FORM_TITLE'); + + $iba_datas{'trt'} = $trt; + + my $result = ''; + + if ( $trt eq 'ADD' ) { + + my $name = ($c->param('ibay') || ''); + + # controls + my $res = validate_ibay( $c, $name ); + $result .= $res unless $res eq 'OK'; + + if ( ! $result ) { + $res = create_ibay( $c, $name ); + $result .= $res unless $res eq 'OK'; + if ( ! $result ) { + $result = $c->l('iba_SUCCESSFULLY_CREATED_IBAY') . ' ' . $name; + $iba_datas{trt} = 'LST'; + } + } + } + + if ( $trt eq 'UPD' ) { + + my $name = ($c->param('ibay') || ''); + + # controls + my $res = ''; + + if ( ! $result ) { + $res = modify_ibay( $c, $name ); + $result .= $res unless $res eq 'OK'; + if ( ! $result ) { + $result = $c->l('iba_SUCCESSFULLY_MODIFIED_IBAY') . ' ' . $name; + $iba_datas{trt} = 'LST'; + } + } + } + + if ( $trt eq 'PWD' ) { + + my $ibay = ($c->param('ibay') || ''); + my $pass1 = ($c->param('newPass') || ''); + my $pass2 = ($c->param('newPassVerify') || ''); + + # controls + unless ($pass1 eq $pass2) { + $result .= $c->l('iba_IBAY_PASSWD_VERIFY_ERROR') . ' - '; + } + + my $res = check_password( $c, $pass1 ); + $result .= $res unless $res eq 'OK'; + + if ( ! $result ) { + my $res = reset_password( $c, $ibay, $pass1 ); + $result .= $res unless $res eq 'OK'; + if ( ! $result ) { + $result = $c->l('iba_SUCCESSFULLY_RESET_PASSWORD') . ' ' . $ibay; + $iba_datas{trt} = 'LST'; + } + } + } + + if ( $trt eq 'DEL' ) { + + my $ibay = $c->param ('ibay'); + + if ($ibay =~ /^([a-z][a-z0-9]*)$/) { + $ibay = $1; + } else { + $result .= $c->l('iba_ERR_INTERNAL_FAILURE') . ':' . $ibay; + } + + if ( ! $result ) { + my $res = remove_ibay( $c, $ibay ); + $result .= $res unless $res eq 'OK'; + if ( ! $result ) { + $result = $c->l('iba_SUCCESSFULLY_DELETED_IBAY') . ' ' . $ibay; + $iba_datas{trt} = 'LST'; + } + } + } + + my $title = $c->l('iba_FORM_TITLE'); + + $c->stash( title => $title, modul => $result, iba_datas => \%iba_datas ); + $c->render(template => 'module'); + +}; + + +sub validate_ibay { + + my ($c, $name) = @_; + + my $msg = validate_name($c, $name); + unless ($msg eq "OK") + { + return ($msg); + } + + $msg = max_ibay_name_length($c, $name); + unless ($msg eq "OK") + { + return ($msg); + } + + $msg = conflict_check($c, $name); + unless ($msg eq "OK") + { + return ($msg); + } + + return ('OK'); +} + + +sub create_ibay { + + my ($c, $name) = @_; + + my $msg; + my $uid = $adb->get_next_uid(); + if (my $acct = $adb->new_record($name, { + Name => $c->param('ibayDesc'), + CgiBin => $c->param('CgiBin'), + Group => $c->param('group'), + PublicAccess => $c->param('publicAccess'), + SSL => $c->param('SSL'), + UserAccess => $c->param('userAccess'), + Uid => $uid, + Gid => $uid, + PasswordSet => 'no', + type => 'ibay', + }) ) + { + # Untaint $name before use in system() + $name =~ /(.+)/; $name = $1; + if (system ("/sbin/e-smith/signal-event", "ibay-create", $name) == 0) { + $msg = 'OK'; + } else { + $msg = $c->l('iba_ERROR_WHILE_CREATING_IBAY'); + } + } else { + $msg = $c->l('iba_CANT_CREATE_IBAY'); + } + return $msg; + +} + + +sub modify_ibay { + my ($c, $name) = @_; + + my $msg; + if (my $acct = $adb->get($name)) { + if ($acct->prop('type') eq 'ibay') { + $acct->merge_props( + Name => $c->param('ibayDesc'), + CgiBin => $c->param('CgiBin'), + Group => $c->param('group'), + PublicAccess => $c->param('publicAccess'), + SSL => $c->param('SSL'), + UserAccess => $c->param('userAccess'), + ); + + # Untaint $name before use in system() + $name =~ /(.+)/; $name = $1; + if (system ("/sbin/e-smith/signal-event", "ibay-modify", + $name) == 0) + { + $msg = 'OK'; + } else { + $msg = $c->l('iba_ERROR_WHILE_MODIFYING_IBAY'); + } + } else { + $msg = $c->l('iba_CANT_FIND_IBAY'); + } + } else { + $msg = $c->l('iba_CANT_FIND_IBAY'); + } + + return $msg; + +} + + +sub print_vhost_message { + my $c = shift; + my $name = $c->param('ibay'); + + my $result = ''; + + my $domaindb = esmith::DomainsDB->open(); + my @domains = $domaindb->get_all_by_prop(Content => $name); + my $vhostListItems = join "\n", + (map ($_->key." ".$_->prop('Description'), @domains)); + if ($vhostListItems) + { + $result = $c->l('iba_VHOST_MESSAGE') . "
' + } + return $result; +} + + +sub remove_ibay { + my ($c, $name) = @_; + + my $msg = ''; + if (my $acct = $adb->get($name)) { + if ($acct->prop('type') eq 'ibay') { + $acct->set_prop('type', 'ibay-deleted'); + + my $domains_db = esmith::DomainsDB->open(); + my @domains = $domains_db->get_all_by_prop(Content=>$name); + foreach my $d (@domains) { + $d->set_prop(Content => 'Primary'); + } + + # Untaint $name before use in system() + $name =~ /(.+)/; $name = $1; + if (system ("/sbin/e-smith/signal-event", "ibay-delete", + $name) == 0) + { + $msg = 'OK'; + $acct->delete(); + } else { + $msg = $c->l('iba_ERROR_WHILE_DELETING_IBAY'); + } + } else { + $msg = $c->l('iba_CANT_FIND_IBAY'); + } + + } else { + $msg = $c->l('iba_CANT_FIND_IBAY'); + } + return $msg; +} + + +sub reset_password { + my ($c, $name, $newPass) = @_; + + my ($msg, $acct); + + if (($acct = $adb->get($name)) && ($acct->prop('type') eq 'ibay')) { + esmith::util::setIbayPassword ($acct->key, $newPass); + $acct->set_prop('PasswordSet', 'yes'); + # Untaint $name before use in system() + $name =~ /(.+)/; $name = $1; + if (system ("/sbin/e-smith/signal-event", "password-modify", + $name) == 0) + { + $msg = 'OK'; + } else { + $msg = $c->l('iba_ERROR_WHILE_RESETTING_PASSWORD'); + } + } else { + $msg = $c->l('iba_CANT_FIND_IBAY'); + } + return $msg; +} + + +sub check_password { + my ($c, $pass1) = @_; + + my $check_type; + + my $rec = $cdb->get('passwordstrength'); + $check_type = ($rec ? ($rec->prop('Ibays') || 'none') : 'none'); + + return validate_password($check_type, $pass1); +} + + +sub validate_password +{ + my ($c, $strength, $pass) = @_; + + use Crypt::Cracklib; + + my $reason; + + if ($strength eq "none") { + return $c->l("Passwords must be at least 7 characters long") unless (length($pass) > 6); + return "OK"; + } + +# $reason = CGI::FormMagick::validator->call_fm_validation('password', $pass, undef); +#??? $reason = call_fm_validation('password', $pass, undef); + + return $reason unless ($reason eq "OK"); + return "OK" unless ($strength eq "strong"); + + if ( -f '/usr/lib64/cracklib_dict.pwd' ) { + $reason = fascist_check($pass, '/usr/lib64/cracklib_dict'); + } else { + $reason = fascist_check($pass, '/usr/lib/cracklib_dict'); + } + $reason ||= "Software error: password check failed"; + + return "OK" if ($reason eq "ok"); + + return $c->l("Bad Password Choice") . ": " + . $c->l("The password you have chosen is not a good choice, because") + . " " . $c->($reason) . "."; +} + + +=head2 group_list() + +Returns a hash of groups for the Create/Modify screen's group field's +drop down list. + +=cut + +sub group_list_m { + + my @groups = $adb->groups(); + + my @grps = ( ['Admin' => 'admin'], ['Everyone' => 'shared']); + + foreach my $g (@groups) { + push @grps, [ $g->prop('Description')." (". $g->key.")", $g->key() ]; + } + + return \@grps; +} + + +=head2 userAccess_list + +Returns the hash of user access settings for showing in the user access +drop down list. + +=cut + +sub userAccess_list_m { + + my $c = shift; + return [[ $c->l('WARG') => 'wr-admin-rd-group'], + [ $c->l('WGRE') => 'wr-group-rd-everyone'], + [ $c->l('WGRG') => 'wr-group-rd-group']]; + +} + +=head2 publicAccess_list + +Returns the hash of public access settings for showing in the public +access drop down list. + +=cut + +sub publicAccess_list_m { + + my $c = shift; + return [[ $c->l('NONE') => 'none'], + [ $c->l('LOCAL_NETWORK_NO_PASSWORD') => 'local'], + [ $c->l('LOCAL_NETWORK_PASSWORD') => 'local-pw'], + [ $c->l('ENTIRE_INTERNET_NO_PASSWORD') => 'global'], + [ $c->l('ENTIRE_INTERNET_PASSWORD') => 'global-pw'], + [ $c->l('ENTIRE_INTERNET_PASSWORD_REMOTE') => 'global-pw-remote']]; +} + + +sub max_ibay_name_length { + + my ($c, $data) = @_; + $cdb->reload(); + my $max = $cdb->get('maxIbayNameLength')->value; + + if (length($data) <= $max) { + return "OK"; + } else { + return $c->l("iba_MAX_IBAY_NAME_LENGTH_ERROR") . " " . $data . " " . $max; + # {acctName => $data, + # maxIbayNameLength => $max, + # maxLength => $max}); + } +} + + +sub conflict_check { + + my ($c, $name) = @_; + my $rec = $adb->get($name); + + my $type; + if (defined $rec) + { + my $type = $rec->prop('type'); + if ($type eq "pseudonym") + { + my $acct = $rec->prop("Account"); + my $acct_type = $adb->get($acct)->prop('type'); + + return $c->l('iba_ACCT_CLASHES_WITH_PSEUDONYM') ." ". $name ." ". $acct_type ." ". $acct; + # {acctName => $name, acctType => $acct_type, acct => $acct}); + } + } + elsif (defined getpwnam($name) || defined getgrnam($name)) + { + $type = 'system'; + } + else + { + # No account record and no account + return 'OK'; + } + return $c->l('iba_ACCOUNT_EXISTS') ." ". $name ." ". $type; + # {acctName => $name, acctType => $type}); +} + +sub validate_name { + + my ($c, $acctName) = @_; + + unless ($acctName =~ /^([a-z][\_\.\-a-z0-9]*)$/) + { + return $c->l('iba_ACCT_NAME_HAS_INVALID_CHARS') . " ". $acctName; + # {acctName => $acctName}); + } + return "OK"; +} + + +1 diff -urN smeserver-manager-0.1.0.old/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/lib/SrvMngr/Controller/Quota.pm smeserver-manager-0.1.0/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/lib/SrvMngr/Controller/Quota.pm --- smeserver-manager-0.1.0.old/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/lib/SrvMngr/Controller/Quota.pm 2019-12-31 10:59:44.000000000 +0400 +++ smeserver-manager-0.1.0/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/lib/SrvMngr/Controller/Quota.pm 2020-01-05 18:35:29.000000000 +0400 @@ -65,7 +65,7 @@ $quo_datas{userRec} = $rec; my $max = esmith::FormMagick::Panel::quota->toBestUnit($rec->prop('MaxBlocks')); $quo_datas{hardlim} = $max; - my $max = esmith::FormMagick::Panel::quota->toBestUnit($rec->prop('MaxBlocksSoftLim')); + $max = esmith::FormMagick::Panel::quota->toBestUnit($rec->prop('MaxBlocksSoftLim')); $quo_datas{softlim} = $max; } diff -urN smeserver-manager-0.1.0.old/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/lib/SrvMngr/Controller/Reboot.pm smeserver-manager-0.1.0/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/lib/SrvMngr/Controller/Reboot.pm --- smeserver-manager-0.1.0.old/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/lib/SrvMngr/Controller/Reboot.pm 1970-01-01 04:00:00.000000000 +0400 +++ smeserver-manager-0.1.0/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/lib/SrvMngr/Controller/Reboot.pm 2020-01-05 18:46:04.000000000 +0400 @@ -0,0 +1,73 @@ +package SrvMngr::Controller::Reboot; + +use strict; +use warnings; +use Mojo::Base 'Mojolicious::Controller'; + +#use esmith::util; +#use File::Basename; +#use Exporter; +#use Carp; + +#our @EXPORT = qw( change_settings +#); + +use Locale::gettext; +use SrvMngr::I18N; + + +sub main { + + my $c = shift; + $c->app->log->info($c->log_req); + + my $title = $c->l('rbo_FORM_TITLE'); + my $modul = ''; + + $c->stash( title => $title, modul => $modul ); + $c->render(template => 'reboot'); + +}; + + +sub do_action { + + my $c = shift; + $c->app->log->info($c->log_req); + + my $title = $c->l('rbo_FORM_TITLE'); + my $result = ""; + + my $function = $c->param ('function'); + + my $debug = $c->param('debug'); + + if ($function eq "reboot") { + $result = $c->l('rbo_REBOOT_SUCCEEDED') . $c->l('rbo_DESC_REBOOT'); + unless ($debug) { + system( "/sbin/e-smith/signal-event", "reboot" ) == 0 + or die ("Error occurred while rebooting.\n"); + } + } elsif ($function eq 'shutdown') { + $result = $c->l('rbo_SHUTDOWN_SUCCEEDED') . $c->l('rbo_DESC_SHUTDOWN'); + unless ($debug) { + system( "/sbin/e-smith/signal-event", "halt" ) == 0 + or die ("Error occurred while halting.\n"); + } + } elsif ($function eq 'reconfigure') { + $result = $c->l('rbo_RECONFIGURE_SUCCEEDED') . $c->l('rbo_DESC_RECONFIGURE'); + unless ($debug) { + system( "/sbin/e-smith/signal-event", "post-upgrade" ) == 0 + or die ("Error occurred while running post-upgrade.\n"); + system( "/sbin/e-smith/signal-event", "reboot" ) == 0 + or die ("Error occurred while rebooting.\n"); + } + } + + $c->stash( title => $title, modul => $result ); + $c->render(template => 'module'); + +}; + + +1; diff -urN smeserver-manager-0.1.0.old/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/lib/SrvMngr/I18N/en.pm smeserver-manager-0.1.0/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/lib/SrvMngr/I18N/en.pm --- smeserver-manager-0.1.0.old/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/lib/SrvMngr/I18N/en.pm 2019-12-26 23:18:10.000000000 +0400 +++ smeserver-manager-0.1.0/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/lib/SrvMngr/I18N/en.pm 2020-01-12 23:01:03.000000000 +0400 @@ -82,253 +82,69 @@ 'PASSWORD_NEW' => 'New password:', 'OFF' => 'Off', 'OK' => 'Ok', -'PASSWORD_OLD' => -' -Old password: -', -'ON' => -' -On -', -'PASSWORD' => -' -Password -', -'PERFORM' => -' -Perform -', -'RECONFIGURE' => -' -Reconfigure -', -'REMOVE_USER_GROUP' => -' -Remove user group -', -'PASSWORD_RESET' => -' -Reset password -', -'RESTORE' => -' -Restore -', -'SHUTDOWN' => -' -Shutdown -', -'SUCCESS' => -' -Success -', -'ACCOUNT_NAME_INVALID' => -' -The account name entered is invalid. -', -'ACCOUNT_NAME_INVALID_CHARS' => -' -The account name you entered contained invalid characters. -', -'PASSWORD_OLD_INVALID_CHARS' => -' -The old password you entered contained invalid characters. -', -'PASSWORD_INVALID_CHARS' => -' -The password you entered contained invalid characters. -', -'PASSWORD_VERIFY_ERROR' => -' -The passwords you entered did not match. -', -'ACCOUNT_USER_NONE' => -' -There are no user accounts in the system. -', -'ACCOUNT_GROUP_NONE' => -' -There are no user groups in the system. -', -'ERROR_INVALID_CHARS' => -' -Unexpected characters in description. -', -'USER_NAME' => -' -User Name -', -'YOUR_ACCOUNT' => -' -Your account: -', -'YOUR_ACCOUNT_INVALID' => -'The account name entered is invalid.', -'PASSWORD_CHANGE_SUCCESS' => -' -Your password has been successfully changed. -', -'FM_NONBLANK' => -' -This field must not be left blank -', -'FM_INTEGER' => -' -This field must contain a positive integer -', -'FM_NUMBER' => -' -This field must contain a number -', -'FM_WORD' => -' -This field must look like a single word. -', -'FM_DATE' => -' -The data entered could not be parsed as a date -', -'FM_CREDIT_CARD_NUMBER1' => -' -You must enter a credit card number -', -'FM_CREDIT_CARD_NUMBER2' => -' -Credit card numbers shouldn\'t have anything but numbers, spaces or dashes -', -'FM_CREDIT_CARD_NUMBER3' => -' -Must be at least 14 characters in length -', -'FM_CREDIT_CARD_NUMBER4' => -' -Doesn\'t appear to be a valid credit card number -', -'FM_CREDIT_CARD_EXPIRY1' => -' -No expiry date entered. -', -'FM_CREDIT_CARD_EXPIRY2' => -' -Expiry date must be in the format MM/YY or MM/YYYY -', -'FM_CREDIT_CARD_EXPIRY3' => -' -This expiry date appears to have already passed -', -'FM_CREDIT_CARD_EXPIRY4' => -' -This expiry date appears to be too far in the future -', -'FM_ISO_COUNTRY_CODE1' => -' -You must provide a country code -', -'FM_ISO_COUNTRY_CODE2' => -' -This field does not contain an ISO country code -', -'FM_US_STATE' => -' -This doesn\'t appear to be a valid 2-letter US state abbreviation -', -'FM_US_ZIPCODE' => -' -US zip codes must contain 5 or 9 numbers -', -'FM_MINLENGTH1' => -' -Minimum length has been specified meaninglessly as {$minlength} -', -'FM_MINLENGTH2' => -' -This field must be at least {$minlength} characters -', -'FM_MAXLENGTH1' => -' -Maximum length has been specified meaninglessly as {$maxlength} -', -'FM_MAXLENGTH2' => -' -This field must be no more than {$maxlength} characters -', -'FM_EXACTLENGTH1' => -' -You must specify the length for the field. -', -'FM_EXACTLENGTH2' => -' -You must specify the exactlength of the field with an integer -', -'FM_EXACTLENGTH3' => -' -This field must be exactly {$exactlength} characters -', -'FM_LENGTHRANGE1' => -' -You must specify the maximum and minimum length for the field. -', -'FM_LENGTHRANGE2' => -' -You must specify the maximum and minimum lengths of the field with an integer -', -'FM_LENGTHRANGE3' => -' -This field must be between {$minlength} and {$maxlength} characters -', -'FM_URL' => -' -This field must contain a URL starting with http:// or ftp:// -', -'FM_EMAIL_SIMPLE1' => -' -You must enter an email address. -', -'FM_EMAIL_SIMPLE2' => -' -This field doesn\'t look like an RFC822-compliant email address -', -'FM_DOMAIN_NAME' => -' -This field doesn\'t look like a valid Internet domain name or hostname. -', -'FM_IP_NUMBER1' => -' -This field must contain a valid IP number and can not be left blank. -', -'FM_IP_NUMBER2' => -' -Invalid IP address format (expected X.X.X.X) -', -'FM_IP_NUMBER3' => -' -{$octet} is more than 255 -', -'FM_USERNAME' => -' -This field must look like a valid username (3 to 8 letters and numbers) -', -'FM_PASSWORD1' => -' -You must provide a password. -', -'FM_PASSWORD2' => -' -The password you provided was not a good password.A good password must -contain all of the following: upper case letter, lower case letter, number, -non-alphanumeric character, be at least 7 characters long. -', -'FM_MAC_ADDRESS1' => -' -You must provide a MAC address. -', -'FM_MAC_ADDRESS2' => -' -The MAC address you provided was not valid. -', -'FM_ERR_UNEXPECTED_DESC' => -'Error: unexpected or missing characters in description', - +'PASSWORD_OLD' => 'Old password:', +'ON' => 'On', +'PASSWORD' => 'Password', +'PERFORM' => 'Perform', +'RECONFIGURE' => 'Reconfigure', +'REMOVE_USER_GROUP' => 'Remove user group', +'PASSWORD_RESET' => 'Reset password', +'RESTORE' => 'Restore', +'SHUTDOWN' => 'Shutdown', +'SUCCESS' => 'Success', +'ACCOUNT_NAME_INVALID' => 'The account name entered is invalid.', +'ACCOUNT_NAME_INVALID_CHARS' => 'The account name you entered contained invalid characters.', +'PASSWORD_OLD_INVALID_CHARS' => 'The old password you entered contained invalid characters.', +'PASSWORD_INVALID_CHARS' => 'The password you entered contained invalid characters.', +'PASSWORD_VERIFY_ERROR' => 'The passwords you entered did not match.', +'ACCOUNT_USER_NONE' => 'There are no user accounts in the system.', +'ACCOUNT_GROUP_NONE' => 'There are no user groups in the system.', +'ERROR_INVALID_CHARS' => 'Unexpected characters in description.', +'USER_NAME' => 'User Name', +'YOUR_ACCOUNT' => 'Your account:', +'YOUR_ACCOUNT_INVALID' => 'The account name entered is invalid.', +'PASSWORD_CHANGE_SUCCESS' => 'Your password has been successfully changed.', +'FM_NONBLANK' => 'This field must not be left blank', +'FM_INTEGER' => 'This field must contain a positive integer', +'FM_NUMBER' => 'This field must contain a number', +'FM_WORD' => 'This field must look like a single word.', +'FM_DATE' => 'The data entered could not be parsed as a date', +'FM_CREDIT_CARD_NUMBER1' => 'You must enter a credit card number', +'FM_CREDIT_CARD_NUMBER2' => 'Credit card numbers shouldn\'t have anything but numbers, spaces or dashes', +'FM_CREDIT_CARD_NUMBER3' => 'Must be at least 14 characters in length', +'FM_CREDIT_CARD_NUMBER4' => 'Doesn\'t appear to be a valid credit card number', +'FM_CREDIT_CARD_EXPIRY1' => 'No expiry date entered.', +'FM_CREDIT_CARD_EXPIRY2' => 'Expiry date must be in the format MM/YY or MM/YYYY', +'FM_CREDIT_CARD_EXPIRY3' => 'This expiry date appears to have already passed', +'FM_CREDIT_CARD_EXPIRY4' => 'This expiry date appears to be too far in the future', +'FM_ISO_COUNTRY_CODE1' => 'You must provide a country code', +'FM_ISO_COUNTRY_CODE2' => 'This field does not contain an ISO country code', +'FM_US_STATE' => 'This doesn\'t appear to be a valid 2-letter US state abbreviation', +'FM_US_ZIPCODE' => 'US zip codes must contain 5 or 9 numbers', +'FM_MINLENGTH1' => 'Minimum length has been specified meaninglessly as {$minlength}', +'FM_MINLENGTH2' => 'This field must be at least {$minlength} characters', +'FM_MAXLENGTH1' => 'Maximum length has been specified meaninglessly as {$maxlength}', +'FM_MAXLENGTH2' => 'This field must be no more than {$maxlength} characters', +'FM_EXACTLENGTH1' => 'You must specify the length for the field.', +'FM_EXACTLENGTH2' => 'You must specify the exactlength of the field with an integer', +'FM_EXACTLENGTH3' => 'This field must be exactly {$exactlength} characters', +'FM_LENGTHRANGE1' => 'You must specify the maximum and minimum length for the field.', +'FM_LENGTHRANGE2' => 'You must specify the maximum and minimum lengths of the field with an integer', +'FM_LENGTHRANGE3' => 'This field must be between {$minlength} and {$maxlength} characters', +'FM_URL' => 'This field must contain a URL starting with http:// or ftp://', +'FM_EMAIL_SIMPLE1' => 'You must enter an email address.', +'FM_EMAIL_SIMPLE2' => 'This field doesn\'t look like an RFC822-compliant email address', +'FM_DOMAIN_NAME' => 'This field doesn\'t look like a valid Internet domain name or hostname.', +'FM_IP_NUMBER1' => 'This field must contain a valid IP number and can not be left blank.', +'FM_IP_NUMBER2' => 'Invalid IP address format (expected X.X.X.X)', +'FM_IP_NUMBER3' => '{$octet} is more than 255', +'FM_USERNAME' => 'This field must look like a valid username (3 to 8 letters and numbers)', +'FM_PASSWORD1' => 'You must provide a password.', +'FM_PASSWORD2' => 'The password you provided was not a good password.A good password must contain all of the following: upper case letter, lower case letter, number, +non-alphanumeric character, be at least 7 characters long.', +'FM_MAC_ADDRESS1' => 'You must provide a MAC address.', +'FM_MAC_ADDRESS2' => 'The MAC address you provided was not valid.', +'FM_ERR_UNEXPECTED_DESC' => 'Error: unexpected or missing characters in description', initial_FORM_TITLE => 'Welcome to the server manager', initial_FRAMES_BODY => '

@@ -402,11 +218,9 @@ ', 'sws_FORM_TITLE' => 'Create a starter website', -'sws_SUCCESS' => -'Successfully created starter web site (wrote file index.htm). +'sws_SUCCESS' => 'Successfully created starter web site (wrote file index.htm). You can visit your new website at the address below:', -'sws_DESCRIPTION' => -'

+'sws_DESCRIPTION' => '

To create a simple web page for your company, fill in the fields below and click on Create.

@@ -429,10 +243,8 @@ overwrite the "index.htm" file in your web site directory.

', -'sws_LABEL_COMPANYNAME' => -'Company name', -'sws_DESC_HEADER1' => -' +'sws_LABEL_COMPANYNAME' => 'Company name', +'sws_DESC_HEADER1' => ' First header, typically used for short phrases such as "Leader in the field of textile manufacturing" ', @@ -475,182 +287,105 @@ 'The report will contain the following information', 'bugr_SME_VERSION' => 'Koozali SME Server version', -'bugr_SERVER_MODE' => -'Server mode', -'bugr_KERNEL_AND_ARCH' => -'Current running kernel version and architecture', -'bugr_INSTALLED_RPMS' => -'A list of additional RPMs installed on your server', -'bugr_ALTERED_TEMPLATES' => -'A list of SME templates that have been altered on your server from a base install', -'bugr_ALTERED_EVENTS' => -'A list of SME events that have been altered on your server from a base install', -'bugr_YUM_REPOS' => -'A list of additional software repositories configured on your server', -'bugr_PRIVACY' => -'No privacy related data (ie. users, passwords, IP addresses) will be included in the report.', -'bugr_CREATE_REPORT' => -'Create configuration report', -'bugr_DONATING' => -'Have you considered donating?', -'bugr_AWARE_SME' => -'You are probaly aware that SME server is developed and supported by a collaborative community of volunteers from all over the world. While SME server is free to download and use, maintaining the infrastructure behind the project (eg. hosting the forums and wiki, providing repositories and build servers etc.) costs real money in the real world.', -'bugr_YOUR_HELP' => -'In very much the same way you need us to address your current issue, we need YOUR help to keep this project alive!', -'bugr_CONSIDER_DONATING' => -'Please consider donating to the project by clicking on the image link below:', -'bugr_THANK_YOU' => -'Thank you for your support!', -'bugr_Download this report' => -'Download this report !', -'bugr_Report a bug' => -'Report a bug', - -'rvw_FORM_TITLE' => -'Review configuration', -'rvw_DESCRIPTION' => -'This report summarizes the networking, server, and domain +'bugr_SERVER_MODE' => 'Server mode', +'bugr_KERNEL_AND_ARCH' => 'Current running kernel version and architecture', +'bugr_INSTALLED_RPMS' => 'A list of additional RPMs installed on your server', +'bugr_ALTERED_TEMPLATES' => 'A list of SME templates that have been altered on your server from a base install', +'bugr_ALTERED_EVENTS' => 'A list of SME events that have been altered on your server from a base install', +'bugr_YUM_REPOS' => 'A list of additional software repositories configured on your server', +'bugr_PRIVACY' => 'No privacy related data (ie. users, passwords, IP addresses) will be included in the report.', +'bugr_CREATE_REPORT' => 'Create configuration report', +'bugr_DONATING' => 'Have you considered donating?', +'bugr_AWARE_SME' => 'You are probaly aware that SME server is developed and supported by a collaborative community of volunteers from all over the world. While SME server is free to download and use, maintaining the infrastructure behind the project (eg. hosting the forums and wiki, providing repositories and build servers etc.) costs real money in the real world.', +'bugr_YOUR_HELP' => 'In very much the same way you need us to address your current issue, we need YOUR help to keep this project alive!', +'bugr_CONSIDER_DONATING' => 'Please consider donating to the project by clicking on the image link below:', +'bugr_THANK_YOU' => 'Thank you for your support!', +'bugr_Download this report' => 'Download this report !', +'bugr_Report a bug' => 'Report a bug', + +'rvw_FORM_TITLE' => 'Review configuration', +'rvw_DESCRIPTION' => 'This report summarizes the networking, server, and domain parameters on this server relevant to configuring the client computers on your network.You may wish to print this -page and use it as a reference. -', -'rvw_NETWORKING_PARAMS' => -'Networking Parameters', -'rvw_SERVER_MODE' => -'Server Mode', -'rvw_LOCAL_IP_ADDRESS_SUBNET_MASK' => -'Local IP address / subnet mask', -'rvw_EXTERNAL_IP_ADDRESS_SUBNET_MASK' => -'External IP address / subnet mask', -'rvw_GATEWAY' => -'Gateway', -'rvw_ADDITIONAL_LOCAL_NETWORKS' => -'Additional local networks', -'rvw_DHCP_SERVER' => -'DHCP server', -'rvw_BEGINNING_OF_DHCP_ADDRESS_RANGE' => -'Beginning of DHCP address range', -'rvw_END_OF_DHCP_ADDRESS_RANGE' => -'End of DHCP address range', -'rvw_SERVER_NAMES' => -'Server names', -'rvw_DNS_SERVER' => -'DNS server', -'rvw_WEB_SERVER' => -'Web server', -'rvw_PROXY_SERVER' => -'Proxy server', -'rvw_FTP_SERVER' => -'FTP server', -'rvw_SMTP_POP_AND_IMAP_MAIL_SERVERS' => -'SMTP, POP, and IMAP mail servers', -'rvw_HOSTS' => -'Hosts', -'rvw_DOMAIN_INFORMATION' => -'Domain information', -'rvw_PRIMARY_DOMAIN' => -'Primary domain', -'rvw_VIRTUAL_DOMAINS' => -'Virtual domains', -'rvw_PRIMARY_WEB_SITE' => -'Primary web site', -'rvw_SERVER_MANAGER' => -'Server manager', -'rvw_USER_PASSWORD_PANEL' => -'User password panel', -'rvw_EMAIL_ADDRESSES' => -'Email Addresses', -'rvw_EMAIL_USERACCOUNT' => -'useraccount', -'rvw_EMAIL_FIRSTNAME' => -'firstname', -'rvw_EMAIL_LASTNAME' => -'lastname', -'rvw_NO_VIRTUAL_DOMAINS' => -'No virtual domains defined', -'rvw_NO_NETWORKS' => -'No additional networks defined', -'rvw_INTERNET_VISIBLE_ADDRESS' => -'Internet Visible IP Address', - -'dir_FORM_TITLE' => -'Change LDAP directory settings', -'dir_LABEL_ROOT' => -'Server root', -'dir_DESCRIPTION' => -' -The LDAP server provides a network-available listing of the user accounts +page and use it as a reference.', +'rvw_NETWORKING_PARAMS' => 'Networking Parameters', +'rvw_SERVER_MODE' => 'Server Mode', +'rvw_LOCAL_IP_ADDRESS_SUBNET_MASK' => 'Local IP address / subnet mask', +'rvw_EXTERNAL_IP_ADDRESS_SUBNET_MASK' => 'External IP address / subnet mask', +'rvw_GATEWAY' => 'Gateway', +'rvw_ADDITIONAL_LOCAL_NETWORKS' => 'Additional local networks', +'rvw_DHCP_SERVER' => 'DHCP server', +'rvw_BEGINNING_OF_DHCP_ADDRESS_RANGE' => 'Beginning of DHCP address range', +'rvw_END_OF_DHCP_ADDRESS_RANGE' => 'End of DHCP address range', +'rvw_SERVER_NAMES' => 'Server names', +'rvw_DNS_SERVER' => 'DNS server', +'rvw_WEB_SERVER' => 'Web server', +'rvw_PROXY_SERVER' => 'Proxy server', +'rvw_FTP_SERVER' => 'FTP server', +'rvw_SMTP_POP_AND_IMAP_MAIL_SERVERS' => 'SMTP, POP, and IMAP mail servers', +'rvw_HOSTS' => 'Hosts', +'rvw_DOMAIN_INFORMATION' => 'Domain information', +'rvw_PRIMARY_DOMAIN' => 'Primary domain', +'rvw_VIRTUAL_DOMAINS' => 'Virtual domains', +'rvw_PRIMARY_WEB_SITE' => 'Primary web site', +'rvw_SERVER_MANAGER' => 'Server manager', +'rvw_USER_PASSWORD_PANEL' => 'User password panel', +'rvw_EMAIL_ADDRESSES' => 'Email Addresses', +'rvw_EMAIL_USERACCOUNT' => 'useraccount', +'rvw_EMAIL_FIRSTNAME' => 'firstname', +'rvw_EMAIL_LASTNAME' => 'lastname', +'rvw_NO_VIRTUAL_DOMAINS' => 'No virtual domains defined', +'rvw_NO_NETWORKS' => 'No additional networks defined', +'rvw_INTERNET_VISIBLE_ADDRESS' => 'Internet Visible IP Address', + +'dir_FORM_TITLE' => 'Change LDAP directory settings', +'dir_LABEL_ROOT' => 'Server root', +'dir_DESCRIPTION' => 'The LDAP server provides a network-available listing of the user accounts and groups on your server, and can be accessed using an LDAP client such as the Address Book feature in Netscape Communicator. Configure your LDAP client with the local IP address of your server, port number 389, and the server root parameter shown below. ', -'dir_DESC_DIRECTORY_ACCESS' => -' You can control access to your LDAP directory: the private setting allows access only from your local network, and the public setting allows access from anywhere on the Internet. ', -'dir_DIRECTORY_ACCESS' => -'LDAP directory access', -'dir_DESC_DEPARTMENT' => -' -These fields are the LDAP defaults for your organization. +'dir_DESC_DIRECTORY_ACCESS' => ' You can control access to your LDAP directory: the private setting allows access only from your local network, and the public setting allows access from anywhere on the Internet. ', +'dir_DIRECTORY_ACCESS' => 'LDAP directory access', +'dir_DESC_DEPARTMENT' => 'These fields are the LDAP defaults for your organization. Whenever you create a new user account, you will be prompted to enter all of these fields (they can be different for each user) but the values you set here will show up as defaults. This is a convenience to make it -faster to create user accounts. -', -'dir_DEPARTMENT' => -'Default department', -'dir_COMPANY' => -'Default company', -'dir_STREET' => -'Default Street address', -'dir_CITY' => -'Default City', -'dir_PHONENUMBER' => -'Default Phone Number', -'dir_DESC_EXISTING' => -' -You can either leave existing user accounts as they are, using the above defaults only for -new users, or you can apply the above defaults to all existing users as well. -', -'dir_EXISTING' => -'Existing users', -'dir_SUCCESS' => -'The new LDAP default settings have been saved.', -'dir_LEAVE' => -'Leave as they are', -'dir_UPDATE' => -'Update with new defaults', -'dir_Directory' => -'Directory', +faster to create user accounts.', +'dir_DEPARTMENT' => 'Default department', +'dir_COMPANY' => 'Default company', +'dir_STREET' => 'Default Street address', +'dir_CITY' => 'Default City', +'dir_PHONENUMBER' => 'Default Phone Number', +'dir_DESC_EXISTING' => 'You can either leave existing user accounts as they are, using the above defaults only for +new users, or you can apply the above defaults to all existing users as well.', +'dir_EXISTING' => 'Existing users', +'dir_SUCCESS' => 'The new LDAP default settings have been saved.', +'dir_LEAVE' => 'Leave as they are', +'dir_UPDATE' => 'Update with new defaults', +'dir_Directory' => 'Directory', 'prx_TITLE' => 'Proxy settings', -'prx_FIRST_PAGE_DESCRIPTION' => ' -This page allows configuration of the server\'s +'prx_FIRST_PAGE_DESCRIPTION' => 'This page allows configuration of the server\'s proxy settings. The server includes a transparent proxy and cache for HTTP traffic. This is enabled by default, but not enforced if the server is in "serveronly" mode. If this server is acting as an e-mail server, connections from local network clients to external SMTP servers -will default to being redirected to the local e-mail server. -', -'prx_HTTP_PROXY_STATUS_DESCRIPTION' => -' -The server\'s HTTP proxy works to reduce overall uplink usage by +will default to being redirected to the local e-mail server.', +'prx_HTTP_PROXY_STATUS_DESCRIPTION' => 'The server\'s HTTP proxy works to reduce overall uplink usage by caching recently-visited pages. It is transparent to web browsers using this server as their gateway. Enable or disable this proxy -with the following toggle. -', +with the following toggle.', 'prx_HTTP_PROXY_STATUS_LABEL' => 'HTTP proxy status', -'prx_SMTP_PROXY_STATUS_DESCRIPTION' => -' -The server\'s transparent SMTP proxy works to reduce virus traffic +'prx_SMTP_PROXY_STATUS_DESCRIPTION' => 'The server\'s transparent SMTP proxy works to reduce virus traffic from infected client hosts by forcing all outgoing SMTP traffic through this server if set to "enabled". If you wish to use an alternate SMTP server, and this server is your gateway to it, set this proxy to "disabled". Setting the proxy to "blocked" prevents all SMTP traffic to other servers, this is the default. The proxy only intercepts/blocks normal smtp -(port 25) traffic. -', +(port 25) traffic.', 'prx_SMTP_PROXY_STATUS_LABEL' => 'SMTP proxy status', 'prx_ERR_PROXY_UPDATE_FAILED' => 'ERROR: The proxy-update event returned an error.', 'prx_ERR_NO_SQUID_REC' => 'ERROR: There is no squid record in the configuration database.', @@ -658,8 +393,7 @@ 'prx_BLOCKED' => 'Blocked', 'qma_FORM_TITLE' => 'Mail Log File Analysis', -'qma_INITIAL_DESC' => ' -

Analysing the mail system log files can aid both in +'qma_INITIAL_DESC' => '

Analysing the mail system log files can aid both in understanding how your system is performing and in diagnosing delivery problems. Several different reports are available.

@@ -687,8 +421,7 @@ 'clm_FORM_TITLE' => 'Antivirus settings', 'clm_LABEL_FILESYSTEM_SCAN_PERIOD' => 'Scan filesystem', -'clm_DESC_FILESYSTEM_SCAN_PERIOD' => ' -

General Settings

+'clm_DESC_FILESYSTEM_SCAN_PERIOD' => '

General Settings

If this option is enabled then the filesystem will be scanned for viruses.A report of any found viruses will be emailed to the administrator.', @@ -700,56 +433,35 @@ 'clm_SUCCESS' => 'The new clamav antivirus settings have been saved.', 'wkg_FORM_TITLE' => 'Change workgroup settings', -'wkg_DESC_WORKGROUP' => -' -Enter the name of the Windows workgroup that this server should appear in. -', +'wkg_DESC_WORKGROUP' => 'Enter the name of the Windows workgroup that this server should appear in.', 'wkg_LABEL_WORKGROUP' => 'Windows workgroup', -'wkg_DESC_SERVERNAME' => -'Enter the name that this server should use for +'wkg_DESC_SERVERNAME' => 'Enter the name that this server should use for Windows and Macintosh file sharing.', 'wkg_LABEL_SERVERNAME' => 'Server Name', -'wkg_DESC_PDC' => -'Should this server act as the workgroup +'wkg_DESC_PDC' => 'Should this server act as the workgroup and domain controller on your Windows network? You should leave this set to No if another server is already performing this -role on your network. -', +role on your network.', 'wkg_LABEL_PDC' => 'Workgroup and Domain Controller', -'wkg_DESC_ROAM' => -' -Should this server support roaming profiles? +'wkg_DESC_ROAM' => 'Should this server support roaming profiles? You should leave this set to the default of No unless you have experience administering server-based Windows roaming profiles and -know that this feature is required. -', +know that this feature is required.', 'wkg_LABEL_ROAM' => 'Roaming profiles', -'wkg_SUCCESS' => ' -The new workgroup settings have been saved -', -'wkg_INVALID_WORKGROUP' => -'The workgroup name must begin with a letter (upper or lower +'wkg_SUCCESS' => 'The new workgroup settings have been saved', +'wkg_INVALID_WORKGROUP' => 'The workgroup name must begin with a letter (upper or lower case), followed by any combination of letters, numbers, -underscores, periods and hyphens. -', -'wkg_INVALID_SERVERNAME' => -'The server name must begin with a letter (upper or lower case), +underscores, periods and hyphens.', +'wkg_INVALID_SERVERNAME' => 'The server name must begin with a letter (upper or lower case), followed by any combination of letters, numbers, underscores and -hyphens. -', -'wkg_INVALID_WORKGROUP_MATCHES_SERVERNAME' => -'The server and workgroup names match, when compared in lower case. -These values must be different in order for filesharing to be turned on. -', +hyphens.', +'wkg_INVALID_WORKGROUP_MATCHES_SERVERNAME' => 'The server and workgroup names match, when compared in lower case. +These values must be different in order for filesharing to be turned on. ', 'wkg_Workgroup' => 'Workgroup', -'dat_FORM_TITLE' => -'Date and time configuration', -'dat_INITIAL_DESC' => -' -This is where you configure the date and time of this server. You may use an existing network time server or -manually set the date and time for your time zone. -', +'dat_FORM_TITLE' => 'Date and time configuration', +'dat_INITIAL_DESC' => 'This is where you configure the date and time of this server. You may use an existing network time server or +manually set the date and time for your time zone.', 'dat_SET_DATE_TITLE' => 'Set Date and Time', 'dat_COULD_NOT_OPEN_TZ_FILE' => 'Error: Could not open timezone file for reading: ', 'dat_JANUARY' => 'January', @@ -769,11 +481,9 @@ 'dat_AM/PM_AND_TZ' => 'AM/PM and time zone:', 'dat_NTP_ENABLE_DESC' => 'The server can periodically synchronize the system clock to a network time protocol (NTP) server. If you select this option, enter the hostname or IP address of the NTP server below.', 'dat_NTP_CONFIGURE_DESC' => 'The server is periodically synchronizing the system clock to the network time protocol (NTP) server specified below. To synchronize to a different NTP server, enter a different hostname or IP address in the field below.', -'dat_NTP_DISABLE_DESC' => ' -Choose this option to stop syncronizing the system clock to the NTP +'dat_NTP_DISABLE_DESC' => 'Choose this option to stop syncronizing the system clock to the NTP server.When the NTP service is disabled, you can set the system date -and time manually from this page. -', +and time manually from this page.', 'dat_NTP_SERVER' => 'NTP Server', 'dat_VERIFY_DATE_AND_TIME' => 'Verify date and time', 'dat_NEW_DATE_AND_TIME' => 'New date and time setting:', @@ -787,28 +497,19 @@ 'dat_INVALID_MINUTE' => 'Error: invalid minute: ', 'dat_BETWEEN_0_AND_59' => 'Please choose a minute between 0 and 59.', 'dat_INVALID_SECOND' => 'Error: invalid second', -'dat_UPDATING_CLOCK' => -' -System clock is being updated. Please wait for a few seconds, +'dat_UPDATING_CLOCK' => 'System clock is being updated. Please wait for a few seconds, then click here -to verify changes. -', +to verify changes.', 'dat_ERR_SETTING_CLOCK' => 'Error occurred while setting system time and hardware clock.', 'dat_SERVER_DISABLED' => 'Network time server disabled successfully', -'dat_SERVER_DISABLED_DESC' => ' -You have disabled this service: The server will rely on its internal -clock, and will not try to synchronize from a time server. -', +'dat_SERVER_DISABLED_DESC' => 'You have disabled this service: The server will rely on its internal +clock, and will not try to synchronize from a time server.', 'dat_ERR_CHANGING_TS' => 'Error while changing network time server setting', 'dat_INVALID_NTP_ADDR' => 'Invalid NTP server address: ', 'dat_SETTINGS_CHANGED' => 'Network time server setting changed successfully', 'dat_SYNC_WITH' => 'This server is now configured to synchronize periodically -(via the Internet) with: -', -'dat_INVALID_NTP_SERVER' => ' -Invalid NTP server, the server will not try to synchronize -from a time server. -', +(via the Internet) with:', +'dat_INVALID_NTP_SERVER' => 'Invalid NTP server, the server will not try to synchronize from a time server.', 'dat_NETWORK_TIME_SERVER' => 'Network Time Server', 'dat_NTP_CONFIGURE_TITLE' => 'Configure Network Time Server', 'dat_NTP_ENABLE_TITLE' => 'Enable Network Time Server', @@ -820,8 +521,7 @@ 'wbl_PERFORM' => 'Perform', 'wbl_FORM_TITLE' => 'E-mail WBL', 'wbl_OPERATION_STATUS_REPORT' => 'Operation status report', -'wbl_WBL_DESCRIPTION' => -'E-mail traffic is scanned and may be blocked due to the various screening methods enabled. +'wbl_WBL_DESCRIPTION' => 'E-mail traffic is scanned and may be blocked due to the various screening methods enabled. You may use this panel to define e-mail white/black lists.', 'wbl_RBL_LIST_DESCRIPTION' => 'RBL\'s List is used to adjust DNSBL and RHSBL.', 'wbl_RBL_LIST' => 'RBL\'s List', @@ -829,51 +529,31 @@ 'wbl_BLACK_LIST' => 'Black List', 'wbl_WHITE_LIST_DESCRIPTION' => 'White lists are used for accepting e-mail traffic.', 'wbl_WHITE_LIST' => 'White List', -'wbl_BLACK_TITLE' => ' -This server includes built-in support for using the admin defined black lists, badhelo and - badmailfrom. -', -'wbl_DNSBL_DESCRIPTION' => ' -DNSBL is an abbreviation for "DNS blacklist". -', +'wbl_BLACK_TITLE' => 'This server includes built-in support for using the admin defined black lists, badhelo and + badmailfrom.', +'wbl_DNSBL_DESCRIPTION' => 'DNSBL is an abbreviation for "DNS blacklist".', 'wbl_DNSBL_LABEL' => 'DNSBL status', -'wbl_RHSBL_DESCRIPTION' => ' -RHSBL is an abbreviation for "Right Hand Side Blacklist". -', +'wbl_RHSBL_DESCRIPTION' => 'RHSBL is an abbreviation for "Right Hand Side Blacklist". ', 'wbl_RHSBL_LABEL' => 'RHSBL status', -'wbl_BADHELO_DESCRIPTION' => ' -Check a HELO message delivered from a connecting host.Reject any -that appear in badhelo during the \'helo\' stage. -', +'wbl_BADHELO_DESCRIPTION' => 'Check a HELO message delivered from a connecting host.Reject any +that appear in badhelo during the \'helo\' stage.', 'wbl_BADHELO_LABEL' => 'qpsmtpd badhelo', -'wbl_BADMAILFROM_DESCRIPTION' => ' -Check envelope sender addresses. Reject any -that appear (@host or user@host) in badmailfrom during the \'mail\' stage. -', +'wbl_BADMAILFROM_DESCRIPTION' => 'Check envelope sender addresses. Reject any +that appear (@host or user@host) in badmailfrom during the \'mail\' stage.', 'wbl_BADMAILFROM_LABEL' => 'qmail badmailfrom', 'wbl_WHITE_TITLE' => 'Use this panel to modify your servers White List settings. All entries will be enabled by default', 'wbl_RRFH_LABEL' => 'Whitelists status', -'wbl_WHITELISTHOSTS_DESCRIPTION' => ' -Any IP address listed in whitelisthosts will be exempted -from any further validation during the \'connect\' stage. -', +'wbl_WHITELISTHOSTS_DESCRIPTION' => 'Any IP address listed in whitelisthosts will be exempted +from any further validation during the \'connect\' stage.', 'wbl_WHITELISTHOSTS_LABEL' => 'qpsmtpd whitelisthosts', -'wbl_WHITELISTHELO_DESCRIPTION' => ' -be exempted from further validation during the \'helo\' stage. -', +'wbl_WHITELISTHELO_DESCRIPTION' => 'be exempted from further validation during the \'helo\' stage.', 'wbl_WHITELISTHELO_LABEL' => 'qpsmtpd whitelisthelo', -'wbl_WHITELISTSENDERS_DESCRIPTION' => ' -will be exempted from further validation during the \'mail\' stage. -', +'wbl_WHITELISTSENDERS_DESCRIPTION' => 'will be exempted from further validation during the \'mail\' stage.', 'wbl_WHITELISTSENDERS_LABEL' => 'qpsmtpd whitelistsenders', -'wbl_WHITELISTFROM_DESCRIPTION' => ' -will be exempted from spamassassin rejection. -', +'wbl_WHITELISTFROM_DESCRIPTION' => 'will be exempted from spamassassin rejection.', 'wbl_WHITELISTFROM_LABEL' => 'spamassassin whitelist_from', 'wbl_BLACKLISTFROM_LABEL' => 'spamassassin blacklist_from', -'wbl_BLACKLISTFROM_DESCRIPTION' => ' -will be rejected by spamassassin. -', +'wbl_BLACKLISTFROM_DESCRIPTION' => 'will be rejected by spamassassin.', 'wbl_SBLLIST_LABEL' => 'RHSBL (qpsmtpd SBLList)', 'wbl_SBLLIST_DESCRIPTION' => 'RHS block list - \'right hand side\' of senders host/domain will be checked against the following servers', 'wbl_RBLLIST_LABEL' => 'DNSBL Zones (qpsmtpd RBLList)', @@ -897,8 +577,7 @@ "HP JetDirect Printer" are not. Avoid names and descriptions that contain these terms, "offline", "disabled", "down", "off", "waiting", "jam", -"paper", "error" and "responding". -', +"paper", "error" and "responding". ', 'prt_PRINTER_NAME' => 'Printer name', 'prt_LOCAL_PRINTER_0' => 'Local printer port 0 (LPT1)', 'prt_LOCAL_PRINTER_1' => 'Local printer port 1 (LPT2)', @@ -910,11 +589,9 @@

The printer name should contain only lower-case letters and numbers, and should start with a lower-case letter. For example "hplaser", "epsonlp", and -"canonbj" are valid names.

-', +"canonbj" are valid names.

', 'prt_ERR_UNEXPECTED_DESC' => 'Error: unexpected or missing characters in description. -Did not create new printer. -', +Did not create new printer.', 'prt_ERR_EXISTS' => 'Error: An account with the same name exists with type: ', 'prt_ERR_INVALID_ADDRESS' => 'Error: invalid network address. Did not create new printer.', 'prt_ERR_INVALID_REMOTE_NAME' => 'Error: invalid network printer name. Did not create new printer.', @@ -1003,7 +680,101 @@ something else afterward):', 'grp_CONFIRM_DELETE_GROUP' => 'Are you sure you wish to remove this group?', 'grp_CURRENT_LIST' => 'Current list of User Groups', -'grp_DELETE_DESCRIPTION' => 'You are about to remove the user group "{$group}."', +'grp_DELETE_DESCRIPTION' => 'You are about to remove the user group "{$group}."', + +'rbo_FORM_TITLE' => 'Shutdown or reboot', +'rbo_REBOOT' => 'Reboot', +'rbo_REBOOT_SUCCEEDED' => 'Reboot request initiated successfully.', +'rbo_DESC_REBOOT' => 'Your server has initiated the reboot process.', +'rbo_RECONFIGURE_SUCCEEDED' => 'Reconfiguration request initiated successfully.', +'rbo_DESC_RECONFIGURE' => 'Your server has initiated a full system reconfiguration and reboot.', +'rbo_SHUTDOWN_SUCCEEDED' => 'Shutdown request initiated successfully.', +'rbo_DESC_SHUTDOWN' => 'Your server has initiated the shutdown process. +The process will take several minutes to complete, after which +you can switch off the power.', +'rbo_LABEL_REBOOT' => 'Select Shutdown, Reboot or Reconfigure', +'rbo_DESCRIPTION' => 'You can reboot, shut down your server or perform a full system +reconfiguration from this screen. You must perform a shutdown +before switching the power off. All of these functions take +several minutes to complete. +When you click perform the operation will be initiated immediately, so be ready!', +'rbo_Reboot or shutdown' => 'Reboot or shutdown', + +'iba_FORM_TITLE' => 'Create, modify, or remove i-bays', +'iba_ADD_IBAY' => 'Add ibay', +'iba_FIRSTPAGE_DESC' => 'You can remove any information bay or reset its password by +clicking on the corresponding command +next to the information bay. If the information bay shows up +in red, that means that the password has not +yet been changed from the default, and should be changed +soon.', +'iba_ADD_TITLE' => 'Create or modify an i-bay', +'iba_NAME_FIELD_DESC' => 'The information bay name should contain only lower-case +letters, numbers, periods, hyphens and underscores, and +should start with a lower-case letter. For example +"johnson", "intra", and "cust3.prj12" are all valid +names, but "3associates", "John Smith" and +"Bus!Partner" are not. The name is limited to +{$maxLength} characters.', +'iba_NAME_LABEL' => 'Information bay name', +'iba_USER_ACCESS' => 'User access via file sharing or user ftp', +'iba_PUBLIC_ACCESS' => 'Public access via web or anonymous ftp', +'iba_PUBLIC_ACCESS_DESCRIPTION' => 'The public access mode "password required outside local +network" is not supported by the FTP server component. If +you select this mode, the FTP server will require a +password both inside and outside the local network for this +i-bay.', +'iba_ALLOW_DYNAMIC_CONTENT' => 'Execution of dynamic content (CGI, PHP, SSI)', +'iba_HTTPS_Only' => 'Force secure connections', +'iba_REMOVE_TITLE' => 'Remove information bay', +'iba_REMOVE_DESC' => '

+You are about to remove the information bay "{$name}" +({$description}). +

+All files belonging to this information bay will be deleted. +

+Are you sure you wish to remove this information bay? +

', +'iba_ERROR_WHILE_CREATING_IBAY' => 'An error occurred while creating the i-bay.', +'iba_SUCCESSFULLY_CREATED_IBAY' => 'Successfully created i-bay.', +'iba_NO_IBAYS' => 'There are no i-bays currently configured.', +'iba_CANT_FIND_IBAY' => 'Can\'t find account for {$name} (does it exist?)', +'iba_CANT_CREATE_IBAY' => 'Can\'t create new account for {$name} (does it already exist?)', +'iba_ERROR_WHILE_MODIFYING_IBAY' => 'An error occurred while modifying the i-bay.', +'iba_SUCCESSFULLY_MODIFIED_IBAY' => 'Successfully modified i-bay.', +'iba_VIRTUAL_HOST_MESSAGE' => 'The following virtual domains were using this information +bay as their content and will be changed to the primary web +site (you can change them to something else afterward).', +'iba_SUCCESSFULLY_DELETED_IBAY' => 'Successfully deleted i-bay.', +'iba_ERROR_WHILE_DELETING_IBAY' => 'An error occurred while deleting the i-bay.', +'iba_PASSWORD_DESC' => 'You are about to change the password for the i-bay {$name}.', +'iba_IBAY_PASSWD_VALIDATION_ERROR' => 'The password may contain only letters and numbers.', +'iba_IBAY_PASSWD_VERIFY_ERROR' => 'The passwords do not match.', +'iba_SUCCESSFULLY_RESET_PASSWORD' => 'Successfully reset password.', +'iba_ERROR_WHILE_RESETTING_PASSWORD' => 'Error while resetting password.', +'iba_VHOST_MESSAGE' => '

The following virtual domains were using this information bay +as their content and will be changed to the primary web site +(you can change them to something else afterward):

', +'iba_Information bays' => 'Information bays', +'WGRG' => 'Write = group, Read = group', +'WGRE' => 'Write = group, Read = everyone', +'WARG' => 'Write = admin, Read = group', +'NONE' => 'No access', +'LOCAL_NETWORK_NO_PASSWORD' => 'Local network (no password required)', +'LOCAL_NETWORK_PASSWORD' => 'Local network (password required)', +'ENTIRE_INTERNET_NO_PASSWORD' => 'Entire Internet (no password required)', +'ENTIRE_INTERNET_PASSWORD' => 'Entire Internet (password required)', +'ENTIRE_INTERNET_PASSWORD_REMOTE' => 'Entire Internet (password required outside local network)', +'INVALID_IBAY_DESCRIPTION' => 'Error: unexpected or missing characters in i-bay description', +'iba__ACCT_NAME_HAS_INVALID_CHARS' => 'The i-bay name "{$acctName}" contains invalid characters. +I-bay names must start with a lower case letter and contain +only lower case letters, numbers, and hyphens.', +'iba_MAX_IBAY_NAME_LENGTH_ERROR' => 'The i-bay name "{$name}" is too long. The maximum is +{$maxIbayNameLength} characters.', +'iba_ACCT_CLASHES_WITH_PSEUDONYM' => 'The account "{$acctName}" clashes with pseudonym +details for {$acctType} account "{$acct}". +

{$acctName} is a pseudonym for {$acct}.

', +'iba_ACCOUNT_EXISTS' => 'The account "{$acctName}" is an existing {$acctType} account.', ); diff -urN smeserver-manager-0.1.0.old/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/lib/SrvMngr/Navigation.pm smeserver-manager-0.1.0/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/lib/SrvMngr/Navigation.pm --- smeserver-manager-0.1.0.old/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/lib/SrvMngr/Navigation.pm 2019-12-31 08:55:14.000000000 +0400 +++ smeserver-manager-0.1.0/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/lib/SrvMngr/Navigation.pm 2020-01-07 23:57:48.000000000 +0400 @@ -242,6 +242,7 @@ }else if(tA[i].className==arg[2]){tA[i].className=arg[3];}}}}} '; printf SCR " + // language $language //This swap the class of the selected item. function swapClasses() { var arg=swapClasses.arguments; @@ -309,7 +310,7 @@ foreach (sort { $a->{'WEIGHT'} <=> $b->{'WEIGHT'} } @{$nav {$h}{'DESCRIPTIONS'}}) { my ($target, $classNew) = ( $_->{'FILENAME'} =~ m/^2\// ) ? - ('_self',' class=\' accent\'') : + ('_self',' accent') : ('main','') ; my $href = '/server-manager' . $_->{'FILENAME'}; @@ -319,7 +320,7 @@ } else { - printf DIV "\n "; # printf DIV "\n