diff -urN smeserver-manager-0.1.0.old/manager2.c smeserver-manager-0.1.0/manager2.c --- smeserver-manager-0.1.0.old/manager2.c 1970-01-01 04:00:00.000000000 +0400 +++ smeserver-manager-0.1.0/manager2.c 2019-12-31 08:58:20.644000000 +0400 @@ -0,0 +1,13 @@ +#include +#include +#include +#include +#define CGI_PATH "/etc/e-smith/web/functions2/" + +main(int argc, char *argv[]) +{ + char cmd[50]; + sprintf(cmd, "%s%s", CGI_PATH, basename(argv[0])); + execv(cmd, argv); + return 0; +} diff -urN smeserver-manager-0.1.0.old/root/etc/e-smith/web/functions2/index.cgi smeserver-manager-0.1.0/root/etc/e-smith/web/functions2/index.cgi --- smeserver-manager-0.1.0.old/root/etc/e-smith/web/functions2/index.cgi 1970-01-01 04:00:00.000000000 +0400 +++ smeserver-manager-0.1.0/root/etc/e-smith/web/functions2/index.cgi 2019-12-31 17:15:12.000000000 +0400 @@ -0,0 +1,15 @@ +#! /usr/bin/perl -wT + +use esmith::util; + +BEGIN +{ + $0 =~ /^(.+)$/ms; $0 = $1; # Untaint script name + $ENV{'PATH'} = '/bin:/usr/bin:/usr/local/bin'; + $ENV{'SHELL'} = '/bin/bash'; + $ENV{'HOME'} = '/root'; + delete $ENV{'ENV'}; + esmith::util::setRealToEffective(); +} + +exec("perl ./srvmngr.pl") if chdir "../cgi-bin/srvmngr"; 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 08:55:13.000000000 +0400 +++ smeserver-manager-0.1.0/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/conf/srvmngr.conf 2019-12-31 17:50:50.143000000 +0400 @@ -6,7 +6,7 @@ # 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 => 0, + navigation_has_changed => 1, modules_dir => "lib/SrvMngr/Controller", debug => 1, } diff -urN smeserver-manager-0.1.0.old/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/lib/SrvMngr/Controller/Bugreport.pm smeserver-manager-0.1.0/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/lib/SrvMngr/Controller/Bugreport.pm --- smeserver-manager-0.1.0.old/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/lib/SrvMngr/Controller/Bugreport.pm 2019-12-31 08:55:13.000000000 +0400 +++ smeserver-manager-0.1.0/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/lib/SrvMngr/Controller/Bugreport.pm 2019-12-26 18:06:17.000000000 +0400 @@ -7,43 +7,167 @@ use Locale::gettext; use SrvMngr::I18N; +use Text::Template; +use File::Basename; +use esmith::FormMagick qw( gen_locale_date_string ); + +our $db = esmith::ConfigDB->open or die "Couldn't open ConfigDB\n"; + +# Get some basic info on the current SME install +our $sysconfig = $db->get('sysconfig'); +our $systemmode = $sysconfig->prop('PreviousSystemMode'); +our $releaseversion = $sysconfig->prop('ReleaseVersion'); + +# Prepare some filehandles for templates and reports +our $templatefile = '/tmp/bugreport_template.txt'; +our $configreportfile = '/tmp/configreport.txt'; + sub main { my $c = shift; - $c->app->log->info($c->log_req); - #my $i18n = $c->stash('i18n'); - #$i18n->{'namespace'} = 'SrvMngr::I18N::Bugreport'; - #$i18n->namesp(); + my %bugr_datas = (); my $title = $c->l('bugr_FORM_TITLE'); my $modul = $c->render_to_string( inline => $c->l('bugr_DESCRIPTION')); - $c->stash( releaseVersion => $c->session->{releaseVersion}, copyRight => $c->session->{copyRight}, - PwdSet => $c->session->{PwdSet}, Unsafe => $c->session->{Unsafe}, navigation => $c->session->{navigation}, - title => $title, modul => $modul); + $bugr_datas{'trt'} = 'SHOW'; + $c->stash(title => $title, modul => $modul, bugr_datas => \%bugr_datas); $c->render(template => 'bugreport'); }; sub do_report { my $c = shift; - $c->app->log->info($c->log_req); my $title = $c->l('bugr_FORM_TITLE'); - my $modul = $c->render_to_string( 'Bug report generation
(to be done !!)'); -# my $modul = $c->render_to_string( inline => $c->l('bugr_DESCRIPTION')); - $c->stash( releaseVersion => $c->session->{releaseVersion}, copyRight => $c->session->{copyRight}, - PwdSet => $c->session->{PwdSet}, Unsafe => $c->session->{Unsafe}, navigation => $c->session->{navigation}, - title => $title, modul => $modul); + my $trt = $c->param('trt') || 'SHOW'; - $c->render(template => 'module'); + my %bugr_datas = (); + $bugr_datas{'trt'} = $trt; + + if ( $trt eq 'SHOW' ) { + create_configuration_report(); + + my $out = $c->render_to_string(inline => show_config_report()); + + $bugr_datas{'trt'} = 'DOWN'; + + $c->stash(title => $title, modul => $out, bugr_datas => \%bugr_datas); + $c->render(template => 'bugreport2'); + } + + if ( $trt eq 'DOWN' ) { + + my $modul = 'Bug report download'; + + #download_config_report(); + + # --> OR <-- + #if ( $params{'output_format'} eq 'txtfile' ) { + $c->res->headers->content_disposition("attachement; filename=" . basename($configreportfile) . ";"); + #$c->res->headers->content_type('text/plain'); + $c->reply->file("$configreportfile"); + #} else { + # $modul .= "\n output_format not compatible with report file"; + #} + + # the following in this sub will not be used !!! + $bugr_datas{'trt'} = 'DOWN'; + + $c->stash(title => $title, modul => $modul, bugr_datas => \%bugr_datas); + $c->render(template => 'bugreport'); + } }; +sub create_configuration_report { + + my $c = shift; + + # TBD: possibly check $q for a boolean value eg. from a checkbox + # indicating the user has read privacy warning etc. + + # create the reporting template + my $configreport_template = Text::Template->new(TYPE => 'FILE', SOURCE => '/etc/e-smith/web/common/configuration_report.tmpl', UNTAINT => 1); + my $report_creation_time = gen_locale_date_string; + + # curent kernel + my $curkernel = `uname -r`; + + # get additional RPMs + my @newrpms = `/sbin/e-smith/audittools/newrpms`; + + # get additional Repositories + my @repositories = `/sbin/e-smith/audittools/repositories`; + #print @repositories; + + # get templates + my @templates = `/sbin/e-smith/audittools/templates`; + + # get events + my @events = `/sbin/e-smith/audittools/events`; + + + # set template variables + my %vars = (report_creation_time => \$report_creation_time, + releaseversion => \$releaseversion, + curkernel => \$curkernel, + systemmode => \$systemmode, + newrpms => \@newrpms, + templates => \@templates, + events => \@events, + repositories => \@repositories, + ); + + # prcess template + my $result = $configreport_template->fill_in(HASH => \%vars); + + # write processed template to file + open (my $cfgrep, '>', $configreportfile) or die "Could not create temporary file for config report!"; + print $cfgrep $result; + close $cfgrep; +} + +sub show_config_report { + my $c = shift; + + my $out = ''; + $out .= sprintf "
";
+
+    open (my $cfgrep, '<', $configreportfile) or die "Could not find temporary config report file!";
+    #open(REPORT, "/var/$report_type |");
+
+    while (<$cfgrep>) {
+	$out .= sprintf("%s", $_);
+    }
+	
+    $out .= sprintf "
"; + + # that would be too easy!? + #$out .= sprintf(" %s ", $c->l('bugr_Download this report')); + + return $out; + +} + +sub download_config_report { + my $c = shift; +# my $q = $c->{'cgi'}; + open (DLFILE, "<$configreportfile") or die "Could not access temporary file for config report!"; + my @fileholder = ; + close (DLFILE) || Error ('close', 'file'); + print "Content-Type:text/plain\n";#application/x-downloadn"; + print "Content-Disposition:attachment;filename=" . basename($configreportfile); + print "\n\n"; + print @fileholder ; + return ""; + +} + 1; diff -urN smeserver-manager-0.1.0.old/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/lib/SrvMngr/Controller/Clamav.pm smeserver-manager-0.1.0/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/lib/SrvMngr/Controller/Clamav.pm --- smeserver-manager-0.1.0.old/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/lib/SrvMngr/Controller/Clamav.pm 2019-12-31 08:55:13.000000000 +0400 +++ smeserver-manager-0.1.0/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/lib/SrvMngr/Controller/Clamav.pm 2019-12-24 16:00:40.000000000 +0400 @@ -9,7 +9,7 @@ #package esmith::FormMagick::Panel::clamav; -our $db = esmith::ConfigDB->open('conf/test/configuration') || die "Couldn't open config db"; +our $db = esmith::ConfigDB->open() || die "Couldn't open config db"; sub main { my $c = shift; @@ -51,12 +51,12 @@ # # Update the system # - #system("/sbin/e-smith/signal-event clamav-update") == 0 - # or $result = $c->l('clm_ERROR_UPDATING_CONFIGURATION'); + system("/sbin/e-smith/signal-event clamav-update") == 0 + or $result = $c->l('clm_ERROR_UPDATING_CONFIGURATION'); my $title = $c->l('clm_FORM_TITLE'); - if ( $result eq '' ) { $result = $c->l('clm_SUCCESS')." but system update NOT done" ; } + if ( $result eq '' ) { $result = $c->l('clm_SUCCESS') ; } $c->stash( title => $title, modul => $result ); $c->render(template => 'module'); diff -urN smeserver-manager-0.1.0.old/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/lib/SrvMngr/Controller/Datetime.pm smeserver-manager-0.1.0/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/lib/SrvMngr/Controller/Datetime.pm --- smeserver-manager-0.1.0.old/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/lib/SrvMngr/Controller/Datetime.pm 2019-12-31 08:55:13.000000000 +0400 +++ smeserver-manager-0.1.0/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/lib/SrvMngr/Controller/Datetime.pm 2019-12-24 15:56:46.000000000 +0400 @@ -10,7 +10,7 @@ use esmith::FormMagick; #use esmith::FormMagick::Panel::datetime; -our $db = esmith::ConfigDB->open('conf/test/configuration') || die "Couldn't open config db"; +our $db = esmith::ConfigDB->open() || die "Couldn't open config db"; sub main { my $c = shift; diff -urN smeserver-manager-0.1.0.old/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/lib/SrvMngr/Controller/Directory.pm smeserver-manager-0.1.0/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/lib/SrvMngr/Controller/Directory.pm --- smeserver-manager-0.1.0.old/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/lib/SrvMngr/Controller/Directory.pm 2019-12-31 08:55:13.000000000 +0400 +++ smeserver-manager-0.1.0/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/lib/SrvMngr/Controller/Directory.pm 2019-12-24 16:01:59.000000000 +0400 @@ -9,7 +9,7 @@ #use esmith::util qw(ldapBase); use esmith::FormMagick::Panel::directory; -our $db = esmith::ConfigDB->open('conf/test/configuration') || die "Couldn't open config db"; +our $db = esmith::ConfigDB->open() || die "Couldn't open config db"; sub main { my $c = shift; @@ -55,8 +55,7 @@ $db->get('ldap')->set_prop('defaultPhoneNumber', $phonenumber); if ($existing eq 'update') { - # my $ac =esmith::AccountsDB->open('conf/test/accounts'); - my $ac = esmith::AccountsDB->open('conf/test/accounts') || die "Couldn't open accounts db"; + my $ac = esmith::AccountsDB->open() || die "Couldn't open accounts db"; my @users = $ac->users(); foreach my $user (@users) { @@ -76,7 +75,7 @@ my $title = $c->l('dir_FORM_TITLE'); - if ( $result eq '' ) { $result = $c->l('dir_SUCCESS') . " but System update NOT done !!!"; } + if ( $result eq '' ) { $result = $c->l('dir_SUCCESS'); } $c->stash( title => $title, modul => $result ); $c->render(template => 'module'); 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 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/Groups.pm 2020-01-01 17:35:59.723000000 +0400 @@ -0,0 +1,486 @@ +package SrvMngr::Controller::Groups; + +use strict; +use warnings; +use Mojo::Base 'Mojolicious::Controller'; + +use Locale::gettext; +use SrvMngr::I18N; + +use Data::Dumper; + +use esmith::FormMagick::Panel::groups; + +our $cdb = esmith::ConfigDB->open || die "Couldn't open configuration db"; +our $adb = esmith::AccountsDB->open || die "Couldn't open accounts db"; + +sub main { + + my $c = shift; + $c->app->log->info($c->log_req); + + my %grp_datas = (); + my $title = $c->l('grp_FORM_TITLE'); + my $modul = ''; + + $grp_datas{trt} = 'LIST'; + + my @groups; + if ($adb) + { + @groups = $adb->groups(); + } + + $c->stash( title => $title, modul => $modul, grp_datas => \%grp_datas, groups => \@groups ); + $c->render(template => 'groups'); + +}; + + +sub do_display { + + my $c = shift; + $c->app->log->info($c->log_req); + + my $rt = $c->current_route; + my $trt = ($c->param('trt') || 'LIST'); + my $group = $c->param('group') || ''; + + $trt = 'DEL' if ( $rt eq 'groupdel1' ); + $trt = 'UPD' if ( $rt eq 'groupupd1' ); + $trt = 'ADD' if ( $rt eq 'groupadd1' ); + + my %grp_datas = (); + my $title = $c->l('grp_FORM_TITLE'); + my $modul = ''; + + $grp_datas{'trt'} = $trt; + + if ( $trt eq 'ADD' ) { + + my %users = @{gen_users_list( $c )}; + + $c->stash( users => \%users ); + + } + + if ( $trt eq 'UPD' ) { + + my %members = (); + my %users = (); + + my $rec = $adb->get($group); + if ($rec and $rec->prop('type') eq 'group') { + + $grp_datas{group} = $group; + $grp_datas{description} = $rec->prop('Description') || ''; + + %members = @{gen_members_list( $c, $group )}; + + %users = @{gen_users_list( $c )}; + } + + $c->stash( members => \%members, users => \%users ); + + } + + if ( $trt eq 'DEL' ) { + + my %members = (); + my %ibays = (); + + my $rec = $adb->get($group); + if ($rec and $rec->prop('type') eq 'group') { + + $grp_datas{group} = $group; + $grp_datas{description} = $rec->prop('Description') || ''; + + %members = @{gen_members_list($c, $group)}; + + %ibays = @{gen_ibays_list($c, $group)}; + + } + # $c->flash(message => 'Del display Group okkkkkkkkkkkk'); + # $c->app->log->info("members: " . $c->dumper(%members)); + # $c->app->log->info("ibays: " . $c->dumper(%ibays)); + + $c->stash( grp_datas => \%grp_datas, members => \%members, ibays => \%ibays ); + + } + + if ( $trt eq 'LIST' ) { + my @groups; + if ($adb) { + @groups = $adb->groups(); + } + + $c->stash( groups => \@groups ); + + } + + $c->stash( title => $title, modul => $modul, grp_datas => \%grp_datas ); + $c->render( template => 'groups' ); + +}; + + +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 $result = ''; + + if ( $trt eq 'ADD' ) { + + my $groupName = ($c->param('groupName') || ''); + my $groupDesc = ($c->param('groupDesc') || ''); + my @members = ($c->param('groupMembers') || ''); + my $members = join ( ",", @members ); + + # controls (validate ?????) + my $res = validate_group( $c, $groupName ); + $result .= $res unless $res eq 'OK'; + + my $res = validate_group_length( $c, $groupName ); + $result .= $res unless $res eq 'OK'; + + my $res = validate_group_naming_conflict( $c, $groupName ); + $result .= $res unless $res eq 'OK'; + + my $res = validate_description( $c, $groupDesc ); + $result .= $res unless $res eq 'OK'; + + my $res = validate_group_has_members( $c, @members ); + $result .= $res unless $res eq 'OK'; + + my %props = ( + 'type', 'group', 'Description', + $groupDesc, 'Members', $members + ); + + if ( ! $result ) { + + $adb->new_record( $groupName, \%props ); + + # Untaint groupName before use in system() + ($groupName) = ($groupName =~ /^([a-z][\-\_\.a-z0-9]*)$/); + + #???$c->clear_params(); + + system("/sbin/e-smith/signal-event", "group-create", "$groupName") ==0 + or $result .= $c->l('grp_CREATE_ERROR')."\n"; + + } + + if ( ! $result ) { + $result = $c->l('grp_CREATED_GROUP') . ' ' . $groupName; + } + } + + if ( $trt eq 'UPD' ) { + + my $groupName = $c->param('group'); + my $groupDesc = ($c->param('groupDesc') || ''); + my @members = ($c->param('groupMembers') || ''); + my $members = join ( ",", @members ); + + # controls + my $res = ''; + my $res = validate_description( $c, $groupDesc ); + $result .= $res unless $res eq 'OK'; + + my $res = validate_group_has_members( $c, @members ); + $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 ) { + $result = $c->l('grp_MODIFIED_GROUP') . ' ' . $groupName; + # } + } + } + + if ( $trt eq 'DEL' ) { + + my $group = ($c->param ('group') || ''); + + if ($group =~ /^([a-z][\-\_\.a-z0-9]*)$/) { + $group = $1; + } else { + $result .= $c->l('grp_GROUP_NAMING') . ':' . $group; + } + + my $rec = $adb->get($group); + $result .= $c->l('grp_NOT_A_GROUP') . ':' . $group unless ($rec); + + if ( ! $result ) { + my $res = delete_group( $c, $group ); + $result .= $res unless $res eq 'OK'; + if ( ! $result ) { + $result = $c->l('grp_DELETED_GROUP') . ' ' . $group; + } + } + } + + my $title = $c->l('grp_FORM_TITLE'); + + $c->stash( title => $title, modul => $result ); + $c->render(template => 'module'); + +}; + + +sub delete_group { + + my ( $c, $groupName ) = @_; + + # Update the db account (1) + $adb->get($groupName)->set_prop('type', 'group-deleted'); + + # Untaint groupName before use in system() + ($groupName) = ($groupName =~ /^([a-z][\-\_\.a-z0-9]*)$/); + + return (system ("/sbin/e-smith/signal-event", "group-delete", "$groupName") || + !$adb->get($groupName)->delete()) ? + $c->l('grp_DELETE_ERROR') : 'OK'; + +} + + +sub gen_members_list { + + my ( $c, $group ) = @_; + + my $rec = $adb->get($group); + my @members = split ( /,/, $rec->prop('Members') ); + + my %names; + foreach my $m (@members) { + my $name; + if ( $m eq 'admin' ) { + $name = "Administrator"; + } + else { + $name = $adb->get($m)->prop('FirstName') . " " + . $adb->get($m)->prop('LastName'); + } + $names{$m} = $name; + } + @members = %names; + + return \@members; + +} + + +sub gen_ibays_list { + + my ( $c, $group ) = @_; + + my %names; + foreach my $ibay ( $adb->ibays ) { + if ( $ibay->prop('Group') eq $group ) { + $names{$ibay->key} = $ibay->prop('Name'); + } + } + my @ibays = %names; + + return \@ibays; + +} + + +sub gen_users_list { + + my $c = shift; + + my @users = sort { $a->key() cmp $b->key() } $adb->users(); + my %names; + + foreach my $user ( @users ) { + $names{$user->key} = $user->prop('FirstName') . " " + . $user->prop('LastName'); + } + my @users = %names; + + return \@users; +} + + +=head1 VALIDATION + +=head2 validate_is_group FM GROUP + +returns OK if GROUP is a current group. otherwisee returns "NOT_A_GROUP" + +=begin testing + +#ok($panel->validate_is_group('root') eq 'OK', "Root is a group"); +ok($panel->validate_is_group('ro2ot') eq 'NOT_A_GROUP', "Ro2ot is not a group"); + +=end testing + +=cut + +sub validate_is_group () { + my $c = shift; + my $group = shift; + + my @groups = $adb->groups(); + my %groups = map { $_->key => 1 } @groups; + + unless ( exists $groups{$group} ) { + return ($c->l('grp_NOT_A_GROUP')); + } + return ("OK"); + +} + + +=head2 validate_group_naming_conflict FM GROUPNAME + +Returns "OK" if this group's name doesn't conflict with anything +Returns "PSEUDONYM_CONFLICT" if this name conflicts with a pseudonym +Returns "NAME_CONFLICT" if this group name conflicts with anything else + +ok (undef, 'need testing for validate_naming_Conflicts'); +=cut + +sub validate_group_naming_conflict +{ + my $c = shift; + my $groupName = shift; + + my $account = $adb->get($groupName); + my $type; + + if (defined $account) + { + $type = $account->prop('type'); + } + elsif (defined getpwnam($groupName) || defined getgrnam($groupName)) + { + $type = "system"; + } + else + { + return('OK'); + } + return ($c->l('grp_ACCOUNT_CONFLICT') . + { group => $groupName . + type => $type, + }); +} + +=head2 validate_group FM groupname + +Returns OK if the group name contains only valid characters +Returns GROUP_NAMING otherwise + +=being testing + +ok(validate_group('','foo') eq 'OK', 'foo is a valid group); +ok(validate_group('','f&oo') eq 'GROUP_CONTAINS_INVALD', 'f&oo is not a valid group); + +=end testing + +=cut + +sub validate_group { + my $c = shift; + my $groupName = shift; + unless ( $groupName =~ /^([a-z][\-\_\.a-z0-9]*)$/ ) { + return $c->l('grp_GROUP_NAMING'); + } + return ('OK'); +} + + +=head2 validate_group_length FM GROUPNAME + +returns 'OK' if the group name is shorter than the maximum group name length +returns 'GROUP_TOO_LONG' otherwise + +=begin testing + +ok(($panel->validate_group_length('foo') eq 'OK'), "a short groupname passes"); +ok(($panel->validate_group_length('fooooooooooooooooo') eq 'GROUP_TOO_LONG'), "a long groupname fails"); + +=end testing + +=cut + +sub validate_group_length { + my $c = shift; + my $groupName = shift; + + my $maxGroupNameLength = ($cdb->get('maxGroupNameLength') + ? $cdb->get('maxGroupNameLength')->prop('type') + : "") || 12; + + if ( length $groupName > $maxGroupNameLength ) { + + return $c->l('grp_GROUP_TOO_LONG') . + {maxLength => $maxGroupNameLength}; + } + else { + return ('OK'); + } +} + + +=head2 validate_group_has_members FM MEMBERS + +Validates that the cgi parameter MEMBERS is an array with at least one entry +Returns OK if true. Otherwise, returns NO_MEMBERS + + +=begin testing + +ok(validate_group_has_members('',qw(foo bar)) eq 'OK', "We do ok with a group with two members"); + +ok(validate_group_has_members('',qw()) eq 'NO_MEMBERS', "We do ok with a group with no members"); +ok(validate_group_has_members('') eq 'NO_MEMBERS', "We do ok with a group with undef members"); + +=end testing + +=cut + +sub validate_group_has_members { + my $c = shift; + my @members = (@_); + my $count = @members; + if ( $count == 0 ) { + return ($c->l('grp_NO_MEMBERS')); + } + else { + return ('OK'); + } +} + + +=pod + +=head2 validate_description ($description). +Checks the supplied description. Period is allowed in description + +=cut + +sub validate_description +{ + my ($c, $description) = @_; + if ( $description =~ /^([\-\'\w][\-\'\w\s\.]*)$/ ) { + return ('OK'); + } + else { + return ($c->l('FM_ERR_UNEXPECTED_DESC')); + } +} + + +1 diff -urN smeserver-manager-0.1.0.old/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/lib/SrvMngr/Controller/Printers.pm smeserver-manager-0.1.0/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/lib/SrvMngr/Controller/Printers.pm --- smeserver-manager-0.1.0.old/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/lib/SrvMngr/Controller/Printers.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/Controller/Printers.pm 2019-12-24 11:24:37.000000000 +0400 @@ -9,10 +9,7 @@ use esmith::FormMagick::Panel::printers; -#our $db = esmith::ConfigDB->open || die "Couldn't open config db"; our $adb = esmith::AccountsDB->open || die "Couldn't open accounts db"; -#our $db = esmith::ConfigDB->open('conf/test/configuration') || die "Couldn't open config db"; - sub main { @@ -203,24 +200,17 @@ my ( $c, $printer ) = @_; - # Update the db config (1) - - my $prop_del = "accounts settype $printer printer-deleted"; - system ( '/bin/sudo', '/sbin/e-smith/db', split( / /, $prop_del ) ) == 0 - or return $c->l('prt_ERR_DELETING') . ' ' . $prop_del; - - # Update system - - system ('/bin/sudo', '/sbin/e-smith/signal-event', "printer-delete", $printer) == 0 - or return $c->l('prt_ERR_DELETING') . " system " . $printer; - - # Update the db config (2) + # Update the db account (1) + my $rec = $adb->get($printer); + + $rec->set_prop('type', 'printer-deleted'); + system ("/sbin/e-smith/signal-event printer-delete $printer") == 0 + or return $c->error('ERR_DELETING'); - $prop_del = "accounts delete $printer"; - system ( '/bin/sudo', '/sbin/e-smith/db', split( / /, $prop_del ) ) == 0 - or return $c->l('prt_ERR_DELETING') . ' ' . $prop_del; + $rec->delete(); return 'OK'; + } @@ -296,26 +286,20 @@ #------------------------------------------------------------ # Printer name is available! Update printers database and - # singal the create-printer event. + # signal the create-printer event. #------------------------------------------------------------ my $result = ''; - - $description =~ s/ /_/g; - my $prop_upd = "accounts set $name printer "; - $prop_upd .= "Description $description Address $address RemoteName $remoteName Location $location"; - - # Update the db config - # - system ( '/bin/sudo', '/sbin/e-smith/db', split( / /, $prop_upd ) ) == 0 -# system ( '/bin/sudo', '/sbin/e-smith/db', $prop_upd ) == 0 - or return $result = $c->l('prt_ERR_CREATING') . " db config: " . $prop_upd; - - # Update system - if ( ! $result ) { - system ('/bin/sudo', '/sbin/e-smith/signal-event', "printer-create", $name) == 0 - or return $result = $c->l('prt_ERR_CREATING') . " signal-event: " . $name; - } + + my $rec = $adb->new_record($name, + {type=>'printer', + Description => $description, + Address => $address, + RemoteName => $remoteName, + Location => $location}); + + system ("/sbin/e-smith/signal-event printer-create $name") == 0 + or return $c->error('ERR_CREATING'); return 'OK', } diff -urN smeserver-manager-0.1.0.old/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/lib/SrvMngr/Controller/Proxy.pm smeserver-manager-0.1.0/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/lib/SrvMngr/Controller/Proxy.pm --- smeserver-manager-0.1.0.old/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/lib/SrvMngr/Controller/Proxy.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/Controller/Proxy.pm 2019-12-24 15:55:58.000000000 +0400 @@ -7,7 +7,7 @@ use Locale::gettext; use SrvMngr::I18N; -our $db = esmith::ConfigDB->open('conf/test/configuration') || die "Couldn't open config db"; +our $db = esmith::ConfigDB->open || die "Couldn't open config db"; sub main { my $c = shift; @@ -50,12 +50,12 @@ # # Update the system # - ##system("/sbin/e-smith/signal-event proxy-update") == 0 - ##or $result = $c->l('prx_ERR_PROXY_UPDATE_FAILED'); + system("/sbin/e-smith/signal-event proxy-update") == 0 + or $result = $c->l('prx_ERR_PROXY_UPDATE_FAILED'); my $title = $c->l('prx_TITLE'); - if ( $result eq '' ) { $result = $c->l('prx_SUCCESS')." but system update NOT done" ; } + if ( $result eq '' ) { $result = $c->l('prx_SUCCESS'); } $c->stash( title => $title, modul => $result ); $c->render(template => 'module'); diff -urN smeserver-manager-0.1.0.old/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/lib/SrvMngr/Controller/Qmailanalog.pm smeserver-manager-0.1.0/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/lib/SrvMngr/Controller/Qmailanalog.pm --- smeserver-manager-0.1.0.old/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/lib/SrvMngr/Controller/Qmailanalog.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/Controller/Qmailanalog.pm 2019-12-25 22:08:09.000000000 +0400 @@ -55,32 +55,33 @@ my $c = shift; my $report_type = shift; + my $out = ''; + #------------------------------------------------------------ # Looks good; go ahead and generate the report. #------------------------------------------------------------ # $| = 1; - my $out = ''; my $now_string = $c->gen_locale_date_string(); - $out .= sprintf("

