/// <summary> /// Wird abgefeuert sobald ein Drucker offline ist /// </summary> /// <param name="sender"></param> /// <param name="e"></param> void fetchingManager_OnPrinterOffline(object sender, PrinterEventArgs e) { var printer = e.Printer; if (Config.Notifications.AlertIfPrinterOffline) { if (printer.GlobalAlertOfflineTriggered == false && printer.Pingable == false) { new Thread(x => { try { Mailer.SendMailOverSmtp(Config.Notifications.SendTo, "Prinfo.NET Notification " + printer.HostName, "@" + DateTime.Now + Environment.NewLine + "PrinterList " + printer.HostName + " is offline."); } catch (Exception ex) { Logger.Log(GlobalizationHelper.LibraryResource.GetString("smtp_error") + ex.Message, LogType.Error); } }).Start(); printer.GlobalAlertOfflineTriggered = true; } else if (printer.Pingable == true && printer.GlobalAlertOfflineTriggered == true) printer.GlobalAlertOfflineTriggered = false; } }
/// <summary> /// Tritt ein sobald ein Drucker vom "fetchingManager" überprüft wurde. /// Updated die Werte des Druckers in der Datenbank und prüft ob Schwellwerte für die /// Benachrichtigungen überschritten wurden. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> void fetchingManager_OnPrinterChecked(object sender, PrinterEventArgs e) { var printer = e.Printer; foreach (var supply in printer) { string description = supply.Description; double value = supply.Value; //prüfen ob schon benachrichtig wurde und der Wert wieder erhöht ist if (supply.NotificationValue < supply.Value && supply.Notified) supply.Notified = false; // globalen alert zurücksetzen, wird ausserhalb des AlertIfSupplyLevelCritical Blocks durchgeführt // da die Benachrichtigung auch dann zurückgesetzt werden soll, wenn per Konfiguration die Alarmierung deaktiviert ist if (Config.Notifications.CriticalSupplyLevel < supply.Value && supply.GlobalAlertTriggered == true) { supply.GlobalAlertTriggered = false; } // prüfen ob globale events (xml konfiguriert) aktiv sind und schon geschmissen wurden if (Config.Notifications.AlertIfSupplyLevelCritical) { if (supply.GlobalAlertTriggered == false && supply.Value <= Config.Notifications.CriticalSupplyLevel) { supply.GlobalAlertTriggered = true; new Thread(x => { try { Mailer.SendMailOverSmtp(Config.Notifications.SendTo, "Prinfo.NET Notification " + printer.HostName, "@" + DateTime.Now + Environment.NewLine + "PrinterList supply level of " + description + " printer " + printer.HostName + " is critical. (" + value + "%)"); } catch (Exception ex) { Logger.Log(GlobalizationHelper.LibraryResource.GetString("smtp_error") + ex.Message, LogType.Error); } }).Start(); } } } try { fetchingManager.PrinterDatabase.UpdatePrinter(printer); } catch (ApplicationException ae) { Logger.Log("Failed updating printer database entry. Hostname = " + printer.HostName + ". " + ae.Message, LogType.Error); } try { fetchingManager.ArchivDatabase.AddEntry(printer); } catch (ApplicationException ae) { Logger.Log("Failed updating archiv database entry. Hostname = " + printer.HostName + ", " + ae.Message, LogType.Error); } }