[pmg-devel] [PATCH pmg-api 4/5] ruledb: encode e-mail addresses for syslog

Dominik Csapak d.csapak at proxmox.com
Mon Nov 14 15:49:36 CET 2022


question: since the rulenames are now utf-8, wouldn't we have to encode
them here too?

nits inline:

On 11/9/22 19:27, Stoiko Ivanov wrote:
> as done in 114655f4fdb07c789a361b2f397f5345eafd16c6 for Accept and
> Block.
> 
> Signed-off-by: Stoiko Ivanov <s.ivanov at proxmox.com>
> ---
>   src/PMG/RuleDB/BCC.pm        | 17 +++++++++++++++--
>   src/PMG/RuleDB/Notify.pm     | 17 +++++++++++++++--
>   src/PMG/RuleDB/Quarantine.pm | 16 ++++++++++++++--
>   src/PMG/RuleDB/Remove.pm     |  8 +++++++-
>   4 files changed, 51 insertions(+), 7 deletions(-)
> 
> diff --git a/src/PMG/RuleDB/BCC.pm b/src/PMG/RuleDB/BCC.pm
> index c1225f3..e56f051 100644
> --- a/src/PMG/RuleDB/BCC.pm
> +++ b/src/PMG/RuleDB/BCC.pm
> @@ -165,9 +165,22 @@ sub execute {
>   		$msginfo->{xforward}, $msginfo->{fqdn}, $param);
>   	    foreach (@bcc_targets) {
>   		if ($qid) {
> -		    syslog('info', "%s: bcc to <%s> (rule: %s, %s)", $queue->{logid}, $_, $rulename, $qid);
> +		    syslog(
> +			'info',
> +			"%s: bcc to <%s> (rule: %s, %s)",
> +			$queue->{logid},
> +			encode('UTF-8',$_),
> +			$rulename,
> +			$qid,
> +		    );
>   		} else {
> -		    syslog('err', "%s: bcc to <%s> (rule: %s) failed", $queue->{logid}, $_, $rulename);
> +		    syslog(
> +			'err',
> +			"%s: bcc to <%s> (rule: %s) failed",
> +			$queue->{logid},
> +			encode('UTF-8',$_),
> +			$rulename,
> +		    );
>   		}

i'd rather prefer to encode $_ once before the if and using that instead of having
two encode calls:

my $target = encode(... $_);

if ($qid) {
     syslog(..., $target);
else {
     syslog(..., $target);
}

>   	    }
>   	}
> diff --git a/src/PMG/RuleDB/Notify.pm b/src/PMG/RuleDB/Notify.pm
> index bca5ebf..ee5d2ac 100644
> --- a/src/PMG/RuleDB/Notify.pm
> +++ b/src/PMG/RuleDB/Notify.pm
> @@ -260,9 +260,22 @@ sub execute {
>   	    $top, $from, \@targets, undef, $msginfo->{fqdn});
>   	foreach (@targets) {
>   	    if ($qid) {
> -		syslog('info', "%s: notify <%s> (rule: %s, %s)", $queue->{logid}, $_, $rulename, $qid);
> +		syslog(
> +		    'info',
> +		    "%s: notify <%s> (rule: %s, %s)",
> +		    $queue->{logid},
> +		    encode('UTF-8', $_),
> +		    $rulename,
> +		    $qid,
> +		);
>   	    } else {
> -		syslog ('err', "%s: notify <%s> (rule: %s) failed", $queue->{logid}, $_, $rulename);
> +		syslog (
> +		    'err',
> +		    "%s: notify <%s> (rule: %s) failed",
> +		    $queue->{logid},
> +		    encode('UTF-8', $_),
> +		    $rulename,
> +		);
>   	    }

same here

>   	}
>       }
> diff --git a/src/PMG/RuleDB/Quarantine.pm b/src/PMG/RuleDB/Quarantine.pm
> index 30bc5ec..f7154d8 100644
> --- a/src/PMG/RuleDB/Quarantine.pm
> +++ b/src/PMG/RuleDB/Quarantine.pm
> @@ -101,7 +101,13 @@ sub execute {
>   	    if (my $qid = $queue->quarantine_mail($ruledb, 'V', $entity, $tg, $msginfo, $vars, $ldap)) {
>   
>   		foreach (@$tg) {
> -		    syslog ('info', "$queue->{logid}: moved mail for <%s> to virus quarantine - %s (rule: %s)", $_, $qid, $rulename);
> +		    syslog (
> +			'info',
> +			"$queue->{logid}: moved mail for <%s> to virus quarantine - %s (rule: %s)",
> +			encode('UTF-8',$_),
> +			$qid,
> +			$rulename,
> +		    );
>   		}
>   
>   		$queue->set_status ($tg, 'delivered');
> @@ -111,7 +117,13 @@ sub execute {
>   	    if (my $qid = $queue->quarantine_mail($ruledb, 'S', $entity, $tg, $msginfo, $vars, $ldap)) {
>   
>   		foreach (@$tg) {
> -		    syslog ('info', "$queue->{logid}: moved mail for <%s> to spam quarantine - %s (rule: %s)", $_, $qid, $rulename);
> +		    syslog (
> +			'info',
> +			"$queue->{logid}: moved mail for <%s> to spam quarantine - %s (rule: %s)",
> +			encode('UTF-8',$_),
> +			$qid,
> +			$rulename,
> +		    );
>   		}
>   
>   		$queue->set_status($tg, 'delivered');
> diff --git a/src/PMG/RuleDB/Remove.pm b/src/PMG/RuleDB/Remove.pm
> index da6c25f..e7c353c 100644
> --- a/src/PMG/RuleDB/Remove.pm
> +++ b/src/PMG/RuleDB/Remove.pm
> @@ -235,7 +235,13 @@ sub execute {
>   		}
>   
>   		foreach (@$tg) {
> -		    syslog ('info', "$queue->{logid}: moved mail for <%s> to attachment quarantine - %s (rule: %s)", $_, $qid, $rulename);
> +		    syslog (
> +			'info',
> +			"$queue->{logid}: moved mail for <%s> to attachment quarantine - %s (rule: %s)",
> +			encode('UTF-8',$_),
> +			$qid,
> +			$rulename,
> +		    );
>   		}
>   	    }
>   	}





More information about the pmg-devel mailing list