// This method gets called by the runtime. Use this method to configure the HTTP request pipeline. public void Configure(IApplicationBuilder app, IHostingEnvironment env, IOptions <MQTTBrokerOption> options, MqttEventsHandler mqttEventsHandler, IMqttServerStorage storage) { if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } app.UseSwaggerUi3(); //app.UseHealthChecks("/health", new HealthCheckOptions() //{ // Predicate = _ => true, // ResponseWriter = UIResponseWriter.WriteHealthCheckUIResponse //}); // app.UseHealthChecksUI(); app.UseHttpsRedirection(); app.UseCookiePolicy(); app.UseAuthentication(); app.UseMvc(); app.UseDefaultFiles(); app.UseStaticFiles(); app.UseMqttEndpoint(); _storage = storage; app.UseMqttServerEx(server => { server.ClientConnectedHandler = new MqttServerClientConnectedHandlerDelegate(args => mqttEventsHandler.Server_ClientConnected(server, args)); server.StartedHandler = new MqttServerStartedHandlerDelegate(args => mqttEventsHandler.Server_Started(server, args)); server.StoppedHandler = new MqttServerStoppedHandlerDelegate(args => mqttEventsHandler.Server_Stopped(server, args)); server.ApplicationMessageReceivedHandler = new MqttApplicationMessageReceivedHandlerDelegate(args => mqttEventsHandler.Server_ApplicationMessageReceived(server, args)); server.ClientSubscribedTopicHandler = new MqttServerClientSubscribedHandlerDelegate(args => mqttEventsHandler.Server_ClientSubscribedTopic(server, args)); server.ClientUnsubscribedTopicHandler = new MqttServerClientUnsubscribedTopicHandlerDelegate(args => mqttEventsHandler.Server_ClientUnsubscribedTopic(server, args)); server.ClientConnectionValidatorHandler = new MqttServerClientConnectionValidatorHandlerDelegate(args => mqttEventsHandler.MqttConnectionValidatorContextAsync(args.Context)); }); app.UseMqttBrokerLogger(); app.UseForwardedHeaders(new ForwardedHeadersOptions { ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto }); app.UseSwagger(config => config.PostProcess = (document, request) => { if (request.Headers.ContainsKey("X-External-Host")) { // Change document server settings to public document.Host = request.Headers["X-External-Host"].First(); document.BasePath = request.Headers["X-External-Path"].First(); } }); app.UseSwaggerUi3(config => config.TransformToExternalPath = (internalUiRoute, request) => { // The header X-External-Path is set in the nginx.conf file var externalPath = request.Headers.ContainsKey("X-External-Path") ? request.Headers["X-External-Path"].First() : ""; return(externalPath + internalUiRoute); }); app.UseAuthentication(); }
public ServerBuilder( IConfiguration configuration, IMqttRepository repo, IMqttServerStorage storage, IMqttServerFactory factory, IMqttServerConnectionValidator validator, ILogger <ServerBuilder> logger) { _configuration = configuration; _storage = storage; _factory = factory; _validator = validator; _logger = logger; }
public static void UseIotSharpMqttServer(this IApplicationBuilder app) { app.UseMqttEndpoint(); var mqttEvents = app.ApplicationServices.CreateScope().ServiceProvider.GetService <MQTTServerHandler>(); IMqttServerStorage storage = app.ApplicationServices.CreateScope().ServiceProvider.GetService <IMqttServerStorage>(); app.UseMqttServerEx(server => { server.ClientConnectedHandler = new MqttServerClientConnectedHandlerDelegate(args => mqttEvents.Server_ClientConnected(server, args)); server.StartedHandler = new MqttServerStartedHandlerDelegate(args => mqttEvents.Server_Started(server, args)); server.StoppedHandler = new MqttServerStoppedHandlerDelegate(args => mqttEvents.Server_Stopped(server, args)); server.ApplicationMessageReceivedHandler = new MqttApplicationMessageReceivedHandlerDelegate(args => mqttEvents.Server_ApplicationMessageReceived(server, args)); server.ClientSubscribedTopicHandler = new MqttServerClientSubscribedHandlerDelegate(args => mqttEvents.Server_ClientSubscribedTopic(server, args)); server.ClientUnsubscribedTopicHandler = new MqttServerClientUnsubscribedTopicHandlerDelegate(args => mqttEvents.Server_ClientUnsubscribedTopic(server, args)); server.ClientConnectionValidatorHandler = new MqttServerClientConnectionValidatorHandlerDelegate(args => mqttEvents.Server_ClientConnectionValidator(server, args)); server.ClientDisconnectedHandler = new MqttServerClientDisconnectedHandlerDelegate(args => mqttEvents.Server_ClientDisconnected(server, args)); }); var mqttNetLogger = app.ApplicationServices.GetService <IMqttNetLogger>(); var _loggerFactory = app.ApplicationServices.GetService <ILoggerFactory>(); var logger = _loggerFactory.CreateLogger <IMqttNetLogger>(); mqttNetLogger.LogMessagePublished += (object sender, MqttNetLogMessagePublishedEventArgs e) => { var message = $"ID:{e.TraceMessage.LogId},ThreadId:{e.TraceMessage.ThreadId},Source:{e.TraceMessage.Source},Timestamp:{e.TraceMessage.Timestamp},Message:{e.TraceMessage.Message}"; switch (e.TraceMessage.Level) { case MqttNetLogLevel.Verbose: logger.LogTrace(e.TraceMessage.Exception, message); break; case MqttNetLogLevel.Info: logger.LogInformation(e.TraceMessage.Exception, message); break; case MqttNetLogLevel.Warning: logger.LogWarning(e.TraceMessage.Exception, message); break; case MqttNetLogLevel.Error: logger.LogError(e.TraceMessage.Exception, message); break; default: break; } }; }
public static void UseIotSharpMqttServer(this IApplicationBuilder app) { var mqttEvents = app.ApplicationServices.CreateScope().ServiceProvider.GetService <MQTTServerHandler>(); IMqttServerStorage storage = app.ApplicationServices.CreateScope().ServiceProvider.GetService <IMqttServerStorage>(); app.UseMqttServerEx(server => { server.ClientConnectedHandler = new MqttServerClientConnectedHandlerDelegate(args => mqttEvents.Server_ClientConnected(server, args)); server.StartedHandler = new MqttServerStartedHandlerDelegate(args => mqttEvents.Server_Started(server, args)); server.StoppedHandler = new MqttServerStoppedHandlerDelegate(args => mqttEvents.Server_Stopped(server, args)); server.ApplicationMessageReceivedHandler = new MqttApplicationMessageReceivedHandlerDelegate(args => mqttEvents.Server_ApplicationMessageReceived(server, args)); server.ClientSubscribedTopicHandler = new MqttServerClientSubscribedHandlerDelegate(args => mqttEvents.Server_ClientSubscribedTopic(server, args)); server.ClientUnsubscribedTopicHandler = new MqttServerClientUnsubscribedTopicHandlerDelegate(args => mqttEvents.Server_ClientUnsubscribedTopic(server, args)); server.ClientConnectionValidatorHandler = new MqttServerClientConnectionValidatorHandlerDelegate(args => mqttEvents.Server_ClientConnectionValidator(server, args)); server.ClientDisconnectedHandler = new MqttServerClientDisconnectedHandlerDelegate(args => mqttEvents.Server_ClientDisconnected(server, args)); }); }
public MqttServerOptionsBuilder WithStorage(IMqttServerStorage value) { _options.Storage = value; return(this); }
public static void UseMqttBrokerOption(this MqttServerOptionsBuilder builder, IMqttServerStorage storage) { var options = MQTTBrokerOption; if (options.BrokerCertificate != null) { builder.WithEncryptionCertificate(options.BrokerCertificate.Export(X509ContentType.Pfx)) .WithEncryptedEndpoint() .WithEncryptedEndpointPort(options.SSLPort); } builder.WithDefaultEndpoint() .WithDefaultEndpointPort(options.Port) .WithStorage(storage) .Build(); }