Exemplo n.º 1
0
        public void OnReceiveMessage(MessageReceivedEventArgs e)
        {
            int nIdMes = m_nNbRecus++;

            lock (m_listeMessagesATraiter)
            {
                m_listeMessagesATraiter.Add(e.Message);
                if (e.Message is InformRequestMessage)
                {
                    InformRequestMessage mes = e.Message as InformRequestMessage;
                    if (mes.SourceEndPoint != null)
                    {
                        ResponseMessage response = new ResponseMessage(
                            mes.RequestId(),
                            mes.Version,
                            mes.Community(),
                            ErrorCode.NoError,
                            0,
                            mes.Variables());
                        try
                        {
                            response.Send(mes.SourceEndPoint);
                        }
                        catch (Exception ex)
                        {
                            Console.WriteLine(ex.ToString());
                        }
                    }
                }
            }
            TraiteMessagesATraiter();
        }
 private void CreateInformRequestMessageReceivedEventArgs(IPEndPoint sender, InformRequestMessage request, IListenerBinding binding, IList <IMembershipProvider> matchedMembership, IList <EngineUser> matchedUsers)
 {
     Sender = sender ?? throw new ArgumentNullException(nameof(sender));
     InformRequestMessage = request ?? throw new ArgumentNullException(nameof(request));
     Binding            = binding ?? throw new ArgumentNullException(nameof(binding));
     MatchedMemberships = matchedMembership;
     MatchedUsers       = matchedUsers;
 }
Exemplo n.º 3
0
        /// <summary>
        /// Initializes a new instance of the <see cref="InformRequestMessageReceivedEventArgs"/> class.
        /// </summary>
        /// <param name="sender">The sender.</param>
        /// <param name="request">The request.</param>
        /// <param name="binding">The binding.</param>
        public InformRequestMessageReceivedEventArgs(IPEndPoint sender, InformRequestMessage request, IListenerBinding binding)
        {
            if (sender == null)
            {
                throw new ArgumentNullException("sender");
            }

            if (request == null)
            {
                throw new ArgumentNullException("request");
            }

            if (binding == null)
            {
                throw new ArgumentNullException("binding");
            }

            Sender = sender;
            InformRequestMessage = request;
            Binding = binding;
        }
        public void Test()
        {
            var mock           = new Mock <ISnmpContext>();
            var mock2          = new Mock <IListenerBinding>();
            IList <Variable> v = new List <Variable>();
            var message        = new InformRequestMessage(0, VersionCode.V1, new OctetString("community"), new ObjectIdentifier("1.3.6"), 0, v);

            mock.Setup(foo => foo.Binding).Returns(mock2.Object);
            mock.Setup(foo => foo.Request).Returns(message);
            mock.Setup(foo => foo.Sender).Returns(new IPEndPoint(IPAddress.Any, 0));
            mock.Setup(foo => foo.CopyRequest(ErrorCode.NoError, 0)).Verifiable("this must be called");
            var handler = new InformRequestMessageHandler();

            Assert.Throws <ArgumentNullException>(() => handler.Handle(null, null));
            Assert.Throws <ArgumentNullException>(() => handler.Handle(mock.Object, null));
            handler.MessageReceived += delegate(object args, InformRequestMessageReceivedEventArgs e)
            {
                Assert.Equal(mock2.Object, e.Binding);
                Assert.Equal(message, e.InformRequestMessage);
                Assert.True(new IPEndPoint(IPAddress.Any, 0).Equals(e.Sender));
            };
            handler.Handle(mock.Object, new ObjectStore());
        }