%s %s

\n", $c->l('REPORT_GENERATED'), $now_string); + $out .= sprintf("

%s %s

", $c->l('REPORT_GENERATED'), $now_string); if ($report_type =~ /^qmail-q/) { open(QMAILQUEUEREPORT, "/var/qmail/bin/$report_type |"); - # $out .= "
\n";
+		$out .= sprintf "
";
 
 		while ()
 		{
-			$out .= "while qmaqrp\n";
+			$out .= sprintf("%s", $_);
 		}
 
 		close QMAILQUEUEREPORT;
-	#	$out .= "
\n"; + $out .= sprintf "
"; - $out .= sprintf("

%s

\n",$c->l('END_OF_REPORT')); - return $out; + $out .= sprintf("

%s

", $c->l('END_OF_REPORT')); + return ''; } chdir "/var/log/qmail"; @@ -92,7 +93,7 @@ . "| /usr/local/qmailanalog/bin/$report_type |" ); - #$out .= "
\n";
+	$out .= sprintf "
";
 
 	while ()
 	{
@@ -103,14 +104,14 @@
 		s/\>/\>/g;
 		s/\\n";
-
 	close QMAILANALOG;
+	$out .= sprintf "
"; + - $out .= sprintf("

%s

\n",$c->l('END_OF_REPORT')); + $out .= sprintf("

%s

", $c->l('END_OF_REPORT')); return $out; } 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 08:55:14.000000000 +0400 +++ smeserver-manager-0.1.0/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/lib/SrvMngr/Controller/Quota.pm 2019-12-31 10:59:44.000000000 +0400 @@ -4,7 +4,11 @@ use warnings; use Mojo::Base 'Mojolicious::Controller'; -use Quota; +use esmith::FormMagick::Panel::quota; + +#use esmith::TestUtils; +use Scalar::Util qw(looks_like_number); + use Locale::gettext; use SrvMngr::I18N; @@ -12,7 +16,6 @@ #our $db = esmith::ConfigDB->open || die "Couldn't open config db"; our $adb = esmith::AccountsDB->open || die "Couldn't open accounts db"; -#our $db = esmith::ConfigDB->open('conf/test/configuration') || die "Couldn't open config db"; sub main { @@ -60,19 +63,14 @@ if ($rec and $rec->prop('type') eq 'user') { $quo_datas{user} = $user; $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')); + $quo_datas{softlim} = $max; } } - #if ( $trt eq 'LIST' ) { - # my @userAccounts; - # if ($adb) - # { - # @userAccounts = $adb->users(); - # } - # $c->stash( userAccounts => \@userAccounts ); - #} - $c->stash( title => $title, modul => $modul, quo_datas => \%quo_datas ); $c->render( template => 'quota' ); @@ -87,31 +85,20 @@ my $rt = $c->current_route; my $trt = ($c->param('trt') || 'LIST'); -# if ( $trt =~ /^([A-Z]3)$/ ) { -# $trt = $1; -# } else { -# return $c->l('quo_ERR_INPUT_CODE') . ': ' . $trt; -# } - my $result = ''; if ( $trt eq 'UPD' ) { - my $name = ($c->param('Name') || ''); - my $description = ($c->param('Description') || ''); - my $location = ($c->param('Location') || ''); + my $acct = ($c->param('user') || ''); + my $soft = ($c->param('Soft') || ''); + my $hard = ($c->param('Hard') || ''); # controls - my $res = validate_printer( $c, $name, $description, $location ); + my $res = validate_quota( $c, $acct, $soft, $hard ); $result .= $res unless $res eq 'OK'; if ( ! $result ) { - $res = new_printer( $c, $name, $description, $location ); - #$remoteName, $address ); - $result .= $res unless $res eq 'OK'; - if ( ! $result ) { - $result = $c->l('quo_CREATED_SUCCESSFULLY') . ' ' . $name; - } + $result = $c->l('quo_SUCCESSFULLY_MODIFY') . ' ' . $acct; } } @@ -123,66 +110,60 @@ }; -sub upd_user { - - my ( $c, $user ) = @_; - - # Update the db config (1) - - my $prop_del = "accounts settype $user user-updated"; - system ( '/bin/sudo', '/sbin/e-smith/db', split( / /, $prop_del ) ) == 0 - or return $c->l('quo_ERR_DELETING') . ' ' . $prop_del; - - # Update system - - system ('/bin/sudo', '/sbin/e-smith/signal-event', "user-delete", $user) == 0 - or return $c->l('quo_ERR_DELETING') . " system " . $user; - - # Update the db config (2) - - $prop_del = "accounts delete $user"; - system ( '/bin/sudo', '/sbin/e-smith/db', split( / /, $prop_del ) ) == 0 - or return $c->l('quo_ERR_DELETING') . ' ' . $prop_del; - - return 'OK'; -} - - -sub validate_printer { - - my ($c, $name, $description, $location, $remoteName, $address ) = @_; +sub validate_quota { + my ($c, $acct, $softlim, $hardlim ) = @_; + my $msg; + + my $rec = $adb->get($acct); + return $c->l('quo_ERR_NO_SUCH_ACCT') . ' : ' . $acct unless (defined $rec); + + my $type = $rec->prop('type'); + unless ($type eq "user") { + $msg = $c->l('quo_ERR_NOT_A_USER_ACCT').$acct.$c->l('quo_ACCOUNT_IS_TYPE').$type; + return $msg; + } + my $uid = getpwnam($acct); + return $c->l('COULD_NOT_GET_UID').$acct unless ($uid); + + if (($softlim !~ /^(.+?)\s*([KMGT])?$/ ) || (!looks_like_number ($1))) { + return $c->l('quo_SOFT_VAL_MUST_BE_NUMBER'); + } + + my $exponent = 1; # Entries with no suffix are assumed to be in megabytes. + if (defined ($2)) { + $exponent = index("KMGT",$2); + } + $softlim = ($1 * 1024 ** $exponent); + + if (($hardlim !~ /^(.+?)\s*([KMGT])?$/ ) || (!looks_like_number ($1))) { + return $c->l('quo_HARD_VAL_MUST_BE_NUMBER'); + } + $exponent = 1; # Entries with no suffix are assumed to be in megabytes. + if (defined ($2)) + { + $exponent = index("KMGT",$2); + } + $hardlim = ($1 * 1024 ** $exponent); #------------------------------------------------------------ - # Validate parameters and untaint them + # Make sure that soft limit is less than hard limit. #------------------------------------------------------------ - if ($name =~ /^([a-z][a-z0-9]*)$/) { - $name = $1; - } else { - return $c->l('quo_ERR_UNEXPECTED_NAME') . ': ' . $name; - } - - if ($description =~ /^([\'\w\s]+)$/) { - $description = $1; - } else { - return $c->l('quo_ERR_UNEXPECTED_DESC') . ': ' . $description; - } - - if ($location =~ /^(.*)$/) { - $location = $1; - } else { - $location = "lp0"; + unless ($hardlim == 0 or $hardlim > $softlim) { + return $c->l('quo_ERR_HARD_LT_SOFT'); } #------------------------------------------------------------ - # Looks good. Find out if this printer has been taken + # Update accounts database and signal the user-modify event. #------------------------------------------------------------ - my $rec = $adb->get($name); - my $type; - if ($rec and ($type = $rec->prop('type'))) { - return $c->l('quo_ERR_EXISTS') . ' : ' . $name; - } + $rec->set_prop('MaxBlocks', $hardlim); + $rec->set_prop('MaxBlocksSoftLim', $softlim); + + # Untaint $acct before using in system(). + $acct =~ /^(\w[\-\w_\.]*)$/; $acct = $1; + system ("/sbin/e-smith/signal-event", "user-modify", "$acct") == 0 + or die ($c->l('quo_ERR_MODIFYING')."\n"); return 'OK'; } diff -urN smeserver-manager-0.1.0.old/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/lib/SrvMngr/Controller/Wbl.pm smeserver-manager-0.1.0/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/lib/SrvMngr/Controller/Wbl.pm --- smeserver-manager-0.1.0.old/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/lib/SrvMngr/Controller/Wbl.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/Controller/Wbl.pm 2019-12-24 15:57:15.000000000 +0400 @@ -13,7 +13,6 @@ #use esmith::FormMagick::Panel::wbl; use smeserver::Panel::wblNew; -##our $db = esmith::ConfigDB->open('conf/test/configuration') || die "Couldn't open config db"; sub main { my $c = shift; diff -urN smeserver-manager-0.1.0.old/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/lib/SrvMngr/Controller/Workgroup.pm smeserver-manager-0.1.0/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/lib/SrvMngr/Controller/Workgroup.pm --- smeserver-manager-0.1.0.old/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/lib/SrvMngr/Controller/Workgroup.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/Controller/Workgroup.pm 2019-12-24 16:05:01.000000000 +0400 @@ -10,7 +10,6 @@ use esmith::FormMagick::Panel::workgroup; our $db = esmith::ConfigDB->open || die "Couldn't open config db"; -#our $db = esmith::ConfigDB->open('conf/test/configuration') || die "Couldn't open config db"; sub main { my $c = shift; @@ -48,27 +47,15 @@ $res = validate2_servername($c, $servername); $result .= $res unless $res eq 'OK'; - #$db->get('smb')->set_prop('Workgroup', $workgroup); - #$db->get('smb')->set_prop('ServerRole', $serverrole); - #$db->get('smb')->set_prop('ServerName', $servername); - #$db->get('smb')->set_prop('RoamingProfiles', $roamingprofiles); - - my $prop_upd = 'configuration setprop smb '; - $prop_upd .= "Workgroup $workgroup ServerRole $serverrole ServerName $servername RoamingProfiles $roamingprofiles"; - # - # Update the db config - # -# system ('/bin/sudo', '/sbin/e-smith/db', 'configuration', 'setprop', 'smb', 'Workgroup', $workgroup, -# 'ServerRole', $serverrole, 'ServerName', $servername, 'RoamingProfiles', $roamingprofiles) == 0 - system ( '/bin/sudo', '/sbin/e-smith/db', split( / /, $prop_upd ) ) == 0 - or $result = $c->l('ERROR_UPDATING') . " db config: " . $prop_upd; - # - # Update the system - # if ($result eq '') { - system ('/bin/sudo', '/sbin/e-smith/signal-event', 'workgroup-update') == 0 - or $result = $c->l('ERROR_UPDATING') . " system"; + $db->get('smb')->set_prop('Workgroup', $workgroup); + $db->get('smb')->set_prop('ServerRole', $serverrole); + $db->get('smb')->set_prop('ServerName', $servername); + $db->get('smb')->set_prop('RoamingProfiles', $roamingprofiles); } + + system( "/sbin/e-smith/signal-event", "workgroup-update" ) == 0 + or $result = $c->l('ERROR_UPDATING') . " system"; my $title = $c->l('wkg_FORM_TITLE'); @@ -76,6 +63,7 @@ $c->stash( title => $title, modul => $result ); $c->render(template => 'module'); + }; 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-31 08:55:14.000000000 +0400 +++ smeserver-manager-0.1.0/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/lib/SrvMngr/I18N/en.pm 2019-12-26 23:18:10.000000000 +0400 @@ -974,6 +974,37 @@ 'quo_SUCCESSFULLY_MODIFIED' => 'Successfully modified quota for user account: ', 'quo_Quotas' => 'Quotas', +'grp_FORM_TITLE' => 'Create, modify, or remove user groups', +'grp_GROUP_TOO_LONG' => 'Error: group name is too long.The maximum is {$maxLength} characters.', +'grp_ACCOUNT_CONFLICT' => 'Error: the group "{$group}" can\'t be created because there is +already a {$type} account of that name.', +'grp_INVALID_GROUP_DESCRIPTION' => 'Error: unexpected or missing characters in group description', +'grp_NO_MEMBERS' => 'Error: no members in group.Did not create new group.', +'grp_CREATED_GROUP' => 'Successfully created user group', +'grp_DELETED_GROUP' => 'Successfully removed user group', +'grp_MODIFIED_GROUP' => 'Successfully modifed user group', +'grp_CREATE_ERROR' => 'An error occurred while creating user group.', +'grp_DELETE_ERROR' => 'An error occurred while removing user group.', +'grp_MODIFY_ERROR' => 'An error occurred while modifying user group.', +'grp_GROUP_NAMING' => 'The group name should contain only lower-case +letters, numbers, hyphens, periods, and underscores, +and should start with a lower-case letter. For +example "sales", "beta5", and "reseller_partners" are +all valid group names, but "3rd-event", "Marketing Team" +and "lost&found" are not.', +'grp_GROUP_HAS_MEMBERS' => 'This group contains the following members:', +'grp_NOT_A_GROUP' => 'Error: That is not an existing group account.', +'grp_GROUP_DESC' => 'Brief Description/Windows Group Alias', +'grp_GROUP_DESC_EXPL' => 'Input a brief group description in the field below. + This field also designates the group name viewable by + Windows clients.', +'grp_IBAYS_WILL_BE_CHANGED' => 'The following information bays were assigned to this group and +will be changed to the Administrator group (you can change them to +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}."', + ); diff -urN smeserver-manager-0.1.0.old/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/lib/SrvMngr/I18N/fr.pm smeserver-manager-0.1.0/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/lib/SrvMngr/I18N/fr.pm --- smeserver-manager-0.1.0.old/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/lib/SrvMngr/I18N/fr.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/I18N/fr.pm 2019-12-26 23:18:48.000000000 +0400 @@ -672,6 +672,27 @@ 'quo_SUCCESSFULLY_MODIFIED' => 'Modification réussie du quota pour compte utilisateur', 'quo_Quotas' => 'Quotas', +'grp_FORM_TITLE' => 'Gestion des groupes d\'utilisateurs', +'grp_GROUP_TOO_LONG' => 'ERREUR : le nom du groupe est trop long : {$maxLength} caractères au maximum.', +'grp_ACCOUNT_CONFLICT' => 'ERREUR : le groupe "{$group}" ne peut être créé car il existe déjà un compte {$type} avec ce nom.', +'grp_INVALID_GROUP_DESCRIPTION' => 'ERREUR : caractères inattendus ou manquants dans la description du groupe.', +'grp_NO_MEMBERS' => 'ERREUR : aucun membre dans le groupe. Le groupe n\'a pas été créé.', +'grp_CREATED_GROUP' => 'Le groupe d\'utilisateurs a été créé avec succès.', +'grp_DELETED_GROUP' => 'Le groupe d\'utilisateurs a été supprimé avec succès.', +'grp_MODIFIED_GROUP' => 'Le groupe d\'utilisateurs a été modifié avec succès.', +'grp_CREATE_ERROR' => 'Une erreur est survenue lors de la création du groupe d\'utilisateurs.', +'grp_DELETE_ERROR' => 'Une erreur est survenue lors de la suppression du groupe d\'utilisateurs.', +'grp_MODIFY_ERROR' => 'Une erreur est survenue lors de la modification du groupe d\'utilisateurs.', +'grp_GROUP_NAMING' => ' Le nom de groupe doit contenir uniquement des lettres minuscules, des chiffres, des traits d\'union, des points, des traits de soulignement et commencer par une minuscule. Par exemple, "ventes", "beta5" ou "partenaires_ventes" sont tous des noms de groupe valides, mais pas "3e-événement", "Groupe Marketing" ni "perdu&trouvé". ', +'grp_GROUP_HAS_MEMBERS' => 'Ce groupe contient les membres suivants :', +'grp_NOT_A_GROUP' => 'ERREUR : Compte de groupe inexistant.', +'grp_GROUP_DESC' => 'Brève description / Alias de groupe Windows', +'grp_GROUP_DESC_EXPL' => 'Tapez une brève description du groupe dans le champ ci-dessous. Ce champ correspond également au nom du groupe visible par les clients Windows.', +'grp_IBAYS_WILL_BE_CHANGED' => 'Les i-bays suivantes étaient attribuées à ce groupe et vont être réattribuées au groupe de l\'administrateur (vous pourrez par la suite les attribuer à un autre groupe) :', +'grp_CONFIRM_DELETE_GROUP' => ' Voulez-vous vraiment supprimer ce groupe ? ', +'grp_CURRENT_LIST' => ' Liste actuelle des groupes d\'utilisateurs : ', +'grp_DELETE_DESCRIPTION' => ' Vous êtes sur le point de supprimer le groupe d\'utilisateurs "{$group}". ', + ); diff -urN smeserver-manager-0.1.0.old/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/script/srvmngr.pl smeserver-manager-0.1.0/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/script/srvmngr.pl --- smeserver-manager-0.1.0.old/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/script/srvmngr.pl 2019-12-31 08:55:14.000000000 +0400 +++ smeserver-manager-0.1.0/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/script/srvmngr.pl 2019-12-29 23:45:41.000000000 +0400 @@ -72,32 +72,48 @@ my $r = app->routes; $r->namespaces(['SrvMngr::Controller']); + $r->get('/')->to('initial#main')->name('initial'); $r->get('/bugreport')->to('bugreport#main')->name('bugreport'); $r->post('/bugreport')->to('bugreport#do_report')->name('bugreport2'); +$r->post('/bugreportD')->to('bugreport#download_config_report')->name('bugreportD'); + $r->get('/clamav')->to('clamav#main')->name('clamav'); $r->post('/clamav')->to('clamav#do_update')->name('clamav2'); $r->get('/datetime')->to('datetime#main')->name('datetime'); $r->post('/datetime')->to('datetime#do_update')->name('datetime2'); $r->get('/directory')->to('directory#main')->name('directory'); $r->post('/directory')->to('directory#do_update')->name('directory2'); + +$r->get('/groups')->to('groups#main')->name('groups'); +$r->post('/groups')->to('groups#do_display')->name('groupadd1'); +$r->post('/groupadd')->to('groups#do_update')->name('groupadd2'); +$r->get('/groupupd')->to('groups#do_display')->name('groupupd1'); +$r->post('/groupupd')->to('groups#do_update')->name('groupupd2'); +$r->get('/groupdel')->to('groups#do_display')->name('groupdel1'); +$r->post('/groupdel')->to('groups#do_update')->name('groupdel2'); + $r->get('/logout')->to('main#logout')->name('logout'); $r->get('/manual')->to('manual#main')->name('manual'); + $r->get('/printers')->to('printers#main')->name('printers'); $r->post('/printers')->to('printers#do_display')->name('printeradd'); $r->get('/printers2')->to('printers#do_update')->name('printernet'); $r->post('/printers2')->to('printers#do_update')->name('printerupd'); -#$r->post('/printers3')->to('printers#do_update')->name('printernet'); -#$r->get('/printers/:printer' => {printer => qr/^([a-z][a-z0-9]*)$/})->to('printers#do_display')->name('printerdel'); +# $r->post('/printers3')->to('printers#do_update')->name('printernet'); +# $r->get('/printers/:printer' => {printer => qr/^([a-z][a-z0-9]*)$/})->to('printers#do_display')->name('printerdel'); $r->get('/printdel')->to('printers#do_display')->name('printerdel'); $r->post('/printdel')->to('printers#do_update')->name('printerdel2'); $r->get('/proxy')->to('proxy#main')->name('proxy'); $r->post('/proxy')->to('proxy#do_update')->name('proxy2'); $r->get('/qmailanalog')->to('qmailanalog#main')->name('qmailanalog'); $r->post('/qmailanalog')->to('qmailanalog#do_update')->name('qmailanalog2'); + $r->get('/quota')->to('quota#main')->name('quota'); $r->get('/quotaupd')->to('quota#do_display')->name('quotalist'); $r->post('/quotaupd')->to('quota#do_update')->name('quotaupd'); +$r->post('/quota2')->to('quota#do_update')->name('quotaval'); + $r->get('/review')->to('review#main')->name('review'); $r->get('/starterwebsite')->to('starterwebsite#main')->name('starterwebsite'); $r->post('/starterwebsite')->to('starterwebsite#do_site')->name('starterwebsite2'); diff -urN smeserver-manager-0.1.0.old/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/themes/default/public/js/navigation.js smeserver-manager-0.1.0/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/themes/default/public/js/navigation.js --- smeserver-manager-0.1.0.old/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/themes/default/public/js/navigation.js 2019-12-31 08:55:14.000000000 +0400 +++ smeserver-manager-0.1.0/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/themes/default/public/js/navigation.js 2019-12-31 17:17:43.000000000 +0400 @@ -13,12 +13,16 @@ tA[i].className=(tA[i].className==arg[3])?arg[2]:arg[3];} }else if(tA[i].className==arg[2]){tA[i].className=arg[3];}}}}} + // language en //This swap the class of the selected item. function swapClasses() { var arg=swapClasses.arguments; swapClass(0,'none','item-current','item','a'); swapClass(0,'none','warn-current','warn','a'); swapClass(0,arg[0],'item-current','item','a'); + //swapClass(0,'none','item-current accent','item accent','a'); + //swapClass(0,'none','warn-current accent','warn accent','a'); + //swapClass(0,arg[0],'item-current accent','item accent','a'); } // End script hiding --> diff -urN smeserver-manager-0.1.0.old/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/themes/default/templates/bugreport2.html.ep smeserver-manager-0.1.0/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/themes/default/templates/bugreport2.html.ep --- smeserver-manager-0.1.0.old/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/themes/default/templates/bugreport2.html.ep 1970-01-01 04:00:00.000000000 +0400 +++ smeserver-manager-0.1.0/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/themes/default/templates/bugreport2.html.ep 2019-12-26 18:11:16.000000000 +0400 @@ -0,0 +1,28 @@ +% layout 'default', title => 'Sme server 2 - Bug report 2'; + +% content_for 'module' => begin + +
+ + % if ($config->{debug} == 1) { +

+ (DBG)route: <%= $c->current_route %>
+ (DBG)trt: <%= $bugr_datas->{trt} %>
+

+ % } + +

