Port 7.7 - WIP

This commit is contained in:
Stephan
2017-09-19 15:51:47 +02:00
parent d54658009c
commit 9ed6576908
126 changed files with 3447 additions and 596 deletions

View File

@@ -30,8 +30,7 @@ namespace Umbraco.Web.HealthCheck.Checks.Config
{
get
{
return TextService.Localize("healthcheck/customErrorsCheckSuccessMessage",
new[] { Values.First(v => v.IsRecommended).Value });
return TextService.Localize("healthcheck/customErrorsCheckSuccessMessage", new[] { CurrentValue });
}
}

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,11 +75,32 @@ 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
IEnumerable<string> requiredFailedPaths;
IEnumerable<string> optionalFailedPaths;
var requiredPathCheckResult = FilePermissionHelper.EnsureDirectories(GetPathsToCheck(pathsToCheck, PermissionCheckRequirement.Required), out requiredFailedPaths);
var optionalPathCheckResult = FilePermissionHelper.EnsureDirectories(GetPathsToCheck(pathsToCheck, PermissionCheckRequirement.Optional), out optionalFailedPaths);
var requiredPathCheckResult = FilePermissionHelper.EnsureDirectories(
GetPathsToCheck(pathsToCheck, PermissionCheckRequirement.Required), out var requiredFailedPaths);
var optionalPathCheckResult = FilePermissionHelper.EnsureDirectories(
GetPathsToCheck(pathsToCheck, PermissionCheckRequirement.Optional), out var optionalFailedPaths);
//now check the special folders
var requiredPathCheckResult2 = FilePermissionHelper.EnsureDirectories(
GetPathsToCheck(pathsToCheckWithRestarts, PermissionCheckRequirement.Required), out var requiredFailedPaths2, writeCausesRestart:true);
var optionalPathCheckResult2 = FilePermissionHelper.EnsureDirectories(
GetPathsToCheck(pathsToCheckWithRestarts, PermissionCheckRequirement.Optional), out var 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);
}

View File

@@ -50,17 +50,10 @@ namespace Umbraco.Web.HealthCheck.NotificationMethods
var subject = _textService.Localize("healthcheck/scheduledHealthCheckEmailSubject");
using (var client = new SmtpClient())
var mailSender = new EmailSender();
using (var mailMessage = CreateMailMessage(subject, message))
{
if (client.DeliveryMethod == SmtpDeliveryMethod.Network)
{
await client.SendMailAsync(mailMessage);
}
else
{
client.Send(mailMessage);
}
await mailSender.SendAsync(mailMessage);
}
}

View File

@@ -5,6 +5,7 @@ namespace Umbraco.Web.HealthCheck.NotificationMethods
{
public interface IHealthCheckNotificationMethod
{
bool Enabled { get; }
Task SendAsync(HealthCheckResults results, CancellationToken token);
}
}