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()); ?>

+

+ + +