From 820551b076a3c0d00de05a6db8f35dbdcfec1dfd Mon Sep 17 00:00:00 2001 From: Brian Read Date: Tue, 4 Nov 2025 13:00:26 +0000 Subject: [PATCH] * Tue Nov 04 2025 Brian Read 11.0.0-129.sme - Useraccounts: Clean up forward email sub and make sure blank is errored [SME: 13056] --- .../lib/SrvMngr/Controller/Useraccounts.pm | 36 ++++++++++--------- smeserver-manager.spec | 7 ++-- 2 files changed, 25 insertions(+), 18 deletions(-) diff --git a/root/usr/share/smanager/lib/SrvMngr/Controller/Useraccounts.pm b/root/usr/share/smanager/lib/SrvMngr/Controller/Useraccounts.pm index 103dc44..302b4aa 100644 --- a/root/usr/share/smanager/lib/SrvMngr/Controller/Useraccounts.pm +++ b/root/usr/share/smanager/lib/SrvMngr/Controller/Useraccounts.pm @@ -179,7 +179,7 @@ sub do_update { $res = $c->pseudonym_clash($first); $result .= $res unless $res eq 'OK'; - if ($mail) { + if (defined $mail) { $res = $c->emailforward($mail); $result .= $res unless $res eq 'OK'; } @@ -217,7 +217,7 @@ sub do_update { $res = $c->pseudonym_clash($first); $result .= $res unless $res eq 'OK'; - if ($mail) { + if (defined $mail) { $res = $c->emailforward($mail); $result .= $res unless $res eq 'OK'; } @@ -554,27 +554,31 @@ sub pseudonym_clash { sub emailforward { my ($c, $data) = @_; - my $response = $c->email_simple($data); + #$c->app->log->info("emailformward called with $data!"); - if ($response eq "OK") { - return "OK"; - } elsif ($data eq "") { + # Trim whitespace from $data + $data =~ s/^\s+|\s+$//g if defined $data; - # Blank is ok, only if we're not forwarding, which means that the - # EmailForward param must be set to 'local'. + # Check simple email validation first + return "OK" if $c->email_simple($data) eq "OK"; + + # If trimmed data is empty + if ($data eq "") { my $email_forward = $c->param('EmailForward') || ''; $email_forward =~ s/^\s+|\s+$//g; return 'OK' if $email_forward eq 'local'; return $c->l('usr_CANNOT_CONTAIN_WHITESPACE'); - } else { - return $c->l('usr_CANNOT_CONTAIN_WHITESPACE') - if ($data =~ /\s+/); + } - # Permit a local address. - return "OK" if $data =~ /^[a-zA-Z][a-zA-Z0-9\._\-]*$/; - return $c->l('usr_UNACCEPTABLE_CHARS'); - } ## end else [ if ($response eq "OK")] -} ## end sub emailforward + # Reject if $data contains any whitespace inside + return $c->l('usr_CANNOT_CONTAIN_WHITESPACE') if $data =~ /\s/; + + # Allow local address pattern + return "OK" if $data =~ /^[a-zA-Z][a-zA-Z0-9._-]*$/; + + # Otherwise reject for unacceptable chars + return $c->l('usr_UNACCEPTABLE_CHARS'); +} sub get_groups { my ($c) = shift; diff --git a/smeserver-manager.spec b/smeserver-manager.spec index 7e81710..eb23a39 100644 --- a/smeserver-manager.spec +++ b/smeserver-manager.spec @@ -2,7 +2,7 @@ Summary: Sme Server Configuration : Manager 2 %define name smeserver-manager Name: %{name} %define version 11.0.0 -%define release 128 +%define release 129 Version: %{version} Release: %{release}%{?dist} License: GPL @@ -147,11 +147,14 @@ true %defattr(-,root,root) %changelog +* Tue Nov 04 2025 Brian Read 11.0.0-129.sme +- Useraccounts: Clean up forward email sub and make sure blank is errored [SME: 13056] + * Tue Nov 04 2025 Brian Read 11.0.0-128.sme - Move group table to under others in User accounts setup panel [SME: 13068] * Tue Nov 04 2025 Brian Read 11.0.0-127.sme -- Move same var declations to outside innner scope [SME: 13073] +- Group panel: Move same var declations to outside innner scope [SME: 13073] * Tue Nov 04 2025 Brian Read 11.0.0-126.sme - Remove debugging dump in portforwarding which crashes if no data [SME: 13243]