// using Deal.Grpc.Hosting.Interceptors; using Deal.Grpc.Hosting.Models; using Deal.Grpc.Hosting.Options; using Deal.Grpc.Hosting.Services; using Deal.Telegram; const int defaultGrpcPort = 5101; const string telegramProcessName = "telegram"; int grpcPort = GrpcHostEnvironment.ResolveGrpcPort(defaultGrpcPort); int metricsPort = DealMetricsHosting.ResolveMetricsPort(DealMetricsHosting.DefaultMetricsPort); WebApplication app = TelegramServiceHost.Create( grpcPort, configureBuilder: builder => { DealLogging.Configure(builder, telegramProcessName); DealMetricsHosting.AddDealMetrics(builder, metricsPort); DealTracingHosting.AddDealTracing(builder, telegramProcessName); }); DealMetricsHosting.MapDealMetrics(app); MtlsOptions mtlsOptions = MtlsOptions.FromConfiguration(app.Configuration); // Fail-closed (замечание code-review): отсутствие/опечатка DEAL_MTLS_ENABLED не должны давать // «тихого» plaintext в Production; Development (и прочие не-prod окружения) — как раньше. GrpcHostEnvironment.RequireMtlsInProduction(mtlsOptions); app.Logger.LogInformation( "telegram-service стартует: gRPC {Transport} 0.0.0.0:{Port} (health /grpc.health.v1.Health/Check)", mtlsOptions.Enabled ? "mTLS (TLS + клиентский сертификат)" : "plaintext + service-token", grpcPort); await app.RunAsync();