<%= $title %>

+ +
<%= $modul %>
+ +

+ <% my $btn = l('bugr_Download this report'); %> + + %= form_for 'bugreportD' => (method => 'POST') => begin + %= submit_button "$btn", class => 'action' + %= hidden_field 'trt' => $bugr_datas->{trt} + % end + +

+ +%end diff -urN smeserver-manager-0.1.0.old/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/themes/default/templates/bugreport.html.ep smeserver-manager-0.1.0/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/themes/default/templates/bugreport.html.ep --- smeserver-manager-0.1.0.old/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/themes/default/templates/bugreport.html.ep 2019-12-31 08:55:14.000000000 +0400 +++ smeserver-manager-0.1.0/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/themes/default/templates/bugreport.html.ep 2019-12-26 00:05:23.000000000 +0400 @@ -1,69 +1,78 @@ % layout 'default', title => 'Sme server 2 - Bug report'; % content_for 'module' => begin +
-

<%= $c->current_route %>


-

<%= $title %>

+ % if ($config->{debug} == 1) { +

+ (DBG)route: <%= $c->current_route %>
+ (DBG)trt: <%= $bugr_datas->{trt} %>
+

+ % } + +

<%= $title %>

-

-

-%=l ('bugr_DO_NOT_PANIC') -

-

