Exemplo n.º 1
0
        /// <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;
            }
        }
Exemplo n.º 2
0
        /// <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);
            }
        }