Compare commits

...

2 Commits

Author SHA1 Message Date
f03d82ebf7 * Tue Oct 21 2025 Brian Read <brianr@koozali.org> 11.0.0-122.sme
- Correct code to only show user panels when AdminPanels property is empty or non existent [SME: 13082]
2025-10-21 19:28:04 +01:00
de2f78a089 * Sat Sep 27 2025 Brian Read <brianr@koozali.org> 11.0.0-121.sme
- Sort out ftp public setting [SME: 13194]
2025-09-27 12:29:54 +01:00
4 changed files with 27 additions and 17 deletions

View File

@@ -33,11 +33,13 @@ use esmith::I18N;
use esmith::ConfigDB::UTF8;
use esmith::NavigationDB; # no UTF8 raw is ok for ASCII only flat file
use Data::Dumper;
# Import the function(s) you need
use SrvMngr_Auth qw(check_admin_access);
#this is overwrittrn with the "release" by the spec file - release can be "99.el8.sme"
our $VERSION = '94.el8.sme';
our $VERSION = '121.el8.sme';
#Extract the release value
if ($VERSION =~ /^(\d+)/) {
$VERSION = $1; # $1 contains the matched numeric digits
@@ -607,18 +609,20 @@ sub getNavigation {
# Added: Check if user is non-admin and get their allowed panels
if ($username ne '') {
# Get the AccountsDB to check user permissions
$is_admin = 0; # User is non-admin with specific panel access
my $accountsdb = esmith::AccountsDB::UTF8->open_ro() or
die "Couldn't open AccountsDB\n";
# Check if user has AdminPanels property
my $user_rec = $accountsdb->get($username);
if (defined $user_rec && $user_rec->prop('AdminPanels')) {
$is_admin = 0; # User is non-admin with specific panel access
# Get comma-separated list of allowed admin panels
my $admin_panels = $user_rec->prop('AdminPanels');
@allowed_admin_panels = split(/,/, $admin_panels);
@allowed_admin_panels = $admin_panels eq '' ? () : split(/,/, $admin_panels);
#@allowed_admin_panels = split(/,/, $admin_panels);
}
}
#-----------------------------------------------------
# Determine the directory where the functions are kept
@@ -720,20 +724,20 @@ sub getNavigation {
# Added: Check if this is an admin menu item and if user has access
if ($menucat eq 'A' && !$is_admin) {
# Skip this admin panel if user doesn't have access to it
# By default, deny access if no allowed_admin_panels are specified
my $has_access = 0;
my $file_no_ext = $file;
$file_no_ext =~ s/\.pm$//; # Remove .pm extension if present
foreach my $allowed_panel (@allowed_admin_panels) {
if ($file_no_ext eq lc($allowed_panel)) {
#die("Here!!$file $file_no_ext $allowed_panel ");
$has_access = 1;
last;
if (@allowed_admin_panels) {
my $file_no_ext = $file;
$file_no_ext =~ s/\.pm$//; # Remove .pm extension if present
foreach my $allowed_panel (@allowed_admin_panels) {
if ($file_no_ext eq lc($allowed_panel)) {
$has_access = 1;
last;
}
}
}
next if !$has_access;
}
next if $menu ne $menucat;
#--------------------------------------------------
@@ -772,7 +776,7 @@ sub getNavigation {
MENUCAT => $menucat
};
}
#die(Dumper(\%nav));
return \%nav;
}

View File

@@ -163,7 +163,7 @@ sub get_ftp_access {
my $status = get_prop('', 'ftp', 'status') || 'disabled';
return 'off' unless $status eq 'enabled';
my $access = get_prop('', 'ftp', 'access') || 'private';
return ($access eq 'public') ? 'normal' : 'private';
return ($access eq 'public') ? 'public' : 'private';
} ## end sub get_ftp_access
#sub get_pptp_sessions {
@@ -320,7 +320,7 @@ sub change_settings {
$rec->set_prop('status', 'disabled');
$rec->set_prop('access', 'private');
$rec->set_prop('LoginAccess', 'private');
} elsif ($rma_datas{ftpAccess} eq "normal") {
} elsif ($rma_datas{ftpAccess} eq "public") {
$rec->set_prop('status', 'enabled');
$rec->set_prop('access', 'public');
$rec->set_prop('LoginAccess', $rma_datas{ftpPasswordAccess});
@@ -438,4 +438,4 @@ sub remove_valid_from {
$db->get('httpd-admin')->set_prop('ValidFrom', $prop);
return 1;
} ## end sub remove_valid_from
1;
1;

View File

View File

@@ -2,7 +2,7 @@ Summary: Sme Server Configuration : Manager 2
%define name smeserver-manager
Name: %{name}
%define version 11.0.0
%define release 120
%define release 122
Version: %{version}
Release: %{release}%{?dist}
License: GPL
@@ -147,6 +147,12 @@ true
%defattr(-,root,root)
%changelog
* Tue Oct 21 2025 Brian Read <brianr@koozali.org> 11.0.0-122.sme
- Correct code to only show user panels when AdminPanels property is empty or non existent [SME: 13082]
* Sat Sep 27 2025 Brian Read <brianr@koozali.org> 11.0.0-121.sme
- Sort out ftp public setting [SME: 13194]
* Thu Sep 25 2025 Brian Read <brianr@koozali.org> 11.0.0-120.sme
- Add CSS for multiple result buttons on panel - used by wireguard[SME: 13185]