diff --git a/.env.sample b/.env.sample index 7655552f..e8b5c5eb 100644 --- a/.env.sample +++ b/.env.sample @@ -4,3 +4,19 @@ MODERATION_AUTO_REJECT_THRESHOLD=0.9 MODERATION_AUTO_APPROVE_THRESHOLD=0.7 # Limite par appel ANTHROPIC_MAX_TOKENS=256 # la modération n'a pas besoin de plus + +POSTGRES_HOST=localhost +POSTGRES_PORT=5432 +POSTGRES_DB=db +POSTGRES_USER=pguser +POSTGRES_PASSWORD=pgpassword + +ANTHROPIC_API_KEY=none +ANTHROPIC_MAX_TOKENS=0 + +ASPNETCORE_Smtp__Host="your.mail.host.name", +ASPNETCORE_Smtp__Port=465 +ASPNETCORE_Smtp__SenderName"="You Name here" +ASPNETCORE_Smtp__SenderEmail"="your@email" +ASPNETCORE_Smtp__UserName"="your-smtp-user-name" +ASPNETCORE_Smtp__Password="Your pass" diff --git a/contrib/Makefile b/contrib/Makefile index dfa0e8ed..59c00e85 100644 --- a/contrib/Makefile +++ b/contrib/Makefile @@ -1,7 +1,7 @@ APP_PROJECT_NAMES=Api Org Blogs APP_PROJECTS=src/Yavsc.Org/Yavsc.Org.csproj src/Yavsc.Api/Yavsc.Api.csproj SLNDIR=.. -DESTDIR=/srv/www/yavsc/ +DESTDIR=/srv/www/yavsc USER_AND_GROUP=www-data:www-data CONFIGURATION=Release DOTNET_FRAMEWORK=net10.0 @@ -35,7 +35,7 @@ copy-service-Org: /etc/systemd/system/yavscOrg.service copy-service-Api: /etc/systemd/system/yavscApi.service copy-service-Blogs: /etc/systemd/system/yavscBlogs.service -copy-binaries: +copy-binaries: build_publish_Org build_publish_Api build_publish_Blogs for project in $(APP_PROJECT_NAMES); \ do \ sudo cp -a $(SLNDIR)/src/Yavsc.$${project}/bin/$(CONFIGURATION)/$(DOTNET_FRAMEWORK)/publish/* $(DESTDIR) ; \ @@ -45,14 +45,12 @@ copy-binaries: /etc/systemd/system/yavsc%.service: generated/yavsc%.service sudo cp $^ $@ sudo chown root:root $@ - sudo systemctl daemon-reload - -build_publish: - for f in $(APP_PROJECTS); do \ - ASPNETCORE_ENV=$(CONFIGURATION) dotnet publish $(SLNDIR)/$$f ; \ - done -install: build_publish copy-services copy-binaries + +build_publish_%: + ASPNETCORE_ENV=$(CONFIGURATION) dotnet publish $(SLNDIR)/src/Yavsc.$*/Yavsc.$*.csproj + +install: build_publish copy-binaries copy-services sudo systemctl daemon-reload for project in $(APP_PROJECT_NAMES); \ do \ @@ -61,6 +59,7 @@ install: build_publish copy-services copy-binaries done reinstall: build_publish copy-services copy-binaries + sudo systemctl daemon-reload for project in $(APP_PROJECT_NAMES); \ do \ sudo systemctl stop yavsc$${project} ; \ @@ -69,7 +68,13 @@ reinstall: build_publish copy-services copy-binaries do \ sudo systemctl start yavsc$${project} ; \ done - + +$(SLNDIR)/src/Yavsc.Org/bin/$(CONFIGURATION)/$(DOTNET_FRAMEWORK)/publish: build_publish +$(SLNDIR)/src/Yavsc.Blogs/bin/$(CONFIGURATION)/$(DOTNET_FRAMEWORK)/publish: build_publish +$(SLNDIR)/src/Yavsc.Api/bin/$(CONFIGURATION)/$(DOTNET_FRAMEWORK)/publish: build_publish + + + showConfig: @echo CONFIGURATION: $(CONFIGURATION) @echo DESTDIR: $(DESTDIR) diff --git a/contrib/template.service b/contrib/template.service index d55f7a00..34d0149a 100644 --- a/contrib/template.service +++ b/contrib/template.service @@ -2,20 +2,18 @@ Description=yavsc-$APP_NAME After=syslog.target After=network.target - Wants=postgresql.service After=postgresql.service [Service] RestartSec=5s Type=simple -User=www-data -Group=www-data +User=yavsc +Group=yavsc WorkingDirectory=$DESTDIR ExecStart=$DESTDIR/Yavsc.$APP_NAME Restart=always Environment="HOME=$DESTDIR" -Environment="ASPNETCORE_ENVIRONMENT=Production" Environment="ANTHROPIC_API_KEY=$ANTHROPIC_API_KEY" Environment="ANTHROPIC_MAX_TOKENS=$ANTHROPIC_MAX_TOKENS" Environment="ASPNETCORE_ConnectionStrings__YavscConnection=Server=$POSTGRES_HOST;Port=$POSTGRES_PORT;Database=$POSTGRES_DB;Username=$POSTGRES_USER;Password=$POSTGRES_PASSWORD;" diff --git a/src/Yavsc.Api/Program.cs b/src/Yavsc.Api/Program.cs index 64ae01b6..509bd887 100644 --- a/src/Yavsc.Api/Program.cs +++ b/src/Yavsc.Api/Program.cs @@ -29,6 +29,10 @@ internal class Program var builder = WebApplication.CreateBuilder(args); + builder.Configuration + .AddJsonFile("appsettings-api.json", optional: false, reloadOnChange: false) + .AddJsonFile($"appsettings-api.{builder.Environment.EnvironmentName}.json", optional: false, reloadOnChange: false) + .AddEnvironmentVariables(); var services = builder.Services; // Anthropic client diff --git a/src/Yavsc.Api/appsettings.json b/src/Yavsc.Api/appsettings-api.json similarity index 100% rename from src/Yavsc.Api/appsettings.json rename to src/Yavsc.Api/appsettings-api.json diff --git a/src/Yavsc.Blogs/Program.cs b/src/Yavsc.Blogs/Program.cs index 745333ab..2a3ab0ce 100644 --- a/src/Yavsc.Blogs/Program.cs +++ b/src/Yavsc.Blogs/Program.cs @@ -29,7 +29,11 @@ internal class Program Console.Title = "Yavsc.Blogs"; var builder = WebApplication.CreateBuilder(args); - + builder.Configuration + .AddJsonFile("appsettings-blogs.json", optional: false, reloadOnChange: false) + .AddJsonFile($"appsettings-blogs.{builder.Environment.EnvironmentName}.json", optional: false, reloadOnChange: false) + .AddEnvironmentVariables(); + var services = builder.Services; var authority = builder.GetAuthority(); @@ -103,9 +107,10 @@ internal class Program .AddSupportedCultures(supportedCultures) .AddSupportedUICultures(supportedCultures); }); - + using (var app = builder.Build()) { + if (app.Environment.IsDevelopment()) app.UseDeveloperExceptionPage(); diff --git a/src/Yavsc.Blogs/appsettings.json b/src/Yavsc.Blogs/appsettings-blogs.json similarity index 100% rename from src/Yavsc.Blogs/appsettings.json rename to src/Yavsc.Blogs/appsettings-blogs.json diff --git a/src/Yavsc.Org/Program.cs b/src/Yavsc.Org/Program.cs index 700221d4..8ffcf3dc 100644 --- a/src/Yavsc.Org/Program.cs +++ b/src/Yavsc.Org/Program.cs @@ -9,7 +9,10 @@ namespace Yavsc public static async Task Main(string[] args) { var builder = WebApplication.CreateBuilder(args); - + builder.Configuration + .AddJsonFile("appsettings-org.json", optional: false, reloadOnChange: false) + .AddJsonFile($"appsettings-org.{builder.Environment.EnvironmentName}.json", optional: false, reloadOnChange: false) + .AddEnvironmentVariables(); var app = await builder .ConfigureWebAppServices() .ConfigurePipeline(); diff --git a/src/Yavsc.Org/appsettings.json b/src/Yavsc.Org/appsettings-org.json similarity index 98% rename from src/Yavsc.Org/appsettings.json rename to src/Yavsc.Org/appsettings-org.json index 32a6d7b5..a21251a8 100644 --- a/src/Yavsc.Org/appsettings.json +++ b/src/Yavsc.Org/appsettings-org.json @@ -35,8 +35,7 @@ }, "Smtp": { "Host": "[YOURSMTPHOST]", - "Port": 25, - "EnableSSL": false + "Port": 465 }, "DataProtection": { "Keys": { diff --git a/src/Yavsc.Web/Program.cs b/src/Yavsc.Web/Program.cs index d5c5d4e6..8e189ba7 100644 --- a/src/Yavsc.Web/Program.cs +++ b/src/Yavsc.Web/Program.cs @@ -16,15 +16,18 @@ using Microsoft.AspNetCore.Authentication; JwtSecurityTokenHandler.DefaultMapInboundClaims = true; var builder = WebApplication.CreateBuilder(args); - +builder.Configuration + .AddJsonFile("appsettings-web.json", optional: false, reloadOnChange: false) + .AddJsonFile($"appsettings-blogs.{builder.Environment.EnvironmentName}.json", optional: false, reloadOnChange: false) + .AddEnvironmentVariables(); var authSection = builder.Configuration.GetSection("Authentication"); - var issuer = authSection.GetValue("Issuer"); +var issuer = authSection.GetValue("Issuer"); var clientSection = authSection.GetSection("Client"); var clientId = clientSection.GetValue("Id"); var clientSecret = clientSection.GetValue("Secret"); - - + + builder.Services.AddControllersWithViews(); builder.Services diff --git a/src/Yavsc.Web/appsettings.json b/src/Yavsc.Web/appsettings-web.json similarity index 100% rename from src/Yavsc.Web/appsettings.json rename to src/Yavsc.Web/appsettings-web.json diff --git a/src/cli/Program.cs b/src/cli/Program.cs index a94ef648..0910ce7a 100644 --- a/src/cli/Program.cs +++ b/src/cli/Program.cs @@ -12,6 +12,11 @@ internal class Program private static void Main(string[] args) { HostApplicationBuilder builder = Host.CreateApplicationBuilder(args); + builder.Configuration + .AddJsonFile("appsettings-cli.json", optional: false, reloadOnChange: false) + .AddJsonFile($"appsettings-cli.{builder.Environment.EnvironmentName}.json", optional: false, reloadOnChange: false) + .AddEnvironmentVariables(); + AppHost = builder.Build(); AppConfiguration = builder.Configuration; AppHost.Start(); diff --git a/src/cli/appsettings.json b/src/cli/appsettings-cli.json similarity index 100% rename from src/cli/appsettings.json rename to src/cli/appsettings-cli.json