Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions src/SIM.Sitecore9Installer/SIM.Sitecore9Installer.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -128,6 +128,7 @@
<Compile Include="Validation\Validators\AppPoolSiteValidator.cs" />
<Compile Include="Validation\Validators\CmDdsPatchSiteNameValidator.cs" />
<Compile Include="Validation\Validators\PathExistsValidator.cs" />
<Compile Include="Validation\Validators\PrerequisitesDownloadLinksValidator.cs" />
<Compile Include="Validation\Validators\SolrVersionValidator.cs" />
<Compile Include="Validation\Validators\SolrServiceValidator.cs" />
<Compile Include="Validation\Validators\SqlPefixValidator.cs" />
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,88 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Http;
using SIM.Sitecore9Installer.Tasks;

namespace SIM.Sitecore9Installer.Validation.Validators
{
public class PrerequisitesDownloadLinksValidator : BaseValidator
{
public override string SuccessMessage => "Prerequisites download links are valid.";

protected virtual string TaskName => "Prerequisites";

// parameter to validate the following known issue: https://github.com/Sitecore/Sitecore-Instance-Manager/wiki/Known-Issue-Outdated-Download-Link-to-Microsoft-Web-Platform-Installer
public virtual string WebPlatformDownload => "WebPlatformDownload";

protected override IEnumerable<ValidationResult> GetErrorsForTask(Task task, IEnumerable<InstallParam> paramsToValidate)
{
string paramNamePostfix = string.Empty;
if (this.Data.ContainsKey("ParamNamePostfix"))
{
paramNamePostfix = this.Data["ParamNamePostfix"];
}

List<string> paramValuePrefixes = new List<string>();
if (this.Data.ContainsKey("ParamValuePrefixes"))
{
paramValuePrefixes = this.Data["ParamValuePrefixes"].Split('|').ToList();
}

if (!string.IsNullOrEmpty(paramNamePostfix) && paramValuePrefixes.Count > 0)
{
if (task.Name.Equals(TaskName, StringComparison.InvariantCultureIgnoreCase))
{
foreach (InstallParam installParam in paramsToValidate)
{
if (paramValuePrefixes.Any(paramValuePrefix => installParam.Value.StartsWith(paramValuePrefix, StringComparison.InvariantCultureIgnoreCase)))
{
if (!this.IsDownloadLinkValid(installParam.Value))
{
if (installParam.Name == this.WebPlatformDownload)
{
yield return new ValidationResult(ValidatorState.Warning,
$"{TaskName}: the '{installParam.Name}' parameter contains the following invalid link that is not accessible:\n\n{installParam.Value}\n\nThis behavior looks to be related to the following known issue:\n\nhttps://github.com/Sitecore/Sitecore-Instance-Manager/wiki/Known-Issue-Outdated-Download-Link-to-Microsoft-Web-Platform-Installer\n\nPlease try to apply the solution mentioned there.",
null);
}
else
{
yield return new ValidationResult(ValidatorState.Warning,
$"{TaskName}: the '{installParam.Name}' parameter contains the following invalid link that is not accessible:\n\n{installParam.Value}\n\nThis behavior may occur due to similar symptoms described in the following known issue:\n\nhttps://github.com/Sitecore/Sitecore-Instance-Manager/wiki/Known-Issue-Outdated-Download-Link-to-Microsoft-Web-Platform-Installer",
null);
}
}
}
else if (installParam.Name.EndsWith(paramNamePostfix, StringComparison.InvariantCultureIgnoreCase))
{
yield return new ValidationResult(ValidatorState.Warning,
$"{TaskName}: the '{installParam.Name}' parameter contains the following invalid value:\n\n{installParam.Value}\n\nIt should contain download link that starts with '{string.Join("' or '", paramValuePrefixes)}'.",
null);
}
}
}
}
}

private bool IsDownloadLinkValid(string link)
{
using (HttpClient authClient = new HttpClient())
{
try
{
var response = authClient.SendAsync(new HttpRequestMessage(HttpMethod.Head, new Uri(link))).Result;
if (response.IsSuccessStatusCode)
{
return true;
}
}
catch
{
return false;
}
}

return false;
}
}
}
20 changes: 16 additions & 4 deletions src/SIM.Tool/GlobalParamsConfig/Validators.json
Original file line number Diff line number Diff line change
Expand Up @@ -202,6 +202,14 @@
"Data": {
"LicenseFileVariable": "LicenseFile"
}
},
{
"Name": "PrerequisitesDownloadLinksValidator",
"Type": "SIM.Sitecore9Installer.Validation.Validators.PrerequisitesDownloadLinksValidator",
"Data": {
"ParamNamePostfix": "Download",
"ParamValuePrefixes": "http://|https://"
}
}
],
"ValidatorLists": {
Expand Down Expand Up @@ -241,22 +249,26 @@
"Sitecore_9.1": [
"9.1_SqlCompatibilityValidator",
"9.1_SolrVersionValidator",
"CmIdentityServerSiteNameValidator"
"CmIdentityServerSiteNameValidator",
"PrerequisitesDownloadLinksValidator"
],
"Sitecore_9.2": [
"9.2_SqlCompatibilityValidator",
"9.2_SolrVersionValidator",
"CmIdentityServerSiteNameValidator"
"CmIdentityServerSiteNameValidator",
"PrerequisitesDownloadLinksValidator"
],
"Sitecore_9.3": [
"9.3_SqlCompatibilityValidator",
"9.3_SolrVersionValidator",
"CmIdentityServerSiteNameValidator"
"CmIdentityServerSiteNameValidator",
"PrerequisitesDownloadLinksValidator"
],
"Sitecore_10.0": [
"9.3_SqlCompatibilityValidator",
"10.0_SolrVersionValidator",
"CmIdentityServerSiteNameValidator"
"CmIdentityServerSiteNameValidator",
"PrerequisitesDownloadLinksValidator"
]
}
}