Exemplo n.º 5
0
        //-----------------------------------------------
        public static CTrapInstance FromMessage(
            ISnmpMessage message,
            CAgentSnmpPourSupervision agentPourSupervision)
        {
            TrapV1Message        trapV1 = message as TrapV1Message;
            TrapV2Message        trapV2 = message as TrapV2Message;
            InformRequestMessage inform = message as InformRequestMessage;

            if (trapV1 != null)
            {
                CInterrogateurSnmp agent = new CInterrogateurSnmp();
                agent.ConnexionIp        = trapV1.AgentAddress.ToString();
                agent.Connexion.Version  = trapV1.Version;
                agent.ConnexionCommunity = trapV1.Community.ToString();
                agent.ConnexionPort      = 161;
                if (agentPourSupervision != null && agentPourSupervision.TypeAgent != null)
                {
                    agentPourSupervision.TypeAgent.PrepareDynamicSnmpAgent(agent);
                }

                CTrapInstance instance = new CTrapInstance(agent);
                instance.m_strEntreprise = trapV1.Enterprise.ToString();
                instance.m_version       = trapV1.Version;
                instance.m_strAgentIP    = trapV1.AgentAddress.ToString();
                instance.m_strCommunity  = trapV1.Community.ToString();
                instance.GenericCode     = trapV1.Generic;
                instance.SpecificValue   = trapV1.Specific.ToString();
                instance.AgentSnmp       = agentPourSupervision;
                foreach (Variable variable in trapV1.Variables())
                {
                    CTrapFieldValueBrute valeur = new CTrapFieldValueBrute(variable.Id.ToString(), variable.Data.ToString());
                    instance.AddValue(valeur);
                }
                return(instance);
            }
            else if (trapV2 != null)
            {
                CInterrogateurSnmp agent = new CInterrogateurSnmp();
                if (trapV2.SenderIP == null)
                {
                    return(null);
                }
                agent.ConnexionIp       = trapV2.SenderIP.ToString();
                agent.Connexion.Version = trapV2.Version;
                string strCommunauté = "";
                if (trapV2.Parameters != null)
                {
                    if (trapV2.Parameters.UserName != null)
                    {
                        strCommunauté = trapV2.Parameters.UserName.ToString();
                    }
                }
                agent.ConnexionCommunity = strCommunauté;
                agent.ConnexionPort      = 161;
                if (agentPourSupervision != null && agentPourSupervision.TypeAgent != null)
                {
                    agentPourSupervision.TypeAgent.PrepareDynamicSnmpAgent(agent);
                }

                CTrapInstance instance = new CTrapInstance(agent);
                instance.m_strEntreprise = trapV2.Enterprise.ToString();
                instance.m_strAgentIP    = trapV2.SenderIP.ToString();
                instance.m_version       = trapV2.Version;
                instance.m_strCommunity  = strCommunauté;
                if (trapV2.Enterprise.ToString() == ".1.3.6.1.6.3.1.1.5.1")
                {
                    instance.GenericCode = GenericCode.ColdStart;
                }
                else if (trapV2.Enterprise.ToString() == ".1.3.6.1.6.3.1.1.5.2")
                {
                    instance.GenericCode = GenericCode.WarmStart;
                }
                else if (trapV2.Enterprise.ToString() == ".1.3.6.1.6.3.1.1.5.3")
                {
                    instance.GenericCode = GenericCode.LinkDown;
                }
                else if (trapV2.Enterprise.ToString() == ".1.3.6.1.6.3.1.1.5.4")
                {
                    instance.GenericCode = GenericCode.LinkUp;
                }
                else if (trapV2.Enterprise.ToString() == ".1.3.6.1.6.3.1.1.5.5")
                {
                    instance.GenericCode = GenericCode.AuthenticationFailure;
                }
                else if (trapV2.Enterprise.ToString() == ".1.3.6.1.6.3.1.1.5.6")
                {
                    instance.GenericCode = GenericCode.EgpNeighborLoss;
                }
                else
                {
                    instance.GenericCode = GenericCode.EnterpriseSpecific;
                    int nPos = instance.m_strEntreprise.LastIndexOf(".");
                    if (nPos >= 0)
                    {
                        instance.m_strSpecific   = instance.m_strEntreprise.Substring(nPos + 1);
                        instance.m_strEntreprise = instance.m_strEntreprise.Substring(0, nPos);
                    }
                }
                instance.AgentSnmp = agentPourSupervision;
                foreach (Variable variable in trapV2.Variables())
                {
                    CTrapFieldValueBrute valeur = new CTrapFieldValueBrute(variable.Id.ToString(), variable.Data.ToString());
                    instance.AddValue(valeur);
                }
                return(instance);
            }
            return(null);
        }
 /// <summary>
 /// Initializes a new instance of the <see cref="InformRequestMessageReceivedEventArgs"/> class.
 /// </summary>
 /// <param name="sender">The sender.</param>
 /// <param name="request">The request.</param>
 /// <param name="binding">The binding.</param>
 /// <param name="matchedMembership">the members</param>
 /// <param name="matchedMembership">the users</param>
 public InformRequestMessageReceivedEventArgs(IPEndPoint sender, InformRequestMessage request, IListenerBinding binding, IList <IMembershipProvider> matchedMembership, IList <EngineUser> matchedUsers)
 {
     CreateInformRequestMessageReceivedEventArgs(sender, request, binding, matchedMembership, matchedUsers);
 }