diff -aurN smeserver-manager-0.1.0.old/root/etc/e-smith/events/actions/locales2-conf smeserver-manager-0.1.0/root/etc/e-smith/events/actions/locales2-conf --- smeserver-manager-0.1.0.old/root/etc/e-smith/events/actions/locales2-conf 2020-08-05 22:11:56.000000000 +0400 +++ smeserver-manager-0.1.0/root/etc/e-smith/events/actions/locales2-conf 2020-08-05 23:57:08.343000000 +0400 @@ -43,9 +43,18 @@ foreach my $lex (@lexs) { my $long_lex = I18NMODULES . "/$module/$lex"; + next if (-d $long_lex); - my ($mod, $lang) = split /[_.]/, $lex; + # my ($mod, $lang) = split /[_.]/, $lex; # module name without '_' + my @elements = split /[_.]/, $lex; + next if ( scalar @elements < 3 ); + + my $mod = join( '_', @elements[0..(scalar @elements - 3)] ); + my $lang = @elements[scalar @elements - 2]; + + next if ( $mod ne lc($module) ); + my $long_pm = I18NMODULES . "/$module/$lang". '.pm'; if ( -f $long_pm ) { # .pm file newer than .lex diff -aurN smeserver-manager-0.1.0.old/root/etc/e-smith/templates/usr/share/smanager/themes/default/public/css/styles.css/50body smeserver-manager-0.1.0/root/etc/e-smith/templates/usr/share/smanager/themes/default/public/css/styles.css/50body --- smeserver-manager-0.1.0.old/root/etc/e-smith/templates/usr/share/smanager/themes/default/public/css/styles.css/50body 2020-08-05 22:11:56.000000000 +0400 +++ smeserver-manager-0.1.0/root/etc/e-smith/templates/usr/share/smanager/themes/default/public/css/styles.css/50body 2020-08-05 23:31:25.000000000 +0400 @@ -122,16 +122,29 @@ input.action { margin-left: 0px; - color: darkgreen; background-color: #bee6a2; /*lightgreen;*/ + color: darkgreen; + border-radius: 8px; + border: 2px solid #4CAF50; /* Green */ + display: flex; + justify-content: center; + align-items: center; +} + +.center { + display: flex; + justify-content: center; } input.action2 { margin-left: 0px; color: black; background-color: #d4d0c8; + display: flex; + justify-content: center; } + #modul.desc { padding: 3px; background-color: grey; @@ -162,7 +175,7 @@ font-weight: bold; } -.menu-title { +a.menu-title { display: inline-block; color: #1A6D1A; /*#666;*/ padding-left: 1px; diff -aurN smeserver-manager-0.1.0.old/root/usr/share/smanager/lib/SrvMngr/Controller/Localnetworks.pm smeserver-manager-0.1.0/root/usr/share/smanager/lib/SrvMngr/Controller/Localnetworks.pm --- smeserver-manager-0.1.0.old/root/usr/share/smanager/lib/SrvMngr/Controller/Localnetworks.pm 2020-08-05 22:11:56.000000000 +0400 +++ smeserver-manager-0.1.0/root/usr/share/smanager/lib/SrvMngr/Controller/Localnetworks.pm 2020-08-07 00:35:27.000000000 +0400 @@ -13,8 +13,7 @@ use Locale::gettext; use SrvMngr::I18N; -use SrvMngr qw(theme_list init_session); -use Regexp::Common qw /net/; +use SrvMngr qw(theme_list init_session subnet_mask get_reg_mask ip_number); #use Data::Dumper; use esmith::util; @@ -130,6 +129,7 @@ @localnetworks = $network_db->get_all_by_prop( type => 'network' ); } $c->stash( localnetworks => \@localnetworks ); + ## $c->redirect_to('/localnetworks'); } $ln_datas{'trt'} = $trt; @@ -200,21 +200,19 @@ my $networkMask = $fm->param('networkMask'); my $networkRouter = $fm->param('networkRouter'); - #Validate syntax of Ips and subnet mask - my $ipregex = $RE{net}{IPv4} ; #Pre-built regex for IpV4 addresses. - my $ipmaskregex=qr/^(((255\.){3}(255|254|252|248|240|224|192|128|0+))|((255\.){2}(255|254|252|248|240|224|192|128|0+)\.0)|((255\.)(255|254|252|248|240|224|192|128|0+)(\.0+){2})|((255|254|252|248|240|224|192|128|0+)(\.0+){3}))$/; + #Validate Ips and subnet mask - unless ($networkAddress =~$ipregex){ - return (ret=>'ln_INVALID_IP_ADDRESS' , vars=>"Network Address"); - } - - unless ($networkRouter =~$ipregex) { - return (ret=>'ln_INVALID_IP_ADDRESS' , vars=>"Router Address"); - } - - unless ($networkMask =~ $ipmaskregex) { - return (ret=>'ln_INVALID_SUBNET_MASK' ); - } + my $res = ip_number($fm, $networkAddress); + return (ret=>'ln_INVALID_IP_ADDRESS', vars=>"Network Address $res") unless $res eq 'OK'; + + $res = subnet_mask( $networkMask ); + return (ret=>'ln_INVALID_SUBNET_MASK', vars=>"$networkMask" ) unless $res eq 'OK'; + + $res = ip_number($fm, $networkRouter); + return (ret=>'ln_INVALID_IP_ADDRESS' , vars=>"Routeur Address $res") unless $res eq 'OK'; + + # we transform bit mask to regular mask + $networkMask = get_reg_mask( $networkAddress, $networkMask ); my $network_db = esmith::NetworksDB->open() || esmith::NetworksDB->create(); @@ -287,7 +285,7 @@ } else { my $simpleMask = esmith::util::computeLocalNetworkPrefix( $network, $networkMask ); - return ($fm->render_to_string(inline => l('ln_SUCCESS_NONSTANDARD_RANGE', - vars=>"$network,$networkMask,$networkRouter,$totalHosts,$firstAddr,$lastAddr,$simpleMask"))); + return ( ret => 'ln_SUCCESS_NONSTANDARD_RANGE', + vars=>"$network,$networkMask,$networkRouter,$totalHosts,$firstAddr,$lastAddr,$simpleMask"); } } diff -aurN smeserver-manager-0.1.0.old/root/usr/share/smanager/lib/SrvMngr/Controller/Remoteaccess.pm smeserver-manager-0.1.0/root/usr/share/smanager/lib/SrvMngr/Controller/Remoteaccess.pm --- smeserver-manager-0.1.0.old/root/usr/share/smanager/lib/SrvMngr/Controller/Remoteaccess.pm 2020-08-05 22:11:56.000000000 +0400 +++ smeserver-manager-0.1.0/root/usr/share/smanager/lib/SrvMngr/Controller/Remoteaccess.pm 2020-08-06 23:09:49.000000000 +0400 @@ -15,7 +15,7 @@ use Locale::gettext; use SrvMngr::I18N; -use SrvMngr qw(theme_list init_session ip_number); +use SrvMngr qw(theme_list init_session ip_number subnet_mask get_reg_mask); use esmith::ConfigDB; use esmith::util; @@ -106,16 +106,16 @@ # controls $res = pptp_and_dhcp_range( $c, $rma_datas{pptpSessions} ); - $result .= $res unless $res eq 'OK'; + $result .= $res . ' ' unless $res eq 'OK'; $res = ip_number_or_blank( $c, $rma_datas{validFromNetwork} ); - $result .= $res unless $res eq 'OK'; + $result .= $res . ' ' unless $res eq 'OK'; $res = subnet_mask_or_blank( $c, $rma_datas{validFromMask} ); - $result .= $res unless $res eq 'OK'; + $result .= $res . ' ' unless $res eq 'OK'; $res = validate_network_and_mask( $c, $rma_datas{validFromNetwork}, $rma_datas{validFromMask} ); - $result .= $res unless $res eq 'OK'; + $result .= $res . ' ' unless $res eq 'OK'; #$result .= ' blocked for testing !' . $rma_datas{remove_nets}; } @@ -315,10 +315,13 @@ my $c = shift; my $mask = shift; - if (ip_number_or_blank($c, $mask) eq 'OK') { + if (!defined($mask) || $mask eq "") { return "OK"; - } - return $c->l('rma_INVALID_SUBNET_MASK') . " (" . $mask . ")"; + } + + chomp $mask ; + + return ( subnet_mask( $mask ) ne 'OK' ) ? $c->l('rma_INVALID_SUBNET_MASK') . " (" . $mask . ")" : 'OK'; } @@ -437,6 +440,9 @@ my $net = shift; my $mask = shift; + # we transform bit mask to regular mask + $mask = get_reg_mask( $net, $mask ); + my $rec = $db->get('httpd-admin'); return $c->error('ERR_NO_RECORD') unless $rec; @@ -500,5 +506,3 @@ 1; - - diff -aurN smeserver-manager-0.1.0.old/root/usr/share/smanager/lib/SrvMngr/I18N/Modules/Localnetworks/localnetworks_en.lex smeserver-manager-0.1.0/root/usr/share/smanager/lib/SrvMngr/I18N/Modules/Localnetworks/localnetworks_en.lex --- smeserver-manager-0.1.0.old/root/usr/share/smanager/lib/SrvMngr/I18N/Modules/Localnetworks/localnetworks_en.lex 2020-08-05 22:11:56.000000000 +0400 +++ smeserver-manager-0.1.0/root/usr/share/smanager/lib/SrvMngr/I18N/Modules/Localnetworks/localnetworks_en.lex 2020-08-07 00:48:38.000000000 +0400 @@ -29,7 +29,7 @@ {$networkAddress} and subnet mask {$networkMask}) has already been added. Did not add new network.', 'ln_ERROR_CREATING_NETWORK' => 'Error occurred while creating network.', -'ln_SUCCESS' =>'Successfully added network {$network}/{$networkMask} via router {$networkRouter}.', +'ln_SUCCESS' =>'Successfully added network [_1]/[_2] via router [_3].', 'ln_SUCCESS_SINGLE_ADDRESS' =>'Successfully added network {$network}/{$networkMask} via router {$networkRouter}. Your server will grant local access privileges to the single IP address {$network}. ', 'ln_SUCCESS_NETWORK_RANGE' =>'Successfully added network [_1]/[_2] via router [_3]. Your server will grant local access privileges to [_4] IP addresses in the range [_5] to [_6]. ', 'ln_NO_SUCH_NETWORK' =>'Network not found in network db', @@ -43,14 +43,7 @@ after this network is removed. ', 'ln_REMOVE_HOSTS_LABEL' => 'Remove hosts on network', 'ln-extra' => '{$network}/{$networkMask} via router $networkRouter}.', -'ln_SUCCESS_NONSTANDARD_RANGE' =>'

- Successfully added network {$network}/{$networkMask} via router - {$networkRouter}. -

- Your server will grant local - access privileges to {$totalHosts} IP addresses in the range - {$firstAddr} to {$lastAddr}. -

- Warning: the ProFTPd FTP server cannot - handle this nonstandard subnet mask. The simpler specification - {$simpleMask} will be used instead.

', +'ln_SUCCESS_NONSTANDARD_RANGE' =>'

Successfully added network [_1]/[_2] via router [_3].

+ Your server will grant local access privileges to [_4] IP addresses in the range [_5] to [_6].

+ Warning: the ProFTPd FTP server cannot handle this nonstandard subnet mask. The simpler specification + [_7] will be used instead.

', diff -aurN smeserver-manager-0.1.0.old/root/usr/share/smanager/lib/SrvMngr.pm smeserver-manager-0.1.0/root/usr/share/smanager/lib/SrvMngr.pm --- smeserver-manager-0.1.0.old/root/usr/share/smanager/lib/SrvMngr.pm 2020-08-05 22:11:56.000000000 +0400 +++ smeserver-manager-0.1.0/root/usr/share/smanager/lib/SrvMngr.pm 2020-08-06 23:47:28.000000000 +0400 @@ -10,6 +10,7 @@ use File::Spec; use File::Spec::Functions qw( rel2abs catdir ); use Cwd; +use Net::Netmask; use Mojo::File qw( path ); use Mojo::Home; @@ -30,7 +31,7 @@ init_session get_mod_url theme_list getNavigation ip_number is_normal_password email_simple mac_address_or_blank mac_address ip_number_or_blank - lang_space get_routes_list + lang_space get_routes_list subnet_mask get_reg_mask ); has home => sub { @@ -105,12 +106,12 @@ $self->helper(log_req => sub { my $c = shift; - my $mess = shift; + my $mess = shift || ''; my $method = $c->req->method; my $url = $c->req->url; my $version = $c->req->version; my $ip = $c->tx->remote_address; - return "Request received => $method $url HTTP/$version from $ip: $mess "; + return "Request received => $method $url HTTP/$version from $ip : $mess "; }); $self->helper( 'home_page' => sub{ '/initial' } ); @@ -243,17 +244,17 @@ $if_admin->get('/localnetworks')->to('localnetworks#main')->name('localnetworks'); $if_admin->post('/localnetworks')->to('localnetworks#do_display')->name('localnetworks'); - $if_admin->post('/localnetworksadd')->to('localnetworks#do_display')->name('localnetworksadd'); - $if_admin->post('/localnetworksadd1')->to('localnetworks#do_display')->name('localnetworksadd1'); - $if_admin->get('/localnetworksdel')->to('localnetworks#do_display')->name('localnetworksdel'); - $if_admin->post('/localnetworksdel1')->to('localnetworks#do_display')->name('localnetworksdel1'); + $if_admin->post('/localnetworksa')->to('localnetworks#do_display')->name('localnetworksadd'); + $if_admin->post('/localnetworksb')->to('localnetworks#do_display')->name('localnetworksadd1'); + $if_admin->get('/localnetworksd')->to('localnetworks#do_display')->name('localnetworksdel'); + $if_admin->post('/localnetworkse')->to('localnetworks#do_display')->name('localnetworksdel1'); $if_admin->get('/portforwarding')->to('portforwarding#main')->name('portforwarding'); $if_admin->post('/portforwarding')->to('portforwarding#do_display')->name('portforwarding'); - $if_admin->post('/portforwardingadd')->to('portforwarding#do_display')->name('portforwardingadd'); - $if_admin->post('/portforwardingadd1')->to('portforwarding#do_display')->name('portforwardingadd1'); - $if_admin->get('/portforwardingdel')->to('portforwarding#do_display')->name('portforwardingdel'); - $if_admin->post('/portforwardingdel1')->to('portforwarding#do_display')->name('portforwardingdel1'); + $if_admin->post('/portforwardinga')->to('portforwarding#do_display')->name('portforwardingadd'); + $if_admin->post('/portforwardingb')->to('portforwarding#do_display')->name('portforwardingadd1'); + $if_admin->get('/portforwardingd')->to('portforwarding#do_display')->name('portforwardingdel'); + $if_admin->post('/portforwardinge')->to('portforwarding#do_display')->name('portforwardingdel1'); $if_admin->get('/printers')->to('printers#main')->name('printersg'); $if_admin->get('/printers2')->to('printers#do_display')->name('printers2g'); @@ -598,6 +599,10 @@ my $lang = shift || ''; my $panel = $c->tx->req->url; + if ( $panel =~ m/\.css$|\.js$|\.jpg$/ ) { + warn "panel not treated $panel"; + } + $panel = '/initial' if ($panel eq '/' or $panel eq ''); (my $module = $panel) =~ s|\?.*$||; @@ -632,7 +637,7 @@ my @rt; for (@routes) { - my ( $contrib, $name ) = split ( /_/, $_->key); + my ( $contrib, $name ) = split ( /\+/, $_->key); push @rt, { 'method' => $_->prop('Method'), 'url' => $_->prop('Url'), 'ctlact' => $_->prop('Ctlact'), 'menu' => $_->prop('Menu'), @@ -738,5 +743,31 @@ } +sub subnet_mask { + + my ( $data ) = @_; + + # we test for a valid mask or bit mask + my $tip="192.168.1.50"; + my $block = new Net::Netmask("$tip/$data") or return "INV1 $data"; + + if ($block->mask() eq "$data" || $block->bits() eq "$data") { + return "OK"; + } + return "INV2 $data"; +} + + +sub get_reg_mask { + + my ( $address, $mask ) = @_; + + # we transform bit mask to regular mask + my $block = new Net::Netmask("$address/$mask"); + + return $block->mask(); +} + + 1; diff -aurN smeserver-manager-0.1.0.old/root/usr/share/smanager/themes/default/templates/login.html.ep smeserver-manager-0.1.0/root/usr/share/smanager/themes/default/templates/login.html.ep --- smeserver-manager-0.1.0.old/root/usr/share/smanager/themes/default/templates/login.html.ep 2020-08-05 22:11:56.000000000 +0400 +++ smeserver-manager-0.1.0/root/usr/share/smanager/themes/default/templates/login.html.ep 2020-08-08 16:54:51.776000000 +0400 @@ -39,7 +39,9 @@ %= hidden_field 'From' => $c->tx->req->url
+
%= submit_button "$btn", class => 'action' +

% end diff -aurN smeserver-manager-0.1.0.old/root/usr/share/smanager/themes/default/templates/partials/_ln_add.html.ep smeserver-manager-0.1.0/root/usr/share/smanager/themes/default/templates/partials/_ln_add.html.ep --- smeserver-manager-0.1.0.old/root/usr/share/smanager/themes/default/templates/partials/_ln_add.html.ep 2020-08-05 22:11:56.000000000 +0400 +++ smeserver-manager-0.1.0/root/usr/share/smanager/themes/default/templates/partials/_ln_add.html.ep 2020-08-08 16:57:17.793000000 +0400 @@ -37,7 +37,7 @@

% } - %= form_for '/localnetworksadd1' => (method => 'POST') => begin + %= form_for '/localnetworksb' => (method => 'POST') => begin

