Compare commits

...

10 Commits

Author SHA1 Message Date
John Crisp
a31806f205 Add UTF8 support to local network panel 2025-06-09 13:39:32 +02:00
b44f1c5000 * Mon Jun 09 2025 Jean-Philippe Pialasse <jpp@koozali.org> 11.0.0-84.sme
- fix Directory caching issue [SME: 13026]
- WIP use esmith::*DB::UTF8 to access db flat files [SME: 13027]
2025-06-09 00:46:19 -04:00
2538ac9ea0 * Mon May 05 2025 Brian Read <brianr@koozali.org> 11.0.0-83.sme
- Mod to SrvMngr-Auth to account for partials matching AdminPanels options
2025-05-05 07:01:25 +01:00
dbfeaa18a3 * Thu May 01 2025 Brian Read <brianr@koozali.org> 11.0.0-82.sme
- Correct Weights for menus [SME: 12996]
2025-05-01 18:16:25 +01:00
ced08b28d4 Update version in spec 2025-05-01 13:29:52 +01:00
c74a71dee1 * Thu May 01 2025 Brian Read <brianr@koozali.org> 11.0.0-81.sme
- Correct Weights for menus [SME: 12996]
2025-05-01 12:07:55 +01:00
96b002e7a9 * Wed Apr 30 2025 Brian Read <brianr@koozali.org> 11.0.0-80.sme
- Remove expansion of css files from createlinks [SME: 12989]
2025-05-01 06:33:46 +01:00
f30b4ab2b5 * Wed Apr 30 2025 Brian Read <brianr@koozali.org> 11.0.0-79.sme
- Add code in SrvMngr to take note of user panel setting
2025-04-30 09:09:16 +01:00
fa286e966d * Thu Apr 17 2025 Brian Read <brianr@koozali.org> 11.0.0-78.sme
- typo in remoteaccess panel
- Fix crash in veiwlogfiles if viewlogfiles key not in DB
2025-04-17 12:16:38 +01:00
9bb2128891 Typo in name for remoteaccess panel 2025-04-16 17:48:37 +01:00
16 changed files with 323 additions and 131 deletions

View File

@@ -8,12 +8,12 @@ use esmith::Build::CreateLinks qw(:all);
my $mngrdir = '/usr/share/smanager';
# templates to expand
for ( qw( sme_core.css sme_main.css sme_menu.css styles.css ) )
{
templates2events("$mngrdir/themes/default/public/css/$_", qw(
bootstrap-console-save smeserver-manager-update
));
}
#for ( qw( sme_core.css sme_main.css sme_menu.css styles.css ) )
#{
# templates2events("$mngrdir/themes/default/public/css/$_", qw(
# bootstrap-console-save smeserver-manager-update
# ));
#}
templates2events("$mngrdir/conf/srvmngr.conf",
qw( smeserver-manager-update smanager-theme-change smanager-modify bootstrap-console-save ));

View File

