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; }
/// <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()); }
//----------------------------------------------- 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); }