%=l "ln_ADD_TITLE"

@@ -60,7 +60,9 @@ %=text_field 'networkRouter'

+
%= submit_button "$btn", class => 'action' +
%end diff -aurN smeserver-manager-0.1.0.old/root/usr/share/smanager/themes/default/templates/partials/_ln_del.html.ep smeserver-manager-0.1.0/root/usr/share/smanager/themes/default/templates/partials/_ln_del.html.ep --- smeserver-manager-0.1.0.old/root/usr/share/smanager/themes/default/templates/partials/_ln_del.html.ep 2020-08-05 22:11:56.000000000 +0400 +++ smeserver-manager-0.1.0/root/usr/share/smanager/themes/default/templates/partials/_ln_del.html.ep 2020-08-08 16:57:42.337000000 +0400 @@ -14,7 +14,7 @@

% } - %= form_for '/localnetworksdel1' => (method => 'POST') => begin + %= form_for '/localnetworkse' => (method => 'POST') => begin

%=l "ln_REMOVE_TITLE"

@@ -49,7 +49,9 @@

%} %= hidden_field localnetwork=>$localnetwork +
%= submit_button "$btn", class => 'action' +
%end diff -aurN smeserver-manager-0.1.0.old/root/usr/share/smanager/themes/default/templates/partials/_ln_list.html.ep smeserver-manager-0.1.0/root/usr/share/smanager/themes/default/templates/partials/_ln_list.html.ep --- smeserver-manager-0.1.0.old/root/usr/share/smanager/themes/default/templates/partials/_ln_list.html.ep 2020-08-05 22:11:56.000000000 +0400 +++ smeserver-manager-0.1.0/root/usr/share/smanager/themes/default/templates/partials/_ln_list.html.ep 2020-08-08 16:58:22.161000000 +0400 @@ -1,6 +1,6 @@
% my $btn = l('ln_LOCALNETWORK_ADD'); - %= form_for '/localnetworksadd' => (method => 'POST') => begin + %= form_for '/localnetworksa' => (method => 'POST') => begin

