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 "