-%=l ('bugr_SME_EXPERIENCE') -

-%=l ('bugr_PLEASE_REPORT_HERE') -

-%=l ('bugr_USE_TEMPLATE') -

-%=l ('bugr_FOLLOWING_REPORT_MIGHT_HELP') -

-%=l ('bugr_REPORT_CONTENT') -

  • -%=l ('bugr_SME_VERSION') -
  • -%=l ('bugr_SERVER_MODE') -
  • -%=l ('bugr_KERNEL_AND_ARCH') -
  • -%=l ('bugr_INSTALLED_RPMS') -
  • -%=l ('bugr_ALTERED_TEMPLATES') -
  • -%=l ('bugr_ALTERED_EVENTS') -
  • -%=l ('bugr_YUM_REPOS') -

-%=l ('bugr_PRIVACY') -

-<% my $btn = l('bugr_CREATE_REPORT'); %> - -%= form_for 'bugreport' => (method => 'POST') => begin - %= submit_button "$btn", class => 'action' -% end - -

-%=l ('bugr_DONATING') -

-%=l ('bugr_AWARE_SME') -

-%=l ('bugr_YOUR_HELP') -

-%=l ('bugr_CONSIDER_DONATING') -

-<%= link_to 'https://wiki.koozali.org/Donate' => begin %> -%= image 'images/btn_donateCC_LG.gif' -<% end %> -
-%=l ('bugr_THANK_YOU') -