% my $retref= $c->stash("ret"); @@ -21,6 +21,7 @@ % my $var4 = @vars[3]; % my $var5 = @vars[4]; % my $var6 = @vars[5]; + % my $var7 = @vars[6]; %if ($ret{ret} eq "") { @@ -28,16 +29,18 @@ %} elsif (index($ret{ret},"SUCCESS") != -1) {

Operation Status Report

- %= $c->l($ret{ret},$var1,$var2,$var3,$var4,$var5,$var6); + %= $c->render_to_string(inline => l($ret{ret},$var1,$var2,$var3,$var4,$var5,$var6,$var7));
%} else {

Operation Status Report - Error

- %= $c->l($ret{ret},$var1,$var2,$var3,$var4,$var5,$var6); + %= $c->render_to_string(inline => l($ret{ret},$var1,$var2,$var3,$var4,$var5,$var6,$var7));
%}

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

% my $numlocalnetworks = @$localnetworks; % if ($numlocalnetworks == 0){ @@ -79,7 +82,7 @@ %= t td => (class => 'sme-border') => $localnetwork->prop('Router') % if ($removable eq "yes") { - <%=l 'REMOVE'%> + <%=l 'REMOVE'%> % } else { %} diff -aurN smeserver-manager-0.1.0.old/root/usr/share/smanager/themes/default/templates/partials/_pf_add.html.ep smeserver-manager-0.1.0/root/usr/share/smanager/themes/default/templates/partials/_pf_add.html.ep --- smeserver-manager-0.1.0.old/root/usr/share/smanager/themes/default/templates/partials/_pf_add.html.ep 2020-08-05 22:11:56.000000000 +0400 +++ smeserver-manager-0.1.0/root/usr/share/smanager/themes/default/templates/partials/_pf_add.html.ep 2020-08-08 16:58:48.785000000 +0400 @@ -36,7 +36,7 @@

% } - %= form_for '/portforwardingadd1' => (method => 'POST') => begin + %= form_for '/portforwardingb' => (method => 'POST') => begin

