private IMqttServerOptions Initialize(IConfiguration settings) { //if (mqttServer != null) throw new Exception($"{name} Duplicate start"); var config = new MQTTConfig(); settings.GetSection("MQTT").Bind(config); var factory = new MqttFactory(); mqttServer = factory.CreateMqttServer(); return(new MqttServerOptionsBuilder() .WithConnectionBacklog(100) .WithConnectionValidator(c => { if (c.Username != config.User) { return; } if (c.Password != config.Pass) { return; } c.ReasonCode = MqttConnectReasonCode.Success; }) .WithDefaultEndpointPort(config.Port).Build()); }
public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) .ConfigureWebHostDefaults(webBuilder => { webBuilder.UseStartup <Startup>(); webBuilder.UseKestrel( (bcont, o) => { var config = new VEDrivers.Common.MQTTConfig(); bcont.Configuration.GetSection("MQTT").Bind(config); var mainport = bcont.Configuration.GetValue <int>("MainPort", 8080); if (mainport == 0) // there should be check for reserved ports { mainport = 8080; } o.ListenAnyIP(config.Port, l => l.UseMqtt()); // MQTT pipeline o.ListenAnyIP(config.WSPort); // Default HTTP pipeline o.ListenAnyIP(mainport); // Default HTTP pipeline }); }) .ConfigureServices((hostContext, services) => { services.AddHostedService <VEconomyCore>(); }) .ConfigureServices((hostContext, services) => { services.AddHostedService <ExchangeService>(); }) .ConfigureServices((hostContext, services) => { services.AddHostedService <WalletHandlerCore>(); }) .ConfigureAppConfiguration((hostingContext, config) => { config.AddJsonFile(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "appsettings.json"), optional: true); }) .ConfigureLogging(logging => { logging.ClearProviders(); //logging.AddProvider(new Log4NetProvider()); //not needed, using log4net directly }) .UseWindowsService() .UseSystemd();
private IMqttClientOptions Initialize(IConfiguration settings) { if (mqttClient != null) { throw new Exception($"{name} Duplicate start"); } var config = new MQTTConfig(); settings.GetSection("MQTT").Bind(config); var factory = new MqttFactory(); mqttClient = factory.CreateMqttClient(); return(new MqttClientOptionsBuilder() .WithTcpServer(config.Host, config.Port) .WithCredentials(config.User, config.Pass) .Build()); }