/// <summary> /// Initializes a new instance of the <see cref="SnmpApplication"/> class. /// </summary> /// <param name="owner">The owner.</param> /// <param name="logger">The logger.</param> /// <param name="store">The store.</param> /// <param name="provider">The provider.</param> /// <param name="factory">The factory.</param> public SnmpApplication(SnmpApplicationFactory owner, ILogger logger, ObjectStore store, IMembershipProvider provider, MessageHandlerFactory factory) { _owner = owner; _provider = provider; _logger = logger; _store = store; _factory = factory; }
public static void AssemblyInitialize(TestContext context) { // set the http message handler factory to the mode we want for the entire assmebly test execution MessageHandlerFactory.Mode = MessageHandlerMode.Fake; // setup IOC so test classes can get the shared message handler ServiceLocator.SetLocatorProvider(() => SimpleIoc.Default); // responses are in a ziparchive that is also referenced by the DeploymentItem attributes var resources = new ZipResources(Path.Combine(context.DeploymentDirectory, "FakeResponses.zip")); SimpleIoc.Default.Register(() => MessageHandlerFactory.CreateMessageHandler(resources)); }
private async Task HandleNextMessageAsync(string messageEnvelopeAsString) { try { var payload = JsonConvert.DeserializeObject <MessageBrokerEnvelope <MessageBrokerExternalOrderResponseDTO> >(messageEnvelopeAsString); var handler = MessageHandlerFactory.GetHandler(MessageTypes.OrderItemsProcessedByProvider); await handler.ExecuteAsync(payload); } catch (Exception ex) { throw new Exception("Message processing failed.", ex); } }
static void ReceiveData() { while (true) { byte[] data = new byte[256]; int bytes = client.GetStream().Read(data, 0, data.Length); string responseData = System.Text.Encoding.ASCII.GetString(data, 0, bytes); GenericMessage genericMessage = JsonSerializer.Deserialize <GenericMessage>(responseData); IMessage message = MessageFactory.GetMessage(genericMessage.MessageId, responseData); IMessageHandler messageHandler = MessageHandlerFactory.GetMessageHandler(genericMessage.MessageId); messageHandler.Execute(client, message); } }
public void ShouldGetAllHandlers( [Frozen] Mock <IServiceProvider> services, MessageHandlerFactory sut) { var handlers = Fixture.CreateMany <IMessageHandler <TestMessage> >(); services.Setup(x => x.GetService(typeof(IEnumerable <IMessageHandler <TestMessage> >))) .Returns(handlers); var result = sut.GetHandlersFor <TestMessage>(); Assert.Equal(handlers, result); }
public static async Task RunGatewayAsync(this ServiceBuilder builder) { var config = builder.ServiceProvider.GetRequiredService <IOptionsMonitor <GatewayConfiguration> >().CurrentValue; var logger = builder.ServiceProvider.GetRequiredService <ILoggerFactory>().CreateLogger("F1.Gateway"); logger.LogInformation("RunGatewayAsync, PlacementDriverAddress:{0}, Host ListenPort:{1}, GatewayAddress:{2}", config.PlacementDriverAddress, config.ListenPort, config.GatewayAddress); builder.SetPDAddress(config.PlacementDriverAddress); var handlerFactory = new MessageHandlerFactory(builder.ServiceProvider); var gatewayClientFactory = builder.ServiceProvider.GetRequiredService <GatewayClientFactory>(); await builder.Listen(config.ListenPort, handlerFactory, new RpcMessageCodec()).ConfigureAwait(false); await builder.PrepareGatewayAndRunAsync(config, logger); }
public static void Main(string[] args) { if (args.Length != 0) { return; } var users = new UserRegistry(); users.Add(new OctetString("neither"), DefaultPrivacyProvider.DefaultPair); users.Add(new OctetString("authen"), new DefaultPrivacyProvider(new MD5AuthenticationProvider(new OctetString("authentication")))); users.Add(new OctetString("privacy"), new DESPrivacyProvider(new OctetString("privacyphrase"), new MD5AuthenticationProvider(new OctetString("authentication")))); var trapv1 = new TrapV1MessageHandler(); trapv1.MessageReceived += WatcherTrapV1Received; var trapv1Mapping = new HandlerMapping("v1", "TRAPV1", trapv1); var trapv2 = new TrapV2MessageHandler(); trapv2.MessageReceived += WatcherTrapV2Received; var trapv2Mapping = new HandlerMapping("v2,v3", "TRAPV2", trapv2); var inform = new InformRequestMessageHandler(); inform.MessageReceived += WatcherInformRequestReceived; var informMapping = new HandlerMapping("v2,v3", "INFORM", inform); var store = new ObjectStore(); var v1 = new Version1MembershipProvider(new OctetString("public"), new OctetString("public")); var v2 = new Version2MembershipProvider(new OctetString("public"), new OctetString("public")); var v3 = new Version3MembershipProvider(); var membership = new ComposedMembershipProvider(new IMembershipProvider[] { v1, v2, v3 }); var handlerFactory = new MessageHandlerFactory(new[] { trapv1Mapping, trapv2Mapping, informMapping }); var pipelineFactory = new SnmpApplicationFactory(store, membership, handlerFactory); using (var engine = new SnmpEngine(pipelineFactory, new Listener { Users = users }, new EngineGroup())) { engine.Listener.AddBinding(new IPEndPoint(IPAddress.Any, 162)); engine.Start(); Console.WriteLine("#SNMP is available at http://sharpsnmplib.codeplex.com"); Console.WriteLine("Press any key to stop . . . "); Console.Read(); engine.Stop(); } }
public async Task RoundtripPostalCode() { MessageHandlerFactory.Mode = MessageHandlerMode.Capture; var handler = MessageHandlerFactory.CreateMessageHandler(new FileSystemResources(TestContext.TestRunDirectory)); var service = new GeoCoder(handler, CredentialStore.RetrieveObject("bing.key.json").Key); var coord = await service.GetCoordinate(new Address() { postalCode = "55116", countryRegion = "US" }); var address = await service.GetAddress(coord.Item1, coord.Item2); Assert.AreEqual("55116", address.postalCode); }
static void MessageHandle() { while (true) { lock (Client.ReceivedMessages) { foreach (var message in Client.ReceivedMessages) { MessageHandlerFactory.GetMessageHandler(message.MessageId).Execute(message); } Client.ReceivedMessages.Clear(); } } }
public static void AssemblyInitialize(TestContext context) { // set the http message handler factory to the mode we want for the entire assmebly test execution MessageHandlerFactory.Mode = MessageHandlerMode.Fake; // folders where mock responses are stored and where captured response should be saved var mockFolder = context.DeploymentDirectory; // the folder where the unit tests are running var captureFolder = Path.Combine(context.TestRunDirectory, @"..\..\MockResponses\"); // kinda hacky but this should be the solution folder // here we don't want to serialize or include our api key in response lookups so // pass a lambda that will indicate to the serialzier to filter that param out var store = new FileSystemResources(mockFolder); Handler = MessageHandlerFactory.CreateMessageHandler(store); }
/// <summary> /// Gets the message handler candidates for the specified message, i.e., the message handlers which return a confidence /// higher than one for the current message. /// </summary> /// <param name="message">The message info.</param> /// <returns></returns> private static Dictionary <MessageHandler, MessageHandlingResponse> GetMessageHandlerCandidates(Message message) { Dictionary <MessageHandler, MessageHandlingResponse> messageHandlerCandidates = new Dictionary <MessageHandler, MessageHandlingResponse>(); List <MessageHandler> allMessageHandlers = MessageHandlerFactory.InitializeMessageHandlers(); foreach (MessageHandler messageHandlerCandidate in allMessageHandlers) { MessageHandlingResponse handlingResponse = messageHandlerCandidate.CanHandle(message); if (handlingResponse.Confidence > 0) { messageHandlerCandidates[messageHandlerCandidate] = handlingResponse; } } return(messageHandlerCandidates); }
public static IServiceCollection AddMessageHandlers(this IServiceCollection services) { services.RegisterHandler <MessageOne, MessageOneHandler>(); services.RegisterHandler <MessageTwo, MessageTwoHandler>(); // some string constants for message types would be better. services.AddSingleton <IMessageHandlerFactory>(serviceProvider => { var factory = new MessageHandlerFactory(); factory.RegisterHandler("MessageOne", serviceProvider.GetService <MessageHandlerWrapper <MessageOne> >); factory.RegisterHandler("MessageTwo", serviceProvider.GetService <MessageHandlerWrapper <MessageTwo> >); return(factory); }); services.AddSingleton <IMessageHandler, MessageRouter>(); return(services); }
public void Rework(string strBSID, string strBOID, int iProcInstID, string strStepName, string strApproverId, UserAction eAction, string strComment, DateTime dtTime) { strBSID = strBSID + "_" + System.Reflection.MethodBase.GetCurrentMethod().Name; string errMsg = string.Empty; int reqState = 1; try { MessageContext ctx = new MessageContext() { iProcInstID = iProcInstID, strBOID = strBOID, strBSID = strBSID, strComment = strComment, dtTime = dtTime, strStepName = strStepName, eAction = (int)eAction, ApproveStatus = (int)ApproveStatus.draft, strApproverId = strApproverId }; MessageHandlerBase handler = MessageHandlerFactory.GetMessageHandler(strBSID, ctx); handler.Execute(); } catch (Exception ex) { errMsg = ex.Message; reqState = 0; } finally { LogBLL.WriteLogInterface("strBSID:" + strBSID + " strBOID:" + strBOID + " iProcInstID:" + iProcInstID + " strStepName:" + strStepName + " strApproverId:" + strApproverId + " eAction:" + eAction.ToString() + " strComment:" + strComment + " dtTime:" + dtTime.ToString(), "", " 流程审批(撤回,退回)", reqState, "BPM", "电商资金", errMsg, "WebService"); } }
private void receive() { string received; MessageHandlerFactory factory = new MessageHandlerFactory(connection, this, connection.IP.Address); try { while ((received = connection.readLine()) != null) { MessageHandler handler = factory.GetMessageHandler(received); handler.handleMessage(received); } } catch { disconnect(); } }
static void RegisterOnMessageHandlerAndReceiveMessages(string topicName) { // Configure the message handler options in terms of exception handling, number of concurrent messages to deliver, etc. var messageHandlerOptions = new MessageHandlerOptions(ExceptionReceivedHandler) { // Maximum number of concurrent calls to the callback ProcessMessagesAsync(), set to 1 for simplicity. // Set it according to how many messages the application wants to process in parallel. MaxConcurrentCalls = 1, // Indicates whether MessagePump should automatically complete the messages after returning from User Callback. // False below indicates the Complete will be handled by the User Callback as in `ProcessMessagesAsync` below. AutoComplete = false }; var messageHandler = new MessageHandlerFactory().CreateFor(topicName); // Register the function that processes messages. subscriptionClient.RegisterMessageHandler(messageHandler.ProcessMessagesAsync, messageHandlerOptions); }
void MessageHandle() { while (true) { lock (client.ReceivedMessages) { foreach (var message in client.ReceivedMessages) { var messageHandler = MessageHandlerFactory.GetMessageHandler(message.MessageId); if (messageHandler != null) { messageHandler.Execute(this, message); } } client.ReceivedMessages.Clear(); } } }
/// <summary> /// Initializes a new instance of the <see cref="PartDataManagementSetup"/> class. /// </summary> public PartDataManagementSetup() { _Logger.EnteringMethodPart(nameof(PartDataManagementSetup)); //Compose external parts IServiceLocator _serviceLocator = ServiceLocator.Current; //string _configurationFileName = _serviceLocator.GetInstance<string>(CompositionSettings.ConfigurationFileNameContract); m_ViewModel = _serviceLocator.GetInstance <ProducerViewModel>(); EncodingFactory = _serviceLocator.GetInstance <IEncodingFactory>(); _Logger.Composed(nameof(EncodingFactory), EncodingFactory.GetType().FullName); MessageHandlerFactory = _serviceLocator.GetInstance <IMessageHandlerFactory>(); _Logger.Composed(nameof(MessageHandlerFactory), MessageHandlerFactory.GetType().FullName); //compose internal parts ConfigurationFactory = new PartConfigurationFactory(ConfigurationFilePath); PartBindingFactory pbf = new PartBindingFactory(); _DTOProvider = pbf; BindingFactory = pbf; }
public void CreateResult(string strBSID, string strBOID, bool bSuccess, int iProcInstID, string strMessage) { strBSID = strBSID + "_" + System.Reflection.MethodBase.GetCurrentMethod().Name; string errMsg = string.Empty; int reqState = 1; try { if (!bSuccess) { reqState = 0; errMsg = "创建流程实例未成功!"; return; } MessageContext ctx = new MessageContext() { bSuccess = bSuccess, iProcInstID = iProcInstID, strBOID = strBOID, strBSID = strBSID, strMessage = strMessage, dtTime = DateTime.Now, ApproveStatus = (int)ApproveStatus.in_approval }; MessageHandlerBase handler = MessageHandlerFactory.GetMessageHandler(strBSID, ctx); handler.Execute(); } catch (Exception ex) { errMsg = ex.Message; reqState = 0; } finally { LogBLL.WriteLogInterface("strBSID:" + strBSID + " strBOID:" + strBOID + " bSuccess:" + bSuccess + " iProcInstID:" + iProcInstID + " strMessage:" + strMessage, "", "创建流程结束接口", reqState, "BPM", "电商资金", errMsg, "WebService"); } }
/// <summary> /// Initializes a new instance of the <see cref="LoggerManagementSetup"/> class. /// </summary> public LoggerManagementSetup() { _logger.EnteringMethodPart(); // get external parts to compose IServiceLocator _serviceLocator = ServiceLocator.Current; string _ConsumerConfigurationFileName = _serviceLocator.GetInstance <string>(ConsumerCompositionSettings.ConfigurationFileNameContract); _ViewModel = _serviceLocator.GetInstance <ConsumerViewModel>(ConsumerCompositionSettings.ViewModelContract); _logger.Composed(nameof(_ViewModel), _ViewModel.GetType().FullName); EncodingFactory = _serviceLocator.GetInstance <IEncodingFactory>(); _logger.Composed(nameof(EncodingFactory), EncodingFactory.GetType().FullName); MessageHandlerFactory = _serviceLocator.GetInstance <IMessageHandlerFactory>(); _logger.Composed(nameof(MessageHandlerFactory), MessageHandlerFactory.GetType().FullName); // setup local functionality ConfigurationFactory = new ConsumerConfigurationFactory(_ConsumerConfigurationFileName); _logger.Composed(nameof(ConfigurationFactory), ConfigurationFactory.GetType().FullName); BindingFactory = new PartIBindingFactory(_ViewModel); _logger.Composed(nameof(BindingFactory), BindingFactory.GetType().FullName); }
public override void OnMessage(string message) { var webSocketMessage = JsonConvert.DeserializeObject <WebSocketMessage>(message); if (webSocketMessage != null) { if (!IsAuthenticated) { var handler = new AuthenticationHandler(SiteId); var result = handler.ProcessMessage(webSocketMessage); IsAuthenticated = handler.IsAuthenticated; Send(JsonConvert.SerializeObject(result)); } else { var webSwitchMessageHandler = MessageHandlerFactory.GetMessageHandler(webSocketMessage.Type, SiteId); var result = webSwitchMessageHandler.ProcessMessage(webSocketMessage); if (result != null) { switch (result.BroadcastType) { case WebSocketBroadcastType.Pi: WebSocketSession.SendToPi(JsonConvert.SerializeObject(result)); break; case WebSocketBroadcastType.Web: WebSocketSession.SendToWeb(JsonConvert.SerializeObject(result)); break; case WebSocketBroadcastType.All: WebSocketSession.Broadcast(JsonConvert.SerializeObject(result)); break; } } } } }
public override void Run() { var mainArgs = new CefMainArgs(new string[] { }); var app = new OffscreenApp(); CefRuntime.ExecuteProcess(mainArgs, app, IntPtr.Zero); // init CEF var settings = new CefSettings { SingleProcess = false, MultiThreadedMessageLoop = true, LogSeverity = CefLogSeverity.Error, LogFile = "CefGlue.log" }; CefRuntime.Initialize(mainArgs, settings, app, IntPtr.Zero); Trace.WriteLine("Starting processing of messages"); // Initiates the message pump and callback is invoked for each message that is received, calling close on the client will stop the pump. Client.OnMessage((receivedMessage) => { try { // Process the message Trace.WriteLine("Processing Service Bus message: " + receivedMessage.SequenceNumber.ToString()); var handler = MessageHandlerFactory.GetMessageHandler(receivedMessage.ContentType); handler.Handle(receivedMessage, CompletedClient); receivedMessage.Complete(); } catch (Exception ex) { // Handle any message processing specific exceptions here } }); CompletedEvent.WaitOne(); }
public MusicSheet LoadMidi(string path) { this.LoadFile(path); for (int i = 0; i < midiContext.Sequence.Count; i++) { Track track = midiContext.Sequence[i]; foreach (var midiEvent in track.Iterator()) { var handlerType = midiEvent.MidiMessage.MessageType.ToString(); IMessageHandler handler = new MessageHandlerFactory().Get(handlerType); if (handler != null) { handler.handle(midiContext, midiEvent); } } } return(midiContext.MusicSheet); }
public Client(Server parent, TcpClient client, MessageHandlerFactory mf) { this.parent = parent; this.client = client; this.client.Tag = this; this.mf = mf; this.client.PacketReceive += this.client_PacketReceive; this.client.Disconnected += delegate(object sender, EventArgs args) { if (this.Player != null) { this.Leave(this.Player.Channel); } }; this.client.Disconnected += delegate(object sender, EventArgs args) { if (this.Disconnected != null) { this.Disconnected(sender, args); } }; }
static void Main(string[] args) { var q = new MessageQueue(); #region in another process var msg = new SendEmailMessage() { EmailAddress = "*****@*****.**" }; q.SendMessage(msg); #endregion var outMsg = q.GetNextMessage(); var handlerFactory = new MessageHandlerFactory(); var handler = handlerFactory.Create(msg); handler.ProcessMessage(msg); }
static void ReceiveData() { while (client != null) { try { lock (client) { byte[] data = new byte[1024]; int bytes = client.GetStream().Read(data, 0, data.Length); string responseData = System.Text.Encoding.UTF8.GetString(data, 0, bytes); GenericMessage genericMessage = JsonSerializer.Deserialize <GenericMessage>(responseData); IMessage message = MessageFactory.GetMessage(genericMessage.MessageId, responseData); IMessageHandler messageHandler = MessageHandlerFactory.GetMessageHandler(genericMessage.MessageId); messageHandler.Execute(client, message); } } catch (System.IO.IOException) { } catch (System.ObjectDisposedException) { } } }
static void HandleClient(Server server, TcpClient client) { byte[] bytes = new byte[1024]; string data; while (true) { NetworkStream stream = client.GetStream(); int i; while ((i = stream.Read(bytes, 0, bytes.Length)) != 0) { data = System.Text.Encoding.UTF8.GetString(bytes, 0, i); GenericMessage genericMessage = JsonSerializer.Deserialize <GenericMessage>(data); IMessage message = MessageFactory.GetMessage(genericMessage.MessageId, data); IMessageHandler handler = MessageHandlerFactory.GetMessageHandler(genericMessage.MessageId); handler.Execute(server, client, message); } } }
private static SnmpEngine CreateSnmpEngine(RavenServer server, ObjectStore objectStore) { var v2MembershipProvider = new Version2MembershipProvider(new OctetString(server.Configuration.Monitoring.Snmp.Community), new OctetString(server.Configuration.Monitoring.Snmp.Community)); var v3MembershipProvider = new Version3MembershipProvider(); var membershipProvider = new ComposedMembershipProvider(new IMembershipProvider[] { v2MembershipProvider, v3MembershipProvider }); var handlers = new[] { new HandlerMapping("V2,V3", "GET", new GetMessageHandler()), new HandlerMapping("V2,V3", "GETNEXT", new GetNextMessageHandler()), new HandlerMapping("V2,V3", "GETBULK", new GetBulkMessageHandler()) }; var messageHandlerFactory = new MessageHandlerFactory(handlers); var factory = new SnmpApplicationFactory(new SnmpLogger(Logger), objectStore, membershipProvider, messageHandlerFactory); var listener = new Listener(); listener.Users.Add(new OctetString("ravendb"), new DefaultPrivacyProvider(new SHA1AuthenticationProvider(new OctetString(server.Configuration.Monitoring.Snmp.Community)))); var engineGroup = new EngineGroup(); var engine = new SnmpEngine(factory, listener, engineGroup); engine.Listener.AddBinding(new IPEndPoint(IPAddress.Any, server.Configuration.Monitoring.Snmp.Port)); engine.Listener.ExceptionRaised += (sender, e) => { if (Logger.IsOperationsEnabled) { Logger.Operations("SNMP error: " + e.Exception.Message, e.Exception); } }; return(engine); }
public static void Main(string[] args) { if (args.Length != 0) { return; } var users = new EngineUserRegistry(); users.Add(new OctetString("neither"), DefaultPrivacyProvider.DefaultPair); users.Add( new OctetString("authen"), new DefaultPrivacyProvider(new MD5AuthenticationProvider(new OctetString("authentication")))); if (DESPrivacyProvider.IsSupported) { users.Add( new OctetString("privacy"), new DESPrivacyProvider( new OctetString("privacyphrase"), new MD5AuthenticationProvider(new OctetString("authentication")))); // for snmpsendtrap testing users.Add(new OctetString("trap"), new DESPrivacyProvider( new OctetString("privacyphrase"), new MD5AuthenticationProvider(new OctetString("authentication"))) { EngineIds = new List <OctetString> { new OctetString(ByteTool.Convert("80001F8880E9630000D61FF449")) } }); } else { Console.WriteLine("DES privacy is not supported by .NET Core natively. Switched to BouncyCastle implementation."); users.Add( new OctetString("privacy"), new Samples.BouncyCastle.BouncyCastleDESPrivacyProvider( new OctetString("privacyphrase"), new MD5AuthenticationProvider(new OctetString("authentication")))); // for snmpsendtrap testing users.Add(new OctetString("trap"), new Samples.BouncyCastle.BouncyCastleDESPrivacyProvider( new OctetString("privacyphrase"), new MD5AuthenticationProvider(new OctetString("authentication"))) { EngineIds = new List <OctetString> { new OctetString(ByteTool.Convert("80001F8880E9630000D61FF449")) } }); } if (AESPrivacyProviderBase.IsSupported) { users.Add(new OctetString("aes"), new AESPrivacyProvider(new OctetString("privacyphrase"), new MD5AuthenticationProvider(new OctetString("authentication")))); users.Add(new OctetString("aes192"), new AES192PrivacyProvider(new OctetString("privacyphrase"), new MD5AuthenticationProvider(new OctetString("authentication")))); users.Add(new OctetString("aes256"), new AES256PrivacyProvider(new OctetString("privacyphrase"), new MD5AuthenticationProvider(new OctetString("authentication")))); // for snmpsendtrap testing users.Add(new OctetString("trapAES"), new AESPrivacyProvider( new OctetString("privacyphrase"), new MD5AuthenticationProvider(new OctetString("authentication"))) { EngineIds = new List <OctetString> { new OctetString(ByteTool.Convert("80001F8880E9630000D61FF449")) } }); } else { Console.WriteLine("AES privacy is not supported by .NET Core natively. Switched to BouncyCastle implementation."); users.Add(new OctetString("aes"), new Samples.BouncyCastle.BouncyCastleAESPrivacyProvider(new OctetString("privacyphrase"), new MD5AuthenticationProvider(new OctetString("authentication")))); users.Add(new OctetString("aes192"), new Samples.BouncyCastle.BouncyCastleAES192PrivacyProvider(new OctetString("privacyphrase"), new MD5AuthenticationProvider(new OctetString("authentication")))); users.Add(new OctetString("aes256"), new Samples.BouncyCastle.BouncyCastleAES256PrivacyProvider(new OctetString("privacyphrase"), new MD5AuthenticationProvider(new OctetString("authentication")))); // for snmpsendtrap testing users.Add(new OctetString("trapAES"), new Samples.BouncyCastle.BouncyCastleAESPrivacyProvider( new OctetString("privacyphrase"), new MD5AuthenticationProvider(new OctetString("authentication"))) { EngineIds = new List <OctetString> { new OctetString(ByteTool.Convert("80001F8880E9630000D61FF449")) } }); } var trapv1 = new TrapV1MessageHandler(); trapv1.MessageReceived += WatcherTrapV1Received; var trapv1Mapping = new HandlerMapping("v1", "TRAPV1", trapv1); var trapv2 = new TrapV2MessageHandler(); trapv2.MessageReceived += WatcherTrapV2Received; var trapv2Mapping = new HandlerMapping("v2,v3", "TRAPV2", trapv2); var inform = new InformRequestMessageHandler(); inform.MessageReceived += WatcherInformRequestReceived; var informMapping = new HandlerMapping("v2,v3", "INFORM", inform); var store = new ObjectStore(); var v1 = new Version1MembershipProvider(new OctetString("public"), new OctetString("public")); var v2 = new Version2MembershipProvider(new OctetString("public"), new OctetString("public")); var v3 = new Version3MembershipProvider(); var membership = new ComposedMembershipProvider(new IMembershipProvider[] { v1, v2, v3 }); var handlerFactory = new MessageHandlerFactory(new[] { trapv1Mapping, trapv2Mapping, informMapping }); var pipelineFactory = new SnmpApplicationFactory(store, membership, handlerFactory); using (var engine = new SnmpEngine(pipelineFactory, new Listener { Users = users }, new EngineGroup())) { engine.Listener.AddBinding(new IPEndPoint(IPAddress.Any, 162)); engine.Listener.ExceptionRaised += (sender, e) => Console.WriteLine($"Exception catched: {e.Exception}"); engine.Start(); Console.WriteLine("#SNMP is available at https://sharpsnmp.com"); Console.WriteLine("Press any key to stop . . . "); Console.Read(); engine.Stop(); } }
private const int MaxTimeout = 5 * 60 * 1000; // 5 minutes private SnmpEngine CreateEngine(bool timeout = false) { // TODO: this is a hack. review it later. var store = new ObjectStore(); store.Add(new SysDescr()); store.Add(new SysObjectId()); store.Add(new SysUpTime()); store.Add(new SysContact()); store.Add(new SysName()); store.Add(new SysLocation()); store.Add(new SysServices()); store.Add(new SysORLastChange()); store.Add(new SysORTable()); store.Add(new IfNumber()); store.Add(new IfTable()); if (timeout) { store.Add(new TimeoutObject()); } var users = new UserRegistry(); users.Add(new OctetString("neither"), DefaultPrivacyProvider.DefaultPair); users.Add(new OctetString("authen"), new DefaultPrivacyProvider(new MD5AuthenticationProvider(new OctetString("authentication")))); if (DESPrivacyProvider.IsSupported) { users.Add(new OctetString("privacy"), new DESPrivacyProvider(new OctetString("privacyphrase"), new MD5AuthenticationProvider(new OctetString("authentication")))); } var getv1 = new GetV1MessageHandler(); var getv1Mapping = new HandlerMapping("v1", "GET", getv1); var getv23 = new GetMessageHandler(); var getv23Mapping = new HandlerMapping("v2,v3", "GET", getv23); var setv1 = new SetV1MessageHandler(); var setv1Mapping = new HandlerMapping("v1", "SET", setv1); var setv23 = new SetMessageHandler(); var setv23Mapping = new HandlerMapping("v2,v3", "SET", setv23); var getnextv1 = new GetNextV1MessageHandler(); var getnextv1Mapping = new HandlerMapping("v1", "GETNEXT", getnextv1); var getnextv23 = new GetNextMessageHandler(); var getnextv23Mapping = new HandlerMapping("v2,v3", "GETNEXT", getnextv23); var getbulk = new GetBulkMessageHandler(); var getbulkMapping = new HandlerMapping("v2,v3", "GETBULK", getbulk); var v1 = new Version1MembershipProvider(new OctetString("public"), new OctetString("public")); var v2 = new Version2MembershipProvider(new OctetString("public"), new OctetString("public")); var v3 = new Version3MembershipProvider(); var membership = new ComposedMembershipProvider(new IMembershipProvider[] { v1, v2, v3 }); var handlerFactory = new MessageHandlerFactory(new[] { getv1Mapping, getv23Mapping, setv1Mapping, setv23Mapping, getnextv1Mapping, getnextv23Mapping, getbulkMapping }); var pipelineFactory = new SnmpApplicationFactory(store, membership, handlerFactory); var listener = new Listener { Users = users }; listener.ExceptionRaised += (sender, e) => { Assert.True(false, "unexpected exception"); }; return(new SnmpEngine(pipelineFactory, listener, new EngineGroup())); }
public MainForm() { // TODO: this is a hack. review it later. var store = new ObjectStore(); store.Add(new SysDescr()); store.Add(new SysObjectId()); store.Add(new SysUpTime()); store.Add(new SysContact()); store.Add(new SysName()); store.Add(new SysLocation()); store.Add(new SysServices()); store.Add(new SysORLastChange()); store.Add(new SysORTable()); store.Add(new IfNumber()); store.Add(new IfTable()); var users = new EngineUserRegistry(); users.Add(new OctetString("neither"), DefaultPrivacyProvider.DefaultPair); users.Add(new OctetString("authen"), new DefaultPrivacyProvider(new MD5AuthenticationProvider(new OctetString("authentication")))); if (DESPrivacyProvider.IsSupported) { users.Add(new OctetString("privacy"), new DESPrivacyProvider(new OctetString("privacyphrase"), new MD5AuthenticationProvider(new OctetString("authentication")))); } if (AESPrivacyProviderBase.IsSupported) { users.Add(new OctetString("aes"), new AESPrivacyProvider(new OctetString("privacyphrase"), new MD5AuthenticationProvider(new OctetString("authentication")))); users.Add(new OctetString("aes192"), new AES192PrivacyProvider(new OctetString("privacyphrase"), new MD5AuthenticationProvider(new OctetString("authentication")))); users.Add(new OctetString("aes256"), new AES256PrivacyProvider(new OctetString("privacyphrase"), new MD5AuthenticationProvider(new OctetString("authentication")))); } var getv1 = new GetV1MessageHandler(); var getv1Mapping = new HandlerMapping("v1", "GET", getv1); var getv23 = new GetMessageHandler(); var getv23Mapping = new HandlerMapping("v2,v3", "GET", getv23); var setv1 = new SetV1MessageHandler(); var setv1Mapping = new HandlerMapping("v1", "SET", setv1); var setv23 = new SetMessageHandler(); var setv23Mapping = new HandlerMapping("v2,v3", "SET", setv23); var getnextv1 = new GetNextV1MessageHandler(); var getnextv1Mapping = new HandlerMapping("v1", "GETNEXT", getnextv1); var getnextv23 = new GetNextMessageHandler(); var getnextv23Mapping = new HandlerMapping("v2,v3", "GETNEXT", getnextv23); var getbulk = new GetBulkMessageHandler(); var getbulkMapping = new HandlerMapping("v2,v3", "GETBULK", getbulk); var v1 = new Version1MembershipProvider(new OctetString("public"), new OctetString("public")); var v2 = new Version2MembershipProvider(new OctetString("public"), new OctetString("public")); var v3 = new Version3MembershipProvider(); var membership = new ComposedMembershipProvider(new IMembershipProvider[] { v1, v2, v3 }); var handlerFactory = new MessageHandlerFactory(new[] { getv1Mapping, getv23Mapping, setv1Mapping, setv23Mapping, getnextv1Mapping, getnextv23Mapping, getbulkMapping }); var pipelineFactory = new SnmpApplicationFactory(new RollingLogger(), store, membership, handlerFactory); _engine = new SnmpEngine(pipelineFactory, new Listener { Users = users }, new EngineGroup()); _engine.ExceptionRaised += (sender, e) => MessageBox.Show(e.Exception.ToString()); InitializeComponent(); if (PlatformSupport.Platform == PlatformType.Windows) { // FIXME: work around a Mono WinForms issue. Icon = Properties.Resources.network_server; } toolStripButton1.Image = Properties.Resources.media_playback_start; tstxtPort.Text = @"161"; tscbIP.Items.Add(StrAllUnassigned); foreach (IPAddress address in Dns.GetHostEntry(string.Empty).AddressList.Where(address => !address.IsIPv6LinkLocal)) { tscbIP.Items.Add(address); } tscbIP.SelectedIndex = 0; }
public void Should_create_a_handler() { var factory = new MessageHandlerFactory(); var result = factory.Create(typeof(foo)); result.ShouldNotBeNull(); }