From 65f0fa625575592639a24a9b39330e4a6b500f22 Mon Sep 17 00:00:00 2001 From: Jesse Plamondon-Willard Date: Fri, 27 Oct 2017 19:36:31 -0400 Subject: add scaffolding for web UI (#358) --- src/SMAPI.Web/Startup.cs | 1 + 1 file changed, 1 insertion(+) (limited to 'src/SMAPI.Web/Startup.cs') diff --git a/src/SMAPI.Web/Startup.cs b/src/SMAPI.Web/Startup.cs index eaf14983..abce8f28 100644 --- a/src/SMAPI.Web/Startup.cs +++ b/src/SMAPI.Web/Startup.cs @@ -64,6 +64,7 @@ namespace StardewModdingAPI.Web loggerFactory.AddDebug(); app .UseRewriter(new RewriteOptions().Add(new RewriteSubdomainRule())) // convert subdomain.smapi.io => smapi.io/subdomain for routing + .UseStaticFiles() // wwwroot folder .UseMvc(); } } -- cgit From ad5bb5b49af49c4668fd30fb2a0e606dcefe4ec0 Mon Sep 17 00:00:00 2001 From: Jesse Plamondon-Willard Date: Fri, 27 Oct 2017 19:39:13 -0400 Subject: proxy Pastebin requests through our API instead of third parties, improve error-handling (#358) --- src/SMAPI.Web/Startup.cs | 1 + 1 file changed, 1 insertion(+) (limited to 'src/SMAPI.Web/Startup.cs') diff --git a/src/SMAPI.Web/Startup.cs b/src/SMAPI.Web/Startup.cs index abce8f28..c0ea90da 100644 --- a/src/SMAPI.Web/Startup.cs +++ b/src/SMAPI.Web/Startup.cs @@ -43,6 +43,7 @@ namespace StardewModdingAPI.Web { services .Configure(this.Configuration.GetSection("ModUpdateCheck")) + .Configure(this.Configuration.GetSection("LogParser")) .Configure(options => options.ConstraintMap.Add("semanticVersion", typeof(VersionConstraint))) .AddMemoryCache() .AddMvc() -- cgit From 3f43ebcc0e31db523fa82a163374cebf2f577cde Mon Sep 17 00:00:00 2001 From: Jesse Plamondon-Willard Date: Fri, 27 Oct 2017 21:10:36 -0400 Subject: fix issues with subdomain routing in log UI (#358) --- src/SMAPI.Web/Startup.cs | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) (limited to 'src/SMAPI.Web/Startup.cs') diff --git a/src/SMAPI.Web/Startup.cs b/src/SMAPI.Web/Startup.cs index c0ea90da..e19593c7 100644 --- a/src/SMAPI.Web/Startup.cs +++ b/src/SMAPI.Web/Startup.cs @@ -1,3 +1,4 @@ +using System.Text.RegularExpressions; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Rewrite; @@ -64,7 +65,13 @@ 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 + .UseRewriter( + new RewriteOptions() + .Add(new RewriteSubdomainRule + { + ExceptPaths = new[] { new Regex("^/Content", RegexOptions.Compiled | RegexOptions.CultureInvariant | RegexOptions.IgnoreCase) } + }) + ) // convert subdomain.smapi.io => smapi.io/subdomain for routing .UseStaticFiles() // wwwroot folder .UseMvc(); } -- cgit From c6d8333c7a28b752397e171540306ceccf74ca12 Mon Sep 17 00:00:00 2001 From: Jesse Plamondon-Willard Date: Sat, 28 Oct 2017 11:53:54 -0400 Subject: improve criteria for subdomain rewriting (#358) --- src/SMAPI.Web/Startup.cs | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) (limited to 'src/SMAPI.Web/Startup.cs') diff --git a/src/SMAPI.Web/Startup.cs b/src/SMAPI.Web/Startup.cs index e19593c7..0f656e55 100644 --- a/src/SMAPI.Web/Startup.cs +++ b/src/SMAPI.Web/Startup.cs @@ -1,4 +1,3 @@ -using System.Text.RegularExpressions; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Rewrite; @@ -9,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 { @@ -65,13 +65,15 @@ namespace StardewModdingAPI.Web loggerFactory.AddConsole(this.Configuration.GetSection("Logging")); loggerFactory.AddDebug(); app - .UseRewriter( - new RewriteOptions() - .Add(new RewriteSubdomainRule - { - ExceptPaths = new[] { new Regex("^/Content", RegexOptions.Compiled | RegexOptions.CultureInvariant | RegexOptions.IgnoreCase) } - }) - ) // convert subdomain.smapi.io => smapi.io/subdomain for routing + .UseRewriter(new RewriteOptions() + // 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") + )) + ) .UseStaticFiles() // wwwroot folder .UseMvc(); } -- cgit From d545281ef3d83d4db43d5ca56eb59800c8a1b8d2 Mon Sep 17 00:00:00 2001 From: Jesse Plamondon-Willard Date: Sat, 28 Oct 2017 12:24:50 -0400 Subject: redirect web views to HTTPS (#358) --- src/SMAPI.Web/Startup.cs | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'src/SMAPI.Web/Startup.cs') diff --git a/src/SMAPI.Web/Startup.cs b/src/SMAPI.Web/Startup.cs index 0f656e55..b27ff9a5 100644 --- a/src/SMAPI.Web/Startup.cs +++ b/src/SMAPI.Web/Startup.cs @@ -66,6 +66,13 @@ namespace StardewModdingAPI.Web loggerFactory.AddDebug(); app .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 => -- cgit From 6638701d0221e82daa42581eddb3cf051d1f8de4 Mon Sep 17 00:00:00 2001 From: Jesse Plamondon-Willard Date: Sun, 29 Oct 2017 13:15:05 -0400 Subject: fix config not being injected from Amazon Beanstalk env props --- src/SMAPI.Web/Startup.cs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'src/SMAPI.Web/Startup.cs') diff --git a/src/SMAPI.Web/Startup.cs b/src/SMAPI.Web/Startup.cs index b27ff9a5..860354f1 100644 --- a/src/SMAPI.Web/Startup.cs +++ b/src/SMAPI.Web/Startup.cs @@ -31,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(); } -- cgit From 13baaf8920f4a80ac3c0cd41a16b9afb1b993048 Mon Sep 17 00:00:00 2001 From: Jesse Plamondon-Willard Date: Sun, 29 Oct 2017 22:18:08 -0400 Subject: add smapi.io shortcut URLs (#375) --- src/SMAPI.Web/Startup.cs | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'src/SMAPI.Web/Startup.cs') diff --git a/src/SMAPI.Web/Startup.cs b/src/SMAPI.Web/Startup.cs index 860354f1..bc491128 100644 --- a/src/SMAPI.Web/Startup.cs +++ b/src/SMAPI.Web/Startup.cs @@ -79,6 +79,10 @@ namespace StardewModdingAPI.Web && (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(); -- cgit From 8a2b779d0c59ab80ab6476ab28e838c69ab6c99a Mon Sep 17 00:00:00 2001 From: Jesse Plamondon-Willard Date: Wed, 1 Nov 2017 16:47:23 -0400 Subject: add CORS policy for *.smapi.io (#358) --- src/SMAPI.Web/Startup.cs | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'src/SMAPI.Web/Startup.cs') diff --git a/src/SMAPI.Web/Startup.cs b/src/SMAPI.Web/Startup.cs index bc491128..0ea9f7ee 100644 --- a/src/SMAPI.Web/Startup.cs +++ b/src/SMAPI.Web/Startup.cs @@ -64,6 +64,12 @@ namespace StardewModdingAPI.Web loggerFactory.AddConsole(this.Configuration.GetSection("Logging")); loggerFactory.AddDebug(); app + .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( -- cgit