From c85022c49eaab6e9baaf233ed867fe272154af65 Mon Sep 17 00:00:00 2001 From: Jean-Philippe Pialasse Date: Mon, 9 Jun 2025 23:49:25 -0400 Subject: [PATCH] * Mon Jun 09 2025 Jean-Philippe Pialasse 11.0.0-87.sme - add datetime getYear_list [SME: 13031] - use esmith::*DB::UTF8 to access db flat files [SME: 13027] --- root/usr/share/smanager/lib/SrvMngr.pm | 15 ++++--- .../smanager/lib/SrvMngr/Controller/Backup.pm | 2 +- .../smanager/lib/SrvMngr/Controller/Clamav.pm | 6 ++- .../lib/SrvMngr/Controller/Datetime.pm | 15 ++++--- .../lib/SrvMngr/Controller/Directory.pm | 3 +- .../lib/SrvMngr/Controller/Domains.pm | 32 +++++++-------- .../lib/SrvMngr/Controller/Emailsettings.pm | 33 +++++++-------- .../smanager/lib/SrvMngr/Controller/Groups.pm | 21 ++++------ .../lib/SrvMngr/Controller/Hostentries.pm | 41 ++++++++----------- .../lib/SrvMngr/Controller/Localnetworks.pm | 29 +++++++------ .../smanager/lib/SrvMngr/Controller/Login.pm | 10 +++-- .../lib/SrvMngr/Controller/Portforwarding.pm | 3 -- .../lib/SrvMngr/Controller/Printers.pm | 10 ++--- .../smanager/lib/SrvMngr/Controller/Proxy.pm | 5 ++- .../smanager/lib/SrvMngr/Controller/Quota.pm | 8 ++-- .../lib/SrvMngr/Controller/Remoteaccess.pm | 35 ++++++++-------- .../smanager/lib/SrvMngr/Controller/Review.pm | 23 +++++++---- .../lib/SrvMngr/Controller/Useraccounts.pm | 24 +++++------ .../lib/SrvMngr/Controller/Userpassword.pm | 13 +++--- .../lib/SrvMngr/Controller/Viewlogfiles.pm | 7 +++- .../smanager/lib/SrvMngr/Controller/Yum.pm | 11 ++--- .../share/smanager/lib/SrvMngr/Model/Main.pm | 18 ++++---- root/usr/share/smanager/lib/SrvMngr_Auth.pm | 6 +-- root/usr/share/smanager/script/routes.pl | 4 +- root/usr/share/smanager/script/secrets.pl | 4 +- root/usr/share/smanager/script/srvmngr | 4 ++ root/usr/share/smanager/t/002_basic.t | 4 +- root/usr/share/smanager/t/004_panels.t | 8 ++-- .../themes/default/templates/backdown.html.ep | 4 +- smeserver-manager.spec | 2 +- 30 files changed, 202 insertions(+), 198 deletions(-) diff --git a/root/usr/share/smanager/lib/SrvMngr.pm b/root/usr/share/smanager/lib/SrvMngr.pm index 7e9fcb7..520f2ee 100644 --- a/root/usr/share/smanager/lib/SrvMngr.pm +++ b/root/usr/share/smanager/lib/SrvMngr.pm @@ -4,6 +4,7 @@ package SrvMngr; use strict; use warnings; use utf8; +binmode(STDOUT); use Mojo::Base 'Mojolicious'; @@ -29,6 +30,8 @@ use SrvMngr::Model::Main; use SrvMngr::Plugin::WithoutCache; use esmith::I18N; +use esmith::ConfigDB::UTF8; +use esmith::NavigationDB; # no UTF8 raw is ok for ASCII only flat file # Import the function(s) you need use SrvMngr_Auth qw(check_admin_access); @@ -550,9 +553,6 @@ sub theme_list { #------------------------------------------------------------ sub getNavigation { - - use esmith::NavigationDB; - 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'; @@ -573,7 +573,7 @@ sub getNavigation { # 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 + my $accountsdb = esmith::AccountsDB::UTF8->open_ro() or die "Couldn't open AccountsDB\n"; # Check if user has AdminPanels property @@ -646,8 +646,7 @@ sub getNavigation { my $navinfo = NAVIGATIONDIR . "/navigation.$lang"; - my $navdb = esmith::NavigationDB->open_ro( $navinfo ) or - die "Couldn't open $navinfo\n"; + my $navdb = esmith::NavigationDB->open_ro( $navinfo ) or die "Couldn't open $navinfo\n"; # no UTF8 # Check the navdb for anything with a UrlPath, which means that it doesn't # have a cgi file to be picked up by the above code. Ideally, only pages @@ -814,7 +813,7 @@ sub get_routes_list { my $c = shift; - my $rtdb = esmith::ConfigDB->open_ro('routes') || die 'Cannot open Routes db'; + my $rtdb = esmith::ConfigDB::UTF8->open_ro('routes') || die 'Cannot open Routes db'; my @routes = $rtdb->get_all(); my @rt; @@ -896,7 +895,7 @@ sub gen_locale_date_string sub get_public_ip_address { my $self = shift; - my $cdb = esmith::ConfigDB->open() || die "Couldn't open config db"; + my $cdb = esmith::ConfigDB::UTF8->open() || die "Couldn't open config db"; my $sysconfig = $cdb->get('sysconfig'); if ($sysconfig) { diff --git a/root/usr/share/smanager/lib/SrvMngr/Controller/Backup.pm b/root/usr/share/smanager/lib/SrvMngr/Controller/Backup.pm index 7887eb6..6cb8f15 100644 --- a/root/usr/share/smanager/lib/SrvMngr/Controller/Backup.pm +++ b/root/usr/share/smanager/lib/SrvMngr/Controller/Backup.pm @@ -27,7 +27,7 @@ use File::Basename; use File::Find; use File::Path qw(make_path remove_tree); use esmith::Backup; -use esmith::BackupHistoryDB; +use esmith::BackupHistoryDB; #no UTF8 and not in use use esmith::util; use esmith::lockfile; use esmith::BlockDevices; diff --git a/root/usr/share/smanager/lib/SrvMngr/Controller/Clamav.pm b/root/usr/share/smanager/lib/SrvMngr/Controller/Clamav.pm index 4fa374d..e923c21 100644 --- a/root/usr/share/smanager/lib/SrvMngr/Controller/Clamav.pm +++ b/root/usr/share/smanager/lib/SrvMngr/Controller/Clamav.pm @@ -13,9 +13,9 @@ use Mojo::Base 'Mojolicious::Controller'; use Locale::gettext; use SrvMngr::I18N; use SrvMngr qw(theme_list init_session); +use esmith::ConfigDB::UTF8; -#package esmith::FormMagick::Panel::clamav; -our $db = esmith::ConfigDB->open() || die "Couldn't open config db"; +our $db; sub main { my $c = shift; @@ -23,6 +23,7 @@ sub main { my %clm_datas = (); my $title = $c->l('clm_FORM_TITLE'); my $modul = $c->render_to_string(inline => $c->l('clm_DESC_FILESYSTEM_SCAN_PERIOD')); + $db = esmith::ConfigDB::UTF8->open() || die "Couldn't open config db"; $clm_datas{'FilesystemScan'} = ($db->get_prop('clamav', 'FilesystemScan')) || 'disabled'; $clm_datas{'Quarantine'} = ($db->get_prop('clamav', 'Quarantine')) || 'disabled'; $clm_datas{'clam_versions'} = get_clam_versions(); @@ -53,6 +54,7 @@ sub do_update { sub change_settings { my $c = shift; + $db = esmith::ConfigDB::UTF8->open() || die "Couldn't open config db"; my $status = $c->param('status'); my $FilesystemScan = ($c->param('FilesystemScan') || 'disabled'); my $Quarantine = ($c->param('Quarantine') || 'disabled'); diff --git a/root/usr/share/smanager/lib/SrvMngr/Controller/Datetime.pm b/root/usr/share/smanager/lib/SrvMngr/Controller/Datetime.pm index 082d2dc..848e8d6 100644 --- a/root/usr/share/smanager/lib/SrvMngr/Controller/Datetime.pm +++ b/root/usr/share/smanager/lib/SrvMngr/Controller/Datetime.pm @@ -14,7 +14,8 @@ use SrvMngr::I18N; use SrvMngr qw(theme_list init_session); use esmith::util; use SrvMngr qw( gen_locale_date_string ); -our $cdb = esmith::ConfigDB->open() || die "Couldn't open config db"; +use esmith::ConfigDB::UTF8; +our $cdb ; sub main { my $c = shift; @@ -23,6 +24,7 @@ sub main { my $title = $c->l('dat_FORM_TITLE'); my $modul = $c->l('dat_INITIAL_DESC'); $dat_datas{ntpstatus} = 'disabled'; + $cdb = esmith::ConfigDB::UTF8->open() || die "Couldn't open config db"; my $rec = $cdb->get('ntpd'); if ($rec) { @@ -54,6 +56,7 @@ sub do_update { my $result; my $success; my $old_ntpstatus = $c->param('Old_ntpstatus'); + $cdb = esmith::ConfigDB::UTF8->open() || die "Couldn't open config db"; $dat_datas{ntpstatus} = $c->param('Ntpstatus'); if ($dat_datas{ntpstatus} ne $old_ntpstatus) { @@ -125,6 +128,7 @@ sub do_update { sub validate_change_datetime { my $c = shift; + $cdb = esmith::ConfigDB::UTF8->open() || die "Couldn't open config db"; #-------------------------------------------------- # Untaint parameters and check for validity @@ -220,15 +224,14 @@ sub validate_change_datetime { #-------------------------------------------------- # Store time zone in configuration database #-------------------------------------------------- - my $conf = esmith::ConfigDB->open(); - my $old = $conf->get('UnsavedChanges')->value; - my $rec = $conf->get('TimeZone'); + my $old = $cdb->get('UnsavedChanges')->value; + my $rec = $cdb->get('TimeZone'); unless ($rec) { - $rec = $conf->new_record('TimeZone', undef); + $rec = $cdb->new_record('TimeZone', undef); } $rec->set_value($timezone); - $conf->get('UnsavedChanges')->set_value($old); + $cdb->get('UnsavedChanges')->set_value($old); #-------------------------------------------------- # Signal event to change time zone, system time diff --git a/root/usr/share/smanager/lib/SrvMngr/Controller/Directory.pm b/root/usr/share/smanager/lib/SrvMngr/Controller/Directory.pm index 7c41445..793f939 100644 --- a/root/usr/share/smanager/lib/SrvMngr/Controller/Directory.pm +++ b/root/usr/share/smanager/lib/SrvMngr/Controller/Directory.pm @@ -13,6 +13,7 @@ use Mojo::Base 'Mojolicious::Controller'; use Locale::gettext; use SrvMngr::I18N; use esmith::ConfigDB::UTF8; +use esmith::AccountsDB::UTF8; use SrvMngr qw(theme_list init_session); our $db; @@ -54,7 +55,7 @@ sub do_update { $db->get('ldap')->set_prop('defaultPhoneNumber', $phonenumber); if ($existing eq 'update') { - my $ac = esmith::AccountsDB->open() || die "Couldn't open accounts db"; + my $ac = esmith::AccountsDB::UTF8->open() || die "Couldn't open accounts db"; my @users = $ac->users(); foreach my $user (@users) { diff --git a/root/usr/share/smanager/lib/SrvMngr/Controller/Domains.pm b/root/usr/share/smanager/lib/SrvMngr/Controller/Domains.pm index 0e4a092..cba6347 100644 --- a/root/usr/share/smanager/lib/SrvMngr/Controller/Domains.pm +++ b/root/usr/share/smanager/lib/SrvMngr/Controller/Domains.pm @@ -13,16 +13,10 @@ use Mojo::Base 'Mojolicious::Controller'; use Locale::gettext; use SrvMngr::I18N; use SrvMngr qw(theme_list init_session); +use esmith::DomainsDB::UTF8; +use esmith::AccountsDB::UTF8; -#use Data::Dumper; -#use esmith::FormMagick::Panel::domains; -use esmith::DomainsDB; -use esmith::AccountsDB; - -#use URI::Escape; -my ($ddb,$cdb,$adb); -#our $cdb = esmith::ConfigDB->open || die "Couldn't open configuration db"; -#our $adb = esmith::AccountsDB->open || die "Couldn't open accounts db"; +our ($ddb,$cdb,$adb); our $REGEXP_DOMAIN = qq([a-zA-Z0-9\-\.]+); sub main { @@ -30,9 +24,9 @@ sub main { $c->app->log->info($c->log_req); my %dom_datas = (); my $title = $c->l('dom_FORM_TITLE'); - $ddb = esmith::DomainsDB->open || die "Couldn't open domains db"; - $cdb = esmith::ConfigDB->open || die "Couldn't open configuration db"; - $adb = esmith::AccountsDB->open || die "Couldn't open accounts db"; + $ddb = esmith::DomainsDB::UTF8->open || die "Couldn't open domains db"; + $cdb = esmith::ConfigDB::UTF8->open || die "Couldn't open configuration db"; + $adb = esmith::AccountsDB::UTF8->open || die "Couldn't open accounts db"; $dom_datas{trt} = 'LST'; my @domains; @@ -57,9 +51,9 @@ sub do_display { my $rt = $c->current_route; my $trt = $c->param('trt'); my $domain = $c->param('Domain') || ''; - $ddb = esmith::DomainsDB->open || die "Couldn't open domains db"; - $cdb = esmith::ConfigDB->open || die "Couldn't open configuration db"; - $adb = esmith::AccountsDB->open || die "Couldn't open accounts db"; + $ddb = esmith::DomainsDB::UTF8->open || die "Couldn't open domains db"; + $cdb = esmith::ConfigDB::UTF8->open || die "Couldn't open configuration db"; + $adb = esmith::AccountsDB::UTF8->open || die "Couldn't open accounts db"; #$trt = 'DEL' if ( $rt eq 'domaindel1' ); #$trt = 'UPD' if ( $rt eq 'domainupd1' ); @@ -127,9 +121,9 @@ sub do_update { $c->app->log->info($c->log_req); my $rt = $c->current_route; my $trt = $c->param('trt'); - $ddb = esmith::DomainsDB->open || die "Couldn't open domains db"; - $cdb = esmith::ConfigDB->open || die "Couldn't open configuration db"; - $adb = esmith::AccountsDB->open || die "Couldn't open accounts db"; + $ddb = esmith::DomainsDB::UTF8->open || die "Couldn't open domains db"; + $cdb = esmith::ConfigDB::UTF8->open || die "Couldn't open configuration db"; + $adb = esmith::AccountsDB::UTF8->open || die "Couldn't open accounts db"; my %dom_datas = (); my ($res, $result) = ''; @@ -246,6 +240,7 @@ sub create_modify_domain { . ' Ctl' ); } ## end unless ($domain) + $ddb = esmith::DomainsDB::UTF8->open || die "Couldn't open domains db"; my $rec = $ddb->get($domain); if ($rec and $action eq 'create') { @@ -375,6 +370,7 @@ sub nameserver_options_list { sub get_nameserver_value { my $c = shift; + $ddb = esmith::DomainsDB::UTF8->open || die "Couldn't open domains db"; my $domain = $c->param('Domain') || undef; return ($ddb->get_prop($domain, 'Nameservers') || 'internet'); } ## end sub get_nameserver_value diff --git a/root/usr/share/smanager/lib/SrvMngr/Controller/Emailsettings.pm b/root/usr/share/smanager/lib/SrvMngr/Controller/Emailsettings.pm index 2200859..81f96ed 100644 --- a/root/usr/share/smanager/lib/SrvMngr/Controller/Emailsettings.pm +++ b/root/usr/share/smanager/lib/SrvMngr/Controller/Emailsettings.pm @@ -16,16 +16,18 @@ use constant TRUE => 1; use Locale::gettext; use SrvMngr::I18N; use SrvMngr qw(theme_list init_session ip_number_or_blank); -use esmith::ConfigDB; -use esmith::AccountsDB; +use esmith::ConfigDB::UTF8; +use esmith::AccountsDB::UTF8; use esmith::util; use File::Basename; -our $pattern_db = esmith::ConfigDB->open("mailpatterns"); -our $cdb = esmith::ConfigDB->open || die "Couldn't open config db"; +our $pattern_db; +our $cdb; sub main { my $c = shift; $c->app->log->info($c->log_req); + $pattern_db = esmith::ConfigDB::UTF8->open("mailpatterns"); + $cdb = esmith::ConfigDB::UTF8->open || die "Couldn't open config db"; my %mai_datas = (); my $title = $c->l('mai_FORM_TITLE'); $mai_datas{'trt'} = 'LIST'; @@ -42,7 +44,7 @@ sub do_display { my $title = $c->l('mai_FORM_TITLE'); my ($notif, $dest) = ''; $mai_datas{'trt'} = $trt; - $cdb = esmith::ConfigDB->open || die "Couldn't open config db"; + $cdb = esmith::ConfigDB::UTF8->open || die "Couldn't open config db"; if ($trt eq 'ACC') { $dest = 'emailaccess'; @@ -94,7 +96,7 @@ sub do_update { my $trt = $c->param('trt'); my %mai_datas = (); $mai_datas{trt} = $trt; - $cdb = esmith::ConfigDB->open || die "Couldn't open config db"; + $cdb = esmith::ConfigDB::UTF8->open || die "Couldn't open config db"; my $title = $c->l('mai_FORM_TITLE'); my ($dest, $res, $result) = ''; @@ -231,7 +233,7 @@ sub get_patterns_status { sub adjust_patterns { my $c = shift; my @selected = @{ $c->every_param('BlockExecutableContent') }; - + $pattern_db = esmith::ConfigDB::UTF8->open("mailpatterns"); foreach my $pattern ($pattern_db->get_all_by_prop(type => "pattern")) { my $status = (grep $pattern->key eq $_, @selected) @@ -284,7 +286,7 @@ sub get_current_imap_access { sub get_current_smtp_ssl_auth { my ($c, $localise, $soru, $debug) = @_; die "Error: \$soru must be either 's' or 'u':$soru.\n" unless $soru eq 's' || $soru eq 'u'; - $cdb = esmith::ConfigDB->open || die "Couldn't open config db"; + $cdb = esmith::ConfigDB::UTF8->open || die "Couldn't open config db"; # Initialize variables with default values my $smtpStatus = 'none'; @@ -485,7 +487,7 @@ sub get_retrieval_opt { sub get_emailunknownuser_options { my $c = shift; - my $accounts = esmith::AccountsDB->open_ro(); + my $accounts = esmith::AccountsDB::UTF8->open_ro(); my %existingAccounts = ( 'admin' => $c->l("mai_FORWARD_TO_ADMIN"), 'returntosender' => $c->l("mai_RETURN_TO_SENDER") @@ -503,7 +505,7 @@ sub get_emailunknownuser_options { sub get_emailunknownuser_opt { my $c = shift; - my $accounts = esmith::AccountsDB->open_ro(); + my $accounts = esmith::AccountsDB::UTF8->open_ro(); my @existingAccounts = ([ $c->l("mai_FORWARD_TO_ADMIN") => 'admin' ], [ $c->l("mai_RETURN_TO_SENDER") => 'returntosender' ]); @@ -580,14 +582,13 @@ sub display_multidrop { sub change_settings_reception { my $c = shift; - $cdb = esmith::ConfigDB->open || die "Couldn't open config db"; + $cdb = esmith::ConfigDBi::UTF8->open || die "Couldn't open config db"; my $FetchmailMethod = ($c->param('FetchmailMethod') || 'standard'); my $FetchmailFreqOffice = ($c->param('FreqOffice') || 'every15min'); my $FetchmailFreqOutside = ($c->param('FreqOutside') || 'everyhour'); my $FetchmailFreqWeekend = ($c->param('FreqWeekend') || 'everyhour'); my $SpecifyHeader = ($c->param('SpecifyHeader') || 'off'); - my $fetchmail - = $cdb->get('fetchmail') || $cdb->new_record("fetchmail", { type => "service", status => "disabled" }); + my $fetchmail = $cdb->get('fetchmail') || $cdb->new_record("fetchmail", { type => "service", status => "disabled" }); if ($FetchmailMethod eq 'standard') { $fetchmail->set_prop('status', 'disabled'); @@ -662,7 +663,7 @@ sub change_settings_reception { sub change_settings_delivery { my ($c) = shift; - $cdb = esmith::ConfigDB->open || die "Couldn't open config db"; + $cdb = esmith::ConfigDB::UTF8->open || die "Couldn't open config db"; my $EmailUnknownUser = ($c->param('EmailUnknownUser') || 'returntosender'); $cdb->set_value('SMTPSmartHost', $c->param('SMTPSmartHost')); $cdb->set_value('DelegateMailServer', $c->param('DelegateMailServer')); @@ -683,7 +684,7 @@ sub change_settings_delivery { sub change_settings_access { my $c = shift; - $cdb = esmith::ConfigDB->open || die "Couldn't open config db"; + $cdb = esmith::ConfigDB::UTF8->open || die "Couldn't open config db"; my $pop3Access = ($c->param('POPAccess') || 'private'); if ($pop3Access eq 'disabled') { @@ -757,7 +758,7 @@ sub change_settings_access { sub change_settings_filtering { my $c = shift; - $cdb = esmith::ConfigDB->open || die "Couldn't open config db"; + $cdb = esmith::ConfigDB::UTF8->open || die "Couldn't open config db"; my $virus_status = ($c->param('VirusStatus') || 'disabled'); $cdb->set_prop("qpsmtpd", 'VirusScan', $virus_status); diff --git a/root/usr/share/smanager/lib/SrvMngr/Controller/Groups.pm b/root/usr/share/smanager/lib/SrvMngr/Controller/Groups.pm index 03d84aa..d859856 100644 --- a/root/usr/share/smanager/lib/SrvMngr/Controller/Groups.pm +++ b/root/usr/share/smanager/lib/SrvMngr/Controller/Groups.pm @@ -14,21 +14,18 @@ use Mojo::Base 'Mojolicious::Controller'; use Locale::gettext; use SrvMngr::I18N; use SrvMngr qw(theme_list init_session); +use esmith::AccountsDB::UTF8; +use esmith::ConfigDB::UTF8; -#use Data::Dumper; -#use esmith::FormMagick::Panel::groups; -use esmith::AccountsDB; -#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; $c->app->log->info($c->log_req); my %grp_datas = (); my $title = $c->l('grp_FORM_TITLE'); - $cdb = esmith::ConfigDB->open || die "Couldn't open configuration db"; - $adb = esmith::AccountsDB->open || die "Couldn't open accounts db"; + $cdb = esmith::ConfigDB::UTF8->open || die "Couldn't open configuration db"; + $adb = esmith::AccountsDB::UTF8->open || die "Couldn't open accounts db"; $grp_datas{trt} = 'LST'; my @groups; @@ -47,8 +44,8 @@ sub do_display { my $group = $c->param('group'); my %grp_datas = (); my $title = $c->l('grp_FORM_TITLE'); - $cdb = esmith::ConfigDB->open || die "Couldn't open configuration db"; - $adb = esmith::AccountsDB->open || die "Couldn't open accounts db"; + $cdb = esmith::ConfigDB::UTF8->open || die "Couldn't open configuration db"; + $adb = esmith::AccountsDB::UTF8->open || die "Couldn't open accounts db"; $grp_datas{'trt'} = $trt; if ($trt eq 'ADD') { @@ -104,8 +101,8 @@ sub do_update { my $title = $c->l('grp_FORM_TITLE'); my ($res, $result) = ''; my %grp_datas = (); - $cdb = esmith::ConfigDB->open || die "Couldn't open configuration db"; - $adb = esmith::AccountsDB->open || die "Couldn't open accounts db"; + $cdb = esmith::ConfigDB::UTF8->open || die "Couldn't open configuration db"; + $adb = esmith::AccountsDB::UTF8->open || die "Couldn't open accounts db"; $grp_datas{'trt'} = $trt; $grp_datas{'group'} = $groupName; my @members = (); diff --git a/root/usr/share/smanager/lib/SrvMngr/Controller/Hostentries.pm b/root/usr/share/smanager/lib/SrvMngr/Controller/Hostentries.pm index a146e4a..d2fbb97 100644 --- a/root/usr/share/smanager/lib/SrvMngr/Controller/Hostentries.pm +++ b/root/usr/share/smanager/lib/SrvMngr/Controller/Hostentries.pm @@ -14,22 +14,14 @@ use Mojo::Base 'Mojolicious::Controller'; use Locale::gettext; use SrvMngr::I18N; use SrvMngr qw(theme_list init_session); - -#use Data::Dumper; -#use esmith::FormMagick::Panel::hostentries; -use esmith::DomainsDB; -use esmith::AccountsDB; -use esmith::HostsDB; -use esmith::NetworksDB; use HTML::Entities; use Net::IPv4Addr qw(ipv4_in_network); +use esmith::DomainsDB::UTF8; +use esmith::ConfigDB::UTF8 +use esmith::HostsDB::UTF8; +use esmith::NetworksDB::UTF8; -#use URI::Escape; -#our $ddb = esmith::DomainsDB->open || die "Couldn't open hostentries db"; -#our $cdb = esmith::ConfigDB->open || die "Couldn't open configuration db"; -#our $hdb = esmith::HostsDB->open || die "Couldn't open hosts db"; -#our $ndb = esmith::NetworksDB->open || die "Couldn't open networks db"; -my ($ddb,$cdb,$hdb,$ndb); +our ($ddb,$cdb,$hdb,$ndb); sub main { my $c = shift; @@ -37,10 +29,9 @@ sub main { my %hos_datas = (); my $title = $c->l('hos_FORM_TITLE'); my $notif = ''; - #my $ddb = esmith::DomainsDB->open || die "Couldn't open hostentries db"; - $cdb = esmith::ConfigDB->open || die "Couldn't open configuration db"; - $hdb = esmith::HostsDB->open || die "Couldn't open hosts db"; - $ndb = esmith::NetworksDB->open || die "Couldn't open networks db"; + $cdb = esmith::ConfigDB::UTF8->open || die "Couldn't open configuration db"; + $hdb = esmith::HostsDB::UTF8->open || die "Couldn't open hosts db"; + $ndb = esmith::NetworksDB::UTF8->open || die "Couldn't open networks db"; $hos_datas{trt} = 'LIST'; my %dom_hosts = (); @@ -73,9 +64,9 @@ sub do_display { $trt = 'LST' if ($trt ne 'DEL' && $trt ne 'UPD' && $trt ne 'ADD'); my %hos_datas = (); my $title = $c->l('hos_FORM_TITLE'); - $cdb = esmith::ConfigDB->open || die "Couldn't open configuration db"; - $hdb = esmith::HostsDB->open || die "Couldn't open hosts db"; - $ndb = esmith::NetworksDB->open || die "Couldn't open networks db"; + $cdb = esmith::ConfigDB::UTF8->open || die "Couldn't open configuration db"; + $hdb = esmith::HostsDB::UTF8->open || die "Couldn't open hosts db"; + $ndb = esmith::NetworksDB::UTF8->open || die "Couldn't open networks db"; my $notif = ''; $hos_datas{'trt'} = $trt; @@ -120,9 +111,9 @@ sub do_update { my $trt = ($c->param('trt') || 'LIST'); my %hos_datas = (); my $title = $c->l('hos_FORM_TITLE'); - $cdb = esmith::ConfigDB->open || die "Couldn't open configuration db"; - $hdb = esmith::HostsDB->open || die "Couldn't open hosts db"; - $ndb = esmith::NetworksDB->open || die "Couldn't open networks db"; + $cdb = esmith::ConfigDB::UTF8->open || die "Couldn't open configuration db"; + $hdb = esmith::HostsDB::UTF8->open || die "Couldn't open hosts db"; + $ndb = esmith::NetworksDB::UTF8->open || die "Couldn't open networks db"; my $notif = ''; my $result = ''; $hos_datas{'name'} = lc $c->param('Name'); @@ -379,7 +370,7 @@ sub delete_hostentry { } ## end sub delete_hostentry sub domains_list { - my $d = esmith::DomainsDB->open_ro() or die "Couldn't open DomainsDB"; + $ddb = esmith::DomainsDB::UTF8->open_ro() or die "Couldn't open DomainsDB"; my @domains; for ($d->domains) { @@ -516,7 +507,7 @@ sub must_be_local { my $localip = shift; # Make sure that the IP is indeed local. - #my $ndb = esmith::NetworksDB->open_ro; + #$ndb = esmith::NetworksDB::UTF8->open_ro; my @local_list = $ndb->local_access_spec; foreach my $spec (@local_list) { diff --git a/root/usr/share/smanager/lib/SrvMngr/Controller/Localnetworks.pm b/root/usr/share/smanager/lib/SrvMngr/Controller/Localnetworks.pm index 76e9dec..1bb82ae 100644 --- a/root/usr/share/smanager/lib/SrvMngr/Controller/Localnetworks.pm +++ b/root/usr/share/smanager/lib/SrvMngr/Controller/Localnetworks.pm @@ -13,13 +13,12 @@ use Mojo::Base 'Mojolicious::Controller'; use Locale::gettext; use SrvMngr::I18N; use SrvMngr qw(theme_list init_session subnet_mask get_reg_mask ip_number); - -#use Data::Dumper; use esmith::util; -use esmith::HostsDB; -#my $network_db = esmith::NetworksDB->open() || die("Couldn't open networks db"); +use esmith::HostsDB::UTF8; +use esmith::NetworksDB::UTF8; +use esmith::ConfigDB::UTF8; my $ret = "OK"; -my ($network_db); +our ($network_db,$config_db); sub main { my $c = shift; @@ -27,7 +26,7 @@ sub main { my %ln_datas = (); $ln_datas{return} = ""; my $title = $c->l('ln_LOCAL NETWORKS'); - $network_db = esmith::NetworksDB->open() || die("Couldn't open networks db"); + $network_db = esmith::NetworksDB::UTF8->open() || die("Couldn't open networks db"); my $modul = ''; $ln_datas{trt} = 'LIST'; my @localnetworks; @@ -49,7 +48,7 @@ sub do_display { $c->app->log->info($c->log_req); my $rt = $c->current_route; my $trt = ($c->param('trt') || 'LIST'); - $network_db = esmith::NetworksDB->open() || die("Couldn't open networks db"); + $network_db = esmith::NetworksDB::UTF8->open() || die("Couldn't open networks db"); $trt = 'DEL' if ($rt eq 'localnetworksdel'); $trt = 'ADD' if ($rt eq 'localnetworksadd'); $trt = 'ADD1' if ($rt eq 'localnetworksadd1'); @@ -77,14 +76,14 @@ sub do_display { #Error - return to Add page $trt = "ADD"; } - $network_db = esmith::NetworksDB->open() || die("Failed to open Networkdb-3"); #Refresh the network DB + #$network_db = esmith::NetworksDB::UTF8->open() || die("Failed to open Networkdb-3"); #Refresh the network DB $c->stash(ret => \%ret); #stash it away for the template } ## end if ($trt eq 'ADD1') if ($trt eq 'DEL1') { #After Remove clicked on Delete network panel - $network_db = esmith::NetworksDB->open() || die("Failed to open Networkdb-1"); + #$network_db = esmith::NetworksDB::UTF8->open() || die("Failed to open Networkdb-1"); my $localnetwork = $c->param("localnetwork"); my $delete_hosts = $c->param("deletehost") || "1"; #default to deleting them. my $rec = $network_db->get($localnetwork) || die("Failed to find network on db:$localnetwork"); @@ -93,7 +92,7 @@ sub do_display { $ln_datas{localnetwork} = $localnetwork; } my %ret = remove_network($localnetwork, $delete_hosts); - $network_db = esmith::NetworksDB->open() || die("Failed to open Networkdb-2"); #Refresh the network DB + #$network_db = esmith::NetworksDB::UTF8->open() || die("Failed to open Networkdb-2"); #Refresh the network DB my @localnetworks; if ($network_db) { @@ -138,7 +137,7 @@ sub do_display { sub remove_network { my $network = shift; - $network_db = esmith::NetworksDB->open(); + $network_db = esmith::NetworksDB::UTF8->open(); my $record = $network_db->get($network); my $delete_hosts = shift; @@ -174,7 +173,7 @@ sub hosts_on_network { my $netmask = shift; die if not $network and $netmask; my $cidr = "$network/$netmask"; - my $hosts = esmith::HostsDB->open() || die("Couldn't open hosts db"); + my $hosts = esmith::HostsDB::UTF8->open() || die("Couldn't open hosts db"); my @localhosts = grep { $_->prop('HostType') eq 'Local' } $hosts->hosts; my @hosts_on_network = (); @@ -207,9 +206,9 @@ sub add_network { # we transform bit mask to regular mask $networkMask = get_reg_mask($networkAddress, $networkMask); - my $network_db = esmith::NetworksDB->open() - || esmith::NetworksDB->create(); - my $config_db = esmith::ConfigDB->open(); + my $network_db = esmith::NetworksDB::UTF8->open() + || esmith::NetworksDB::UTF8->create(); + my $config_db = esmith::ConfigDB::UTF8->open(); my $localIP = $config_db->get('LocalIP'); my $localNetmask = $config_db->get('LocalNetmask'); my ($localNetwork, $localBroadcast) diff --git a/root/usr/share/smanager/lib/SrvMngr/Controller/Login.pm b/root/usr/share/smanager/lib/SrvMngr/Controller/Login.pm index 259a4ba..22a1352 100644 --- a/root/usr/share/smanager/lib/SrvMngr/Controller/Login.pm +++ b/root/usr/share/smanager/lib/SrvMngr/Controller/Login.pm @@ -18,7 +18,7 @@ use strict; use warnings; use Mojo::Base 'Mojolicious::Controller'; use Locale::gettext; -use esmith::AccountsDB; +use esmith::AccountsDB::UTF8; use SrvMngr::I18N; use SrvMngr::Model::Main; use SrvMngr qw( theme_list init_session ); @@ -26,7 +26,7 @@ my $MAX_LOGIN_ATTEMPTS = 3; my $DURATION_BLOCKED = 30 * 60; # access blocked for 30 min my $TIMEOUT_FAILED_LOGIN = 1; my $RESET_DURATION = 2 * 60 * 60; # 2 hours for resetting -our $adb = esmith::AccountsDB->open() or die "Couldn't open DB Accounts\n"; +our $adb; my $allowed_user_re = qr/^\w{5,10}$/; my %Login_Attempts; @@ -39,6 +39,7 @@ sub main { sub login { my $c = shift; my $trt = $c->param('Trt'); + $adb = esmith::AccountsDB::UTF8->open() or die "Couldn't open DB Accounts\n"; # password reset request if ($trt eq 'RESET') { @@ -85,13 +86,13 @@ sub login { $c->session(logged_in => 1); # set the logged_in flag $c->session(username => $name); # keep a copy of the username - # if ( $name eq 'admin' || $adb->is_user_in_group($name, 'AdmiN') ) # for futur use + # if ( $name eq 'admin' || $adb->is_user_in_group($name, 'Admin') ) # for futur use if ($name eq 'admin') { $c->session(is_admin => 1); } else { $c->session(is_admin => 0); } - $c->session(expiration => 600); # expire this session in 10 minutes + $c->session(expiration => $c->config->{timeout} ); # expire this session in the time set in config $c->flash(success => $c->l('use_WELCOME')); record_login_attempt($c, 'SUCCESS'); } else { @@ -114,6 +115,7 @@ sub mail_rescue { my $c = shift; my $name = $c->param('Username'); my $from = $c->param('From'); + $adb = esmith::AccountsDB::UTF8->open() or die "Couldn't open DB Accounts\n"; my $res; $res .= $c->l('use_TOO_MANY_LOGIN') if (is_denied($c)); diff --git a/root/usr/share/smanager/lib/SrvMngr/Controller/Portforwarding.pm b/root/usr/share/smanager/lib/SrvMngr/Controller/Portforwarding.pm index 806b9d0..3214864 100644 --- a/root/usr/share/smanager/lib/SrvMngr/Controller/Portforwarding.pm +++ b/root/usr/share/smanager/lib/SrvMngr/Controller/Portforwarding.pm @@ -13,11 +13,8 @@ use Mojo::Base 'Mojolicious::Controller'; use Locale::gettext; use SrvMngr::I18N; use SrvMngr qw(theme_list init_session); - #use Regexp::Common qw /net/; -#use Data::Dumper; use esmith::util; -#use esmith::HostsDB; use esmith::ConfigDB::UTF8; my ($cdb,$tcp_db,$udp_db); diff --git a/root/usr/share/smanager/lib/SrvMngr/Controller/Printers.pm b/root/usr/share/smanager/lib/SrvMngr/Controller/Printers.pm index cac20b4..1e65a0d 100644 --- a/root/usr/share/smanager/lib/SrvMngr/Controller/Printers.pm +++ b/root/usr/share/smanager/lib/SrvMngr/Controller/Printers.pm @@ -14,15 +14,15 @@ use Mojo::Base 'Mojolicious::Controller'; use Locale::gettext; use SrvMngr::I18N; use SrvMngr qw(theme_list init_session); -#our $adb = esmith::AccountsDB->open || die "Couldn't open accounts db"; -my $adb; +use esmith::AccountsDB::UTF8; +our $adb; sub main { my $c = shift; $c->app->log->info($c->log_req); my %prt_datas = (); my $title = $c->l('prt_FORM_TITLE'); - $adb = esmith::AccountsDB->open || die "Couldn't open accounts db"; + $adb = esmith::AccountsDB::UTF8->open || die "Couldn't open accounts db"; $prt_datas{'trt'} = 'LIST'; my @printerDrivers; @@ -38,7 +38,7 @@ sub do_display { my $rt = $c->current_route; my $trt = ($c->param('trt') || 'LIST'); my $printer = $c->param('printer') || ''; - $adb = esmith::AccountsDB->open || die "Couldn't open accounts db"; + $adb = esmith::AccountsDB::UTF8->open || die "Couldn't open accounts db"; #$trt = 'DEL' if ( $printer ); #$trt = 'ADD' if ( $rt eq 'printeradd' ); @@ -79,7 +79,7 @@ sub do_update { my $trt = ($c->param('trt') || 'LIST'); my %prt_datas = (); my $title = $c->l('prt_FORM_TITLE'); - $adb = esmith::AccountsDB->open || die "Couldn't open accounts db"; + $adb = esmith::AccountsDB::UTF8->open || die "Couldn't open accounts db"; $prt_datas{'trt'} = $trt; my ($res, $result) = ''; diff --git a/root/usr/share/smanager/lib/SrvMngr/Controller/Proxy.pm b/root/usr/share/smanager/lib/SrvMngr/Controller/Proxy.pm index 9fde905..2f6829e 100644 --- a/root/usr/share/smanager/lib/SrvMngr/Controller/Proxy.pm +++ b/root/usr/share/smanager/lib/SrvMngr/Controller/Proxy.pm @@ -14,11 +14,14 @@ 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 %prx_datas = (); my $title = $c->l('prx_TITLE'); my $modul = $c->render_to_string(inline => $c->l('prx_FIRST_PAGE_DESCRIPTION')); diff --git a/root/usr/share/smanager/lib/SrvMngr/Controller/Quota.pm b/root/usr/share/smanager/lib/SrvMngr/Controller/Quota.pm index 4656e1f..5404730 100644 --- a/root/usr/share/smanager/lib/SrvMngr/Controller/Quota.pm +++ b/root/usr/share/smanager/lib/SrvMngr/Controller/Quota.pm @@ -16,8 +16,8 @@ use Scalar::Util qw(looks_like_number); use Locale::gettext; use SrvMngr::I18N; use SrvMngr qw(theme_list init_session); +use esmith::AccountsDB::UTF8; -#our $adb = esmith::AccountsDB->open || die "Couldn't open accounts db"; my $adb; sub main { @@ -25,7 +25,7 @@ sub main { $c->app->log->info($c->log_req); my %quo_datas = (); my $title = $c->l('quo_FORM_TITLE'); - $adb = esmith::AccountsDB->open || die "Couldn't open accounts db"; + $adb = esmith::AccountsDB::UTF8->open || die "Couldn't open accounts db"; $quo_datas{'trt'} = 'LIST'; my @userAccounts; @@ -44,7 +44,7 @@ sub do_display { $trt = 'UPD' if ($user); my %quo_datas = (); my $title = $c->l('quo_FORM_TITLE'); - $adb = esmith::AccountsDB->open || die "Couldn't open accounts db"; + $adb = esmith::AccountsDB::UTF8->open || die "Couldn't open accounts db"; $quo_datas{'trt'} = $trt; if ($trt eq 'UPD') { @@ -73,7 +73,7 @@ sub do_update { $quo_datas{trt} = $trt; my $result = ''; my $res; - $adb = esmith::AccountsDB->open || die "Couldn't open accounts db"; + $adb = esmith::AccountsDB::UTF8->open || die "Couldn't open accounts db"; if ($trt eq 'UPD') { $quo_datas{user} = ($c->param('user') || ''); diff --git a/root/usr/share/smanager/lib/SrvMngr/Controller/Remoteaccess.pm b/root/usr/share/smanager/lib/SrvMngr/Controller/Remoteaccess.pm index 0f6090d..8e5c7a5 100644 --- a/root/usr/share/smanager/lib/SrvMngr/Controller/Remoteaccess.pm +++ b/root/usr/share/smanager/lib/SrvMngr/Controller/Remoteaccess.pm @@ -14,7 +14,7 @@ use Mojo::Base 'Mojolicious::Controller'; use Locale::gettext; use SrvMngr::I18N; use SrvMngr qw(theme_list init_session ip_number subnet_mask get_reg_mask); -use esmith::ConfigDB; +use esmith::ConfigDB::UTF8; use esmith::util; use File::Basename; use Exporter; @@ -30,7 +30,7 @@ our @EXPORT = qw( networkAccess_list passwordLogin_list get_ssh_permit_root_logi ); # get_pptp_sessions -my $db; # = esmith::ConfigDB->open || warn "Couldn't open configuration database"; +our $db; sub main { my $c = shift; @@ -38,7 +38,7 @@ sub main { my $title = $c->l('rma_FORM_TITLE'); my $notif = ''; my %rma_datas = (); - $db = esmith::ConfigDB->open || warn "Couldn't open configuration database"; + $db = esmith::ConfigDB::UTF8->open || warn "Couldn't open configuration database"; #$rma_datas{ipsecrwSess} = $c->get_ipsecrw_sessions(); #$rma_datas{pptpSessions} = $c->get_pptp_sessions(); @@ -60,7 +60,7 @@ sub do_action { my $title = $c->l('rma_FORM_TITLE'); my ($result, $res, $trt) = ''; my %rma_datas = (); - $db = esmith::ConfigDB->open || warn "Couldn't open configuration database"; + $db = esmith::ConfigDB::UTF8->open || warn "Couldn't open configuration database"; $rma_datas{ipsecrwSess} = ($c->param('IpsecrwSess') || ''); $rma_datas{ipsecrwReset} = ($c->param('IpsecrwReset') || ''); @@ -144,7 +144,7 @@ sub passwordLogin_list { } sub get_prop { - $db = esmith::ConfigDB->open || warn "Couldn't open configuration database"; + $db = esmith::ConfigDB::UTF8->open || warn "Couldn't open configuration database"; my ($c, $item, $prop) = @_; warn "You must specify a record key" unless $item; warn "You must specify a property name" unless $prop; @@ -155,8 +155,7 @@ sub get_prop { sub get_value { my $c = shift; my $item = shift; - $db = esmith::ConfigDB->open || warn "Couldn't open configuration database"; - $db = esmith::ConfigDB->open || warn "Couldn't open configuration database"; + $db = esmith::ConfigDB::UTF8->open || warn "Couldn't open configuration database"; return ($db->get($item)->value()); } ## end sub get_value @@ -205,7 +204,7 @@ sub get_ftp_password_login_access { } ## end sub get_ftp_password_login_access sub get_telnet_mode { - $db = esmith::ConfigDB->open || warn "Couldn't open configuration database"; + $db = esmith::ConfigDB::UTF8->open || warn "Couldn't open configuration database"; my $telnet = $db->get('telnet'); return ('off') unless $telnet; my $status = $telnet->prop('status') || 'disabled'; @@ -215,7 +214,7 @@ sub get_telnet_mode { } ## end sub get_telnet_mode sub get_ipsecrw_sessions { - $db = esmith::ConfigDB->open || warn "Couldn't open configuration database"; + $db = esmith::ConfigDB::UTF8->open || warn "Couldn't open configuration database"; my $status = $db->get('ipsec')->prop('RoadWarriorStatus'); if (defined($status) && ($status eq 'enabled')) { return ($db->get('ipsec')->prop('RoadWarriorSessions') || '0'); @@ -225,7 +224,7 @@ sub get_ipsecrw_sessions { } ## end sub get_ipsecrw_sessions sub get_ipsecrw_status { - $db = esmith::ConfigDB->open || warn "Couldn't open configuration database"; + $db = esmith::ConfigDB::UTF8->open || warn "Couldn't open configuration database"; return undef unless ($db->get('ipsec')); return $db->get('ipsec')->prop('RoadWarriorStatus'); } @@ -233,7 +232,7 @@ sub get_ipsecrw_status { sub pptp_and_dhcp_range { my $c = shift; my $val = shift || 0; - $db = esmith::ConfigDB->open || warn "Couldn't open configuration database"; + $db = esmith::ConfigDB::UTF8->open || warn "Couldn't open configuration database"; my $dhcp_status = $db->get_prop('dhcpd', 'status') || 'disabled'; my $dhcp_end = $db->get_prop('dhcpd', 'end') || ''; my $dhcp_start = $db->get_prop('dhcpd', 'start') || ''; @@ -251,7 +250,7 @@ sub pptp_and_dhcp_range { sub _get_valid_from { my $c = shift; - $db = esmith::ConfigDB->open || warn "Couldn't open configuration database"; + $db = esmith::ConfigDB::UTF8->open || warn "Couldn't open configuration database"; my $rec = $db->get('httpd-admin'); return undef unless ($rec); my @vals = (split ',', ($rec->prop('ValidFrom') || '')); @@ -294,11 +293,11 @@ sub validate_network_and_mask { sub change_settings { my ($c, %rma_datas) = @_; - $db = esmith::ConfigDB->open || warn "Couldn't open configuration database"; + $db = esmith::ConfigDB::UTF8->open || warn "Couldn't open configuration database"; #------------------------------------------------------------ # good; go ahead and change the access. #------------------------------------------------------------ - $db = esmith::ConfigDB->open || warn "Couldn't open configuration database"; + $db = esmith::ConfigDB::UTF8->open || warn "Couldn't open configuration database"; my $rec = $db->get('telnet'); if ($rec) { if ($rma_datas{telnetAccess} eq "off") { @@ -370,7 +369,7 @@ sub change_settings { sub set_ipsecrw_sessions { my $c = shift; my $sessions = shift; - $db = esmith::ConfigDB->open || warn "Couldn't open configuration database"; + $db = esmith::ConfigDB::UTF8->open || warn "Couldn't open configuration database"; if (defined $sessions) { $db->get('ipsec')->set_prop('RoadWarriorSessions', $sessions); @@ -385,7 +384,7 @@ sub add_new_valid_from { my $c = shift; my $net = shift; my $mask = shift; - $db = esmith::ConfigDB->open || warn "Couldn't open configuration database"; + $db = esmith::ConfigDB::UTF8->open || warn "Couldn't open configuration database"; # we transform bit mask to regular mask $mask = get_reg_mask($net, $mask); @@ -408,7 +407,7 @@ sub remove_valid_from { my $c = shift; my $remove_nets = shift; my @remove = split /,/, $remove_nets; - $db = esmith::ConfigDB->open || warn "Couldn't open configuration database"; + $db = esmith::ConfigDB::UTF8->open || warn "Couldn't open configuration database"; # my @remove = $c->param('Remove_nets'); my @vals = $c->_get_valid_from(); @@ -439,4 +438,4 @@ sub remove_valid_from { $db->get('httpd-admin')->set_prop('ValidFrom', $prop); return 1; } ## end sub remove_valid_from -1; \ No newline at end of file +1; diff --git a/root/usr/share/smanager/lib/SrvMngr/Controller/Review.pm b/root/usr/share/smanager/lib/SrvMngr/Controller/Review.pm index 3946612..1d8eb66 100644 --- a/root/usr/share/smanager/lib/SrvMngr/Controller/Review.pm +++ b/root/usr/share/smanager/lib/SrvMngr/Controller/Review.pm @@ -13,17 +13,20 @@ use Locale::gettext; use SrvMngr::I18N; use SrvMngr qw(theme_list init_session); use SrvMngr qw(gen_locale_date_string); - +use esmith::ConfigDB::UTF8; +use esmith::DomainsDB::UTF8; +use esmith::NetworksDB::UTF8; #use SrvMngr::Review_sub qw(print_page); #use smeserver::Panel::review; -our $db = esmith::ConfigDB->open_ro || die "Couldn't open config db"; -our $domains = esmith::DomainsDB->open_ro || die "Couldn't open domains"; -our $networks = esmith::NetworksDB->open_ro || die "Couldn't open networks"; +our $db; +our $domains ; +our $networks; sub main { my $c = shift; $c->app->log->info($c->log_req); + $db = esmith::ConfigDB::UTF8->open_ro || die "Couldn't open config db"; my $title = $c->l('rvw_FORM_TITLE'); my $modul = $c->render_to_string(inline => $c->l('rvw_DESCRIPTION')); my %rvw_datas = (); @@ -97,6 +100,7 @@ sub gen2_email_addresses { sub gen2_domains { my $c = shift; + $domains = esmith::DomainsDB::UTF8->open_ro || die "Couldn't open domains"; my @virtual = $domains->get_all_by_prop(type => 'domain'); my $numvirtual = @virtual; @@ -125,6 +129,7 @@ serving. (mojo ver) sub get2_local_networks { my $c = shift; + $networks = esmith::NetworksDB::UTF8->open_ro || die "Couldn't open networks"; my @nets = $networks->get_all_by_prop('type' => 'network'); my $numNetworks = @nets; @@ -151,7 +156,7 @@ sub get_net_prop { my $fm = shift; my $item = shift; my $prop = shift; - + $networks = esmith::NetworksDB::UTF8->open_ro || die "Couldn't open networks"; my $record = $networks->get($item); if ($record) { return $record->prop($prop); @@ -165,7 +170,7 @@ sub get_net_prop { sub get_local_networks { my $fm = shift; - + $networks = esmith::NetworksDB::UTF8->open_ro || die "Couldn't open networks"; my @nets = $networks->get_all_by_prop('type' => 'network'); my $numNetworks = @nets; @@ -265,6 +270,7 @@ sub print2_dhcp_stanza { sub get_value { my $fm = shift; my $item = shift; + $db = esmith::ConfigDB::UTF8->open_ro || die "Couldn't open config db"; my $record = $db->get($item); if ($record) { return $record->value(); @@ -281,7 +287,7 @@ sub get_prop { #otherwise, we don't want to grab it my $item = shift; my $prop = shift; - + $db = esmith::ConfigDB::UTF8->open_ro || die "Couldn't open config db"; my $record = $db->get($item); if ($record) { return $record->prop($prop); @@ -295,6 +301,7 @@ sub get_prop { sub get_public_ip_address { my $self = shift; + $db = esmith::ConfigDB::UTF8->open_ro || die "Couldn't open config db"; my $sysconfig = $db->get('sysconfig'); if ($sysconfig) { @@ -308,4 +315,4 @@ sub get_public_ip_address } -1; \ No newline at end of file +1; diff --git a/root/usr/share/smanager/lib/SrvMngr/Controller/Useraccounts.pm b/root/usr/share/smanager/lib/SrvMngr/Controller/Useraccounts.pm index a21aaed..df8516b 100644 --- a/root/usr/share/smanager/lib/SrvMngr/Controller/Useraccounts.pm +++ b/root/usr/share/smanager/lib/SrvMngr/Controller/Useraccounts.pm @@ -355,10 +355,10 @@ sub lock_account { $user = $1; if (system("/sbin/e-smith/signal-event", "user-lock", $user)) { - $adb = esmith::AccountsDB->open(); + $adb = esmith::AccountsDB::UTF8->open(); return $c->l("usr_ERR_OCCURRED_LOCKING"); } - $adb = esmith::AccountsDB->open(); + $adb = esmith::AccountsDB::UTF8->open(); return 'OK'; } else { return $c->l('NO_SUCH_USER', $user); @@ -379,10 +379,10 @@ sub remove_account { $user = $1; if (system("/sbin/e-smith/signal-event", "user-delete", $user)) { - $adb = esmith::AccountsDB->open(); + $adb = esmith::AccountsDB::UTF8->open(); return $c->l("ERR_OCCURRED_DELETING"); } - $adb = esmith::AccountsDB->open(); + $adb = esmith::AccountsDB::UTF8->open(); $adb->get($user)->delete; return 'OK'; } else { @@ -398,7 +398,7 @@ sub reset_password { return $c->l('usr_TAINTED_USER'); } $user = $1; - my $adb = esmith::AccountsDB->open || die "Couldn't open accounts db"; + my $adb = esmith::AccountsDB::UTF8->open || die "Couldn't open accounts db"; my $acct = $adb->get($user); if ($acct->prop('type') eq "user") { @@ -407,10 +407,10 @@ sub reset_password { undef $adb; if (system("/sbin/e-smith/signal-event", "password-modify", $user)) { - $adb = esmith::AccountsDB->open(); + $adb = esmith::AccountsDB::UTF8->open(); return $c->l("usr_ERR_OCCURRED_MODIFYING_PASSWORD"); } - $adb = esmith::AccountsDB->open(); + $adb = esmith::AccountsDB::UTF8->open(); return 'OK'; } else { return $c->l('NO_SUCH_USER', $user); @@ -663,10 +663,10 @@ sub modify_user { undef $adb; unless (system("/sbin/e-smith/signal-event", "user-modify", $acctName) == 0) { - $adb = esmith::AccountsDB->open(); + $adb = esmith::AccountsDB::UTF8->open(); return $c->l('usr_CANNOT_MODIFY_USER'); } - $adb = esmith::AccountsDB->open(); + $adb = esmith::AccountsDB::UTF8->open(); } ## end if ($acctType eq "user") return 'OK'; } ## end sub modify_user @@ -699,10 +699,10 @@ sub create_user { $acctName = $1; if (system("/sbin/e-smith/signal-event", "user-create", $acctName)) { - $adb = esmith::AccountsDB->open(); + $adb = esmith::AccountsDB::UTF8->open(); return $c->l("usr_ERR_OCCURRED_CREATING"); } - $adb = esmith::AccountsDB->open(); + $adb = esmith::AccountsDB::UTF8->open(); $c->set_groups(); return 'OK'; } ## end sub create_user @@ -727,7 +727,7 @@ sub modify_admin { $acct->merge_props(%newProperties); undef $adb; my $status = system("/sbin/e-smith/signal-event", "user-modify-admin", 'admin'); - $adb = esmith::AccountsDB->open(); + $adb = esmith::AccountsDB::UTF8->open(); if ($status == 0) { return 'OK'; diff --git a/root/usr/share/smanager/lib/SrvMngr/Controller/Userpassword.pm b/root/usr/share/smanager/lib/SrvMngr/Controller/Userpassword.pm index cace61a..6e347a3 100644 --- a/root/usr/share/smanager/lib/SrvMngr/Controller/Userpassword.pm +++ b/root/usr/share/smanager/lib/SrvMngr/Controller/Userpassword.pm @@ -12,12 +12,11 @@ use strict; use warnings; use Mojo::Base 'Mojolicious::Controller'; use esmith::util; -use esmith::ConfigDB; -use esmith::AccountsDB; +use esmith::ConfigDB::UTF8; +use esmith::AccountsDB::UTF8; use Locale::gettext; use SrvMngr::I18N; use SrvMngr qw( theme_list init_session validate_password ); -#our $cdb = esmith::ConfigDB->open_ro || die "Couldn't open configuration db"; sub main { my $c = shift; @@ -161,7 +160,7 @@ sub reset_password { my $ret; return $c->l('usr_TAINTED_USER') unless (($user) = ($user =~ /^(\w[\-\w_\.]*)$/)); $user = $1; - my $adb = esmith::AccountsDB->open(); + my $adb = esmith::AccountsDB::UTF8->open(); my $acct = $adb->get($user); return $c->l('NO_SUCH_USER', $user) unless ($acct->prop('type') eq 'user'); $ret = esmith::util::setUserPasswordRequirePrevious($user, $oldpassword, $password) if $trt ne 'RESET'; @@ -171,10 +170,10 @@ sub reset_password { undef $adb; if (system("/sbin/e-smith/signal-event", "password-modify", $user)) { - $adb = esmith::AccountsDB->open(); + $adb = esmith::AccountsDB::UTF8->open(); return $c->l("usr_ERR_OCCURRED_MODIFYING_PASSWORD"); } - $adb = esmith::AccountsDB->open(); + $adb = esmith::AccountsDB::UTF8->open(); return 'OK'; } ## end sub reset_password @@ -194,7 +193,7 @@ sub check_password { my $c = shift; my $password = shift; my $strength; - my $cdb = esmith::ConfigDB->open_ro || die "Couldn't open configuration db"; + my $cdb = esmith::ConfigDB::UTF8->open_ro || die "Couldn't open configuration db"; my $rec = $cdb->get('passwordstrength'); $strength = ($rec ? ($rec->prop('Users') || 'none') : 'none'); return validate_password($c, $strength, $password); diff --git a/root/usr/share/smanager/lib/SrvMngr/Controller/Viewlogfiles.pm b/root/usr/share/smanager/lib/SrvMngr/Controller/Viewlogfiles.pm index 63e0bad..06edd59 100644 --- a/root/usr/share/smanager/lib/SrvMngr/Controller/Viewlogfiles.pm +++ b/root/usr/share/smanager/lib/SrvMngr/Controller/Viewlogfiles.pm @@ -15,14 +15,15 @@ use Mojo::Base 'Mojolicious::Controller'; use Locale::gettext; use SrvMngr::I18N; use SrvMngr qw(theme_list init_session); -use esmith::ConfigDB; use File::Basename; use HTML::Entities; use SrvMngr qw(gen_locale_date_string); use File::Temp qw(tempfile); use constant TRUE => 1; use constant FALSE => 0; -our $cdb = esmith::ConfigDB->open() || die "Couldn't open config db"; +use esmith::ConfigDB::UTF8; + +our $cdb; our @logfiles = (); # with array sub main { @@ -31,6 +32,7 @@ sub main { my %log_datas = (); my $title = $c->l('log_FORM_TITLE'); my $notif = ''; + $cdb = esmith::ConfigDB::UTF8->open() || die "Couldn't open config db"; 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); @@ -231,6 +233,7 @@ sub showlogFile { sub download_logFile { my ($c, %log_datas) = @_; my $fullpath = "/var/log/$log_datas{filename}"; + $cdb = esmith::ConfigDB::UTF8->open() || die "Couldn't open config db"; # Save this information for later. $cdb->get('viewlogfiles')->merge_props('DefaultOperation', $log_datas{operation}); diff --git a/root/usr/share/smanager/lib/SrvMngr/Controller/Yum.pm b/root/usr/share/smanager/lib/SrvMngr/Controller/Yum.pm index e2f22e2..404f03e 100644 --- a/root/usr/share/smanager/lib/SrvMngr/Controller/Yum.pm +++ b/root/usr/share/smanager/lib/SrvMngr/Controller/Yum.pm @@ -14,29 +14,29 @@ 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::ConfigDB::UTF8; use esmith::util; use File::Basename; -our $cdb = esmith::ConfigDB->open || die "Couldn't open config db"; +our $cdb; my $dnf_status_file = '/var/cache/dnf/dnf.status'; #use File::stat; our %dbs; for (qw(available installed updates)) { - $dbs{$_} = esmith::ConfigDB->open_ro("dnf_$_") + $dbs{$_} = esmith::ConfigDB::UTF8->open_ro("dnf_$_") or die "Couldn't open dnf_$_ DB\n"; } for (qw(repositories)) { - $dbs{$_} = esmith::ConfigDB->open("yum_$_") + $dbs{$_} = esmith::ConfigDB::UTF8->open("yum_$_") or die "Couldn't open yum_$_ DB\n"; } sub main { my $c = shift; $c->app->log->info($c->log_req); + $cdb = esmith::ConfigDB::UTF8->open || die "Couldn't open config db"; my %yum_datas = (); my $title = $c->l('yum_FORM_TITLE'); my $dest = 'yum'; @@ -62,6 +62,7 @@ sub do_display { my $c = shift; my $rt = $c->current_route; my $trt = ($c->param('trt') || 'STAT'); + $cdb = esmith::ConfigDB::UTF8->open || die "Couldn't open config db"; my %yum_datas = (); my $title = $c->l('yum_FORM_TITLE'); my ($notif, $dest) = ''; diff --git a/root/usr/share/smanager/lib/SrvMngr/Model/Main.pm b/root/usr/share/smanager/lib/SrvMngr/Model/Main.pm index cd8c735..423dfb7 100644 --- a/root/usr/share/smanager/lib/SrvMngr/Model/Main.pm +++ b/root/usr/share/smanager/lib/SrvMngr/Model/Main.pm @@ -4,19 +4,19 @@ use strict; use warnings; use utf8; -use esmith::ConfigDB; -use esmith::AccountsDB; +use esmith::ConfigDB::UTF8; +use esmith::AccountsDB::UTF8; use esmith::util; use Net::LDAP qw/LDAP_INVALID_CREDENTIALS/; - +our ($cdb,$adb); sub init_data { my %datas = (); - my $cdb = esmith::ConfigDB->open_ro() or die("can't open Config DB"); + $cdb = esmith::ConfigDB::UTF8->open_ro() or die("can't open Config DB"); my $sysconfig = $cdb->get("sysconfig"); $datas{'lang'} = $sysconfig->prop('Language') || 'en_US'; @@ -42,7 +42,7 @@ sub init_data { sub reconf_needed { - my $cdb = esmith::ConfigDB->open_ro() or die("can't open Config DB"); + $cdb = esmith::ConfigDB::UTF8->open_ro() or die("can't open Config DB"); #my $unsafe = ($cdb->get('bootstrap-console') and $cdb->get('bootstrap-console')->prop('Run') eq 'yes') || # ($cdb->get('UnsavedChanges') and $cdb->get('UnsavedChanges')->value eq 'yes') || '0'; my $unsafe = ($cdb->get('UnsavedChanges') and $cdb->get('UnsavedChanges')->value eq 'yes') || '0'; @@ -55,7 +55,7 @@ sub check_credentials { my ($c, $username, $password) = @_; return unless $username || $password; - my $cdb = esmith::ConfigDB->open_ro() or die("can't open Configuration DB"); + $cdb = esmith::ConfigDB::UTF8->open_ro() or die("can't open Configuration DB"); my $l = $cdb->get('ldap'); my $status = $l->prop('status') || "disabled"; unless ($status eq "enabled" ) { @@ -88,13 +88,13 @@ sub check_adminalias { my $c = shift; my $alias; - my $cdb = esmith::ConfigDB->open_ro() or die("can't open Configuration DB"); + $cdb = esmith::ConfigDB::UTF8->open_ro() or die("can't open Configuration DB"); if (defined $cdb->get('AdminAlias')) { $alias = $cdb->get('AdminAlias')->value; } return undef unless $alias; - my $adb = esmith::AccountsDB->open_ro() or die("can't open Accounts DB"); + $adb = esmith::AccountsDB::UTF8->open_ro() or die("can't open Accounts DB"); my $arec = $adb->get( $alias ); return undef unless $arec; @@ -105,4 +105,4 @@ sub check_adminalias { } -1; \ No newline at end of file +1; diff --git a/root/usr/share/smanager/lib/SrvMngr_Auth.pm b/root/usr/share/smanager/lib/SrvMngr_Auth.pm index 7f57daf..d24c51a 100644 --- a/root/usr/share/smanager/lib/SrvMngr_Auth.pm +++ b/root/usr/share/smanager/lib/SrvMngr_Auth.pm @@ -5,7 +5,7 @@ package SrvMngr_Auth; use strict; use warnings; use Exporter qw(import); # Import the Exporter module -use esmith::AccountsDB; +use esmith::AccountsDB::UTF8; # 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); @@ -42,7 +42,7 @@ sub load_user_auth_info { # If not admin, get allowed panels if (!$auth_info{is_admin} && $auth_info{username}) { - my $accountsdb = esmith::AccountsDB->open_ro(); + my $accountsdb = esmith::AccountsDB::UTF8->open_ro(); if ($accountsdb) { my $user_rec = $accountsdb->get($auth_info{username}); # Check if the property exists before trying to get its value @@ -97,4 +97,4 @@ sub check_admin_access { return has_panel_access($c, $requested_panel); } -1; # Return true value for module loading \ No newline at end of file +1; # Return true value for module loading diff --git a/root/usr/share/smanager/script/routes.pl b/root/usr/share/smanager/script/routes.pl index b06cec3..764a115 100644 --- a/root/usr/share/smanager/script/routes.pl +++ b/root/usr/share/smanager/script/routes.pl @@ -5,11 +5,11 @@ use strict; use warnings; -use esmith::ConfigDB; +use esmith::ConfigDB::UTF8; use constant WEBFUNCTIONS => '/usr/share/smanager/lib/SrvMngr/Controller/'; -my $rtdb = esmith::ConfigDB->open('routes') or +my $rtdb = esmith::ConfigDB::UTF8->open('routes') or die "Couldn't access Routes database\n"; my @routes = $rtdb->get_all_by_prop( type => 'route' ); diff --git a/root/usr/share/smanager/script/secrets.pl b/root/usr/share/smanager/script/secrets.pl index 5acb40a..82421ba 100644 --- a/root/usr/share/smanager/script/secrets.pl +++ b/root/usr/share/smanager/script/secrets.pl @@ -7,7 +7,7 @@ use strict; use warnings; -use esmith::ConfigDB; +use esmith::ConfigDB::UTF8; sub gen_pwd { use MIME::Base64 qw(encode_base64); @@ -29,7 +29,7 @@ sub gen_pwd { return $p; } -my $cdb = esmith::ConfigDB->open() || die "Couldn't open config db"; +my $cdb = esmith::ConfigDB::UTF8->open() || die "Couldn't open config db"; my $pwds = $cdb->get_prop('smanager','Secrets'); diff --git a/root/usr/share/smanager/script/srvmngr b/root/usr/share/smanager/script/srvmngr index 4453318..14f775a 100644 --- a/root/usr/share/smanager/script/srvmngr +++ b/root/usr/share/smanager/script/srvmngr @@ -14,6 +14,10 @@ BEGIN $ENV{'HOME'} = '/usr/share/smanager'; delete $ENV{'ENV'}; esmith::util::setRealToEffective(); + #to help debug UTF8, see perlrun and perlvar -CSAD or -CLSD + #print '$ENV{PERL_UNICODE}='.$ENV{'PERL_UNICODE'}."\n" if $ENV{'PERL_UNICODE'}; + #print '${^UNICODE}='.${^UNICODE}.' ; ${^UTF8LOCALE}='.${^UTF8LOCALE} ."\n"; + #print '${^OPEN}'.${^OPEN}."\n" if ${^OPEN} ; } diff --git a/root/usr/share/smanager/t/002_basic.t b/root/usr/share/smanager/t/002_basic.t index 6807c1f..43a9795 100644 --- a/root/usr/share/smanager/t/002_basic.t +++ b/root/usr/share/smanager/t/002_basic.t @@ -6,8 +6,8 @@ use Test::Mojo; use FindBin; use lib "$FindBin::Bin/../lib"; -eval "use esmith::ConfigDB"; -plan skip_all => 'esmith::ConfigDB (and others) required for testing 002_basic' if $@; +eval "use esmith::ConfigDB::UTF8"; +plan skip_all => 'esmith::ConfigDB::UTF8 (and others) required for testing 002_basic' if $@; plan tests => 3; diff --git a/root/usr/share/smanager/t/004_panels.t b/root/usr/share/smanager/t/004_panels.t index 4f4ca1e..5c3682f 100644 --- a/root/usr/share/smanager/t/004_panels.t +++ b/root/usr/share/smanager/t/004_panels.t @@ -6,8 +6,8 @@ use Test::Mojo; use FindBin; use lib "$FindBin::Bin/../lib"; -eval "use esmith::ConfigDB"; -plan skip_all => 'esmith::ConfigDB (and others) required for testing 004_panels' if $@; +eval "use esmith::ConfigDB::UTF8"; +plan skip_all => 'esmith::ConfigDB::UTF8 (and others) required for testing 004_panels' if $@; my $tests; plan tests => $tests; @@ -17,8 +17,8 @@ BEGIN { $tests += 2 * 3 }; my $t = Test::Mojo->new('SrvMngr'); $t->ua->max_redirects(1); -$t->get_ok('/')->status_is(200)->content_like(qr/SME Server 10/); -$t->get_ok('/manual')->status_is(200)->content_like(qr/SME Server 10/); +$t->get_ok('/')->status_is(200)->content_like(qr/SME Server 11/); +$t->get_ok('/manual')->status_is(200)->content_like(qr/SME Server 11/); BEGIN { $tests += 5 * 2 }; my @panels = qw/ Initial Login Manual Support Request /; diff --git a/root/usr/share/smanager/themes/default/templates/backdown.html.ep b/root/usr/share/smanager/themes/default/templates/backdown.html.ep index b8bbd85..c0a5fcc 100644 --- a/root/usr/share/smanager/themes/default/templates/backdown.html.ep +++ b/root/usr/share/smanager/themes/default/templates/backdown.html.ep @@ -1,6 +1,6 @@ <% - my $backups = esmith::BackupHistoryDB->open; + my $backups = esmith::BackupHistoryDB->open; # no UTF8 my $now = time(); my $backup_rec = $backups->new_record($now, { type => 'backup_record', BackupType => 'desktop', @@ -64,4 +64,4 @@ $backup_rec->set_prop('Result', "0"); %> -1; \ No newline at end of file +1; diff --git a/smeserver-manager.spec b/smeserver-manager.spec index f39ccf1..9b3ea54 100644 --- a/smeserver-manager.spec +++ b/smeserver-manager.spec @@ -145,7 +145,7 @@ true %changelog * Mon Jun 09 2025 Jean-Philippe Pialasse 11.0.0-87.sme - add datetime getYear_list [SME: 13031] -- WIP use esmith::*DB::UTF8 to access db flat files [SME: 13027] +- use esmith::*DB::UTF8 to access db flat files [SME: 13027] * Mon Jun 09 2025 John Crisp 11.00.0-86.sme - Fix datetime gen_locale_date_string reference [SME: 13017]