aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Monteiro <marknr.monteiro@protonmail.com>2020-03-15 16:24:04 +0100
committerMark Monteiro <marknr.monteiro@protonmail.com>2020-03-15 16:24:04 +0100
commit602112fba433fa8919133d7ff292b0cd5a912aa2 (patch)
tree512287bcf60f767be6fee14b88db8995adf38a3a
parent2a0153737131a404a8ccd386ad09ff4a1a697dfc (diff)
Return 404 for static web resources when the 'nowebcontent' flag is set
-rw-r--r--MediaBrowser.WebDashboard/Api/DashboardService.cs26
1 files changed, 23 insertions, 3 deletions
diff --git a/MediaBrowser.WebDashboard/Api/DashboardService.cs b/MediaBrowser.WebDashboard/Api/DashboardService.cs
index 83cc6c682..11901c25f 100644
--- a/MediaBrowser.WebDashboard/Api/DashboardService.cs
+++ b/MediaBrowser.WebDashboard/Api/DashboardService.cs
@@ -7,12 +7,14 @@ using MediaBrowser.Common.Extensions;
using MediaBrowser.Common.Plugins;
using MediaBrowser.Controller;
using MediaBrowser.Controller.Configuration;
+using MediaBrowser.Controller.Extensions;
using MediaBrowser.Controller.Net;
using MediaBrowser.Controller.Plugins;
using MediaBrowser.Model.IO;
using MediaBrowser.Model.Net;
using MediaBrowser.Model.Plugins;
using MediaBrowser.Model.Services;
+using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Logging;
namespace MediaBrowser.WebDashboard.Api
@@ -113,6 +115,7 @@ namespace MediaBrowser.WebDashboard.Api
private readonly IFileSystem _fileSystem;
private IResourceFileManager _resourceFileManager;
+ private readonly IConfiguration _appConfig;
/// <summary>
/// Initializes a new instance of the <see cref="DashboardService" /> class.
@@ -123,7 +126,8 @@ namespace MediaBrowser.WebDashboard.Api
IServerConfigurationManager serverConfigurationManager,
IFileSystem fileSystem,
ILogger<DashboardService> logger,
- IHttpResultFactory resultFactory)
+ IHttpResultFactory resultFactory,
+ IConfiguration appConfig)
{
_appHost = appHost;
_serverConfigurationManager = serverConfigurationManager;
@@ -131,16 +135,22 @@ namespace MediaBrowser.WebDashboard.Api
_logger = logger;
_resultFactory = resultFactory;
_resourceFileManager = resourceFileManager;
+ _appConfig = appConfig;
}
/// <summary>
- /// Gets the path for the web interface.
+ /// Gets the path of the directory containing the static web interface content, or null if the server is not
+ /// hosting the static web content.
/// </summary>
- /// <value>The path for the web interface.</value>
public string DashboardUIPath
{
get
{
+ if (_appConfig.NoWebContent())
+ {
+ return null;
+ }
+
if (!string.IsNullOrEmpty(_serverConfigurationManager.Configuration.DashboardSourcePath))
{
return _serverConfigurationManager.Configuration.DashboardSourcePath;
@@ -301,6 +311,11 @@ namespace MediaBrowser.WebDashboard.Api
/// <returns>System.Object.</returns>
public async Task<object> Get(GetDashboardResource request)
{
+ if (_appConfig.NoWebContent() || DashboardUIPath == null)
+ {
+ throw new ResourceNotFoundException();
+ }
+
var path = request.ResourceName;
var contentType = MimeTypes.GetMimeType(path);
@@ -372,6 +387,11 @@ namespace MediaBrowser.WebDashboard.Api
public async Task<object> Get(GetDashboardPackage request)
{
+ if (_appConfig.NoWebContent() || DashboardUIPath == null)
+ {
+ throw new ResourceNotFoundException();
+ }
+
var mode = request.Mode;
var inputPath = string.IsNullOrWhiteSpace(mode) ?