-

- %= link_to Back => '/' + +

+ %=l ('bugr_DO_NOT_PANIC') +

+

+ %=l ('bugr_SME_EXPERIENCE') +

+ %=l ('bugr_PLEASE_REPORT_HERE') +

+ %=l ('bugr_USE_TEMPLATE') +

+ %=l ('bugr_FOLLOWING_REPORT_MIGHT_HELP') +

+ %=l ('bugr_REPORT_CONTENT') +

  • + %=l ('bugr_SME_VERSION') +
  • + %=l ('bugr_SERVER_MODE') +
  • + %=l ('bugr_KERNEL_AND_ARCH') +
  • + %=l ('bugr_INSTALLED_RPMS') +
  • + %=l ('bugr_ALTERED_TEMPLATES') +
  • + %=l ('bugr_ALTERED_EVENTS') +
  • + %=l ('bugr_YUM_REPOS') +

+ %=l ('bugr_PRIVACY') +

+ + <% my $btn = l('bugr_CREATE_REPORT'); %> + + %= form_for 'bugreport' => (method => 'POST') => begin + %= submit_button "$btn", class => 'action' + % end + +

+ %=l ('bugr_DONATING') +

+ %=l ('bugr_AWARE_SME') +

+ %=l ('bugr_YOUR_HELP') +