@@ -30,8 +30,11 @@ use SrvMngr::Plugin::WithoutCache;
use esmith::I18N;
# 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 = '70.el8.sme';
our $VERSION = '78.el8.sme';
#Extract the release value
if ($VERSION =~ /^(\d+)/) {
$VERSION = $1; # $1 contains the matched numeric digits
@@ -46,7 +49,7 @@ our @EXPORT_OK = qw(
getNavigation ip_number validate_password is_normal_password email_simple
mac_address_or_blank mac_address ip_number_or_blank
lang_space get_routes_list subnet_mask get_reg_mask
gen_locale_date_string get_public_ip_address
gen_locale_date_string get_public_ip_address simpleNavMerge
);
has home => sub {
@@ -301,10 +304,11 @@ sub setup_routing {
$if_logged_in->get('/userpassword')->to('userpassword#main')->name('passwd');
$if_logged_in->post('/userpassword')->to('userpassword#change_password')->name('passwd2');
my $if_admin = $r->under( sub {
my $c =shift;
return $c->is_admin || $c->auth_fail($c->l("acs_ADMIN"));
});
my $if_admin = $r->under( sub {
my $c = shift;
# Call the imported function directly
return check_admin_access($c) || $c->auth_fail($c->l("acs_ADMIN"));
});
$if_admin->get('/backup')->to('backup#main')->name('backup');
$if_admin->post('/backup')->to('backup#do_display')->name('backupd');
@@ -549,9 +553,10 @@ sub getNavigation {
use esmith::NavigationDB;
my $c = shift;
my $class = shift; #not the controller as it is called as an external, not part of the controller.
my $lang = shift || 'en-us';
my $menu = shift || 'N';
my $username = shift || ''; #Username when logged in as a user not admin
# my $lang = $c->session->{lang} || 'en-us';
@@ -560,6 +565,26 @@ sub getNavigation {
my @files = ();
my %files_hash = ();
# Added: Store allowed admin panels for non-admin users
my @allowed_admin_panels = ();
my $is_admin = 1; # Default to admin (full access)
# Added: Check if user is non-admin and get their allowed panels
if ($username ne '') {
# Get the AccountsDB to check user permissions
my $accountsdb = esmith::AccountsDB->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);
}
}
#-----------------------------------------------------
# Determine the directory where the functions are kept
@@ -638,70 +663,110 @@ sub getNavigation {
}
foreach my $file (keys %files_hash)
{
#my $heading = 'Unknown';
my $heading = 'Legacy';
my $description = $file;
my $headingWeight = 99999;
my $descriptionWeight = 99999;
my $urlpath = '';
my $menucat = 'A'; # admin menu (default)
{
#my $heading = 'Unknown';
my $heading = 'Legacy';
my $description = $file;
my $headingWeight = 99999;
my $descriptionWeight = 99999;
my $urlpath = '';
my $menucat = 'A'; # admin menu (default)
my $rec = $navdb->get($file);
my $rec = $navdb->get($file);
if (defined $rec)
{
$heading = $rec->prop('Heading');
$description = $rec->prop('Description');
$headingWeight = $rec->prop('HeadingWeight') || 99999; #Stop noise in logs if file in dir does not have nav header.
$descriptionWeight = $rec->prop('DescriptionWeight');
$urlpath = $rec->prop('UrlPath') || '';
$menucat = $rec->prop('MenuCat') || 'A'; # admin menu (default)
}
next if $menu ne $menucat;
if (defined $rec)
{
$heading = $rec->prop('Heading');
$description = $rec->prop('Description');
$headingWeight = $rec->prop('HeadingWeight') || 99999; #Stop noise in logs if file in dir does not have nav header.
$descriptionWeight = $rec->prop('DescriptionWeight');
$urlpath = $rec->prop('UrlPath') || '';
$menucat = $rec->prop('MenuCat') || 'A'; # admin menu (default)
}
# 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
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;
}
}
next if !$has_access;
}
#--------------------------------------------------
# add heading, description and weight information to data structure
#--------------------------------------------------
next if $menu ne $menucat;
unless (exists $nav {$heading})
{
$nav {$heading} = { COUNT => 0, WEIGHT => 0, DESCRIPTIONS => [] };
}
#--------------------------------------------------
# add heading, description and weight information to data structure
#--------------------------------------------------
$nav {$heading} {'COUNT'} ++;
$nav {$heading} {'WEIGHT'} += $headingWeight;
unless (exists $nav {$heading})
{
$nav {$heading} = { COUNT => 0, WEIGHT => 0, DESCRIPTIONS => [] };
}
# Check for manager panel, and assign the appropriate
# cgi-bin prefix for the links.
# Grab the last 2 directories by splitting for '/'s and
# then concatenating the last 2
# probably a better way, but I don't know it.
$nav {$heading} {'COUNT'} ++;
$nav {$heading} {'WEIGHT'} += $headingWeight;
my $path;
if ( $files_hash{$file} eq 'ctrl') {
$path = "2";
} elsif ( $files_hash{$file} eq 'cgim') {
$path = "/cgi-bin";
} else {
my @filename = split /\//, $files_hash{$file};
$path = "/$filename[scalar @filename - 2]/$filename[scalar @filename - 1]";
};
# Check for manager panel, and assign the appropriate
# cgi-bin prefix for the links.
# Grab the last 2 directories by splitting for '/'s and
# then concatenating the last 2
# probably a better way, but I don't know it.
push @{ $nav {$heading} {'DESCRIPTIONS'} },
{ DESCRIPTION => $description,
WEIGHT => $descriptionWeight,
FILENAME => $urlpath ? $urlpath : "$path/$file",
CGIPATH => $path,
MENUCAT => $menucat
my $path;
if ( $files_hash{$file} eq 'ctrl') {
$path = "2";
} elsif ( $files_hash{$file} eq 'cgim') {
$path = "/cgi-bin";
} else {
my @filename = split /\//, $files_hash{$file};
$path = "/$filename[scalar @filename - 2]/$filename[scalar @filename - 1]";
};
push @{ $nav {$heading} {'DESCRIPTIONS'} },
{ DESCRIPTION => $description,
WEIGHT => $descriptionWeight,
FILENAME => $urlpath ? $urlpath : "$path/$file",
CGIPATH => $path,
MENUCAT => $menucat
};
}
return \%nav;
}
sub simpleNavMerge {
#Used to merge two nav structures - used for the user and selected admin menu.
my ($class,$nav1, $nav2) = @_;
my %result = %$nav1; # Start with a copy of first nav
# Merge in second nav
foreach my $heading (keys %$nav2) {
if (exists $result{$heading}) {
# Add counts and weights
$result{$heading}{COUNT} += $nav2->{$heading}{COUNT};
$result{$heading}{WEIGHT} += $nav2->{$heading}{WEIGHT};
# Append descriptions
push @{$result{$heading}{DESCRIPTIONS}}, @{$nav2->{$heading}{DESCRIPTIONS}};
} else {
# Just copy the heading
$result{$heading} = $nav2->{$heading};
}
}
return \%result;
}
sub _lang_space {
@@ -925,4 +990,4 @@ sub get_reg_mask {
}
1;
1;

View File

@@ -12,13 +12,15 @@ use warnings;
use Mojo::Base 'Mojolicious::Controller';
use Locale::gettext;
use SrvMngr::I18N;
use esmith::ConfigDB::UTF8;
use SrvMngr qw(theme_list init_session);
our $db = esmith::ConfigDB->open() || die "Couldn't open config db";
our $db;
sub main {
my $c = shift;
$c->app->log->info($c->log_req);
$db = esmith::ConfigDB::UTF8->open() || die "Couldn't open config db";
my %dir_datas = ();
my $title = $c->l('dir_FORM_TITLE');
my $modul = $c->render_to_string(inline => $c->l('dir_DESCRIPTION'));

View File

@@ -3,7 +3,7 @@ package SrvMngr::Controller::Login;
#----------------------------------------------------------------------
# heading : Support
# description : Login
# navigation : 0000 001
# navigation : 0 200
# menu : N
#
# routes : end

View File

@@ -3,7 +3,7 @@ package SrvMngr::Controller::Manual;
#----------------------------------------------------------------------
# heading : Support
# description : Online manual
# navigation : 0000 100
# navigation : 0 300
# menu : N
#
# routes : end

View File

@@ -3,7 +3,7 @@ package SrvMngr::Controller::Printers;
#----------------------------------------------------------------------
# heading : System
# description : Printers
# navigation : 4000 800
# navigation : 4000 900
#
#
# routes : end

View File

@@ -3,7 +3,7 @@ package SrvMngr::Controller::Proxy;
#----------------------------------------------------------------------
# heading : System
# description : Proxy settings
# navigation : 4000 710
# navigation : 4000 800
#----------------------------------------------------------------------
#
# routes : end

View File

@@ -3,7 +3,7 @@ package SrvMngr::Controller::Review;
#----------------------------------------------------------------------
# heading : Investigation
# description : Review configuration
# navigation : 6000 6800
# navigation : 7000 600
# routes : end
#----------------------------------------------------------------------
use strict;

View File

@@ -1,9 +1,9 @@
package SrvMngr::Controller::Roundcubepanel;
#----------------------------------------------------------------------
# heading : System
# heading : Network
# description : Webmail
# navigation : 99999 9999
# navigation : 6000 900
#----------------------------------------------------------------------
#----------------------------------------------------------------------
# name : roundcubepanel, method : get, url : /roundcubepanel, ctlact : Roundcubepanel#main

View File

@@ -3,7 +3,7 @@ package SrvMngr::Controller::Support;
#----------------------------------------------------------------------
# heading : Support
# description : Support and licensing
# navigation : 0000 200
# navigation : 0 400
# menu : N
#
# routes : end

View File

@@ -31,7 +31,8 @@ sub main {
my %log_datas = ();
my $title = $c->l('log_FORM_TITLE');
my $notif = '';
$log_datas{default_op} = ($cdb->get('viewlogfiles')->prop('DefaultOperation')) || 'view';
my $viewlog = $cdb->get('viewlogfiles');
$log_datas{default_op} = ($viewlog ? $viewlog->prop('DefaultOperation') : undef) || 'view';
$c->stash(title => $title, notif => $notif, log_datas => \%log_datas);
$c->render(template => 'viewlogfiles');
} ## end sub main

View File

@@ -0,0 +1,100 @@
# Optimized SrvMngr_Auth module using stash caching and Exporter
package SrvMngr_Auth;
use strict;
use warnings;
use Exporter qw(import); # Import the Exporter module
use esmith::AccountsDB;
# Define functions to be exported upon request
our @EXPORT_OK = qw(check_admin_access load_user_auth_info has_panel_access get_panel_from_path);
# Helper function to extract panel name from path
sub get_panel_from_path {
my ($path) = @_;
if ($path =~ m{^/([^/]+)}) {
return $1;
}
return ''; # Return empty string if no panel found
}
# Load user authentication info and cache it in the stash
sub load_user_auth_info {
my ($c) = @_;
# Check if auth info is already cached in the stash
return if exists $c->stash->{auth_info};
my %auth_info = (
username => '', # Initialize username
is_admin => 0,
allowed_panels => [],
);
# Get username from session
$auth_info{username} = $c->session->{username} || ''; # Provide default empty string
# Check if user is admin
$auth_info{is_admin} = $c->is_admin || 0;
# If not admin, get allowed panels
if (!$auth_info{is_admin} && $auth_info{username}) {
my $accountsdb = esmith::AccountsDB->open_ro();
if ($accountsdb) {
my $user_rec = $accountsdb->get($auth_info{username});
# Check if the property exists before trying to get its value
if (defined $user_rec && $user_rec->prop('AdminPanels')) {
# Get comma-separated list of allowed admin panels
my $admin_panels = $user_rec->prop('AdminPanels');
$auth_info{allowed_panels} = [split(/,/, $admin_panels)];
}
}
}
# Store the calculated info in the stash
$c->stash(auth_info => \%auth_info);
}
# Check if a user has access to a specific panel (uses cached info)
sub has_panel_access {
my ($c, $panel) = @_;
# Ensure auth info is loaded
load_user_auth_info($c);
my $auth_info = $c->stash->{auth_info};
# Check if requested panel is in allowed panels
foreach my $allowed_panel (@{$auth_info->{allowed_panels}}) {
return 1 if lc($panel) eq lc($allowed_panel)
|| lc(substr($panel, 0, length($allowed_panel))) eq lc($allowed_panel);
}
return 0;
}
# Main function to check admin access (uses cached info)
sub check_admin_access {
my ($c) = @_;
# Ensure auth info is loaded
load_user_auth_info($c);
my $auth_info = $c->stash->{auth_info};
# First check if user is admin
return 1 if $auth_info->{is_admin};
# If not admin, check if they have access to the specific panel
my $current_path = $c->req->url->path;
my $requested_panel = $current_path;
return 0 unless $requested_panel;
# Check if user has access to this panel using the cached info
return has_panel_access($c, $requested_panel);
}
1; # Return true value for module loading

View File

@@ -4,7 +4,7 @@
% my %ret;
% unless (length($retref)) {%ret = (ret=>"");}
% else {%ret = %$retref;}
% my @vars = split(",",$ret{vars});
% my $var1 = @vars[0];
% my $var2 = @vars[1];
@@ -15,13 +15,13 @@
<br>
%if ($ret{'ret'} eq "") {
%} elsif (index($ret{ret},"SUCCESS") != -1) {
<div class='success'>
<!--<h2> Operation Status Report</h2>-->
%= $c->render_to_string(inline => l($ret{ret},$var1,$var2,$var3,$var4,$var5,$var6));
</div>
%} else {
%} else {
<div class='sme-error'>
<!--<h2> Operation Status Report - Error</h2>-->
%= $c->render_to_string(inline => l($ret{ret},$var1,$var2,$var3,$var4,$var5,$var6));
@@ -29,15 +29,15 @@
%}
<br />
% my $btn = l('ADD');
% my $network_db = esmith::NetworksDB->open();
% my $network_db = esmith::NetworksDB::UTF8->open() || die "Couldn't open NetworksDB db";
% if (config->{debug} == 1) {
<p>
%= dumper $c->current_route
%= dumper $c->stash("ret")
</p>
% }
%= form_for '/localnetworksb' => (method => 'POST') => begin
<h2>
%=l "ln_ADD_TITLE"

View File

@@ -1,5 +1,7 @@
% use SrvMngr qw( getNavigation );
% my %nav = %{SrvMngr->getNavigation( $c->languages(), 'U' )};
% use SrvMngr qw( getNavigation simpleNavMerge );
% my %nav1 = %{SrvMngr->getNavigation( $c->languages(), 'U' )};
% my %nav2 = %{SrvMngr->getNavigation( $c->languages(), 'A', session('username') )};
% my %nav = $c->session->{is_admin} ? %nav1 : %{SrvMngr->simpleNavMerge(\%nav1, \%nav2)};
<div id='usermenu'>
<a href='#' id='toguser' class='section section-title'>Current User (<%= session 'username' %>)</a>
@@ -7,26 +9,24 @@
% my $cc = 300;
% foreach my $h (sort { ($nav{$a}{'WEIGHT'}/$nav{$a}{'COUNT'})
% <=> ($nav{$b}{'WEIGHT'}/$nav{$b}{'COUNT'}) } keys %nav) {
<!-- div class='section'><%= $h %></div -->
% my ($classNew, $target, $href) = '';
% foreach (sort { $a->{'WEIGHT'} <=> $b->{'WEIGHT'} } @{$nav{$h}{'DESCRIPTIONS'}}) {
% next if ($_->{'MENUCAT'} ne 'U' ); # menu User
% if ( $_->{'FILENAME'} =~ m/^2\// ) {
% $target = '_self';
% (my $file2 = $_->{'FILENAME'}) =~ s|^2/||;
% $href = '/smanager/' . $file2;
% } else {
% $target = 'main';
% $href = '/server-manager' . $_->{'FILENAME'};
% }
<div class='menu-cell'><a class='item<%= $classNew %>' target='<%= $target %>'
id='sme<%= $cc %>' href='<%= $href %>'><%= $_->{'DESCRIPTION'} %></a></div>
<!-- div class='section'><%= $h %></div -->
% my ($classNew, $target, $href) = '';
% foreach (sort { $a->{'WEIGHT'} <=> $b->{'WEIGHT'} } @{$nav{$h}{'DESCRIPTIONS'}}) {
% next if ($_->{'MENUCAT'} ne 'A' && $_->{'MENUCAT'} ne 'U' ); # menu User
% if ( $_->{'FILENAME'} =~ m/^2\// ) {
% $target = '_self';
% (my $file2 = $_->{'FILENAME'}) =~ s|^2/||;
% $href = '/smanager/' . $file2;
% } else {
% $target = 'main';
% $href = '/server-manager' . $_->{'FILENAME'};
% }
<div class='menu-cell'><a class='item<%= $classNew %>' target='<%= $target %>'
id='sme<%= $cc %>' href='<%= $href %>'><%= $_->{'DESCRIPTION'} %></a></div>
% $cc++;
% }
% }
% }
</div>
</div>
</div>

View File

@@ -85,7 +85,7 @@
%= t td => (class => 'sme-border') => $net
%= t td => (class => 'sme-border') => $mask
%= t td => (class => 'sme-border') => $numhosts
<td class='sme-border'><input type='checkbox' name='Remote_nets' value='<%= $net.'/'.$mask %>'> </td>
<td class='sme-border'><input type='checkbox' name='Remove_nets' value='<%= $net.'/'.$mask %>'> </td>
</tr>
% }

View File

@@ -2,7 +2,7 @@ Summary: Sme server navigation module : manager 2
%define name smeserver-manager
Name: %{name}
%define version 11.0.0
%define release 77
%define release 85
Version: %{version}
Release: %{release}%{?dist}
License: GPL
@@ -22,8 +22,9 @@ BuildRequires: smeserver-devtools
#BuildRequires: perl(Net::Netmask) >= 1.9
#</Build tests>
Requires: smeserver-lib >= 1.18.0-26
Requires: smeserver-manager >= 2.4.0-22
Requires: smeserver-lib >= 11.0.0-13
# old manager is needed to handle access (ValidFrom)
Requires: e-smith-manager >= 2.4.0-22
Requires: smeserver-apache >= 2.6.0-19
Requires: smeserver-php >= 3.0.0-43
#Requires: smeserver-manager-locale >= 11.0.0
@@ -37,7 +38,6 @@ Requires: perl(Mojo::JWT) >= 0.08-1
#Requires: perl(Time::TAI64) >= 2.11
Requires: mutt >= 1.5.21
Requires: smeserver-manager-jsquery >= 1.0
Requires: smeserver-lib >= 11.0
Requires: smeserver-certificates >= 11.0
#Requires: js-jquery > 2.2.4-3 (optional)
@@ -130,7 +130,7 @@ true
%post
if [ -f /usr/share/javascript/jquery/latest/jquery.min.js ]
then
[ -d %{dir_mngr}/themes/default/public/js ] ||
[ -d %{dir_mngr}/themes/default/public/js ] ||
mkdir %{dir_mngr}/themes/default/public/js
[ -h %{dir_mngr}/themes/default/public/js/jquery.min.js ] ||
ln -s /usr/share/javascript/jquery/latest/jquery.min.js %{dir_mngr}/themes/default/public/js/jquery.min.js
@@ -143,6 +143,30 @@ true
%defattr(-,root,root)
%changelog
* Mon Jun 09 2025 John Crisp <jcrisp@safeandsoundit.co.uk> 11.0.0-85.sme
- fix ln_add templates for UTF8
- remove extraneous require line in spec file
* Mon Jun 09 2025 Jean-Philippe Pialasse <jpp@koozali.org> 11.0.0-84.sme
- fix Directory caching issue [SME: 13026]
- WIP use esmith::*DB::UTF8 to access db flat files [SME: 13027]
* Mon May 05 2025 Brian Read <brianr@koozali.org> 11.0.0-83.sme
- Mod to SrvMngr-Auth to account for partials matching AdminPanels options
* Thu May 01 2025 Brian Read <brianr@koozali.org> 11.0.0-82.sme
- Correct Weights for menus [SME: 12996]
* Wed Apr 30 2025 Brian Read <brianr@koozali.org> 11.0.0-80.sme
- Remove expansion of css files from createlinks [SME: 12989]
* Wed Apr 30 2025 Brian Read <brianr@koozali.org> 11.0.0-79.sme
- Add code in SrvMngr to take note of user panel setting
* Thu Apr 17 2025 Brian Read <brianr@koozali.org> 11.0.0-78.sme
- typo in remoteaccess panel
- Fix crash in veiwlogfiles if viewlogfiles key not in DB
* Sat Apr 12 2025 Brian Read <brianr@koozali.org> 11.0.0-77.sme
- Sort out local and pulic access setting in remote panel [SME: 12988]
- caching problem, plus confusion between normal and public setting in sshd / access in DB
@@ -164,19 +188,19 @@ true
* Mon Mar 24 2025 Brian Read <brianr@koozali.org> 11.0.0-72.sme
- Remove css files from template structure [SME: 12967]
- Rationalise and merge css files
- Rationalise and merge css files
- Adjust some gaps around panels
- Remove HR lines
* Thu Mar 20 2025 Brian Read <brianr@koozali.org> 11.0.0-71.sme
- Sort out navigation menu error on startup [SME: 12946]
- More places where floating panel needed
- Adjust floating panel to make space around it the same
- Adjust floating panel to make space around it the same
- clean up some css
* Wed Mar 19 2025 Brian Read <brianr@koozali.org> 11.0.0-70.sme
- Re-cast the default theme - use proper koozali logo image, unwind multiple divs
- Enhance responsiveness
- Enhance responsiveness
- Revert Ibay menu name to Ibays
- Remove legacy SM1 button on header
- Remove "?" access to wiki help on header
@@ -186,8 +210,8 @@ true
* Mon Mar 17 2025 Brian Read <brianr@koozali.org> 11.0.0-68.sme
- re-write qmailanalog for postfix [SME: 12951]
- Clean up backup.pm
- Enhance module panel - used by mail log analysis and Licence display
- Clean up backup.pm
- Enhance module panel - used by mail log analysis and Licence display
* Tue Mar 11 2025 Brian Read <brianr@koozali.org> 11.0.0-66.sme
- Move the button for each backup panel to the left to conform to all the other panels.
@@ -243,7 +267,7 @@ true
* Sun Feb 09 2025 Brian Read <brianr@koozali.org> 11.0.0-50.sme
- Move all routines from FormMagic still called by SM2 panels to SM2 [SME: 12906]
- delete all references to FormMagic
- delete all references to FormMagic
* Fri Feb 07 2025 Brian Read <brianr@koozali.org> 11.0.0-49.sme
- Fix delete of ibay - typo in link
@@ -255,7 +279,7 @@ true
* Tue Jan 28 2025 Brian Read <brianr@koozali.org> 11.0.0-47.sme
- Temp (we hope) remove CSRF protection plugin [SME: ]
- Fix comparison in footer with config->mode
- Fix comparison in footer with config->mode
* Tue Jan 28 2025 Brian Read <brianr@koozali.org> 11.0.0-46.sme
- Adjust conditions for showing "Reconfigure required" to only check UnSavedChanges DB entry [SME: 12891]
@@ -313,7 +337,7 @@ true
* Wed Dec 18 2024 Brian Read <brianr@koozali.org> 11.0.0-32.sme
- Fix for User and localnetwork panel [SME: 6278]
- Fix menu entry for proxy to stop it moving
- Fix menu entry for proxy to stop it moving
* Tue Dec 17 2024 Brian Read <brianr@koozali.org> 11.0.0-31.sme
- Edit html to avoid w3c html validation warnings [SME: 6278]
@@ -365,7 +389,7 @@ true
* Wed Aug 21 2024 Brian Read <brianr@koozali.org> 11.0.0-16.sme
- Typo uc DNF changed to lc dnf in Yum.pm [SME: 127245]
- Monitor dnf running using dnf status file
- Monitor dnf running using dnf status file
* Wed Aug 21 2024 Brian Read <brianr@koozali.org> 11.0.0-15.sme
- Migrate SM2 Software installer panel from use of yum to dnf [SME: 12718]
@@ -496,7 +520,7 @@ true
- untainting printer [SME: 12110]
* Fri Jan 21 2022 Michel Begue <mab974@misouk.com> 0.1.4-14.sme
- Fix jquery map link missing
- Fix jquery map link missing
- Fix jquery link deleted during update
- Remove generated file during remove
@@ -533,7 +557,7 @@ true
* Mon Nov 15 2021 Michel Begue <mab974@misouk.com> 0.1.4-3.sme
- Fix error message when linking, unlinking jquery in spec
- Correct the 'review' panel presentation
- Modify CSRFDefender plugin to take into account GET method
- Modify CSRFDefender plugin to take into account GET method
- Add TOKEN param where the GET method is used in templates
- Remove smanager from local url address
@@ -768,7 +792,7 @@ true
* Sun Feb 04 2018 Jean-Philipe Pialasse <tests@pialasse.com> 0.1.0-1.sme
- first smeserver-manager package [SME: 10506]
this is a sandbox to dev the next server-manager based on mojolicious
this package is based on part of the old e-smith-manager and needs it
this package is based on part of the old e-smith-manager and needs it
to work until we moved the httpd-admin part.
* Sun Apr 16 2017 Jean-Philipe Pialasse <tests@pialasse.com> 2.8.0-26.sme
@@ -800,7 +824,7 @@ true
* Tue Jul 19 2016 Jean-Philipe Pialasse <tests@pialasse.com> 2.8.0-12.sme
- Update server-manager to Koozali branding [SME: 9676]
- We thanks John Crisp for his wonderful work.
- We thanks John Crisp for his wonderful work.
* Wed Jun 15 2016 Jean-Philipe Pialasse <tests@pialasse.com> 2.8.0-11.sme
- change link for donation to koozali.org [SME: 9599]
@@ -852,7 +876,7 @@ true
[SME: 9163]
* Sun Mar 23 2014 Ian Wells <esmith@wellsi.com> 2.6.0-1.sme
- Roll new stream to remove obsolete images [SME: 7962]
- Roll new stream to remove obsolete images [SME: 7962]
* Sun Mar 23 2014 Ian Wells <esmith@wellsi.com> 2.4.0-9.sme
- Remove references to obsolete images, by Stephane de Labrusse [SME: 7962]
@@ -890,10 +914,10 @@ true
* Wed Dec 9 2009 Charlie Brady <charlieb@budge.apana.org.au> 2.2.0-4.sme
- Fix css validation errors. [SME: 5656]
* Fri Sep 18 2009 Stephen Noble <support@dungog.net> 2.2.0-4.sme
* Fri Sep 18 2009 Stephen Noble <support@dungog.net> 2.2.0-4.sme
- display reconfigure warning once if UnsavedChanges=yes [SME: 5475]
* Fri Sep 18 2009 Stephen Noble <support@dungog.net> 2.2.0-3.sme
* Fri Sep 18 2009 Stephen Noble <support@dungog.net> 2.2.0-3.sme
- display reconfigure warning if UnsavedChanges=yes [SME: 5475]
* Sun Apr 26 2009 Jonathan Martens <smeserver-contribs@snetram.nl> 2.2.0-2.sme
@@ -934,13 +958,13 @@ true
- Fix UTF-8 encoding in header and nav-conf [SME: 4072]
* Tue Jan 08 2008 Stephen Noble <support@dungog.net> 1.14.0-11
- Fix to remove spaces and newlines in panel headers [SME: 3346]
- Fix to remove spaces and newlines in panel headers [SME: 3346]
* Tue Jan 08 2008 Stephen Noble <support@dungog.net> 1.14.0-10
- remove the FormMagick session files [SME: 3723]
* Tue Jan 08 2008 Stephen Noble <support@dungog.net> 1.14.0-9
- Remove spaces and newlines in panel headers [SME: 3346]
- Remove spaces and newlines in panel headers [SME: 3346]
* Sun Jul 01 2007 Shad L. Lords <slords@mail.com> 1.14.0-8
- Make login/logout no quite so verbose. [SME: 2660]
@@ -1233,10 +1257,10 @@ true
* Wed Jan 1 2003 Gordon Rowell <gordonr@e-smith.com>
- [1.9.3-08]
- Generate navigation.info files (config db format) for each supported
- Generate navigation.info files (config db format) for each supported
language in /etc/e-smith/locale/{language}/etc/e-smith/web/functions
- Read the navigation.info file for the preferred language when
displaying the navigation bar
- Read the navigation.info file for the preferred language when
displaying the navigation bar
- TODO: Actually select the correct navigation.info file [gordonr 5493]
* Tue Dec 31 2002 Gordon Rowell <gordonr@e-smith.com>
@@ -1277,7 +1301,7 @@ true
* Fri Nov 22 2002 Gordon Rowell <gordonr@e-smith.com>
- [1.9.1-02]
- templated header.htm [miked 5826]
- modified header.htm template to link to online-manual and blades
- modified header.htm template to link to online-manual and blades
[gordonr 5826]
* Thu Nov 21 2002 Mike Dickson <miked@e-smith.com>
@@ -1324,7 +1348,7 @@ true
* Thu May 16 2002 Tony Clayton <apc@e-smith.com>
- [1.5.8-01]
- Remove unnecessary <p> tags in navigation html [tonyc 3377]
- Fix navigation panel to not import symbols from fm subclasses
- Fix navigation panel to not import symbols from fm subclasses
[tonyc 3109]
* Mon May 13 2002 Tony Clayton <apc@e-smith.com>
@@ -1369,7 +1393,7 @@ true
* Thu Mar 14 2002 Gordon Rowell <gordonr@e-smith.com>
- [1.4.3-01]
- Fixed regexp for ignoring pleasewait(-.*?). Two each in
- Fixed regexp for ignoring pleasewait(-.*?). Two each in
pleasewait/noframes. Reduced to one in each [gordonr]
* Fri Mar 1 2002 Tony Clayton <tonyc@e-smith.com>
@@ -1402,7 +1426,7 @@ true
* Wed Nov 21 2001 Charlie Brady <charlieb@e-smith.com>
- [1.3.0-06]
- Remove troublesome "Requires: e-smith-base".
- Remove troublesome "Requires: e-smith-base".
- Remove obsolete "Requires: e-smith".
* Thu Nov 1 2001 Gordon Rowell <gordonr@e-smith.com>
@@ -1441,7 +1465,7 @@ true
* Tue Jul 31 2001 Adrian Chung <adrianc@e-smith.com>
- [1.1.0-03]
- Adding SSL enabling templates for port 981.
- Adding 01localAccessString fragment for use in SSL
- Adding 01localAccessString fragment for use in SSL
enabling templates.
* Fri Jul 27 2001 Charlie Brady <charlieb@e-smith.com>