From 6dd24d9479c5071cc79fc54c595f08de94ae9951 Mon Sep 17 00:00:00 2001 From: Jean-Philippe Pialasse Date: Mon, 30 Dec 2024 22:09:15 -0500 Subject: [PATCH] * Mon Dec 30 2024 Jean-Philippe Pialasse 11.0.0-7.sme - fix CGI::param called in list context [SME: 12789] - update webmail settings for roundcube [SME: 12743] - remove requires runit [SME: 12566] - move action pseudonym-cleanup and migrate 10AdminEmail from smeserver-mini-qmail [SME: 12808] --- createlinks | 17 +++++++++++++ .../e-smith/db/accounts/migrate/10AdminEmail | 24 ++++++++++++++++++ .../e-smith/events/actions/pseudonym-cleanup | 22 ++++++++++++++++ .../esmith/FormMagick/Panel/emailsettings.pm | 25 +++++++------------ .../esmith/FormMagick/Panel/pseudonyms.pm | 2 +- smeserver-email.spec | 9 +++++-- 6 files changed, 80 insertions(+), 19 deletions(-) create mode 100644 root/etc/e-smith/db/accounts/migrate/10AdminEmail create mode 100644 root/etc/e-smith/events/actions/pseudonym-cleanup diff --git a/createlinks b/createlinks index f8db561..567a7d8 100644 --- a/createlinks +++ b/createlinks @@ -52,6 +52,14 @@ $event = "console-save"; safe_symlink("restart", "root/etc/e-smith/events/$event/services2adjust/smtp-auth-proxy"); event_link('fetchmail-migrate-fetchids', $event, '91'); +#-------------------------------------------------- +# actions for bootstrap-console-save event: +# write config files and create startup link +#-------------------------------------------------- +$event = "bootstrap-console-save"; + +event_link("pseudonym-cleanup", $event, "03"); + #-------------------------------------------------- # actions for domain-create event: # rewrite config files and restart server @@ -75,22 +83,29 @@ $event = "email-update"; safe_symlink("restart", "root/etc/e-smith/events/$event/services2adjust/smtp-auth-proxy"); event_link('fetchmail-migrate-fetchids', $event, '91'); +event_link("pseudonym-cleanup", $event, "30"); #-------------------------------------------------- # actions for group-create event: #-------------------------------------------------- $event = "group-create"; +event_link("pseudonym-cleanup", $event, "03"); + #-------------------------------------------------- # actions for group-delete event: #-------------------------------------------------- $event = "group-delete"; +event_link("pseudonym-cleanup", $event, "03"); + #-------------------------------------------------- # actions for group-modify event: #-------------------------------------------------- $event = "group-modify"; +event_link("pseudonym-cleanup", $event, "03"); + #-------------------------------------------------- # actions for user-create event: #-------------------------------------------------- @@ -127,12 +142,14 @@ event_link("systemd-reload", $event, "89"); event_link("systemd-default", $event, "88"); event_link('fetchmail-migrate-fetchids', $event, '91'); safe_symlink("try-restart", "root/etc/e-smith/events/$event/services2adjust/smtp-auth-proxy"); +event_link("pseudonym-cleanup", $event, "03"); #-------------------------------------------------- # actions for pseudonym-{create,delete,modify} #-------------------------------------------------- foreach $event ( qw(pseudonym-create pseudonym-modify pseudonym-delete) ) { + event_link("pseudonym-cleanup", $event, "03"); } diff --git a/root/etc/e-smith/db/accounts/migrate/10AdminEmail b/root/etc/e-smith/db/accounts/migrate/10AdminEmail new file mode 100644 index 0000000..84a9c84 --- /dev/null +++ b/root/etc/e-smith/db/accounts/migrate/10AdminEmail @@ -0,0 +1,24 @@ +{ + my $conf = esmith::ConfigDB->open; + return unless $conf; + + my $admin_email = $conf->get_value_and_delete('AdminEmail'); + return unless defined $admin_email; + + my $admin = $DB->get('admin') || + $DB->new_record('admin', {type => 'system'}); + if ($admin_email) + { + $admin->merge_props( + EmailForward => 'forward', + ForwardAddress => $admin_email, + ); + } + else + { + $admin->merge_props( + EmailForward => 'local', + ForwardAddress => '', + ); + } +} diff --git a/root/etc/e-smith/events/actions/pseudonym-cleanup b/root/etc/e-smith/events/actions/pseudonym-cleanup new file mode 100644 index 0000000..c25c9d3 --- /dev/null +++ b/root/etc/e-smith/events/actions/pseudonym-cleanup @@ -0,0 +1,22 @@ +#!/usr/bin/perl -w + +use strict; +use esmith::AccountsDB; +use esmith::event; + +my $accounts = esmith::AccountsDB->open() or + die "Unable to open accounts db: $!"; + +my ($self, $account) = @ARGV; + +# Find all "pseudonyms" entries in the e-smith accounts database and +# if the pseudonyms has an unexisting Account associated we change +# it to user "admin". + +foreach my $pseudo ( $accounts->pseudonyms ) { + unless ( $accounts->get($pseudo->prop('Account')) ) { + $pseudo->set_prop( 'Account', 'admin' ); + print "orphaned pseudonym " . $pseudo->key. " has been associated to admin account" + } +} + diff --git a/root/usr/share/perl5/vendor_perl/esmith/FormMagick/Panel/emailsettings.pm b/root/usr/share/perl5/vendor_perl/esmith/FormMagick/Panel/emailsettings.pm index c157c80..90d6730 100755 --- a/root/usr/share/perl5/vendor_perl/esmith/FormMagick/Panel/emailsettings.pm +++ b/root/usr/share/perl5/vendor_perl/esmith/FormMagick/Panel/emailsettings.pm @@ -336,23 +336,20 @@ sub change_settings_access $db->set_prop('php',"status", "enabled" ); $db->set_prop('mariadb',"status", "enabled" ); $db->set_prop('imp',"status", 'enabled' ); - $db->set_prop('horde',"status", 'enabled' ); - $db->set_prop('horde',"access", "public" ); - $db->set_prop('horde',"HttpsOnly", "yes" ); + $cdb->set_prop('roundcube',"status", 'enabled' ); + $cdb->set_prop('roundcube',"access", "public" ); } elsif ( $webmail eq "localnetworkSSL" || $webmail eq "localnetwork" ) { $db->set_prop('php',"status", "enabled" ); $db->set_prop('mariadb',"status", "enabled" ); $db->set_prop('imp',"status", 'enabled' ); - $db->set_prop('horde',"status", 'enabled' ); - $db->set_prop('horde',"access", "private" ); - $db->set_prop('horde',"HttpsOnly", "yes" ); + $cdb->set_prop('roundcube',"status", 'enabled' ); + $cdb->set_prop('roundcube',"access", "private" ); } else { - $db->set_prop('imp',"status", 'disabled' ); - $db->set_prop('horde',"status", 'disabled' ); + $cdb->set_prop('roundcube',"status", 'disabled' ); } unless ( system( "/sbin/e-smith/signal-event", "email-update" ) == 0 ) @@ -558,19 +555,16 @@ sub get_current_webmail_status { # determine status of webmail my $WebmailStatus = "disabled"; - my $IMPStatus = $db->get_prop('imp', 'status') || 'disabled'; - - my $HordeStatus = $db->get_prop('horde', 'status') || 'disabled'; + my $RoundcubeStatus = $cdb->get_prop('roundcube', 'status') || 'disabled'; my $MysqlStatus = $db->get_prop('mariadb', 'status') || 'disabled'; my $PHPStatus = $db->get_prop('php', 'status') || 'disabled'; - my $Networkaccess = $db->get_prop('horde','access') || 'disabled'; + my $Networkaccess = $db->get_prop('roundcube','access') || 'disabled'; # all four components must be on for webmail to be working - if ( ( $IMPStatus eq "enabled" ) - && ( $HordeStatus eq "enabled" ) + if ( ( $RoundcubeStatus eq "enabled" ) && ( $MysqlStatus eq "enabled" ) && ( $PHPStatus eq "enabled" ) && ( $Networkaccess eq "public")) @@ -578,8 +572,7 @@ sub get_current_webmail_status { $WebmailStatus = "enabledSSL" ; } - elsif ( ( $IMPStatus eq "enabled" ) - && ( $HordeStatus eq "enabled" ) + elsif ( ( $RoundcubeStatus eq "enabled" ) && ( $MysqlStatus eq "enabled" ) && ( $PHPStatus eq "enabled" ) && ( $Networkaccess eq "private" )) diff --git a/root/usr/share/perl5/vendor_perl/esmith/FormMagick/Panel/pseudonyms.pm b/root/usr/share/perl5/vendor_perl/esmith/FormMagick/Panel/pseudonyms.pm index 6521ccd..cd92a35 100644 --- a/root/usr/share/perl5/vendor_perl/esmith/FormMagick/Panel/pseudonyms.pm +++ b/root/usr/share/perl5/vendor_perl/esmith/FormMagick/Panel/pseudonyms.pm @@ -364,7 +364,7 @@ sub print_begin_page { my $key = $account->key(); push (@emailPseudonyms, $key) if ($type eq 'pseudonym'); } - my $urlprefix = $fm->build_cgi_params(uri_unescape($q->param('pseudonym'))); + my $urlprefix = $fm->build_cgi_params(uri_unescape(scalar $q->param('pseudonym'))); print " \n \n"; print $q->p($q->a({href => "pseudonyms?$urlprefix&wherenext=Create", -class => "button-like"}, $fm->localise("CLICK_TO_CREATE"))); diff --git a/smeserver-email.spec b/smeserver-email.spec index dc68a07..6ff4634 100644 --- a/smeserver-email.spec +++ b/smeserver-email.spec @@ -4,7 +4,7 @@ Summary: smeserver server and gateway - email module %define name smeserver-email Name: %{name} %define version 11.0.0 -%define release 6 +%define release 7 Version: %{version} Release: %{release}%{?dist} License: GPL @@ -25,7 +25,6 @@ Requires: perl(Net::SMTP) Requires: perl(Net::SMTP::SSL) Requires: perl(Authen::SASL) Requires: perl(Net::Server) >= 0.85 -Requires: runit Requires: smeserver-formmagick >= 1.4.0-12 Obsoletes: e-smith-smtp-authentication Obsoletes: e-smith-securemail @@ -77,6 +76,12 @@ fi smeserver server and gateway software - email module. %changelog +* Mon Dec 30 2024 Jean-Philippe Pialasse 11.0.0-7.sme +- fix CGI::param called in list context [SME: 12789] +- update webmail settings for roundcube [SME: 12743] +- remove requires runit [SME: 12566] +- move action pseudonym-cleanup and migrate 10AdminEmail from smeserver-mini-qmail [SME: 12808] + * Wed Apr 17 2024 Jean-Philippe Pialasse 11.0.0-6.sme - change temp dir from /var/lock to /run/lock [SME: 12620]