+ %=l ('bugr_CONSIDER_DONATING') +

+ + %= link_to 'https://wiki.koozali.org/Donate' => begin + %= image 'images/btn_donateCC_LG.gif' + + %= hidden_field 'trt' => $bugr_datas->{trt} + + % end + +
+ %=l ('bugr_THANK_YOU')

+
+ %end \ Pas de fin de ligne à la fin du fichier diff -urN smeserver-manager-0.1.0.old/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/themes/default/templates/groups.html.ep smeserver-manager-0.1.0/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/themes/default/templates/groups.html.ep --- smeserver-manager-0.1.0.old/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/themes/default/templates/groups.html.ep 1970-01-01 04:00:00.000000000 +0400 +++ smeserver-manager-0.1.0/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/themes/default/templates/groups.html.ep 2019-12-29 10:25:46.000000000 +0400 @@ -0,0 +1,29 @@ +% layout 'default', title => "Sme server 2 - groups", share_dir => './'; + +% content_for 'module' => begin +
+ + % if ($config->{debug} == 1) { +

+ %= dumper $c->current_route + %= dumper $grp_datas +

+ % } + +

<%= $title%>

+ + %= $modul + + % if ($grp_datas->{trt} eq 'ADD') { + %= include 'partials/_grp_add' + %} elsif ($grp_datas->{trt} eq 'DEL') { + %= include 'partials/_grp_del' + %} elsif ($grp_datas->{trt} eq 'UPD') { + %= include 'partials/_grp_upd' + %} else { + %= include 'partials/_grp_list' + %} + +
+%end + diff -urN smeserver-manager-0.1.0.old/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/themes/default/templates/layouts/default.html.ep smeserver-manager-0.1.0/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/themes/default/templates/layouts/default.html.ep --- smeserver-manager-0.1.0.old/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/themes/default/templates/layouts/default.html.ep 2019-12-31 08:55:14.000000000 +0400 +++ smeserver-manager-0.1.0/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/themes/default/templates/layouts/default.html.ep 2019-12-11 20:13:15.000000000 +0400 @@ -9,7 +9,7 @@ - + %= include 'partials/_head' diff -urN smeserver-manager-0.1.0.old/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/themes/default/templates/partials/_grp_add.html.ep smeserver-manager-0.1.0/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/themes/default/templates/partials/_grp_add.html.ep --- smeserver-manager-0.1.0.old/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/themes/default/templates/partials/_grp_add.html.ep 1970-01-01 04:00:00.000000000 +0400 +++ smeserver-manager-0.1.0/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/themes/default/templates/partials/_grp_add.html.ep 2020-01-04 11:12:11.922000000 +0400 @@ -0,0 +1,60 @@ +
+ + % my $btn = l('ADD'); + + + + %= form_for '/groupadd' => (method => 'POST') => begin +

