* Mon Jun 09 2025 Jean-Philippe Pialasse <jpp@koozali.org> 11.0.0-87.sme

- add datetime getYear_list [SME: 13031]
- WIP use esmith::*DB::UTF8 to access db flat files [SME: 13027]
This commit is contained in:
Jean-Philippe Pialasse 2025-06-09 12:49:29 -04:00
parent d993bd9d19
commit fd076895ba
12 changed files with 93 additions and 94 deletions

View File

@ -20,8 +20,8 @@ use Locale::gettext;
use SrvMngr::I18N;
use SrvMngr qw(theme_list init_session ip_number_or_blank);
use Quota;
use esmith::ConfigDB;
use esmith::AccountsDB;
use esmith::ConfigDB::UTF8;
use esmith::AccountsDB::UTF8;
use esmith::util;
use File::Basename;
use File::Find;
@ -36,9 +36,6 @@ use constant DEBUG => $ENV{MOJO_SMANAGER_DEBUG} || 0;
use constant FALSE => 0;
use constant TRUE => 1;
#our $cdb = esmith::ConfigDB->open || die "Couldn't open config db"; #remove as cached gives problems
#our $adb = esmith::AccountsDB->open || die "Couldn't open accounts db";
#our $rdb = esmith::ConfigDB->open('/etc/e-smith/restore') || die "Couldn't open restore db";
my ($cdb,$adb,$rdb);
my $es_backup = new esmith::Backup or die "Couldn't create Backup object\n";
my @directories = $es_backup->restore_list;
@ -56,9 +53,9 @@ sub main {
my $c = shift;
$c->app->log->info($c->log_req);
my %bac_datas = ();
$cdb = esmith::ConfigDB->open || die "Couldn't open config db";
$adb = esmith::AccountsDB->open || die "Couldn't open accounts db";
$rdb = esmith::ConfigDB->open('/etc/e-smith/restore');
$cdb = esmith::ConfigDB::UTF8->open || die "Couldn't open config db";
$adb = esmith::AccountsDB::UTF8->open || die "Couldn't open accounts db";
$rdb = esmith::ConfigDB::UTF8->open('/etc/e-smith/restore');
my $title = $c->l('bac_BACKUP_TITLE');
my $notif;
$bac_datas{'function'} = 'desktop_backup';
@ -115,9 +112,9 @@ sub do_display {
my $rt = $c->current_route;
my ($res, $result) = '';
my $function = $c->param('Function');
$cdb = esmith::ConfigDB->open || die "Couldn't open config db";
$adb = esmith::AccountsDB->open || die "Couldn't open accounts db";
$rdb = esmith::ConfigDB->open('/etc/e-smith/restore');
$cdb = esmith::ConfigDB::UTF8->open || die "Couldn't open config db";
$adb = esmith::AccountsDB::UTF8->open || die "Couldn't open accounts db";
$rdb = esmith::ConfigDB::UTF8->open('/etc/e-smith/restore');
if ($function =~ /^(\S+)$/) {
$function = $1;
@ -279,9 +276,9 @@ sub do_update {
my $c = shift;
$c->app->log->info($c->log_req);
my $rt = $c->current_route;
$cdb = esmith::ConfigDB->open || die "Couldn't open config db";
$adb = esmith::AccountsDB->open || die "Couldn't open accounts db";
$rdb = esmith::ConfigDB->open('/etc/e-smith/restore');
$cdb = esmith::ConfigDB::UTF8->open || die "Couldn't open config db";
$adb = esmith::AccountsDB::UTF8->open || die "Couldn't open accounts db";
$rdb = esmith::ConfigDB::UTF8->open('/etc/e-smith/restore');
my $function = $c->param('Function');
DEBUG && warn("do_update $function");
my %bac_datas = ();

View File

@ -15,7 +15,8 @@ use SrvMngr qw(theme_list init_session);
use Text::Template;
use File::Basename;
use SrvMngr qw( gen_locale_date_string );
our $cdb = esmith::ConfigDB->open or die "Couldn't open ConfigDB\n";
use esmith::ConfigDB::UTF8;
our $cdb = esmith::ConfigDB::UTF8->open or die "Couldn't open ConfigDB\n";
use constant FALSE => 0;
use constant TRUE => 1;

View File

@ -353,4 +353,19 @@ sub getMonth_list {
[ $c->l('dat_DECEMBER') => '12' ]
];
} ## end sub getMonth_list
sub getYear_list {
my $c= shift;
my @yearArray;
#TODO set thoses year depending on build date in spec file
for ( my $i = 2020; $i < 2060; $i++ ) {
push @yearArray,$i;
}
my @yearList = sort @yearArray;
return \@yearList;
} ## end sub getYear_list
1;

View File

@ -14,12 +14,10 @@ use Mojo::Base 'Mojolicious::Controller';
use Locale::gettext;
use SrvMngr::I18N;
use SrvMngr qw( theme_list init_session validate_password );
use esmith::AccountsDB;
use esmith::ConfigDB;
use esmith::DomainsDB;
use esmith::AccountsDB::UTF8;
use esmith::ConfigDB::UTF8;
use esmith::DomainsDB::UTF8;
#our $adb = esmith::AccountsDB->open || die "Couldn't open accounts db";
#our $cdb = esmith::ConfigDB->open() || die "Couldn't open config db";
my ($adb,$cdb);
sub main {
@ -27,8 +25,8 @@ sub main {
$c->app->log->info($c->log_req);
my %iba_datas = ();
my $title = $c->l('iba_FORM_TITLE');
$adb = esmith::AccountsDB->open || die "Couldn't open accounts db";
$cdb = esmith::ConfigDB->open() || die "Couldn't open config db";
$adb = esmith::AccountsDB::UTF8->open || die "Couldn't open accounts db";
$cdb = esmith::ConfigDB::UTF8->open() || die "Couldn't open config db";
$iba_datas{'trt'} = 'LIST';
my @ibays;
@ -44,8 +42,8 @@ sub do_display {
my $rt = $c->current_route;
my $trt = ($c->param('trt') || 'LIST');
my $ibay = $c->param('ibay') || '';
$adb = esmith::AccountsDB->open || die "Couldn't open accounts db";
$cdb = esmith::ConfigDB->open() || die "Couldn't open config db";
$adb = esmith::AccountsDB::UTF8->open || die "Couldn't open accounts db";
$cdb = esmith::ConfigDB::UTF8->open() || die "Couldn't open config db";
#$trt = 'DEL' if ( $ibay );
#$trt = 'ADD' if ( $rt eq 'ibayadd' );
@ -99,7 +97,7 @@ sub do_display {
if ($trt eq 'LIST') {
my @ibays;
$adb = esmith::AccountsDB->open || die "Couldn't open accounts db";
$adb = esmith::AccountsDB::UTF8->open || die "Couldn't open accounts db";
if ($adb) {
@ibays = $adb->ibays();
@ -120,8 +118,8 @@ sub do_update {
$iba_datas{'trt'} = $trt;
my $result = '';
my $res;
$adb = esmith::AccountsDB->open || die "Couldn't open accounts db";
$cdb = esmith::ConfigDB->open() || die "Couldn't open config db";
$adb = esmith::AccountsDB::UTF8->open || die "Couldn't open accounts db";
$cdb = esmith::ConfigDB::UTF8->open() || die "Couldn't open config db";
if ($trt eq 'ADD') {
my $name = ($c->param('ibay') || '');
@ -306,7 +304,7 @@ sub print_vhost_message {
my $c = shift;
my $name = $c->param('ibay');
my $result = '';
my $domaindb = esmith::DomainsDB->open();
my $domaindb = esmith::DomainsDB::UTF8->open();
my @domains = $domaindb->get_all_by_prop(Content => $name);
my $vhostListItems = join "\n", (map ($_->key . " " . $_->prop('Description'), @domains));
@ -328,7 +326,7 @@ sub remove_ibay {
if (my $acct = $adb->get($name)) {
if ($acct->prop('type') eq 'ibay') {
$acct->set_prop('type', 'ibay-deleted');
my $domains_db = esmith::DomainsDB->open();
my $domains_db = esmith::DomainsDB::UTF8->open();
my @domains = $domains_db->get_all_by_prop(Content => $name);
foreach my $d (@domains) {

View File

@ -17,10 +17,9 @@ use SrvMngr qw(theme_list init_session);
#use Regexp::Common qw /net/;
#use Data::Dumper;
use esmith::util;
use esmith::HostsDB;
#our $db = esmith::ConfigDB->open || die "Can't open configuration database: $!\n";
#our $tcp_db = esmith::ConfigDB->open('portforward_tcp') || die "Can't open portforward_tcp database: $!\n";
#our $udp_db = esmith::ConfigDB->open('portforward_udp') || die "Can't open portforward_udp database: $!\n";
#use esmith::HostsDB;
use esmith::ConfigDB::UTF8;
my ($cdb,$tcp_db,$udp_db);
my %ret = ();
@ -34,9 +33,9 @@ sub main {
$pf_datas{return} = "";
my $title = $c->l('pf_FORM_TITLE');
my $modul = '';
$cdb = esmith::ConfigDB->open || die "Can't open configuration database: $!\n";
$tcp_db = esmith::ConfigDB->open('portforward_tcp') || die "Can't open portforward_tcp database: $!\n";
$udp_db = esmith::ConfigDB->open('portforward_udp') || die "Can't open portforward_udp database: $!\n";
$cdb = esmith::ConfigDB::UTF8->open || die "Can't open configuration database: $!\n";
$tcp_db = esmith::ConfigDB::UTF8->open('portforward_tcp') || die "Can't open portforward_tcp database: $!\n";
$udp_db = esmith::ConfigDB::UTF8->open('portforward_udp') || die "Can't open portforward_udp database: $!\n";
$pf_datas{trt} = 'LIST';
my @tcpforwards = $tcp_db->get_all;
my @udpforwards = $udp_db->get_all;
@ -57,9 +56,9 @@ sub do_display {
$c->app->log->info($c->log_req);
my $rt = $c->current_route;
my $trt = ($c->param('trt') || 'LIST');
my $cdb = esmith::ConfigDB->open || die "Can't open configuration database: $!\n";
my $tcp_db = esmith::ConfigDB->open('portforward_tcp') || die "Can't open portforward_tcp database: $!\n";
my $udp_db = esmith::ConfigDB->open('portforward_udp') || die "Can't open portforward_udp database: $!\n";
my $cdb = esmith::ConfigDB::UTF8->open || die "Can't open configuration database: $!\n";
my $tcp_db = esmith::ConfigDB::UTF8->open('portforward_tcp') || die "Can't open portforward_tcp database: $!\n";
my $udp_db = esmith::ConfigDB::UTF8->open('portforward_udp') || die "Can't open portforward_udp database: $!\n";
$trt = 'DEL' if ($rt eq 'portforwardingdel');
$trt = 'ADD' if ($rt eq 'portforwardingadd');
$trt = 'ADD1' if ($rt eq 'portforwardingadd1');
@ -143,8 +142,8 @@ sub do_display {
#List all the port forwards
# Open them again as maybe written to above
$tcp_db = esmith::ConfigDB->open('portforward_tcp') || die "Can't open portforward_tcp database: $!\n";
$udp_db = esmith::ConfigDB->open('portforward_udp') || die "Can't open portforward_udp database: $!\n";
$tcp_db = esmith::ConfigDB::UTF8->open('portforward_tcp') || die "Can't open portforward_tcp database: $!\n";
$udp_db = esmith::ConfigDB::UTF8->open('portforward_udp') || die "Can't open portforward_udp database: $!\n";
my @tcpforwards = $tcp_db->get_all;
my @udpforwards = $udp_db->get_all;
@ -172,10 +171,10 @@ sub add_portforward {
my $fdb;
if ($proto eq 'TCP') {
$tcp_db = esmith::ConfigDB->open('portforward_tcp') || die "Can't open portforward_tcp database: $!\n";
$tcp_db = esmith::ConfigDB::UTF8->open('portforward_tcp') || die "Can't open portforward_tcp database: $!\n";
$fdb = $tcp_db;
} else {
$udp_db = esmith::ConfigDB->open('portforward_udp') || die "Can't open portforward_udp database: $!\n";
$udp_db = esmith::ConfigDB::UTF8->open('portforward_udp') || die "Can't open portforward_udp database: $!\n";
$fdb = $udp_db;
}
@ -215,7 +214,7 @@ sub add_portforward {
sub get_destination_host {
my $q = shift;
$cdb = esmith::ConfigDB->open || die "Can't open configuration database: $!\n";
$cdb = esmith::ConfigDB::UTF8->open || die "Can't open configuration database: $!\n";
my $dhost = $q->param("dhost");
my $localip = $cdb->get_prop('InternalInterface', 'IPAddress');
my $external_ip = $cdb->get_prop('ExternalInterface', 'IPAddress') || $localip;
@ -362,7 +361,7 @@ sub isValidPort() {
sub validate_destination_host {
my $c = shift;
$cdb = esmith::ConfigDB->open || die "Can't open configuration database: $!\n";
$cdb = esmith::ConfigDB::UTF8->open || die "Can't open configuration database: $!\n";
my $dhost = $c->param('dhost');
$dhost =~ s/^\s+|\s+$//g;
my $localip = $cdb->get_prop('InternalInterface', 'IPAddress');

View File

@ -14,15 +14,10 @@ use Mojo::Base 'Mojolicious::Controller';
use Locale::gettext;
use SrvMngr::I18N;
use SrvMngr qw(theme_list init_session);
use esmith::AccountsDB::UTF8;
use esmith::DomainsDB::UTF8;
#use Data::Dumper;
#use esmith::FormMagick::Panel::pseudonyms;
use esmith::AccountsDB;
#use URI::Escape;
#our $cdb = esmith::ConfigDB->open || die "Couldn't open configuration db";
#our $adb = esmith::AccountsDB->open || die "Couldn't open accounts db";
my ($cdb,$adb);
our ($cdb,$adb);
sub main {
my $c = shift;
@ -32,8 +27,7 @@ sub main {
my $notif = '';
$pse_datas{trt} = 'LST';
my @pseudonyms;
#$cdb = esmith::ConfigDB->open || die "Couldn't open configuration db";
$adb = esmith::AccountsDB->open || die "Couldn't open accounts db";
$adb = esmith::AccountsDB::UTF8->open || die "Couldn't open accounts db";
if ($adb) {
@pseudonyms = $adb->pseudonyms();
@ -50,8 +44,7 @@ sub do_display {
my $pseudonym = $c->param('pseudonym') || '';
my $title = $c->l('pse_FORM_TITLE');
my %pse_datas = ();
#$cdb = esmith::ConfigDB->open || die "Couldn't open configuration db";
$adb = esmith::AccountsDB->open || die "Couldn't open accounts db";
$adb = esmith::AccountsDB::UTF8->open || die "Couldn't open accounts db";
$pse_datas{'trt'} = $trt;
if ($trt eq 'ADD') {
@ -97,8 +90,7 @@ sub do_update {
my $rt = $c->current_route;
my $trt = ($c->param('trt') || 'LST');
my $title = $c->l('pse_FORM_TITLE');
#$cdb = esmith::ConfigDB->open || die "Couldn't open configuration db";
$adb = esmith::AccountsDB->open || die "Couldn't open accounts db";
$adb = esmith::AccountsDB::UTF8->open || die "Couldn't open accounts db";
my %pse_datas = ();
$pse_datas{'trt'} = $trt;
my ($res, $result) = '';
@ -331,8 +323,7 @@ sub validate_new_pseudonym_name {
if (defined $acct) {
return ($c->l('pse_NAME_IN_USE'));
} elsif ($pseudonym =~ /@/) {
use esmith::DomainsDB;
my $ddb = esmith::DomainsDB->open_ro
my $ddb = esmith::DomainsDB::UTF8->open_ro
or die "Couldn't open DomainsDB\n";
my ($lhs, $rhs) = split /@/, $pseudonym;
return ($c->l('pse_PSEUDONYM_INVALID_DOMAIN')) unless ($ddb->get($rhs));

View File

@ -8,6 +8,8 @@ use Mojo::Base 'Mojolicious::Controller';
use Locale::gettext;
use SrvMngr::I18N;
use SrvMngr qw(theme_list init_session);
use esmith::ConfigDB::UTF8 qw(open_ro);
use esmith::AccountsDB::UTF8 qw(open_ro);
# retrieve a configuration db record
sub getconfig {
@ -16,8 +18,7 @@ sub getconfig {
$c->app->log->info($c->log_req . ' ' . $key);
if ($key) {
use esmith::ConfigDB qw(open_ro);
my $cdb = esmith::ConfigDB->open_ro;
my $cdb = esmith::ConfigDB::UTF8->open_ro;
return getdb($c, $cdb, $key);
} ## end if ($key)
} ## end sub getconfig
@ -29,8 +30,7 @@ sub getaccount {
$c->app->log->info($c->log_req . ' ' . $key);
if ($key) {
use esmith::AccountsDB qw(open_ro);
my $adb = esmith::AccountsDB->open_ro;
my $adb = esmith::AccountsDB::UTF8->open_ro;
return getdb($c, $adb, $key);
} ## end if ($key)
} ## end sub getaccount

View File

@ -5,19 +5,18 @@ package SrvMngr::Controller::Swttheme;
use strict;
use warnings;
use Mojo::Base 'Mojolicious::Controller';
use esmith::ConfigDB::UTF8;
#use SrvMngr qw(theme_list init_session);
our $db = esmith::ConfigDB->open() || die "Couldn't open config db";
sub main {
my $c = shift;
my $db = esmith::ConfigDB::UTF8->open() || die "Couldn't open config db";
my $from = $c->param('From') || '/';
my $theme = $c->param('Theme');
$c->app->log->info(" swt theme '$from' '$theme' ");
my $oldTheme = $c->session->{CurrentTheme};
if ($theme ne $oldTheme) {
# $c->app->renderer->paths([$c->app->home->rel_file('themes/default/templates')]);
# $c->app->static->paths([$c->app->home->rel_file('themes/default/public')]);
# if ( $theme ne 'default' ) {
@ -31,7 +30,7 @@ sub main {
system("/sbin/e-smith/signal-event smanager-theme-change") == 0
or warn "$c->l('ERROR_UPDATING')";
} ## end if ($theme ne $oldTheme)
## (not sure) $c->flash( warning => $c->l('swt_LOGIN_AGAIN') );
## (not sure) $c->flash( warning => $c->l('swt_LOGIN_AGAIN') );
$from = '/initial' if $from eq '/';
$from = '/' . $from if ($from !~ m|^\/|);
$c->redirect_to($from);

View File

@ -15,28 +15,20 @@ use Locale::gettext;
use SrvMngr::I18N;
use SrvMngr qw(theme_list init_session
validate_password email_simple);
#use esmith::FormMagick qw( validate_password );
#use CGI::FormMagick::Validator qw( call_fm_validation );
use esmith::AccountsDB;
use esmith::ConfigDB;
use esmith::AccountsDB::UTF8;
use esmith::ConfigDB::UTF8;
use esmith::util;
#use esmith::FormMagick;
#use esmith::cgi;
#use File::Basename;
#use Exporter;
#use Carp qw(verbose);
#use esmith::FormMagick::Panel::useraccounts;
#our $adb = esmith::AccountsDB->open || die "Couldn't open accounts db";
#our $cdb = esmith::ConfigDB->open() || die "Couldn't open config db";
my ($cdb,$adb);
sub main {
my $c = shift;
$c->app->log->info($c->log_req);
$cdb = esmith::ConfigDB->open() || die "Couldn't open config db";
$adb = esmith::AccountsDB->open || die "Couldn't open accounts db";
$cdb = esmith::ConfigDB::UTF8->open() || die "Couldn't open config db";
$adb = esmith::AccountsDB::UTF8->open || die "Couldn't open accounts db";
my $notif = '';
my %usr_datas = ();
my $title = $c->l('usr_FORM_TITLE');
@ -55,8 +47,8 @@ sub do_display {
my %usr_datas = ();
my $title = $c->l('usr_FORM_TITLE');
my ($notif, $modul) = '';
$cdb = esmith::ConfigDB->open() || die "Couldn't open config db";
$adb = esmith::AccountsDB->open || die "Couldn't open accounts db";
$cdb = esmith::ConfigDB::UTF8->open() || die "Couldn't open config db";
$adb = esmith::AccountsDB::UTF8->open || die "Couldn't open accounts db";
$usr_datas{'trt'} = $trt;
if ($trt eq 'ADD') {
@ -143,8 +135,8 @@ sub do_update {
$usr_datas{trt} = $trt;
my $title = $c->l('usr_FORM_TITLE');
my ($res, $result) = '';
$cdb = esmith::ConfigDB->open() || die "Couldn't open config db";
$adb = esmith::AccountsDB->open || die "Couldn't open accounts db";
$cdb = esmith::ConfigDB::UTF8->open() || die "Couldn't open config db";
$adb = esmith::AccountsDB::UTF8->open || die "Couldn't open accounts db";
if ($trt eq 'ADD') {
@ -759,8 +751,7 @@ sub system_validate_password {
sub system_check_password {
my $c = shift;
my $pass1 = shift;
use esmith::ConfigDB;
my $conf = esmith::ConfigDB->open();
my $conf = esmith::ConfigDB::UTF8->open();
my ($check_type, $rec);
if ($conf) {

View File

@ -13,11 +13,13 @@ use Mojo::Base 'Mojolicious::Controller';
use Locale::gettext;
use SrvMngr::I18N;
use SrvMngr qw(theme_list init_session);
our $db = esmith::ConfigDB->open || die "Couldn't open config db";
use esmith::ConfigDB::UTF8;
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 %wkg_datas = ();
my $title = $c->l('wkg_FORM_TITLE');
my $modul = '';

View File

@ -13,6 +13,8 @@ use Mojo::Base 'Mojolicious::Controller';
use Locale::gettext;
use SrvMngr::I18N;
use SrvMngr qw(theme_list init_session ip_number_or_blank);
# dnf_* should remain ASCII; yum_repositories do not need to be UTF-8
# leavig raw read/write esmith::ConfigDB
use esmith::ConfigDB;
use esmith::util;
use File::Basename;

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 86
%define release 87
Version: %{version}
Release: %{release}%{?dist}
License: GPL
@ -143,6 +143,10 @@ true
%defattr(-,root,root)
%changelog
* Mon Jun 09 2025 Jean-Philippe Pialasse <jpp@koozali.org> 11.0.0-87.sme
- add datetime getYear_list [SME: 13031]
- WIP use esmith::*DB::UTF8 to access db flat files [SME: 13027]
* Mon Jun 09 2025 John Crisp <jcrisp@safeandsoundit.co.uk> 11.00.0-86.sme
- Fix datetime gen_locale_date_string reference [SME: 13017]