//----------------------------------------------------------
        public IEnumerable <CAgentSnmpPourSupervision> GetAgents(CTypeAgentPourSupervision typeAgent)
        {
            CListeEntitesDeMemoryDb <CAgentSnmpPourSupervision> lst = new CListeEntitesDeMemoryDb <CAgentSnmpPourSupervision>(DataBase,
                                                                                                                              new CFiltreMemoryDb(CTypeAgentPourSupervision.c_champId + "=@1", typeAgent.Id));

            return(lst);
        }
        //-------------------------------------------------------------------
        public void Init(CTypeEntiteSnmpPourSupervision typeEntite,
                         CTypeAgentPourSupervision typeAgent)
        {
            m_typeAgent  = typeAgent;
            m_typeEntite = typeEntite;

            InitChamps();
        }
Exemple #3
0
        //---------------------------------------------

        /// /////////////////////////////////////////////
        public CAgentSnmpPourSupervision GetAgentPourSupervision(CMemoryDb database, bool bAvecEntites)
        {
            if (database == null)
            {
                database = CMemoryDbPourSupervision.GetMemoryDb(ContexteDonnee);
            }
            CAgentSnmpPourSupervision agent = new CAgentSnmpPourSupervision(database);

            if (!agent.ReadIfExist(Id.ToString(), false))
            {
                agent.CreateNew(Id.ToString());
            }
            else
            if (!agent.IsToRead())
            {
                return(agent);
            }
            agent.Row[CMemoryDb.c_champIsToRead] = false;
            CTypeAgentPourSupervision typeAgent = TypeAgent.GetTypeAgentPourSupervision(database);

            agent.TypeAgent     = typeAgent;
            agent.Ip            = SnmpIp;
            agent.Timeout       = Timeout;
            agent.SnmpPort      = SnmpPort;
            agent.SnmpVersion   = SnmpVersion;
            agent.Communaute    = SnmpCommunaute;
            agent.TrapsIpString = TrapsIpsString;
            foreach (CSnmpPollingSetup setup in ParametresPolling)
            {
                CSnmpPollingSetup newSetup = database.ImporteObjet(setup, true, false) as CSnmpPollingSetup;
                newSetup.Agent = agent;
            }
            foreach (CSnmpHotelPollingSetup setup in ParametresHotelPolling)
            {
                CSnmpHotelPollingSetup newSetup = database.ImporteObjet(setup, true, false) as CSnmpHotelPollingSetup;
                newSetup.Agent = agent;
            }
            if (bAvecEntites)
            {
                foreach (CEntiteSnmp entite in EntitesSnmp)
                {
                    if (entite.EntiteSnmpParente == null)
                    {
                        CTypeEntiteSnmpPourSupervision typeEntite = typeAgent.TypesEntites.FirstOrDefault(te => te.Id == entite.TypeEntiteSnmp.Id.ToString());
                        if (typeEntite != null)
                        {
                            CEntiteSnmpPourSupervision ett = entite.GetEntitePourSupervision(typeEntite);
                            if (ett != null)
                            {
                                ett.AgentSnmp = agent;
                            }
                        }
                    }
                }
            }
            return(agent);
        }
        public static bool EditeTypeEntite(CTypeEntiteSnmpPourSupervision typeEntite,
                                           CTypeAgentPourSupervision typeAgent)
        {
            CFormEditTypeEntiteSnmp        form      = new CFormEditTypeEntiteSnmp();
            CTypeEntiteSnmpPourSupervision typeEdite = CCloner2iSerializable.Clone(typeEntite) as CTypeEntiteSnmpPourSupervision;

            form.m_panelEdition.Init(typeEdite, typeAgent);
            bool bResult = false;

            if (form.ShowDialog() == DialogResult.OK)
            {
                CCloner2iSerializable.CopieTo(typeEdite, typeEntite);
                bResult = true;
            }
            form.Dispose();
            return(bResult);
        }