+

+ %=l 'CREATE_GROUP' +

+

+ %=l 'grp_GROUP_NAMING' +

+ +

+ + %=l 'GROUP_NAME', class => 'label' + + %= text_field 'groupName', class => 'input' + +

+ +

+ %=l 'grp_GROUP_DESC_EXPL' +

+ + %=l 'grp_GROUP_DESC', class => 'label' + + %= text_field 'groupDesc', class => 'input' + +

+ +

+ + %=l 'GROUP_MEMBERS', class => 'label' + +
+ %= check_box 'groupMembers' => 'admin' + Administrator (admin) +
+ % foreach my $key ( keys %$users ) + % { + %= check_box 'groupMembers' => $key + %=$users->{$key} + %= "(" . $key . ")" +
+ % } +

+ +

+

+ %= submit_button "$btn", class => 'action' +

+ + %= hidden_field 'trt' => $grp_datas->{trt} + + % end + +
diff -urN smeserver-manager-0.1.0.old/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/themes/default/templates/partials/_grp_del.html.ep smeserver-manager-0.1.0/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/themes/default/templates/partials/_grp_del.html.ep --- smeserver-manager-0.1.0.old/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/themes/default/templates/partials/_grp_del.html.ep 1970-01-01 04:00:00.000000000 +0400 +++ smeserver-manager-0.1.0/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/themes/default/templates/partials/_grp_del.html.ep 2019-12-29 17:49:30.000000000 +0400 @@ -0,0 +1,68 @@ +
+ + % my $btn = l('REMOVE'); + %= form_for '/groupdel' => (method => 'POST') => begin +

+

+ %=l 'REMOVE_USER_GROUP' +

+ +

+ %=l 'grp_DELETE_DESCRIPTION' + %=$grp_datas->{group} + ( + %=$grp_datas->{description} + ) +

+ +

