U4-10249 FolderAndFilePermissions HealthCheck causes the application to restart

(cherry picked from commit bdb991f6dc)
This commit is contained in:
Shannon
2017-08-18 14:50:20 +10:00
committed by Sebastiaan Janssen
parent a0785f2e0d
commit e71e9d7efb
2 changed files with 75 additions and 5 deletions

View File

@@ -59,12 +59,10 @@ namespace Umbraco.Web.HealthCheck.Checks.Permissions
// in ALL circumstances or just some
var pathsToCheck = new Dictionary<string, PermissionCheckRequirement>
{
{ SystemDirectories.AppCode, PermissionCheckRequirement.Optional },
{ SystemDirectories.Data, PermissionCheckRequirement.Required },
{ SystemDirectories.Packages, PermissionCheckRequirement.Required},
{ SystemDirectories.Preview, PermissionCheckRequirement.Required },
{ SystemDirectories.AppPlugins, PermissionCheckRequirement.Required },
{ SystemDirectories.Bin, PermissionCheckRequirement.Optional },
{ SystemDirectories.Config, PermissionCheckRequirement.Optional },
{ SystemDirectories.Css, PermissionCheckRequirement.Optional },
{ SystemDirectories.Masterpages, PermissionCheckRequirement.Optional },
@@ -77,12 +75,33 @@ namespace Umbraco.Web.HealthCheck.Checks.Permissions
{ SystemDirectories.Xslt, PermissionCheckRequirement.Optional },
};
//These are special paths to check that will restart an app domain if a file is written to them,
//so these need to be tested differently
var pathsToCheckWithRestarts = new Dictionary<string, PermissionCheckRequirement>
{
{ SystemDirectories.AppCode, PermissionCheckRequirement.Optional },
{ SystemDirectories.Bin, PermissionCheckRequirement.Optional }
};
// Run checks for required and optional paths for modify permission
List<string> requiredFailedPaths;
List<string> optionalFailedPaths;
var requiredPathCheckResult = FilePermissionHelper.TestDirectories(GetPathsToCheck(pathsToCheck, PermissionCheckRequirement.Required), out requiredFailedPaths);
var optionalPathCheckResult = FilePermissionHelper.TestDirectories(GetPathsToCheck(pathsToCheck, PermissionCheckRequirement.Optional), out optionalFailedPaths);
//now check the special folders
List<string> requiredFailedPaths2;
List<string> optionalFailedPaths2;
var requiredPathCheckResult2 = FilePermissionHelper.TestDirectories(GetPathsToCheck(pathsToCheckWithRestarts, PermissionCheckRequirement.Required), out requiredFailedPaths2, writeCausesRestart:true);
var optionalPathCheckResult2 = FilePermissionHelper.TestDirectories(GetPathsToCheck(pathsToCheckWithRestarts, PermissionCheckRequirement.Optional), out optionalFailedPaths2, writeCausesRestart: true);
requiredPathCheckResult = requiredPathCheckResult && requiredPathCheckResult2;
optionalPathCheckResult = optionalPathCheckResult && optionalPathCheckResult2;
//combine the paths
requiredFailedPaths = requiredFailedPaths.Concat(requiredFailedPaths2).ToList();
optionalFailedPaths = requiredFailedPaths.Concat(optionalFailedPaths2).ToList();
return GetStatus(requiredPathCheckResult, requiredFailedPaths, optionalPathCheckResult, optionalFailedPaths, PermissionCheckFor.Folder);
}