Exemple #5
0
        public void Init(
            CSnmpConnexion connexion,
            IDefinition rootDefinition,
            CTypeAgentPourSupervision baseHandlers,
            IBaseTypesAlarmes baseTypes)
        {
            m_connexion = connexion;
            m_browser.Init(rootDefinition, connexion);
            m_baseHandlers = baseHandlers;
            CDynamicSnmpAgent agent = new CDynamicSnmpAgent(rootDefinition);

            agent.Connexion             = connexion;
            m_baseHandlers.AgentAssocie = agent;
            m_baseTypesAlarmes          = baseTypes;

            FillListeHandlers();
            FillListeQueries();
            FillListeTypeEntites();
        }
Exemple #6
0
        /// /////////////////////////////////////////////////////////
        public CTypeAgentPourSupervision GetTypeAgentPourSupervision(CMemoryDb database)
        {
            if (database == null)
            {
                database = CMemoryDbPourSupervision.GetMemoryDb(ContexteDonnee);
            }
            CTypeAgentPourSupervision typeAgent = new CTypeAgentPourSupervision(database);

            if (!typeAgent.ReadIfExist(Id.ToString(), false))
            {
                typeAgent.CreateNew(Id.ToString());
            }
            else
            if (!typeAgent.IsToRead())
            {
                return(typeAgent);
            }
            typeAgent.Row[CMemoryDb.c_champIsToRead] = false;
            foreach (CEasyQuery query in Queries)
            {
                typeAgent.AddQuery(query);
            }
            typeAgent.Fonctions = FonctionsDynamiques;
            foreach (CTrapHandler handler in TrapHandlers)
            {
                database.ImporteObjet(handler, true, false);
            }
            foreach (CTypeEntiteSnmp typeEntite in TypesEntites)
            {
                if (typeEntite.TypeParent == null)
                {
                    typeEntite.GetTypeEntitePourSupervision(database, true);
                }
            }
            foreach (CAgentFinderFromKey finder in AgentFinders)
            {
                database.ImporteObjet(finder, true, false);
            }
            return(typeAgent);
        }
