|
From: <ma...@us...> - 2012-01-01 20:50:08
|
Revision: 622
http://openautomation.svn.sourceforge.net/openautomation/?rev=622&view=rev
Author: makki1
Date: 2012-01-01 20:50:01 +0000 (Sun, 01 Jan 2012)
Log Message:
-----------
WireGate-Plugins: Cleanup SMTP-Watchdog and example, add error-handling
Modified Paths:
--------------
wiregate/plugin/generic/SMTP-eMail.pl
wiregate/plugin/generic/Watchdog-SMTP-eMail
Modified: wiregate/plugin/generic/SMTP-eMail.pl
===================================================================
--- wiregate/plugin/generic/SMTP-eMail.pl 2011-12-31 18:20:12 UTC (rev 621)
+++ wiregate/plugin/generic/SMTP-eMail.pl 2012-01-01 20:50:01 UTC (rev 622)
@@ -11,7 +11,6 @@
##################
my $Empfaenger = 'me...@do...'; # Anpassen, mehrere mit ,
-
my $Absender = 'WireGate <ab...@gm...>'; # unbedingt anpassen, die Absenderadresse sollte gültig sein um Probleme zu vermeiden
my $Betreff = "eMail von $hostname";
my $text = "email-Body";
@@ -27,29 +26,29 @@
use Net::SMTP;
use MIME::Base64;
-my $smtp = Net::SMTP->new($mailserver, Timeout => 5, Debug =>1) or return "Fehler beim verbinden zu $mailserver $!";
-my $ret .= ' auth:'. $smtp->auth($username,$password);
+my $smtp = Net::SMTP->new($mailserver, Timeout => 20, Debug =>1) or return "Fehler beim verbinden zu $mailserver $!; $@";
+$smtp->auth($username,$password);
$smtp->status() < 5
or do {
- # Die smtp->auth Methode schlaegt fehl, also dann so
- $smtp->datasend("AUTH LOGIN\n") or return 'auth login problem';
+ #Die smtp->auth Methode schlaegt fehl, also dann so
+ $smtp->datasend("AUTH LOGIN\n") or return 'auth login problem $!';
$smtp->response();
- $smtp->datasend(encode_base64( $username ) ) or return "username $username cannot be encoded or wrong";
+ $smtp->datasend(encode_base64( $username ) ) or return "username $username cannot be encoded or wrong $!";
$smtp->response();
- $smtp->datasend(encode_base64( $password ) ) or return "password $password cannot be encoded or wrong";
+ $smtp->datasend(encode_base64( $password ) ) or return "password $password cannot be encoded or wrong $!";
$smtp->response();
};
-$ret .= 'status:' . $smtp->status();
-$ret .= ' send:'. $smtp->mail($Absender);
-$ret .= ' rcpt:'. $smtp->to($Empfaenger);
-$ret .= $smtp->data();
-$ret .= $smtp->datasend("To: $Empfaenger\n"); # Empfänger (Header)
-$ret .= $smtp->datasend("Subject: $Betreff\n"); # Betreff
-$ret .= $smtp->datasend("\n");
-$ret .= $smtp->datasend("$text\n");
-$ret .= $smtp->dataend();
-$ret .= $smtp->quit;
+$smtp->status() < 5 or return "Auth failed: $! ". $smtp->status();
+$smtp->mail($Absender) or return "Absender $Absender abgelehnt $!";
+$smtp->to($Empfaenger) or return "Empfaenger $Empfaenger abgelehnt $!";
+$smtp->data() or return "Data failed $!";
+$smtp->datasend("To: $Empfaenger\n") or return "Empfanger $Empfaenger (Header-To) abgelehnt $!";
+$smtp->datasend("Subject: $Betreff\n") or return "Subject $Betreff abgelehnt $!";
+$smtp->datasend("\n") or return "Data failed $!";
+$smtp->datasend("$text\n") or return "Data failed $!";
+$smtp->dataend() or return "Data failed $!";
+$smtp->quit or return "Quit failed $!";
-# FIXME: check if we succeeded
-return;
+return; # keine Logausgabe
+return "eMail von $Absender an $Empfaenger Betreff $Betreff gesendet: $text";
Modified: wiregate/plugin/generic/Watchdog-SMTP-eMail
===================================================================
--- wiregate/plugin/generic/Watchdog-SMTP-eMail 2011-12-31 18:20:12 UTC (rev 621)
+++ wiregate/plugin/generic/Watchdog-SMTP-eMail 2012-01-01 20:50:01 UTC (rev 622)
@@ -1,17 +1,30 @@
-# Demo-Plugin zum prüfen auf Timeout-Fehler und eMail-Versand
-use Net::SMTP;
+# Demo-Plugin zum prüfen auf Plugin Timeout-Fehler
+# und eMail-Versand
-my $Empfaenger = 'me...@ke...';
-my $Absender = 'WireGate <wir...@el...>';
-my $Betreff = "Plugin-Alarm!";
-my $mailserver='mail-out.elabnet.de'; # SMTP-Relay: das muss natuerlich angepasst werden!
-# Das kann tricky sein mit GMX&co..
-# Fix-me: besser waere den lokale Exim-Mailserver zu verwenden
-# Dieser muesste jedoch erst mit einem entspr. Relay konfiguriert werden
+my $hostname = `hostname`;
+##################
+### DEFINITION ###
+##################
+
+my $Empfaenger = 'me...@do...'; # Anpassen, mehrere mit ,
+my $Absender = 'WireGate <ab...@gm...>'; # unbedingt anpassen, die Absenderadresse sollte gültig sein um Probleme zu vermeiden
+my $Betreff = "Plugin-Alarm von $hostname !";
+my $username = 'ab...@gm...'; #Anpassen! Username fuer SMTP-Server
+my $password = "meinpasswort"; #Anpassen! Passwort fuer SMTP-Server
+my $mailserver='mail.gmx.net'; # SMTP-Relay: das muss natuerlich angepasst werden!
$plugin_info{$plugname.'_cycle'} = 300;
-my $ret;
+#######################
+### ENDE DEFINITION ###
+#######################
+
+use Net::SMTP;
+use MIME::Base64;
+# FIXME: require Authen/SASL ?
+
+my ($ret,$err);
+
foreach (@plugins) {
my $plugname2 = basename($_);
if ($plugin_info{$plugname2.'_timeout_err'} >= $plugin_max_errors) {
@@ -19,18 +32,31 @@
# Alert
if (!$plugin_info{$plugname2.'_timeout_alarm'}) {
# sende Warn-eMail
- my $smtp = Net::SMTP->new($mailserver, Timeout => 5);
- $smtp->mail($Absender);
- $smtp->to($Empfaenger);
- $smtp->data();
- $smtp->datasend("To: $Empfaenger\n"); # Empfänger (Header)
- $smtp->datasend("Subject: $Betreff\n"); # Betreff
- $smtp->datasend("\n");
- $smtp->datasend("$ret\n");
- $smtp->dataend();
- $smtp->quit;
- }
- $plugin_info{$plugname2.'_timeout_alarm'} = 1;
+ my $smtp = Net::SMTP->new($mailserver, Timeout => 20, Debug =>1) or return "Fehler beim verbinden zu $mailserver $!; $@";
+ $smtp->auth($username,$password);
+ $smtp->status() < 5
+ or do {
+ #Die smtp->auth Methode schlaegt fehl, also dann so
+ $smtp->datasend("AUTH LOGIN\n") or return 'auth login problem $!';
+ $smtp->response();
+ $smtp->datasend(encode_base64( $username ) ) or return "username $username cannot be encoded or wrong $!";
+ $smtp->response();
+ $smtp->datasend(encode_base64( $password ) ) or return "password $password cannot be encoded or wrong $!";
+ $smtp->response();
+ };
+ $smtp->status() < 5 or return "Auth failed: $! ". $smtp->status();
+ $smtp->mail($Absender) or return "Absender $Absender abgelehnt $!";
+ $smtp->to($Empfaenger) or return "Empfaenger $Empfaenger abgelehnt $!";
+ $smtp->data() or return "Data failed $!";
+ $smtp->datasend("To: $Empfaenger\n") or return "Empfanger $Empfaenger (Header-To) abgelehnt $!";
+ $smtp->datasend("Subject: $Betreff\n") or return "Subject $Betreff abgelehnt $!";
+ $smtp->datasend("\n") or return "Data failed $!";
+ $smtp->datasend("$ret\n") or return "Data failed $!";
+ $smtp->dataend() or return "Data failed $!";
+ $smtp->quit or return "Quit failed $!";
+ $plugin_info{$plugname2.'_timeout_alarm'} = 1;
+ return "eMail gesendet: $ret";
+ }
} else {
# Reset Merker
$plugin_info{$plugname2.'_timeout_alarm'} = 0;
@@ -38,5 +64,5 @@
#$ret .= "$plugname2 Timeouts: $plugin_info{$plugname2.'_timeout_err'}";
}
-return $ret;
+return; #alles ok oder eMail bereits gesendet
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|