summaryrefslogtreecommitdiff
path: root/src/SMAPI.Web/Startup.cs
diff options
context:
space:
mode:
Diffstat (limited to 'src/SMAPI.Web/Startup.cs')
-rw-r--r--src/SMAPI.Web/Startup.cs33
1 files changed, 30 insertions, 3 deletions
diff --git a/src/SMAPI.Web/Startup.cs b/src/SMAPI.Web/Startup.cs
index eaf14983..0ea9f7ee 100644
--- a/src/SMAPI.Web/Startup.cs
+++ b/src/SMAPI.Web/Startup.cs
@@ -8,6 +8,7 @@ using Microsoft.Extensions.Logging;
using Newtonsoft.Json;
using StardewModdingAPI.Web.Framework;
using StardewModdingAPI.Web.Framework.ConfigModels;
+using StardewModdingAPI.Web.Framework.RewriteRules;
namespace StardewModdingAPI.Web
{
@@ -30,10 +31,9 @@ namespace StardewModdingAPI.Web
{
this.Configuration = new ConfigurationBuilder()
.SetBasePath(env.ContentRootPath)
- .AddEnvironmentVariables()
.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
.AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true)
- .AddEnvironmentVariables()
+ .Add(new BeanstalkEnvPropsConfigProvider()) //.AddEnvironmentVariables()
.Build();
}
@@ -43,6 +43,7 @@ namespace StardewModdingAPI.Web
{
services
.Configure<ModUpdateCheckConfig>(this.Configuration.GetSection("ModUpdateCheck"))
+ .Configure<LogParserConfig>(this.Configuration.GetSection("LogParser"))
.Configure<RouteOptions>(options => options.ConstraintMap.Add("semanticVersion", typeof(VersionConstraint)))
.AddMemoryCache()
.AddMvc()
@@ -63,7 +64,33 @@ namespace StardewModdingAPI.Web
loggerFactory.AddConsole(this.Configuration.GetSection("Logging"));
loggerFactory.AddDebug();
app
- .UseRewriter(new RewriteOptions().Add(new RewriteSubdomainRule())) // convert subdomain.smapi.io => smapi.io/subdomain for routing
+ .UseCors(policy => policy
+ .AllowAnyHeader()
+ .AllowAnyMethod()
+ .WithOrigins("https://smapi.io", "https://*.smapi.io", "https://*.edge.smapi.io")
+ .SetIsOriginAllowedToAllowWildcardSubdomains()
+ )
+ .UseRewriter(new RewriteOptions()
+ // redirect to HTTPS (except API for Linux/Mac Mono compatibility)
+ .Add(new ConditionalRedirectToHttpsRule(
+ shouldRewrite: req =>
+ req.Host.Host != "localhost"
+ && !req.Path.StartsWithSegments("/api")
+ ))
+
+ // convert subdomain.smapi.io => smapi.io/subdomain for routing
+ .Add(new ConditionalRewriteSubdomainRule(
+ shouldRewrite: req =>
+ req.Host.Host != "localhost"
+ && (req.Host.Host.StartsWith("api.") || req.Host.Host.StartsWith("log."))
+ && !req.Path.StartsWithSegments("/content")
+ ))
+
+ // shortcut redirects
+ .Add(new RedirectToUrlRule("^/docs$", "https://stardewvalleywiki.com/Modding:Index"))
+ .Add(new RedirectToUrlRule("^/install$", "https://stardewvalleywiki.com/Modding:Installing_SMAPI"))
+ )
+ .UseStaticFiles() // wwwroot folder
.UseMvc();
}
}