%=l "pf_CREATE_RULE"

@@ -77,7 +77,9 @@ %=text_field 'cmmnt'

+
%= submit_button "$btn", class => 'action' +
%end
diff -aurN smeserver-manager-0.1.0.old/root/usr/share/smanager/themes/default/templates/partials/_pf_del.html.ep smeserver-manager-0.1.0/root/usr/share/smanager/themes/default/templates/partials/_pf_del.html.ep --- smeserver-manager-0.1.0.old/root/usr/share/smanager/themes/default/templates/partials/_pf_del.html.ep 2020-08-05 22:11:56.000000000 +0400 +++ smeserver-manager-0.1.0/root/usr/share/smanager/themes/default/templates/partials/_pf_del.html.ep 2020-08-08 16:59:22.721000000 +0400 @@ -16,7 +16,7 @@

% } - %= form_for '/portforwardingdel1' => (method => 'POST') => begin + %= form_for '/portforwardinge' => (method => 'POST') => begin
%= l "pf_SUMMARY_REMOVE_DESC"


@@ -57,7 +57,9 @@ %#} %= hidden_field sport=>$sport %= hidden_field proto=>$proto +
%= submit_button "$btn", class => 'action' +
%end diff -aurN smeserver-manager-0.1.0.old/root/usr/share/smanager/themes/default/templates/partials/_pf_list.html.ep smeserver-manager-0.1.0/root/usr/share/smanager/themes/default/templates/partials/_pf_list.html.ep --- smeserver-manager-0.1.0.old/root/usr/share/smanager/themes/default/templates/partials/_pf_list.html.ep 2020-08-05 22:11:56.000000000 +0400 +++ smeserver-manager-0.1.0/root/usr/share/smanager/themes/default/templates/partials/_pf_list.html.ep 2020-08-08 16:59:44.417000000 +0400 @@ -1,6 +1,6 @@
% my $btn = l('pf_CREATE_RULE'); - %= form_for '/portforwardingadd' => (method => 'POST') => begin + %= form_for '/portforwardinga' => (method => 'POST') => begin % my $retref= $c->stash("ret"); % my %ret; @@ -34,7 +34,9 @@
%}

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

% if ($empty){ @@ -96,7 +98,7 @@ %= t td => (class => 'sme-border') => $allow %= t td => (class => 'sme-border') => $cmmnt - <%=l 'REMOVE'%> + <%=l 'REMOVE'%> % } % } diff -aurN smeserver-manager-0.1.0.old/root/usr/share/smanager/themes/default/templates/remoteaccess.html.ep smeserver-manager-0.1.0/root/usr/share/smanager/themes/default/templates/remoteaccess.html.ep --- smeserver-manager-0.1.0.old/root/usr/share/smanager/themes/default/templates/remoteaccess.html.ep 2020-08-05 22:11:56.000000000 +0400 +++ smeserver-manager-0.1.0/root/usr/share/smanager/themes/default/templates/remoteaccess.html.ep 2020-08-08 16:56:06.920000000 +0400 @@ -225,7 +225,10 @@

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