mirror of
https://github.com/xcp-ng/xenadmin.git
synced 2024-11-23 20:36:33 +01:00
CP-35632: Support for new alerts.
Signed-off-by: Konstantina Chremmou <konstantina.chremmou@citrix.com>
This commit is contained in:
parent
f4e17109c8
commit
f2eb3fa973
@ -30,7 +30,6 @@
|
||||
*/
|
||||
|
||||
using System;
|
||||
using System.Linq;
|
||||
using System.Xml;
|
||||
using XenAdmin.Commands;
|
||||
using XenAdmin.Core;
|
||||
@ -41,14 +40,11 @@ namespace XenAdmin.Alerts
|
||||
{
|
||||
public class CertificateAlert : MessageAlert
|
||||
{
|
||||
private readonly Host _host;
|
||||
private readonly DateTime? _certificateExpiryDate;
|
||||
|
||||
public CertificateAlert(Message m)
|
||||
: base(m)
|
||||
{
|
||||
_host = m.Connection.Cache.Hosts.FirstOrDefault(h => h.uuid == m.obj_uuid);
|
||||
|
||||
try
|
||||
{
|
||||
var doc = new XmlDocument();
|
||||
@ -70,8 +66,57 @@ namespace XenAdmin.Alerts
|
||||
{
|
||||
switch (Message.Type)
|
||||
{
|
||||
case Message.MessageType.POOL_CA_CERTIFICATE_EXPIRED:
|
||||
return string.Format(Messages.CERTIFICATE_CA_ALERT_EXPIRED_TITLE, XenObject.Name());
|
||||
|
||||
case Message.MessageType.POOL_CA_CERTIFICATE_EXPIRING_07:
|
||||
case Message.MessageType.POOL_CA_CERTIFICATE_EXPIRING_14:
|
||||
case Message.MessageType.POOL_CA_CERTIFICATE_EXPIRING_30:
|
||||
if (_certificateExpiryDate.HasValue && _certificateExpiryDate.Value > Timestamp)
|
||||
{
|
||||
var eta = _certificateExpiryDate.Value - Timestamp;
|
||||
|
||||
if (eta.TotalDays >= 1)
|
||||
return string.Format(Messages.CERTIFICATE_CA_ALERT_EXPIRING_TITLE_DAYS, XenObject.Name(),
|
||||
Math.Round(eta.TotalDays, MidpointRounding.AwayFromZero));
|
||||
|
||||
if (eta.TotalHours >= 1)
|
||||
return string.Format(Messages.CERTIFICATE_CA_ALERT_EXPIRING_TITLE_HOURS, XenObject.Name(),
|
||||
Math.Round(eta.TotalHours, MidpointRounding.AwayFromZero));
|
||||
|
||||
if (eta.TotalMinutes >= 1)
|
||||
return string.Format(Messages.CERTIFICATE_CA_ALERT_EXPIRING_TITLE_MINUTES, XenObject.Name(),
|
||||
Math.Round(eta.TotalMinutes, MidpointRounding.AwayFromZero));
|
||||
}
|
||||
return string.Format(Messages.CERTIFICATE_CA_ALERT_EXPIRED_TITLE, XenObject.Name());
|
||||
|
||||
case Message.MessageType.HOST_INTERNAL_CERTIFICATE_EXPIRED:
|
||||
return string.Format(Messages.CERTIFICATE_HOST_INTERNAL_ALERT_EXPIRED_TITLE, XenObject.Name());
|
||||
|
||||
case Message.MessageType.HOST_INTERNAL_CERTIFICATE_EXPIRING_07:
|
||||
case Message.MessageType.HOST_INTERNAL_CERTIFICATE_EXPIRING_14:
|
||||
case Message.MessageType.HOST_INTERNAL_CERTIFICATE_EXPIRING_30:
|
||||
if (_certificateExpiryDate.HasValue && _certificateExpiryDate.Value > Timestamp)
|
||||
{
|
||||
var eta = _certificateExpiryDate.Value - Timestamp;
|
||||
|
||||
if (eta.TotalDays >= 1)
|
||||
return string.Format(Messages.CERTIFICATE_HOST_INTERNAL_ALERT_EXPIRING_TITLE_DAYS, XenObject.Name(),
|
||||
Math.Round(eta.TotalDays, MidpointRounding.AwayFromZero));
|
||||
|
||||
if (eta.TotalHours >= 1)
|
||||
return string.Format(Messages.CERTIFICATE_HOST_INTERNAL_ALERT_EXPIRING_TITLE_HOURS, XenObject.Name(),
|
||||
Math.Round(eta.TotalHours, MidpointRounding.AwayFromZero));
|
||||
|
||||
if (eta.TotalMinutes >= 1)
|
||||
return string.Format(Messages.CERTIFICATE_HOST_INTERNAL_ALERT_EXPIRING_TITLE_MINUTES, XenObject.Name(),
|
||||
Math.Round(eta.TotalMinutes, MidpointRounding.AwayFromZero));
|
||||
}
|
||||
return string.Format(Messages.CERTIFICATE_HOST_INTERNAL_ALERT_EXPIRED_TITLE, XenObject.Name());
|
||||
|
||||
case Message.MessageType.HOST_SERVER_CERTIFICATE_EXPIRED:
|
||||
return string.Format(Messages.CERTIFICATE_ALERT_EXPIRED_TITLE, _host.Name());
|
||||
return string.Format(Messages.CERTIFICATE_HOST_ALERT_EXPIRED_TITLE, XenObject.Name());
|
||||
|
||||
case Message.MessageType.HOST_SERVER_CERTIFICATE_EXPIRING_07:
|
||||
case Message.MessageType.HOST_SERVER_CERTIFICATE_EXPIRING_14:
|
||||
case Message.MessageType.HOST_SERVER_CERTIFICATE_EXPIRING_30:
|
||||
@ -80,19 +125,19 @@ namespace XenAdmin.Alerts
|
||||
var eta = _certificateExpiryDate.Value - Timestamp;
|
||||
|
||||
if (eta.TotalDays >= 1)
|
||||
return string.Format(Messages.CERTIFICATE_ALERT_EXPIRING_TITLE_DAYS, _host.Name(),
|
||||
return string.Format(Messages.CERTIFICATE_HOST_ALERT_EXPIRING_TITLE_DAYS, XenObject.Name(),
|
||||
Math.Round(eta.TotalDays, MidpointRounding.AwayFromZero));
|
||||
|
||||
if (eta.TotalHours >= 1)
|
||||
return string.Format(Messages.CERTIFICATE_ALERT_EXPIRING_TITLE_HOURS, _host.Name(),
|
||||
return string.Format(Messages.CERTIFICATE_HOST_ALERT_EXPIRING_TITLE_HOURS, XenObject.Name(),
|
||||
Math.Round(eta.TotalHours, MidpointRounding.AwayFromZero));
|
||||
|
||||
if (eta.TotalMinutes >= 1)
|
||||
return string.Format(Messages.CERTIFICATE_ALERT_EXPIRING_TITLE_MINUTES, _host.Name(),
|
||||
return string.Format(Messages.CERTIFICATE_HOST_ALERT_EXPIRING_TITLE_MINUTES, XenObject.Name(),
|
||||
Math.Round(eta.TotalMinutes, MidpointRounding.AwayFromZero));
|
||||
}
|
||||
return string.Format(Messages.CERTIFICATE_HOST_ALERT_EXPIRED_TITLE, XenObject.Name());
|
||||
|
||||
return string.Format(Messages.CERTIFICATE_ALERT_EXPIRED_TITLE, _host.Name());
|
||||
default:
|
||||
return base.Title;
|
||||
}
|
||||
@ -104,18 +149,38 @@ namespace XenAdmin.Alerts
|
||||
{
|
||||
get
|
||||
{
|
||||
if (_host == null)
|
||||
if (XenObject == null)
|
||||
return base.Title;
|
||||
|
||||
switch (Message.Type)
|
||||
{
|
||||
case Message.MessageType.POOL_CA_CERTIFICATE_EXPIRED:
|
||||
return string.Format(Messages.CERTIFICATE_CA_ALERT_EXPIRED_DESCIRPTION, XenObject.Name(), GetExpiryDate());
|
||||
|
||||
case Message.MessageType.POOL_CA_CERTIFICATE_EXPIRING_07:
|
||||
case Message.MessageType.POOL_CA_CERTIFICATE_EXPIRING_14:
|
||||
case Message.MessageType.POOL_CA_CERTIFICATE_EXPIRING_30:
|
||||
return string.Format(Messages.CERTIFICATE_CA_ALERT_EXPIRING_DESCRIPTION,
|
||||
XenObject.Name(), GetExpiryDate());
|
||||
|
||||
case Message.MessageType.HOST_INTERNAL_CERTIFICATE_EXPIRED:
|
||||
return string.Format(Messages.CERTIFICATE_HOST_INTERNAL_ALERT_EXPIRED_DESCIRPTION, XenObject.Name(), GetExpiryDate());
|
||||
|
||||
case Message.MessageType.HOST_INTERNAL_CERTIFICATE_EXPIRING_07:
|
||||
case Message.MessageType.HOST_INTERNAL_CERTIFICATE_EXPIRING_14:
|
||||
case Message.MessageType.HOST_INTERNAL_CERTIFICATE_EXPIRING_30:
|
||||
return string.Format(Messages.CERTIFICATE_HOST_INTERNAL_ALERT_EXPIRING_DESCRIPTION,
|
||||
XenObject.Name(), GetExpiryDate());
|
||||
|
||||
case Message.MessageType.HOST_SERVER_CERTIFICATE_EXPIRED:
|
||||
return string.Format(Messages.CERTIFICATE_ALERT_EXPIRED_DESCIRPTION, _host.Name(), GetExpiryDate());
|
||||
return string.Format(Messages.CERTIFICATE_HOST_ALERT_EXPIRED_DESCIRPTION, XenObject.Name(), GetExpiryDate());
|
||||
|
||||
case Message.MessageType.HOST_SERVER_CERTIFICATE_EXPIRING_07:
|
||||
case Message.MessageType.HOST_SERVER_CERTIFICATE_EXPIRING_14:
|
||||
case Message.MessageType.HOST_SERVER_CERTIFICATE_EXPIRING_30:
|
||||
return string.Format(Messages.CERTIFICATE_ALERT_EXPIRING_DESCRIPTION,
|
||||
_host.Name(), GetExpiryDate());
|
||||
return string.Format(Messages.CERTIFICATE_HOST_ALERT_EXPIRING_DESCRIPTION,
|
||||
XenObject.Name(), GetExpiryDate());
|
||||
|
||||
default:
|
||||
return base.Title;
|
||||
}
|
||||
@ -126,14 +191,44 @@ namespace XenAdmin.Alerts
|
||||
{
|
||||
get
|
||||
{
|
||||
var cmd = new InstallCertificateCommand(Program.MainWindow, XenObject as Host);
|
||||
if (cmd.CanExecute())
|
||||
return () => cmd.Execute();
|
||||
return null;
|
||||
if (!(XenObject is Host host))
|
||||
return null;
|
||||
|
||||
switch (Message.Type)
|
||||
{
|
||||
case Message.MessageType.HOST_SERVER_CERTIFICATE_EXPIRED:
|
||||
case Message.MessageType.HOST_SERVER_CERTIFICATE_EXPIRING_07:
|
||||
case Message.MessageType.HOST_SERVER_CERTIFICATE_EXPIRING_14:
|
||||
case Message.MessageType.HOST_SERVER_CERTIFICATE_EXPIRING_30:
|
||||
var cmd = new InstallCertificateCommand(Program.MainWindow, host);
|
||||
if (cmd.CanExecute())
|
||||
return () => cmd.Execute();
|
||||
return null;
|
||||
default:
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public override string FixLinkText => Messages.INSTALL_SERVER_CERTIFICATE_ACTION_LINK;
|
||||
public override string FixLinkText
|
||||
{
|
||||
get
|
||||
{
|
||||
if (!(XenObject is Host))
|
||||
return null;
|
||||
|
||||
switch (Message.Type)
|
||||
{
|
||||
case Message.MessageType.HOST_SERVER_CERTIFICATE_EXPIRED:
|
||||
case Message.MessageType.HOST_SERVER_CERTIFICATE_EXPIRING_07:
|
||||
case Message.MessageType.HOST_SERVER_CERTIFICATE_EXPIRING_14:
|
||||
case Message.MessageType.HOST_SERVER_CERTIFICATE_EXPIRING_30:
|
||||
return Messages.INSTALL_SERVER_CERTIFICATE_ACTION_LINK;
|
||||
default:
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public override string HelpID => "CertificateAlert";
|
||||
|
||||
|
218
XenAdmin/Alerts/Types/FailedLoginAttemptAlert.cs
Normal file
218
XenAdmin/Alerts/Types/FailedLoginAttemptAlert.cs
Normal file
@ -0,0 +1,218 @@
|
||||
/* Copyright (c) Citrix Systems, Inc.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms,
|
||||
* with or without modification, are permitted provided
|
||||
* that the following conditions are met:
|
||||
*
|
||||
* * Redistributions of source code must retain the above
|
||||
* copyright notice, this list of conditions and the
|
||||
* following disclaimer.
|
||||
* * Redistributions in binary form must reproduce the above
|
||||
* copyright notice, this list of conditions and the
|
||||
* following disclaimer in the documentation and/or other
|
||||
* materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
|
||||
* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
|
||||
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
|
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
||||
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Xml;
|
||||
using XenAdmin.Core;
|
||||
using XenAPI;
|
||||
|
||||
|
||||
namespace XenAdmin.Alerts
|
||||
{
|
||||
public class FailedLoginAttemptAlert : MessageAlert
|
||||
{
|
||||
private readonly Pool _pool;
|
||||
private readonly int _total;
|
||||
private readonly int _unknown;
|
||||
private readonly List<Offender> _topOffenders = new List<Offender>();
|
||||
|
||||
public FailedLoginAttemptAlert(Message m)
|
||||
: base(m)
|
||||
{
|
||||
_pool = m.Connection.Cache.Pools.FirstOrDefault(p => p.uuid == m.obj_uuid);
|
||||
|
||||
try
|
||||
{
|
||||
/* - Total and unknown are optional (unknown being absent implies that all the failed
|
||||
logins came from known sources, and conversely total being absent implies that all
|
||||
the failed logins came from unknown sources).
|
||||
- There may be 0 or more known tags.
|
||||
- Each known tag must contain date and number, but the other tags (ip, originator,
|
||||
username, useragent) are all optional (though we expect at least one) */
|
||||
|
||||
var doc = new XmlDocument();
|
||||
doc.LoadXml(m.body);
|
||||
|
||||
var totalNodes = doc.GetElementsByTagName("total");
|
||||
if (totalNodes.Count > 0)
|
||||
int.TryParse(totalNodes[0].InnerText, out _total);
|
||||
|
||||
var unknownNodes = doc.GetElementsByTagName("unknown");
|
||||
if (unknownNodes.Count > 0)
|
||||
int.TryParse(unknownNodes[0].InnerText, out _unknown);
|
||||
|
||||
var knownNodes = doc.GetElementsByTagName("known");
|
||||
foreach (XmlNode node in knownNodes)
|
||||
{
|
||||
var offender = new Offender();
|
||||
|
||||
foreach (XmlNode child in node.ChildNodes)
|
||||
{
|
||||
switch (child.Name)
|
||||
{
|
||||
case "number":
|
||||
if (int.TryParse(child.InnerText, out var number))
|
||||
offender.Number = number;
|
||||
break;
|
||||
case "date":
|
||||
if (Util.TryParseIso8601DateTime(child.InnerText, out var date))
|
||||
offender.Date = date;
|
||||
break;
|
||||
case "ip":
|
||||
offender.Ip = child.InnerText;
|
||||
break;
|
||||
case "originator":
|
||||
offender.Originator = child.InnerText;
|
||||
break;
|
||||
case "username":
|
||||
offender.Username = child.InnerText;
|
||||
break;
|
||||
case "useragent":
|
||||
offender.Useragent = child.InnerText;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
_topOffenders.Add(offender);
|
||||
}
|
||||
}
|
||||
catch
|
||||
{
|
||||
//ignore
|
||||
}
|
||||
}
|
||||
|
||||
public override string Title => _pool == null
|
||||
? base.Title
|
||||
: string.Format(Messages.ALERT_FAILED_LOGIN_ATTEMPT_TITLE, _pool.Name());
|
||||
|
||||
public override string Description
|
||||
{
|
||||
get
|
||||
{
|
||||
if (_total == 0 && _unknown > 0)
|
||||
return string.Format(Messages.ALERT_FAILED_LOGIN_ATTEMPT_DESCRIPTION_ALL_UNKNOWN, _unknown);
|
||||
|
||||
var sb = new StringBuilder();
|
||||
|
||||
if (_total > 0)
|
||||
sb.AppendLine(string.Format(Messages.ALERT_FAILED_LOGIN_ATTEMPT_DESCRIPTION_TOTAL, _total));
|
||||
|
||||
if (_unknown > 0)
|
||||
sb.AppendLine(string.Format(Messages.ALERT_FAILED_LOGIN_ATTEMPT_DESCRIPTION_UNKNOWN, _unknown));
|
||||
|
||||
if (_topOffenders.Count > 0)
|
||||
{
|
||||
sb.AppendLine(Messages.ALERT_FAILED_LOGIN_ATTEMPT_DESCRIPTION_COMMON);
|
||||
|
||||
foreach (var offender in _topOffenders)
|
||||
sb.AppendLine(offender.ToString());
|
||||
}
|
||||
|
||||
return sb.Length > 0 ? sb.ToString() : base.Title;
|
||||
}
|
||||
}
|
||||
|
||||
public override Action FixLinkAction => null;
|
||||
|
||||
public override string FixLinkText => null;
|
||||
|
||||
public override string HelpID => "FailedLoginAttemptAlert";
|
||||
|
||||
public override string HelpLinkText => Messages.ALERT_GENERIC_HELP;
|
||||
|
||||
|
||||
private class Offender
|
||||
{
|
||||
/// <summary>
|
||||
/// Number of failed login attempts from this offender
|
||||
/// </summary>
|
||||
public int Number { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// DateTime of last failed login attempt from this offender
|
||||
/// </summary>
|
||||
public DateTime? Date { private get; set;}
|
||||
|
||||
/// <summary>
|
||||
/// Offender IP address
|
||||
/// </summary>
|
||||
public string Ip { get; set;}
|
||||
|
||||
public string Originator { get; set;}
|
||||
public string Username { get; set;}
|
||||
public string Useragent { get; set;}
|
||||
|
||||
private string GetFriendlyDate()
|
||||
{
|
||||
string date = string.Empty;
|
||||
|
||||
Program.Invoke(Program.MainWindow,
|
||||
() =>
|
||||
{
|
||||
if (Date.HasValue)
|
||||
date = HelpersGUI.DateTimeToString(Date.Value.ToLocalTime(), Messages.DATEFORMAT_DMY_HM, true);
|
||||
});
|
||||
|
||||
return date;
|
||||
}
|
||||
|
||||
public override string ToString()
|
||||
{
|
||||
var entries = new List<string>();
|
||||
|
||||
if (!string.IsNullOrEmpty(Ip))
|
||||
entries.Add(string.Format(Messages.ALERT_FAILED_LOGIN_ATTEMPT_OFFENDER_IP, Ip));
|
||||
|
||||
if (Number > 0)
|
||||
entries.Add(string.Format(Messages.ALERT_FAILED_LOGIN_ATTEMPT_OFFENDER_NUMBER, Number));
|
||||
|
||||
var friendlyDate = GetFriendlyDate();
|
||||
if (!string.IsNullOrEmpty(friendlyDate))
|
||||
entries.Add(string.Format(Messages.ALERT_FAILED_LOGIN_ATTEMPT_OFFENDER_DATE, friendlyDate));
|
||||
|
||||
if (!string.IsNullOrEmpty(Username))
|
||||
entries.Add(string.Format(Messages.ALERT_FAILED_LOGIN_ATTEMPT_OFFENDER_USERNAME, Username));
|
||||
|
||||
if (!string.IsNullOrEmpty(Originator))
|
||||
entries.Add(string.Format(Messages.ALERT_FAILED_LOGIN_ATTEMPT_OFFENDER_ORIGINATOR, Originator));
|
||||
|
||||
if (!string.IsNullOrEmpty(Useragent))
|
||||
entries.Add(string.Format(Messages.ALERT_FAILED_LOGIN_ATTEMPT_OFFENDER_USERAGENT, Useragent));
|
||||
|
||||
return $"- {string.Join(", ", entries)}";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -151,6 +151,7 @@ namespace XenAdmin.Alerts
|
||||
case Message.MessageType.CLUSTER_HOST_FENCING:
|
||||
case Message.MessageType.CLUSTER_HOST_ENABLE_FAILED:
|
||||
case Message.MessageType.VM_SECURE_BOOT_FAILED:
|
||||
case Message.MessageType.TLS_VERIFICATION_EMERGENCY_DISABLED:
|
||||
if (XenObject != null)
|
||||
return string.Format(FriendlyFormat(), Helpers.GetName(XenObject));
|
||||
break;
|
||||
@ -368,6 +369,7 @@ namespace XenAdmin.Alerts
|
||||
if (repairSrCommand.CanExecute())
|
||||
return () => repairSrCommand.Execute();
|
||||
return null;
|
||||
|
||||
default:
|
||||
return null;
|
||||
}
|
||||
@ -476,11 +478,22 @@ namespace XenAdmin.Alerts
|
||||
case Message.MessageType.VMSS_SNAPSHOT_LOCK_FAILED:
|
||||
return new PolicyAlert(msg);
|
||||
|
||||
case Message.MessageType.POOL_CA_CERTIFICATE_EXPIRED:
|
||||
case Message.MessageType.POOL_CA_CERTIFICATE_EXPIRING_07:
|
||||
case Message.MessageType.POOL_CA_CERTIFICATE_EXPIRING_14:
|
||||
case Message.MessageType.POOL_CA_CERTIFICATE_EXPIRING_30:
|
||||
case Message.MessageType.HOST_SERVER_CERTIFICATE_EXPIRED:
|
||||
case Message.MessageType.HOST_SERVER_CERTIFICATE_EXPIRING_07:
|
||||
case Message.MessageType.HOST_SERVER_CERTIFICATE_EXPIRING_14:
|
||||
case Message.MessageType.HOST_SERVER_CERTIFICATE_EXPIRING_30:
|
||||
case Message.MessageType.HOST_INTERNAL_CERTIFICATE_EXPIRED:
|
||||
case Message.MessageType.HOST_INTERNAL_CERTIFICATE_EXPIRING_07:
|
||||
case Message.MessageType.HOST_INTERNAL_CERTIFICATE_EXPIRING_14:
|
||||
case Message.MessageType.HOST_INTERNAL_CERTIFICATE_EXPIRING_30:
|
||||
return new CertificateAlert(msg);
|
||||
|
||||
case Message.MessageType.FAILED_LOGIN_ATTEMPTS:
|
||||
return new FailedLoginAttemptAlert(msg);
|
||||
default:
|
||||
// For all other kinds of alert
|
||||
return new MessageAlert(msg);
|
||||
|
@ -99,6 +99,7 @@
|
||||
<Compile Include="Actions\GUIActions\SaveDataSourceStateAction.cs" />
|
||||
<Compile Include="Actions\GUIActions\SearchAction.cs" />
|
||||
<Compile Include="Alerts\NewVersionPriorityAlertComparer.cs" />
|
||||
<Compile Include="Alerts\Types\FailedLoginAttemptAlert.cs" />
|
||||
<Compile Include="Alerts\Types\CertificateAlert.cs" />
|
||||
<Compile Include="Alerts\Types\AlarmMessageAlert.cs" />
|
||||
<Compile Include="Alerts\Types\HotfixEligibilityAlert.cs" />
|
||||
|
18
XenModel/FriendlyNames.Designer.cs
generated
18
XenModel/FriendlyNames.Designer.cs
generated
@ -4040,6 +4040,15 @@ namespace XenAdmin {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Certificate verification is enabled on the pool, but overriden on server '{0}'..
|
||||
/// </summary>
|
||||
public static string Message_body_tls_verification_emergency_disabled {
|
||||
get {
|
||||
return ResourceManager.GetString("Message.body-tls_verification_emergency_disabled", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Quality of Service settings for disk '{0}' on virtual machine '{1}' could not be obeyed..
|
||||
/// </summary>
|
||||
@ -4850,6 +4859,15 @@ namespace XenAdmin {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Certificate verification is disabled..
|
||||
/// </summary>
|
||||
public static string Message_name_tls_verification_emergency_disabled {
|
||||
get {
|
||||
return ResourceManager.GetString("Message.name-tls_verification_emergency_disabled", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to An unknown error occurred when reclaiming freed space.
|
||||
/// </summary>
|
||||
|
@ -1076,6 +1076,9 @@
|
||||
<data name="Message.body-license_server_unreachable" xml:space="preserve">
|
||||
<value>A license for {0} could not be checked-out because the license server could not be reached at the given address and port. Please check the connection details, and verify that the license server is running.</value>
|
||||
</data>
|
||||
<data name="Message.body-tls_verification_emergency_disabled" xml:space="preserve">
|
||||
<value>Certificate verification is enabled on the pool, but overriden on server '{0}'.</value>
|
||||
</data>
|
||||
<data name="Message.body-metadata_lun_broken" xml:space="preserve">
|
||||
<value>Pool '{0}' is unable to access the HA metadata disk. Until access is restored changes to the pool metadata may be lost in the event of an HA failover.</value>
|
||||
</data>
|
||||
@ -1304,6 +1307,9 @@
|
||||
<data name="Message.name-license_server_unreachable" xml:space="preserve">
|
||||
<value>The license server could not be reached.</value>
|
||||
</data>
|
||||
<data name="Message.name-tls_verification_emergency_disabled" xml:space="preserve">
|
||||
<value>Certificate verification is disabled.</value>
|
||||
</data>
|
||||
<data name="Message.name-metadata_lun_broken" xml:space="preserve">
|
||||
<value>Lost access to HA metadata disk</value>
|
||||
</data>
|
||||
|
243
XenModel/Messages.Designer.cs
generated
243
XenModel/Messages.Designer.cs
generated
@ -5012,6 +5012,105 @@ namespace XenAdmin {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to All {0} attempts originated from unknown sources..
|
||||
/// </summary>
|
||||
public static string ALERT_FAILED_LOGIN_ATTEMPT_DESCRIPTION_ALL_UNKNOWN {
|
||||
get {
|
||||
return ResourceManager.GetString("ALERT_FAILED_LOGIN_ATTEMPT_DESCRIPTION_ALL_UNKNOWN", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to The most common attempts originated from the following sources:.
|
||||
/// </summary>
|
||||
public static string ALERT_FAILED_LOGIN_ATTEMPT_DESCRIPTION_COMMON {
|
||||
get {
|
||||
return ResourceManager.GetString("ALERT_FAILED_LOGIN_ATTEMPT_DESCRIPTION_COMMON", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to There has been a total of {0} failed login attempts..
|
||||
/// </summary>
|
||||
public static string ALERT_FAILED_LOGIN_ATTEMPT_DESCRIPTION_TOTAL {
|
||||
get {
|
||||
return ResourceManager.GetString("ALERT_FAILED_LOGIN_ATTEMPT_DESCRIPTION_TOTAL", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to {0} attempts originated from unknown sources..
|
||||
/// </summary>
|
||||
public static string ALERT_FAILED_LOGIN_ATTEMPT_DESCRIPTION_UNKNOWN {
|
||||
get {
|
||||
return ResourceManager.GetString("ALERT_FAILED_LOGIN_ATTEMPT_DESCRIPTION_UNKNOWN", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Last attempt on: {0}.
|
||||
/// </summary>
|
||||
public static string ALERT_FAILED_LOGIN_ATTEMPT_OFFENDER_DATE {
|
||||
get {
|
||||
return ResourceManager.GetString("ALERT_FAILED_LOGIN_ATTEMPT_OFFENDER_DATE", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to IP address: {0}.
|
||||
/// </summary>
|
||||
public static string ALERT_FAILED_LOGIN_ATTEMPT_OFFENDER_IP {
|
||||
get {
|
||||
return ResourceManager.GetString("ALERT_FAILED_LOGIN_ATTEMPT_OFFENDER_IP", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Number of attempts: {0}.
|
||||
/// </summary>
|
||||
public static string ALERT_FAILED_LOGIN_ATTEMPT_OFFENDER_NUMBER {
|
||||
get {
|
||||
return ResourceManager.GetString("ALERT_FAILED_LOGIN_ATTEMPT_OFFENDER_NUMBER", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Originator: {0}.
|
||||
/// </summary>
|
||||
public static string ALERT_FAILED_LOGIN_ATTEMPT_OFFENDER_ORIGINATOR {
|
||||
get {
|
||||
return ResourceManager.GetString("ALERT_FAILED_LOGIN_ATTEMPT_OFFENDER_ORIGINATOR", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to User agent: {0}.
|
||||
/// </summary>
|
||||
public static string ALERT_FAILED_LOGIN_ATTEMPT_OFFENDER_USERAGENT {
|
||||
get {
|
||||
return ResourceManager.GetString("ALERT_FAILED_LOGIN_ATTEMPT_OFFENDER_USERAGENT", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Username: {0}.
|
||||
/// </summary>
|
||||
public static string ALERT_FAILED_LOGIN_ATTEMPT_OFFENDER_USERNAME {
|
||||
get {
|
||||
return ResourceManager.GetString("ALERT_FAILED_LOGIN_ATTEMPT_OFFENDER_USERNAME", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to There has been a number of failed attempts to login to '{0}' within the past hour..
|
||||
/// </summary>
|
||||
public static string ALERT_FAILED_LOGIN_ATTEMPT_TITLE {
|
||||
get {
|
||||
return ResourceManager.GetString("ALERT_FAILED_LOGIN_ATTEMPT_TITLE", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Help.
|
||||
/// </summary>
|
||||
@ -6961,56 +7060,56 @@ namespace XenAdmin {
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to The TLS certificate of server '{0}' expired on {1}..
|
||||
/// Looks up a localized string similar to The trusted CA certificate of '{0}' expired on {1}..
|
||||
/// </summary>
|
||||
public static string CERTIFICATE_ALERT_EXPIRED_DESCIRPTION {
|
||||
public static string CERTIFICATE_CA_ALERT_EXPIRED_DESCIRPTION {
|
||||
get {
|
||||
return ResourceManager.GetString("CERTIFICATE_ALERT_EXPIRED_DESCIRPTION", resourceCulture);
|
||||
return ResourceManager.GetString("CERTIFICATE_CA_ALERT_EXPIRED_DESCIRPTION", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Certificate on {0} expired.
|
||||
/// Looks up a localized string similar to Trusted CA certificate on {0} expired.
|
||||
/// </summary>
|
||||
public static string CERTIFICATE_ALERT_EXPIRED_TITLE {
|
||||
public static string CERTIFICATE_CA_ALERT_EXPIRED_TITLE {
|
||||
get {
|
||||
return ResourceManager.GetString("CERTIFICATE_ALERT_EXPIRED_TITLE", resourceCulture);
|
||||
return ResourceManager.GetString("CERTIFICATE_CA_ALERT_EXPIRED_TITLE", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to The TLS certificate of server '{0}' will expire on {1}..
|
||||
/// Looks up a localized string similar to The trusted CA certificate of '{0}' will expire on {1}..
|
||||
/// </summary>
|
||||
public static string CERTIFICATE_ALERT_EXPIRING_DESCRIPTION {
|
||||
public static string CERTIFICATE_CA_ALERT_EXPIRING_DESCRIPTION {
|
||||
get {
|
||||
return ResourceManager.GetString("CERTIFICATE_ALERT_EXPIRING_DESCRIPTION", resourceCulture);
|
||||
return ResourceManager.GetString("CERTIFICATE_CA_ALERT_EXPIRING_DESCRIPTION", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Certificate on {0} expiring in {1} day(s).
|
||||
/// Looks up a localized string similar to Trusted CA certificate on {0} expiring in {1} day(s).
|
||||
/// </summary>
|
||||
public static string CERTIFICATE_ALERT_EXPIRING_TITLE_DAYS {
|
||||
public static string CERTIFICATE_CA_ALERT_EXPIRING_TITLE_DAYS {
|
||||
get {
|
||||
return ResourceManager.GetString("CERTIFICATE_ALERT_EXPIRING_TITLE_DAYS", resourceCulture);
|
||||
return ResourceManager.GetString("CERTIFICATE_CA_ALERT_EXPIRING_TITLE_DAYS", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Certificate on {0} expiring in {1} hour(s).
|
||||
/// Looks up a localized string similar to Trusted CA certificate on {0} expiring in {1} hour(s).
|
||||
/// </summary>
|
||||
public static string CERTIFICATE_ALERT_EXPIRING_TITLE_HOURS {
|
||||
public static string CERTIFICATE_CA_ALERT_EXPIRING_TITLE_HOURS {
|
||||
get {
|
||||
return ResourceManager.GetString("CERTIFICATE_ALERT_EXPIRING_TITLE_HOURS", resourceCulture);
|
||||
return ResourceManager.GetString("CERTIFICATE_CA_ALERT_EXPIRING_TITLE_HOURS", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Certificate on {0} expiring in {1} minute(s).
|
||||
/// Looks up a localized string similar to Trusted CA certificate on {0} expiring in {1} minute(s).
|
||||
/// </summary>
|
||||
public static string CERTIFICATE_ALERT_EXPIRING_TITLE_MINUTES {
|
||||
public static string CERTIFICATE_CA_ALERT_EXPIRING_TITLE_MINUTES {
|
||||
get {
|
||||
return ResourceManager.GetString("CERTIFICATE_ALERT_EXPIRING_TITLE_MINUTES", resourceCulture);
|
||||
return ResourceManager.GetString("CERTIFICATE_CA_ALERT_EXPIRING_TITLE_MINUTES", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
@ -7023,6 +7122,114 @@ namespace XenAdmin {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to The identity certificate of server '{0}' expired on {1}..
|
||||
/// </summary>
|
||||
public static string CERTIFICATE_HOST_ALERT_EXPIRED_DESCIRPTION {
|
||||
get {
|
||||
return ResourceManager.GetString("CERTIFICATE_HOST_ALERT_EXPIRED_DESCIRPTION", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Server identity certificate on {0} expired.
|
||||
/// </summary>
|
||||
public static string CERTIFICATE_HOST_ALERT_EXPIRED_TITLE {
|
||||
get {
|
||||
return ResourceManager.GetString("CERTIFICATE_HOST_ALERT_EXPIRED_TITLE", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to The identity certificate of server '{0}' will expire on {1}..
|
||||
/// </summary>
|
||||
public static string CERTIFICATE_HOST_ALERT_EXPIRING_DESCRIPTION {
|
||||
get {
|
||||
return ResourceManager.GetString("CERTIFICATE_HOST_ALERT_EXPIRING_DESCRIPTION", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Server identity certificate on {0} expiring in {1} day(s).
|
||||
/// </summary>
|
||||
public static string CERTIFICATE_HOST_ALERT_EXPIRING_TITLE_DAYS {
|
||||
get {
|
||||
return ResourceManager.GetString("CERTIFICATE_HOST_ALERT_EXPIRING_TITLE_DAYS", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Server identity certificate on {0} expiring in {1} hour(s).
|
||||
/// </summary>
|
||||
public static string CERTIFICATE_HOST_ALERT_EXPIRING_TITLE_HOURS {
|
||||
get {
|
||||
return ResourceManager.GetString("CERTIFICATE_HOST_ALERT_EXPIRING_TITLE_HOURS", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Server identity certificate on {0} expiring in {1} minute(s).
|
||||
/// </summary>
|
||||
public static string CERTIFICATE_HOST_ALERT_EXPIRING_TITLE_MINUTES {
|
||||
get {
|
||||
return ResourceManager.GetString("CERTIFICATE_HOST_ALERT_EXPIRING_TITLE_MINUTES", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to The internal identity certificate of server '{0}' expired on {1}..
|
||||
/// </summary>
|
||||
public static string CERTIFICATE_HOST_INTERNAL_ALERT_EXPIRED_DESCIRPTION {
|
||||
get {
|
||||
return ResourceManager.GetString("CERTIFICATE_HOST_INTERNAL_ALERT_EXPIRED_DESCIRPTION", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Server internal identity certificate on {0} expired.
|
||||
/// </summary>
|
||||
public static string CERTIFICATE_HOST_INTERNAL_ALERT_EXPIRED_TITLE {
|
||||
get {
|
||||
return ResourceManager.GetString("CERTIFICATE_HOST_INTERNAL_ALERT_EXPIRED_TITLE", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to The internal identity certificate of server '{0}' will expire on {1}..
|
||||
/// </summary>
|
||||
public static string CERTIFICATE_HOST_INTERNAL_ALERT_EXPIRING_DESCRIPTION {
|
||||
get {
|
||||
return ResourceManager.GetString("CERTIFICATE_HOST_INTERNAL_ALERT_EXPIRING_DESCRIPTION", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Server internal identity certificate on {0} expiring in {1} day(s).
|
||||
/// </summary>
|
||||
public static string CERTIFICATE_HOST_INTERNAL_ALERT_EXPIRING_TITLE_DAYS {
|
||||
get {
|
||||
return ResourceManager.GetString("CERTIFICATE_HOST_INTERNAL_ALERT_EXPIRING_TITLE_DAYS", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Server internal identity certificate on {0} expiring in {1} hour(s).
|
||||
/// </summary>
|
||||
public static string CERTIFICATE_HOST_INTERNAL_ALERT_EXPIRING_TITLE_HOURS {
|
||||
get {
|
||||
return ResourceManager.GetString("CERTIFICATE_HOST_INTERNAL_ALERT_EXPIRING_TITLE_HOURS", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Server internal identity certificate on {0} expiring in {1} minute(s).
|
||||
/// </summary>
|
||||
public static string CERTIFICATE_HOST_INTERNAL_ALERT_EXPIRING_TITLE_MINUTES {
|
||||
get {
|
||||
return ResourceManager.GetString("CERTIFICATE_HOST_INTERNAL_ALERT_EXPIRING_TITLE_MINUTES", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to The certificate installation failed..
|
||||
/// </summary>
|
||||
|
@ -1849,6 +1849,39 @@ Note that if RBAC is enabled, only alerts which you have privileges to dismiss w
|
||||
</data>
|
||||
<data name="ALERT_EXPORT_ALL_OR_FILTERED" xml:space="preserve">
|
||||
<value>You have applied filters to the list of alerts. Do you want to export all alerts from every connected server, or only the alerts you have chosen to view?</value>
|
||||
</data>
|
||||
<data name="ALERT_FAILED_LOGIN_ATTEMPT_DESCRIPTION_ALL_UNKNOWN" xml:space="preserve">
|
||||
<value>All {0} attempts originated from unknown sources.</value>
|
||||
</data>
|
||||
<data name="ALERT_FAILED_LOGIN_ATTEMPT_DESCRIPTION_COMMON" xml:space="preserve">
|
||||
<value>The most common attempts originated from the following sources:</value>
|
||||
</data>
|
||||
<data name="ALERT_FAILED_LOGIN_ATTEMPT_DESCRIPTION_TOTAL" xml:space="preserve">
|
||||
<value>There has been a total of {0} failed login attempts.</value>
|
||||
</data>
|
||||
<data name="ALERT_FAILED_LOGIN_ATTEMPT_DESCRIPTION_UNKNOWN" xml:space="preserve">
|
||||
<value>{0} attempts originated from unknown sources.</value>
|
||||
</data>
|
||||
<data name="ALERT_FAILED_LOGIN_ATTEMPT_OFFENDER_DATE" xml:space="preserve">
|
||||
<value>Last attempt on: {0}</value>
|
||||
</data>
|
||||
<data name="ALERT_FAILED_LOGIN_ATTEMPT_OFFENDER_IP" xml:space="preserve">
|
||||
<value>IP address: {0}</value>
|
||||
</data>
|
||||
<data name="ALERT_FAILED_LOGIN_ATTEMPT_OFFENDER_NUMBER" xml:space="preserve">
|
||||
<value>Number of attempts: {0}</value>
|
||||
</data>
|
||||
<data name="ALERT_FAILED_LOGIN_ATTEMPT_OFFENDER_ORIGINATOR" xml:space="preserve">
|
||||
<value>Originator: {0}</value>
|
||||
</data>
|
||||
<data name="ALERT_FAILED_LOGIN_ATTEMPT_OFFENDER_USERAGENT" xml:space="preserve">
|
||||
<value>User agent: {0}</value>
|
||||
</data>
|
||||
<data name="ALERT_FAILED_LOGIN_ATTEMPT_OFFENDER_USERNAME" xml:space="preserve">
|
||||
<value>Username: {0}</value>
|
||||
</data>
|
||||
<data name="ALERT_FAILED_LOGIN_ATTEMPT_TITLE" xml:space="preserve">
|
||||
<value>There has been a number of failed attempts to login to '{0}' within the past hour.</value>
|
||||
</data>
|
||||
<data name="ALERT_GENERIC_HELP" xml:space="preserve">
|
||||
<value>Help</value>
|
||||
@ -2523,27 +2556,63 @@ This will cancel compilation of the status report.</value>
|
||||
<data name="CD_DVD_DEVICE_ATTACHED" xml:space="preserve">
|
||||
<value>Attached CD/DVD Drive.</value>
|
||||
</data>
|
||||
<data name="CERTIFICATE_ALERT_EXPIRED_DESCIRPTION" xml:space="preserve">
|
||||
<value>The TLS certificate of server '{0}' expired on {1}.</value>
|
||||
<data name="CERTIFICATE_CA_ALERT_EXPIRED_DESCIRPTION" xml:space="preserve">
|
||||
<value>The trusted CA certificate of '{0}' expired on {1}.</value>
|
||||
</data>
|
||||
<data name="CERTIFICATE_ALERT_EXPIRED_TITLE" xml:space="preserve">
|
||||
<value>Certificate on {0} expired</value>
|
||||
<data name="CERTIFICATE_CA_ALERT_EXPIRED_TITLE" xml:space="preserve">
|
||||
<value>Trusted CA certificate on {0} expired</value>
|
||||
</data>
|
||||
<data name="CERTIFICATE_ALERT_EXPIRING_DESCRIPTION" xml:space="preserve">
|
||||
<value>The TLS certificate of server '{0}' will expire on {1}.</value>
|
||||
<data name="CERTIFICATE_CA_ALERT_EXPIRING_DESCRIPTION" xml:space="preserve">
|
||||
<value>The trusted CA certificate of '{0}' will expire on {1}.</value>
|
||||
</data>
|
||||
<data name="CERTIFICATE_ALERT_EXPIRING_TITLE_DAYS" xml:space="preserve">
|
||||
<value>Certificate on {0} expiring in {1} day(s)</value>
|
||||
<data name="CERTIFICATE_CA_ALERT_EXPIRING_TITLE_DAYS" xml:space="preserve">
|
||||
<value>Trusted CA certificate on {0} expiring in {1} day(s)</value>
|
||||
</data>
|
||||
<data name="CERTIFICATE_ALERT_EXPIRING_TITLE_HOURS" xml:space="preserve">
|
||||
<value>Certificate on {0} expiring in {1} hour(s)</value>
|
||||
<data name="CERTIFICATE_CA_ALERT_EXPIRING_TITLE_HOURS" xml:space="preserve">
|
||||
<value>Trusted CA certificate on {0} expiring in {1} hour(s)</value>
|
||||
</data>
|
||||
<data name="CERTIFICATE_ALERT_EXPIRING_TITLE_MINUTES" xml:space="preserve">
|
||||
<value>Certificate on {0} expiring in {1} minute(s)</value>
|
||||
<data name="CERTIFICATE_CA_ALERT_EXPIRING_TITLE_MINUTES" xml:space="preserve">
|
||||
<value>Trusted CA certificate on {0} expiring in {1} minute(s)</value>
|
||||
</data>
|
||||
<data name="CERTIFICATE_FILETYPES" xml:space="preserve">
|
||||
<value>TLS certificate files (*.pem;*.crt;*.cer)|*.pem;*.crt;*.cer</value>
|
||||
</data>
|
||||
<data name="CERTIFICATE_HOST_ALERT_EXPIRED_DESCIRPTION" xml:space="preserve">
|
||||
<value>The identity certificate of server '{0}' expired on {1}.</value>
|
||||
</data>
|
||||
<data name="CERTIFICATE_HOST_ALERT_EXPIRED_TITLE" xml:space="preserve">
|
||||
<value>Server identity certificate on {0} expired</value>
|
||||
</data>
|
||||
<data name="CERTIFICATE_HOST_ALERT_EXPIRING_DESCRIPTION" xml:space="preserve">
|
||||
<value>The identity certificate of server '{0}' will expire on {1}.</value>
|
||||
</data>
|
||||
<data name="CERTIFICATE_HOST_ALERT_EXPIRING_TITLE_DAYS" xml:space="preserve">
|
||||
<value>Server identity certificate on {0} expiring in {1} day(s)</value>
|
||||
</data>
|
||||
<data name="CERTIFICATE_HOST_ALERT_EXPIRING_TITLE_HOURS" xml:space="preserve">
|
||||
<value>Server identity certificate on {0} expiring in {1} hour(s)</value>
|
||||
</data>
|
||||
<data name="CERTIFICATE_HOST_ALERT_EXPIRING_TITLE_MINUTES" xml:space="preserve">
|
||||
<value>Server identity certificate on {0} expiring in {1} minute(s)</value>
|
||||
</data>
|
||||
<data name="CERTIFICATE_HOST_INTERNAL_ALERT_EXPIRED_DESCIRPTION" xml:space="preserve">
|
||||
<value>The internal identity certificate of server '{0}' expired on {1}.</value>
|
||||
</data>
|
||||
<data name="CERTIFICATE_HOST_INTERNAL_ALERT_EXPIRED_TITLE" xml:space="preserve">
|
||||
<value>Server internal identity certificate on {0} expired</value>
|
||||
</data>
|
||||
<data name="CERTIFICATE_HOST_INTERNAL_ALERT_EXPIRING_DESCRIPTION" xml:space="preserve">
|
||||
<value>The internal identity certificate of server '{0}' will expire on {1}.</value>
|
||||
</data>
|
||||
<data name="CERTIFICATE_HOST_INTERNAL_ALERT_EXPIRING_TITLE_DAYS" xml:space="preserve">
|
||||
<value>Server internal identity certificate on {0} expiring in {1} day(s)</value>
|
||||
</data>
|
||||
<data name="CERTIFICATE_HOST_INTERNAL_ALERT_EXPIRING_TITLE_HOURS" xml:space="preserve">
|
||||
<value>Server internal identity certificate on {0} expiring in {1} hour(s)</value>
|
||||
</data>
|
||||
<data name="CERTIFICATE_HOST_INTERNAL_ALERT_EXPIRING_TITLE_MINUTES" xml:space="preserve">
|
||||
<value>Server internal identity certificate on {0} expiring in {1} minute(s)</value>
|
||||
</data>
|
||||
<data name="CERTIFICATE_INSTALLATION_FAILURE" xml:space="preserve">
|
||||
<value>The certificate installation failed.</value>
|
||||
</data>
|
||||
@ -14684,4 +14753,4 @@ Any disk in your VM's DVD drive will be ejected when installing [Citrix VM Tools
|
||||
<data name="YOU_ARE_HERE" xml:space="preserve">
|
||||
<value>You are here</value>
|
||||
</data>
|
||||
</root>
|
||||
</root>
|
||||
|
Loading…
Reference in New Issue
Block a user