Exemple #7
0
        //-----------------------------------------------
        private void TraiteMessagesATraiter()
        {
            if (m_nWaitingCounter > 5)
            {
                return;
            }
            m_nWaitingCounter++;
            lock (typeof(CLockerTraiteMessage))
            {
                m_nWaitingCounter--;
                List <ISnmpMessage> lstMessages = new List <ISnmpMessage>();
                lock (m_listeMessagesATraiter)
                {
                    lstMessages.AddRange(m_listeMessagesATraiter);
                    m_listeMessagesATraiter.Clear();
                }



                foreach (ISnmpMessage message in lstMessages)
                {
                    m_nNbMessages++;
                    DateTime      dtChrono   = DateTime.Now;
                    string        strIpAgent = "";
                    TrapV1Message trapV1     = message as TrapV1Message;
                    TrapV2Message trapV2     = message as TrapV2Message;
                    if (trapV1 != null)
                    {
                        m_gestionnaireAlarmes.Trace.Write(
                            "Trap received : " + trapV1.GetTraceInfo(),
                            ALTRACE.TRACE, ALTRACE.DEBUG);
                        strIpAgent = trapV1.AgentAddress.ToString();
                        StringBuilder bl = new StringBuilder();
                        foreach (Variable valeur in trapV1.Variables())
                        {
                            bl.Append(valeur.Id.ToString());
                            bl.Append("=");
                            bl.Append(valeur.Data.ToString());
                            bl.Append("\r\n");
                        }
                        m_gestionnaireAlarmes.Trace.Write(
                            "Trap fields : \r\n" + bl.ToString(),
                            ALTRACE.TRACE, ALTRACE.DEBUG);
                    }
                    else if (trapV2 != null)
                    {
                        m_gestionnaireAlarmes.Trace.Write(
                            "Trap received : " + trapV2.GetTraceInfo(),
                            ALTRACE.TRACE, ALTRACE.DEBUG);
                        if (trapV2.SenderIP != null)
                        {
                            strIpAgent = trapV2.SenderIP.ToString();
                        }
                        StringBuilder bl = new StringBuilder();
                        foreach (Variable valeur in trapV2.Variables())
                        {
                            bl.Append(valeur.Id.ToString());
                            bl.Append("=");
                            bl.Append(valeur.Data.ToString());
                            bl.Append("\r\n");
                        }
                        m_gestionnaireAlarmes.Trace.Write(
                            "Trap fields : \r\n" + bl.ToString(),
                            ALTRACE.TRACE, ALTRACE.DEBUG);
                    }
                    try
                    {
                        CTrapInstance trapTmp = CTrapInstance.FromMessage(message, null);
                        if (trapTmp == null)
                        {
                            m_gestionnaireAlarmes.Trace.Write(
                                "Can not interpret message " + message.ToString(), ALTRACE.TRACE, ALTRACE.DEBUG);
                            continue;
                        }
                        IEnumerable <CAgentSnmpPourSupervision> lstAgents = GetAgentsForTrap(trapTmp, strIpAgent);


                        bool bHasAgent = false;

                        foreach (CAgentSnmpPourSupervision agent in lstAgents)
                        {
                            m_gestionnaireAlarmes.Trace.Write(
                                "Trap managed by agent " + agent.Id,
                                ALTRACE.DEBUG);
                            CTypeAgentPourSupervision typeAgent = agent.TypeAgent;
                            if (typeAgent != null)
                            {
                                CTrapInstance trap = CTrapInstance.FromMessage(
                                    message,
                                    agent);
                                if (trap != null)
                                {
                                    IEnumerable <CTrapHandler> lstTrapsHandlers = typeAgent.GetTrapsHandlersAAppliquer(trap);
                                    foreach (CTrapHandler handler in lstTrapsHandlers)
                                    {
                                        m_gestionnaireAlarmes.Trace.Write("Apply trap handler " + handler.Libelle,
                                                                          ALTRACE.DEBUG);
                                        handler.CreateAlarmesOnTrap(trap, m_gestionnaireAlarmes.Trace);
                                    }
                                    if (lstTrapsHandlers.Count() == 0)
                                    {
                                        m_gestionnaireAlarmes.Trace.Write(
                                            "No trap handler for this trap",
                                            ALTRACE.DEBUG);
                                    }

                                    foreach (CAlarmeACreer creation in trap.AlarmesACreer)
                                    {
                                        m_gestionnaireAlarmes.CreateAlarme(creation, EModeRemonteeAlarmes.InscrireARemonterMaisNePasLeFaire);
                                    }

                                    if (trap.AlarmesACreer.Count() == 0)
                                    {
                                        m_gestionnaireAlarmes.Trace.Write("No alarm creator for this trap",
                                                                          ALTRACE.DEBUG);
                                    }
                                }
                            }
                        }
                        if (!bHasAgent)
                        {
                            m_gestionnaireAlarmes.Trace.Write(
                                "No agent for this trap",
                                ALTRACE.DEBUG);
                        }
                    }

                    catch (Exception ex)
                    {
                        m_gestionnaireAlarmes.Trace.Write(
                            "Exception : " + ex.Message,
                            ALTRACE.DEBUG);
                        lock (m_listeMessagesATraiter)
                        {
                            m_listeMessagesATraiter.InsertRange(0, lstMessages);
                        }
                        break;
                    }
                    TimeSpan sp = DateTime.Now - dtChrono;
                    if (m_nNbMessages % 100 == 0)
                    {
                        Console.WriteLine("Traite alrm (" + m_nNbMessages + "): " + sp.TotalMilliseconds);
                    }
                }
            }
            m_gestionnaireAlarmes.SendAlarmes();
        }