From a24fbe4574b42804167fc9686d7d96d8091c67f0 Mon Sep 17 00:00:00 2001
From: Isaac Connor
Date: Wed, 10 Jul 2024 17:14:36 -0400
Subject: [PATCH] Add EmailServer to filter to override server set in options
---
db/zm_create.sql.in | 1 +
db/zm_update-1.37.63.sql | 11 +++++++++++
distros/redhat/zoneminder.spec | 2 +-
scripts/ZoneMinder/lib/ZoneMinder/Filter.pm | 1 +
scripts/zmfilter.pl.in | 8 +++++---
version.txt | 2 +-
web/skins/classic/views/filter.php | 4 ++++
7 files changed, 24 insertions(+), 5 deletions(-)
create mode 100644 db/zm_update-1.37.63.sql
diff --git a/db/zm_create.sql.in b/db/zm_create.sql.in
index a71afe2c1..65eaa96a3 100644
--- a/db/zm_create.sql.in
+++ b/db/zm_create.sql.in
@@ -309,6 +309,7 @@ CREATE TABLE `Filters` (
`EmailTo` TEXT,
`EmailSubject` TEXT,
`EmailBody` TEXT,
+ `EmailServer` TEXT,
`EmailFormat` enum('Individual','Summary') NOT NULL default 'Individual',
`AutoMessage` tinyint(3) unsigned NOT NULL default '0',
`AutoExecute` tinyint(3) unsigned NOT NULL default '0',
diff --git a/db/zm_update-1.37.63.sql b/db/zm_update-1.37.63.sql
new file mode 100644
index 000000000..c526f3fe9
--- /dev/null
+++ b/db/zm_update-1.37.63.sql
@@ -0,0 +1,11 @@
+SET @s = (SELECT IF(
+ (SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS WHERE table_schema = DATABASE()
+ AND table_name = 'Filters'
+ AND column_name = 'EmailServer'
+ ) > 0,
+"SELECT 'Column EmailServer already exists in Filters'",
+"ALTER TABLE `Filters` ADD `EmailServer` TEXT AFTER `EmailBody`"
+));
+
+PREPARE stmt FROM @s;
+EXECUTE stmt;
diff --git a/distros/redhat/zoneminder.spec b/distros/redhat/zoneminder.spec
index e8db60730..62ce44caf 100644
--- a/distros/redhat/zoneminder.spec
+++ b/distros/redhat/zoneminder.spec
@@ -18,7 +18,7 @@
%global zmtargetdistro %{?rhel:el%{rhel}}%{!?rhel:fc%{fedora}}
Name: zoneminder
-Version: 1.37.62
+Version: 1.37.63
Release: 2%{?dist}
Summary: A camera monitoring and analysis tool
Group: System Environment/Daemons
diff --git a/scripts/ZoneMinder/lib/ZoneMinder/Filter.pm b/scripts/ZoneMinder/lib/ZoneMinder/Filter.pm
index 1443a3a2a..dd06babe9 100644
--- a/scripts/ZoneMinder/lib/ZoneMinder/Filter.pm
+++ b/scripts/ZoneMinder/lib/ZoneMinder/Filter.pm
@@ -55,6 +55,7 @@ AutoEmail
EmailTo
EmailSubject
EmailBody
+EmailServer
EmailFormat
AutoMessage
AutoExecute
diff --git a/scripts/zmfilter.pl.in b/scripts/zmfilter.pl.in
index 8672660f2..e2ae61de8 100644
--- a/scripts/zmfilter.pl.in
+++ b/scripts/zmfilter.pl.in
@@ -1036,14 +1036,14 @@ sub sendTheEmail {
}
if (!$ssmtp_location) {
Warning('Unable to find ssmtp, trying MIME::Lite->send');
- MIME::Lite->send('smtp', $Config{ZM_EMAIL_HOST}, Timeout=>60);
+ MIME::Lite->send('smtp', ($$filter{EmailServer} ? $$filter{EmailServer} : $Config{ZM_EMAIL_HOST}), Timeout=>60);
$mail->send();
} else {
### Send using SSMTP
$mail->send('sendmail', $ssmtp_location, $$filter{EmailTo});
}
} else {
- MIME::Lite->send('smtp', $Config{ZM_EMAIL_HOST}, Timeout=>60);
+ MIME::Lite->send('smtp', ($$filter{EmailServer} ? $$filter{EmailServer} : $Config{ZM_EMAIL_HOST}), Timeout=>60);
$mail->send();
}
} else {
@@ -1105,7 +1105,9 @@ sub sendTheEmail {
if ( $total_size > 10*1024*1024 ) {
Warning('Emails larger than 10Mb will often not be delivered! This one is '.int($total_size/(1024*1024)).'Mb');
}
- $mail->smtpsend(Host => $Config{ZM_EMAIL_HOST}, MailFrom => $Config{ZM_FROM_EMAIL});
+ $mail->smtpsend(
+ Host => ($$filter{EmailServer} ? $$filter{EmailServer} :$Config{ZM_EMAIL_HOST}),
+ MailFrom => $Config{ZM_FROM_EMAIL});
}
};
if ( $@ ) {
diff --git a/version.txt b/version.txt
index d77084cd1..af02c9026 100644
--- a/version.txt
+++ b/version.txt
@@ -1 +1 @@
-1.37.62
+1.37.63
diff --git a/web/skins/classic/views/filter.php b/web/skins/classic/views/filter.php
index b5943b0e8..c44b5830b 100644
--- a/web/skins/classic/views/filter.php
+++ b/web/skins/classic/views/filter.php
@@ -353,6 +353,10 @@ if ( ZM_OPT_EMAIL ) {
$filter->EmailFormat()); ?>
+
+
+
+