36 HostApplicationBuilder builder = Host.CreateApplicationBuilder();
37 builder.Configuration.AddUserSecrets(
"codemaru-oauth-2ba4e1b2");
39 int serverPort =
GetInt(builder.Configuration,
"FamilyServer:Port", 5080);
40 bool listenAnyIp =
GetBool(builder.Configuration,
"FamilyServer:ListenAnyIp",
true);
41 AuthOptions authOptions =
42 builder.Configuration.GetSection(AuthOptions.SectionName).Get<AuthOptions>() ??
new AuthOptions();
44 builder.Configuration[$
"{AuthOptions.SectionName}:UsersDbPath"],
45 Path.Combine(AppContext.BaseDirectory,
"App_Data",
"codemaru.db"));
47 builder.Services.AddDreamineHybridWpf();
48 builder.Services.AddDreamineIdentityWpfHost();
51 builder.Services.AddSingleton(familyOpts);
62 builder.Services.AddDreamineBlazorServer<AppShell>(options =>
64 options.Port = serverPort;
65 options.ListenAnyIp = listenAnyIp;
68 options.SharedServiceTypes.Add(typeof(
IPostStore));
69 options.SharedServiceTypes.Add(typeof(
IAlbumStore));
73 options.AddPhysicalStaticFiles(familyOpts.ResolvedDataPath,
"/family-data");
79 options.ConfigureServices = services =>
81 services.AddServerSideBlazor().AddHubOptions(o =>
83 o.MaximumReceiveMessageSize =
null;
84 o.ClientTimeoutInterval = TimeSpan.FromMinutes(10);
85 o.HandshakeTimeout = TimeSpan.FromMinutes(2);
86 o.KeepAliveInterval = TimeSpan.FromSeconds(10);
89 services.AddAntiforgery(o =>
91 o.Cookie.SameSite = Microsoft.AspNetCore.Http.SameSiteMode.Lax;
92 o.Cookie.SecurePolicy = Microsoft.AspNetCore.Http.CookieSecurePolicy.SameAsRequest;
95 services.Configure<CircuitOptions>(o =>
97 o.DisconnectedCircuitMaxRetained = 100;
98 o.DisconnectedCircuitRetentionPeriod = TimeSpan.FromMinutes(3);
99 o.JSInteropDefaultCallTimeout = TimeSpan.FromMinutes(1);
100 o.MaxBufferedUnacknowledgedRenderBatches = 10;
106 options.AddDreamineIdentity(authOptions, usersDbPath);
110 var wwwroot = Path.Combine(AppContext.BaseDirectory,
"wwwroot");
113 builder.Build().RunDreamineWpfApp<
App>();