+ % my $size = keys %$members; + % if ( ! $size ){ + %=l 'ACCOUNT_GROUP_NONE' + % } else { + %=l 'grp_GROUP_HAS_MEMBERS' +
+

    + % foreach my $key ( keys %$members) + % { +
  • + %=$key + ( + %=$members->{$key} + ) +
  • + % } +
+ % } +

+ +

+ % $size = keys %$ibays; + % if ( $size ) { + %=l 'grp_IBAYS_WILL_BE_CHANGED' +
+

    + % foreach my $key (sort ( keys %$ibays )) + % { +
  • + %=$key + ( + %=$ibays->{$key} + ) +
  • + % } +
+ % } +

+ +

+
+ %= submit_button "$btn", class => 'action' +

+ + %= hidden_field 'trt' => $grp_datas->{trt} + %= hidden_field 'group' => $grp_datas->{group} + + % end + +
diff -urN smeserver-manager-0.1.0.old/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/themes/default/templates/partials/_grp_list.html.ep smeserver-manager-0.1.0/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/themes/default/templates/partials/_grp_list.html.ep --- smeserver-manager-0.1.0.old/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/themes/default/templates/partials/_grp_list.html.ep 1970-01-01 04:00:00.000000000 +0400 +++ smeserver-manager-0.1.0/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/themes/default/templates/partials/_grp_list.html.ep 2019-12-31 17:10:14.000000000 +0400 @@ -0,0 +1,57 @@ +
+ + + % my $btn = l('GROUP_ADD'); + + %= form_for '/groups' => (method => 'POST') => begin + +

+
+ %= submit_button "$btn", class => 'action' +

+ +

+

+ %=l 'grp_CURRENT_LIST' +

+

+ % my $numGroups = @$groups; + % if ($numGroups == 0){ + %=l 'grp_ACCOUNT_GROUP_NONE' + % } else { + + + + + + + + % foreach my $group ( @$groups) + % { + + %= t td => (class => 'sme-border') => $group->key + %= t td => (class => 'sme-border') => $group->prop('Description') + + + + + % } + +
+ %=l 'GROUP' + + %=l 'DESCRIPTION' + + + %=l 'ACTION' +
<%=l 'MODIFY'%><%=l 'REMOVE'%>
+ <%} %> +

+ + %= hidden_field 'trt' => $grp_datas->{trt} + + % end + +
diff -urN smeserver-manager-0.1.0.old/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/themes/default/templates/partials/_grp_upd.html.ep smeserver-manager-0.1.0/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/themes/default/templates/partials/_grp_upd.html.ep --- smeserver-manager-0.1.0.old/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/themes/default/templates/partials/_grp_upd.html.ep 1970-01-01 04:00:00.000000000 +0400 +++ smeserver-manager-0.1.0/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/themes/default/templates/partials/_grp_upd.html.ep 2020-01-04 11:18:15.380000000 +0400 @@ -0,0 +1,70 @@ +
+ + + + % my $btn = l('SAVE'); + + %= form_for '/groupupd' => (method => 'POST') => begin +

+

+ %=l 'MODIFY_USER_GROUP' +

+
+

+ +

+ + %=l 'GROUP_NAME', class => 'label' + + %= $grp_datas->{group}, class => 'data' + +

+ +

+ %=l 'grp_GROUP_DESC_EXPL' +

+ + %=l 'grp_GROUP_DESC', class => 'label' + + % param 'groupDesc' => $grp_datas->{description} unless param 'groupDesc'; + %= text_field 'groupDesc', class => 'input' + +

+ +

+ + %=l 'GROUP_MEMBERS', class => 'label' + +
+ + % if ( $members->{'admin'} ) { + %= check_box 'groupMembers', value => 'admin', checked => 'checked' + %} else { + %= check_box 'groupMembers' => 'admin' + %} + Administrator (admin) +
+ + % foreach my $key ( keys %$users ) + % { + % if ( $members->{ $key } ) { + + + %} else { + %= check_box 'groupMembers' => $key + %} + %=$users->{$key} . " (" . $key . ")" +
+ % } +

+ +

+

+ %= submit_button "$btn", class => 'action' +

+ + %= hidden_field 'trt' => $grp_datas->{trt} + + % end + +
diff -urN smeserver-manager-0.1.0.old/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/themes/default/templates/partials/_navig.html.ep smeserver-manager-0.1.0/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/themes/default/templates/partials/_navig.html.ep --- smeserver-manager-0.1.0.old/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/themes/default/templates/partials/_navig.html.ep 2019-12-31 08:55:14.000000000 +0400 +++ smeserver-manager-0.1.0/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/themes/default/templates/partials/_navig.html.ep 2019-12-31 17:17:43.000000000 +0400 @@ -4,37 +4,37 @@ \ Pas de fin de ligne à la fin du fichier diff -urN smeserver-manager-0.1.0.old/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/themes/default/templates/partials/_quo_upd.html.ep smeserver-manager-0.1.0/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/themes/default/templates/partials/_quo_upd.html.ep --- smeserver-manager-0.1.0.old/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/themes/default/templates/partials/_quo_upd.html.ep 2019-12-31 08:55:14.000000000 +0400 +++ smeserver-manager-0.1.0/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/themes/default/templates/partials/_quo_upd.html.ep 2019-12-31 10:58:40.000000000 +0400 @@ -57,6 +57,7 @@ %=l 'quo_LIMIT_WITH_GRACE', class => 'label' + % param 'Soft' => $quo_datas->{softlim} unless param 'Soft'; %= text_field 'Soft', class => 'input'

@@ -65,6 +66,7 @@ %=l 'quo_ABS_LIMIT', class => 'label' + % param 'Hard' => $quo_datas->{hardlim} unless param 'Hard'; %= text_field 'Hard', class => 'input'

@@ -75,24 +77,8 @@

%= hidden_field 'trt' => $quo_datas->{trt} + %= hidden_field 'user' => $quo_datas->{user} % end - - \ Pas de fin de ligne à la fin du fichier diff -urN smeserver-manager-0.1.0.old/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/themes/default/templates/quota.html.ep smeserver-manager-0.1.0/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/themes/default/templates/quota.html.ep --- smeserver-manager-0.1.0.old/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/themes/default/templates/quota.html.ep 2019-12-31 08:55:14.000000000 +0400 +++ smeserver-manager-0.1.0/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/themes/default/templates/quota.html.ep 2019-12-31 11:06:38.000000000 +0400 @@ -5,11 +5,15 @@ % if ($config->{debug} == 1) {

- (DBG)route: <%= $c->current_route %>
- (DBG)trt: <%= $quo_datas->{trt} %>
+ (DBG)route: + %= dumper $c->current_route +

% } - +

<%= $title%>

%= $modul diff -urN smeserver-manager-0.1.0.old/root/etc/e-smith/web/panels/manager2/html/index.cgi smeserver-manager-0.1.0/root/etc/e-smith/web/panels/manager2/html/index.cgi --- smeserver-manager-0.1.0.old/root/etc/e-smith/web/panels/manager2/html/index.cgi 2019-12-31 08:55:14.000000000 +0400 +++ smeserver-manager-0.1.0/root/etc/e-smith/web/panels/manager2/html/index.cgi 1970-01-01 04:00:00.000000000 +0400 @@ -1,6 +0,0 @@ -#! /usr/bin/perl -#-wT - -exec("perl ./srvmngr.pl") if chdir "../cgi-bin/srvmngr"; - -#exec("perl -T ./srvmngr.pl"); diff -urN smeserver-manager-0.1.0.old/root/etc/e-smith/web/panels/manager2/html/index.pl smeserver-manager-0.1.0/root/etc/e-smith/web/panels/manager2/html/index.pl --- smeserver-manager-0.1.0.old/root/etc/e-smith/web/panels/manager2/html/index.pl 1970-01-01 04:00:00.000000000 +0400 +++ smeserver-manager-0.1.0/root/etc/e-smith/web/panels/manager2/html/index.pl 2019-12-31 17:18:19.000000000 +0400 @@ -0,0 +1,15 @@ +#! /usr/bin/perl -wT + +use esmith::util; + +BEGIN +{ + $0 =~ /^(.+)$/ms; $0 = $1; # Untaint script name + $ENV{'PATH'} = '/bin:/usr/bin:/usr/local/bin'; + $ENV{'SHELL'} = '/bin/bash'; + $ENV{'HOME'} = '/root'; + delete $ENV{'ENV'}; + esmith::util::setRealToEffective(); +} + +exec("perl ./srvmngr.pl") if chdir "../cgi-bin/srvmngr";