From 1a1c8e71fcd14858f595029f089b2d4a00202b32 Mon Sep 17 00:00:00 2001
From: ogi <Administrator@S-OGI-PC>
Date: Fri, 05 Dec 2025 09:24:16 +0900
Subject: [PATCH] プロジェクトファイルを追加。
---
HotelPms.GrpcService/Program.cs | 178 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 178 insertions(+), 0 deletions(-)
diff --git a/HotelPms.GrpcService/Program.cs b/HotelPms.GrpcService/Program.cs
new file mode 100644
index 0000000..70d2b31
--- /dev/null
+++ b/HotelPms.GrpcService/Program.cs
@@ -0,0 +1,178 @@
+using HotelPms.GrpcService;
+using HotelPms.GrpcService.Hubs;
+using HotelPms.GrpcService.Services;
+using HotelPms.GrpcService.Util;
+using Microsoft.AspNetCore.Authentication.JwtBearer;
+using Microsoft.AspNetCore.ResponseCompression;
+using Microsoft.AspNetCore.Server.Kestrel.Core;
+using Microsoft.IdentityModel.Tokens;
+using System.Text;
+
+//AppContext.SetSwitch("Microsoft.AspNetCore.Server.Kestrel.DisableHttp2AltSvcHandshake", true);
+
+var builder = WebApplication.CreateBuilder(args);
+Setting.Init(builder.Configuration);
+//if (Setting.HttpPort > 0) { builder.WebHost.UseUrls($"http://*:{Setting.HttpPort}"); }
+if (Setting.GrpcPort > 0 || Setting.ApiPort > 0)
+{
+ builder.Services.Configure<KestrelServerOptions>(y =>
+ {
+ if (Setting.GrpcPort > 0)
+ {
+ y.ListenAnyIP(Setting.GrpcPort, o =>
+ {
+ //o.Protocols = HttpProtocols.Http2;
+ //o.DisableAltSvcHeader = true;
+ o.Protocols = HttpProtocols.Http1AndHttp2;
+ //nginx要使用Http2、必须让Kestrel能够上https,就是tls,必须做个证书
+ //o.Protocols = HttpProtocols.Http2;
+ //o.UseHttps("./certs/backend.pfx", "password1");
+
+ //o.UseHttps("/etc/letsencrypt/live/ginbow.eu.org/certificate.pfx","Go_k@2087"); // 使用 Let’s Encrypt 证书
+ //o.Protocols = HttpProtocols.Http2; // 强制使用 HTTP/2
+ });
+ }
+
+ if (Setting.ApiPort > 0)
+ {
+ y.ListenAnyIP(Setting.ApiPort, o =>
+ {
+ //o.Protocols = HttpProtocols.Http2;
+ //o.DisableAltSvcHeader = true;
+ //o.UseHttps("/etc/letsencrypt/live/ginbow.eu.org/certificate.pfx", "Go_k@2087"); // 使用 Let’s Encrypt 证书
+ o.Protocols = HttpProtocols.Http1AndHttp2;
+ //o.UseHttps(cert); // 使用 Let’s Encrypt 证书
+ //o.Protocols = HttpProtocols.Http2; // 强制使用 HTTP/2
+ });
+ }
+ });
+}
+
+builder.Services.AddGrpc(options => { options.MaxReceiveMessageSize = int.MaxValue; });
+builder.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
+ .AddJwtBearer(options => {
+ options.TokenValidationParameters = new TokenValidationParameters
+ {
+ ClockSkew = TimeSpan.Zero,
+ ValidateIssuer = true,
+ ValidateAudience = true,
+ ValidateLifetime = true,
+ ValidateIssuerSigningKey = true,
+ ValidIssuer = Setting.JwtIssuer,
+ ValidAudience = Setting.JwtAudience,
+ IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(Setting.JwtSecurityKey))
+ };
+
+ options.Events = new JwtBearerEvents
+ {
+ //認証エラー
+ OnChallenge = async context =>
+ {
+ context.HandleResponse();
+
+ context.Response.ContentType = "application/json;charset=utf-8";
+ context.Response.StatusCode = StatusCodes.Status401Unauthorized;
+
+ await context.Response.WriteAsync("{\"message\":\"Unauthorized\",\"success\":false}");
+ },
+ //OnMessageReceived = async context =>
+ //{
+ // context.Token = context.Request.Query["token"];
+ // await Task.CompletedTask;
+ //}
+ };
+ });
+
+builder.Services.AddControllers();
+builder.Services.AddResponseCompression(opts =>
+{
+ opts.MimeTypes = ResponseCompressionDefaults.MimeTypes.Concat(
+ new[] { "application/octet-stream" });
+});
+
+builder.Services.AddCors(o => o.AddPolicy("AllowAll", builder =>
+{
+ builder.AllowAnyOrigin()
+ .AllowAnyMethod()
+ .AllowAnyHeader()
+ .WithExposedHeaders("Grpc-Status", "Grpc-Message", "Grpc-Encoding", "Grpc-Accept-Encoding");
+}));
+
+builder.Services.AddSignalR(config =>
+{
+ if (builder.Environment.IsDevelopment())
+ {
+ config.EnableDetailedErrors = true;
+ }
+})
+.AddMessagePackProtocol();
+
+// app初期化
+var app = builder.Build();
+
+app.Logger.Log(LogLevel.Information, $"Setting.HotelPmsDB = {Setting.HotelPmsDB}");
+app.Logger.Log(LogLevel.Information, $"Setting.HotelCommonDB = {Setting.HotelCommonDB}");
+app.Logger.Log(LogLevel.Information, $"Setting.SystemCenterDB = {Setting.SystemCenterDB}");
+
+
+app.UseResponseCompression();
+if (builder.Environment.IsDevelopment())
+{
+ app.UseDeveloperExceptionPage();
+}
+else
+{
+ app.UseExceptionHandler("/Error");
+ app.UseHsts();
+}
+app.UseHttpsRedirection();
+//app.UseBlazorFrameworkFiles();
+//app.UseStaticFiles();
+app.UseRouting();
+app.UseGrpcWeb(new GrpcWebOptions { DefaultEnabled = true });
+app.UseCors();
+app.UseAuthentication();
+app.UseAuthorization();
+
+app.MapControllers().RequireCors("AllowAll"); //Rest API
+app.MapGrpcService<FileService>().RequireCors("AllowAll");
+app.MapGrpcService<GrpcSetService>().RequireCors("AllowAll");
+app.MapGrpcService<GrpcTableService>().RequireCors("AllowAll");
+app.MapGrpcService<GreeterService>().RequireCors("AllowAll");
+app.MapGrpcService<UseService>().RequireCors("AllowAll");
+app.MapGrpcService<UseDetailService>().RequireCors("AllowAll");
+app.MapGrpcService<UsePersonService>().RequireCors("AllowAll");
+app.MapGrpcService<UseAlloService>().RequireCors("AllowAll");
+app.MapGrpcService<UseRoomService>().RequireCors("AllowAll");
+app.MapGrpcService<ArrangeService>().RequireCors("AllowAll");
+app.MapGrpcService<PayService>().RequireCors("AllowAll");
+app.MapGrpcService<PayDivService>().RequireCors("AllowAll");
+app.MapGrpcService<ReceiptService>().RequireCors("AllowAll");
+app.MapGrpcService<RentalService>().RequireCors("AllowAll");
+app.MapGrpcService<SaleService>().RequireCors("AllowAll");
+app.MapGrpcService<SaleDivService>().RequireCors("AllowAll");
+app.MapGrpcService<UseFreeService>().RequireCors("AllowAll");
+app.MapGrpcService<UseMemoService>().RequireCors("AllowAll");
+app.MapGrpcService<UsePersonFreeService>().RequireCors("AllowAll");
+app.MapGrpcService<UsePersonTelService>().RequireCors("AllowAll");
+app.MapGrpcService<HotelService>().RequireCors("AllowAll");
+app.MapGrpcService<DemoService>().RequireCors("AllowAll");
+app.MapGrpcService<BuildingService>().RequireCors("AllowAll");
+app.MapGrpcService<OutputItemService>().RequireCors("AllowAll");
+app.MapGrpcService<OutputService>().RequireCors("AllowAll");
+app.MapGrpcService<RoomViewTabService>().RequireCors("AllowAll");
+app.MapGrpcService<RoomViewLayoutService>().RequireCors("AllowAll");
+app.MapGrpcService<RoomCellService>().RequireCors("AllowAll");
+app.MapGrpcService<OptionService>().RequireCors("AllowAll");
+app.MapGrpcService<RoomStatusService>().RequireCors("AllowAll");
+app.MapGrpcService<RoomTypeService>().RequireCors("AllowAll");
+app.MapGrpcService<ItemService>().RequireCors("AllowAll");
+//app.UseEndpoints(endpoints =>
+//{
+// endpoints.MapGrpcService<GreeterService>();
+// endpoints.MapGrpcService<UseService>();
+//});
+app.MapGet("/", () => "。。。");
+app.MapHub<NotifyHub>("/notifyhub").RequireCors("AllowAll");
+
+app.Run();
--
Gitblit v1.10.0