add pending enrollment identifier
This commit is contained in:
@@ -147,7 +147,7 @@ namespace Disco.Client
|
|||||||
var secondsConsumed = (DateTimeOffset.Now - startTime).TotalSeconds;
|
var secondsConsumed = (DateTimeOffset.Now - startTime).TotalSeconds;
|
||||||
var progress = (int)((secondsConsumed / totalSeconds) * 100);
|
var progress = (int)((secondsConsumed / totalSeconds) * 100);
|
||||||
|
|
||||||
Presentation.UpdateStatus("Pending Device Enrollment Approval", $"Waiting for enrollment session to be approved.{Environment.NewLine}Reason: {response.PendingReason}", true, progress);
|
Presentation.UpdateStatus($"Pending Device Enrollment Approval: {response.PendingIdentifier}", $"Waiting for enrollment session '{response.PendingIdentifier}' to be approved.{Environment.NewLine}Reason: {response.PendingReason}", true, progress);
|
||||||
System.Threading.Thread.Sleep(TimeSpan.FromSeconds(10));
|
System.Threading.Thread.Sleep(TimeSpan.FromSeconds(10));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -32,5 +32,6 @@ namespace Disco.Models.ClientServices
|
|||||||
public string PendingAuthorization { get; set; }
|
public string PendingAuthorization { get; set; }
|
||||||
public string PendingReason { get; set; }
|
public string PendingReason { get; set; }
|
||||||
public DateTimeOffset PendingTimeout { get; set; }
|
public DateTimeOffset PendingTimeout { get; set; }
|
||||||
|
public string PendingIdentifier { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -81,14 +81,15 @@ namespace Disco.Services.Devices.Enrolment
|
|||||||
System.Enum.GetName(EnrolmentType.GetType(), EnrolmentType)
|
System.Enum.GetName(EnrolmentType.GetType(), EnrolmentType)
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
public static void LogSessionPending(string SessionId, string HostId, EnrolmentTypes EnrolmentType, string Reason)
|
public static void LogSessionPending(string SessionId, string HostId, EnrolmentTypes EnrolmentType, string Reason, string Identifier)
|
||||||
{
|
{
|
||||||
Log(EventTypeIds.SessionPending, new object[]
|
Log(EventTypeIds.SessionPending, new object[]
|
||||||
{
|
{
|
||||||
SessionId,
|
SessionId,
|
||||||
HostId,
|
HostId,
|
||||||
System.Enum.GetName(EnrolmentType.GetType(), EnrolmentType),
|
System.Enum.GetName(EnrolmentType.GetType(), EnrolmentType),
|
||||||
Reason
|
Reason,
|
||||||
|
Identifier
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
public static void LogSessionPendingApproved(string SessionId, string Username, string Reason)
|
public static void LogSessionPendingApproved(string SessionId, string Username, string Reason)
|
||||||
@@ -383,7 +384,7 @@ namespace Disco.Services.Devices.Enrolment
|
|||||||
Id = (int)EventTypeIds.SessionPending,
|
Id = (int)EventTypeIds.SessionPending,
|
||||||
ModuleId = _ModuleId,
|
ModuleId = _ModuleId,
|
||||||
Name = "Session Pending",
|
Name = "Session Pending",
|
||||||
Format = "Pending '{2}' Enrollment for {1} (Session# {0}; Reason: {3})",
|
Format = "Pending '{2}' Enrollment for {1} (Session# {0}; Reason: {3}; Identifier: {4})",
|
||||||
Severity = 0,
|
Severity = 0,
|
||||||
UseLive = true,
|
UseLive = true,
|
||||||
UsePersist = true,
|
UsePersist = true,
|
||||||
|
|||||||
@@ -14,6 +14,8 @@ namespace Disco.Services.Devices.Enrolment
|
|||||||
{
|
{
|
||||||
public static class WindowsDeviceEnrolment
|
public static class WindowsDeviceEnrolment
|
||||||
{
|
{
|
||||||
|
private static readonly string pendingIdentifierAlphabet = "23456789ABCDEFGHJKMNPQRSTWXYZ";
|
||||||
|
private static readonly Random pendingIdentifierRng = new Random();
|
||||||
private static readonly ConcurrentDictionary<string, EnrolResponse> pendingEnrolments = new ConcurrentDictionary<string, EnrolResponse>();
|
private static readonly ConcurrentDictionary<string, EnrolResponse> pendingEnrolments = new ConcurrentDictionary<string, EnrolResponse>();
|
||||||
|
|
||||||
private static void CleanupPendingEnrolments()
|
private static void CleanupPendingEnrolments()
|
||||||
@@ -26,6 +28,28 @@ namespace Disco.Services.Devices.Enrolment
|
|||||||
pendingEnrolments.TryRemove(expiredEnrolment, out _);
|
pendingEnrolments.TryRemove(expiredEnrolment, out _);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static string GeneratePendingIdentifier()
|
||||||
|
{
|
||||||
|
var identifier = default(string);
|
||||||
|
var chars = new char[4];
|
||||||
|
var retryAllowed = 100;
|
||||||
|
while (--retryAllowed > 0)
|
||||||
|
{
|
||||||
|
lock (pendingIdentifierRng)
|
||||||
|
{
|
||||||
|
for (var i = 0; i < chars.Length; i++)
|
||||||
|
{
|
||||||
|
chars[i] = pendingIdentifierAlphabet[pendingIdentifierRng.Next(pendingIdentifierAlphabet.Length)];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
identifier = new string(chars);
|
||||||
|
|
||||||
|
if (!GetPendingEnrolments().Any(e => string.Equals(e.PendingIdentifier, identifier, StringComparison.Ordinal)))
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return identifier;
|
||||||
|
}
|
||||||
|
|
||||||
public static List<EnrolResponse> GetPendingEnrolments()
|
public static List<EnrolResponse> GetPendingEnrolments()
|
||||||
{
|
{
|
||||||
var now = DateTimeOffset.Now;
|
var now = DateTimeOffset.Now;
|
||||||
@@ -185,8 +209,9 @@ namespace Disco.Services.Devices.Enrolment
|
|||||||
response.PendingAuthorization = Convert.ToBase64String(authBytes);
|
response.PendingAuthorization = Convert.ToBase64String(authBytes);
|
||||||
}
|
}
|
||||||
response.PendingTimeout = DateTimeOffset.Now.Add(Database.DiscoConfiguration.Bootstrapper.PendingTimeout);
|
response.PendingTimeout = DateTimeOffset.Now.Add(Database.DiscoConfiguration.Bootstrapper.PendingTimeout);
|
||||||
|
response.PendingIdentifier = GeneratePendingIdentifier();
|
||||||
|
|
||||||
EnrolmentLog.LogSessionPending(sessionId, Request.SerialNumber, EnrolmentTypes.Normal, response.PendingReason);
|
EnrolmentLog.LogSessionPending(sessionId, Request.SerialNumber, EnrolmentTypes.Normal, response.PendingReason, response.PendingIdentifier);
|
||||||
|
|
||||||
if (pendingEnrolments.TryAdd(sessionId, response))
|
if (pendingEnrolments.TryAdd(sessionId, response))
|
||||||
return response;
|
return response;
|
||||||
|
|||||||
@@ -15,7 +15,8 @@
|
|||||||
<h3>
|
<h3>
|
||||||
<span data-bind="text: title"></span>
|
<span data-bind="text: title"></span>
|
||||||
<span class="details" data-bind="text: '(' + deviceModelDescription() + ')'"></span>
|
<span class="details" data-bind="text: '(' + deviceModelDescription() + ')'"></span>
|
||||||
<i class="fa fa-exclamation-circle" data-bind="visible: isPending"></i>
|
<span class="pending" data-bind="visible: isPending"><code data-bind="text: pendingIdentifier"></code> <i class="fa fa-exclamation-circle"></i></span>
|
||||||
|
|
||||||
</h3>
|
</h3>
|
||||||
<p class="sessionStart" data-bind="text: startTime"></p>
|
<p class="sessionStart" data-bind="text: startTime"></p>
|
||||||
<p class="sessionStatus" data-bind="text: progressStatus"></p>
|
<p class="sessionStatus" data-bind="text: progressStatus"></p>
|
||||||
@@ -30,6 +31,7 @@
|
|||||||
<div id="formResolveSessionPending" data-bind="visible: isPending">
|
<div id="formResolveSessionPending" data-bind="visible: isPending">
|
||||||
@using (Html.BeginForm(MVC.API.Enrollment.ResolveSessionPending(), FormMethod.Post))
|
@using (Html.BeginForm(MVC.API.Enrollment.ResolveSessionPending(), FormMethod.Post))
|
||||||
{
|
{
|
||||||
|
<code data-bind="text: pendingIdentifier"></code>
|
||||||
@Html.AntiForgeryToken();
|
@Html.AntiForgeryToken();
|
||||||
<input type="hidden" name="sessionId" data-bind="value: id" />
|
<input type="hidden" name="sessionId" data-bind="value: id" />
|
||||||
<div class="reason">
|
<div class="reason">
|
||||||
@@ -152,6 +154,7 @@
|
|||||||
self.id = id;
|
self.id = id;
|
||||||
self.title = ko.observable(id);
|
self.title = ko.observable(id);
|
||||||
self.isPending = ko.observable(false);
|
self.isPending = ko.observable(false);
|
||||||
|
self.pendingIdentifier = ko.observable();
|
||||||
self.messages = ko.observableArray();
|
self.messages = ko.observableArray();
|
||||||
self.console = ko.observableArray();
|
self.console = ko.observableArray();
|
||||||
self.serialNumber = ko.observable();
|
self.serialNumber = ko.observable();
|
||||||
@@ -247,6 +250,7 @@
|
|||||||
break;
|
break;
|
||||||
case 14: // SessionPending
|
case 14: // SessionPending
|
||||||
session.isPending(true);
|
session.isPending(true);
|
||||||
|
session.pendingIdentifier(log.Arguments[4]);
|
||||||
session.messages.unshift(log);
|
session.messages.unshift(log);
|
||||||
session.progressValue(-1);
|
session.progressValue(-1);
|
||||||
session.progressStatus('Pending enrollment approval');
|
session.progressStatus('Pending enrollment approval');
|
||||||
|
|||||||
@@ -91,13 +91,21 @@ WriteLiteral(" class=\"details\"");
|
|||||||
|
|
||||||
WriteLiteral(" data-bind=\"text: \'(\' + deviceModelDescription() + \')\'\"");
|
WriteLiteral(" data-bind=\"text: \'(\' + deviceModelDescription() + \')\'\"");
|
||||||
|
|
||||||
WriteLiteral("></span>\r\n <i");
|
WriteLiteral("></span>\r\n <span");
|
||||||
|
|
||||||
WriteLiteral(" class=\"fa fa-exclamation-circle\"");
|
WriteLiteral(" class=\"pending\"");
|
||||||
|
|
||||||
WriteLiteral(" data-bind=\"visible: isPending\"");
|
WriteLiteral(" data-bind=\"visible: isPending\"");
|
||||||
|
|
||||||
WriteLiteral("></i>\r\n </h3>\r\n <p");
|
WriteLiteral("><code");
|
||||||
|
|
||||||
|
WriteLiteral(" data-bind=\"text: pendingIdentifier\"");
|
||||||
|
|
||||||
|
WriteLiteral("></code> <i");
|
||||||
|
|
||||||
|
WriteLiteral(" class=\"fa fa-exclamation-circle\"");
|
||||||
|
|
||||||
|
WriteLiteral("></i></span>\r\n \r\n </h3>\r\n <p");
|
||||||
|
|
||||||
WriteLiteral(" class=\"sessionStart\"");
|
WriteLiteral(" class=\"sessionStart\"");
|
||||||
|
|
||||||
@@ -152,28 +160,40 @@ WriteLiteral(" data-bind=\"visible: isPending\"");
|
|||||||
WriteLiteral(">\r\n");
|
WriteLiteral(">\r\n");
|
||||||
|
|
||||||
|
|
||||||
#line 31 "..\..\Areas\Config\Views\Enrolment\Status.cshtml"
|
#line 32 "..\..\Areas\Config\Views\Enrolment\Status.cshtml"
|
||||||
|
|
||||||
|
|
||||||
#line default
|
#line default
|
||||||
#line hidden
|
#line hidden
|
||||||
|
|
||||||
#line 31 "..\..\Areas\Config\Views\Enrolment\Status.cshtml"
|
#line 32 "..\..\Areas\Config\Views\Enrolment\Status.cshtml"
|
||||||
using (Html.BeginForm(MVC.API.Enrollment.ResolveSessionPending(), FormMethod.Post))
|
using (Html.BeginForm(MVC.API.Enrollment.ResolveSessionPending(), FormMethod.Post))
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
||||||
#line default
|
#line default
|
||||||
#line hidden
|
#line hidden
|
||||||
|
WriteLiteral(" <code");
|
||||||
|
|
||||||
#line 33 "..\..\Areas\Config\Views\Enrolment\Status.cshtml"
|
WriteLiteral(" data-bind=\"text: pendingIdentifier\"");
|
||||||
|
|
||||||
|
WriteLiteral("></code>\r\n");
|
||||||
|
|
||||||
|
|
||||||
|
#line 35 "..\..\Areas\Config\Views\Enrolment\Status.cshtml"
|
||||||
|
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
|
||||||
|
#line 35 "..\..\Areas\Config\Views\Enrolment\Status.cshtml"
|
||||||
Write(Html.AntiForgeryToken());
|
Write(Html.AntiForgeryToken());
|
||||||
|
|
||||||
|
|
||||||
#line default
|
#line default
|
||||||
#line hidden
|
#line hidden
|
||||||
|
|
||||||
#line 33 "..\..\Areas\Config\Views\Enrolment\Status.cshtml"
|
#line 35 "..\..\Areas\Config\Views\Enrolment\Status.cshtml"
|
||||||
;
|
;
|
||||||
|
|
||||||
|
|
||||||
@@ -226,7 +246,7 @@ WriteLiteral(" class=\"button\"");
|
|||||||
WriteLiteral(">Reject</button>\r\n </div>\r\n");
|
WriteLiteral(">Reject</button>\r\n </div>\r\n");
|
||||||
|
|
||||||
|
|
||||||
#line 42 "..\..\Areas\Config\Views\Enrolment\Status.cshtml"
|
#line 44 "..\..\Areas\Config\Views\Enrolment\Status.cshtml"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -406,7 +426,7 @@ WriteLiteral(@">
|
|||||||
var deviceBaseUrl = '");
|
var deviceBaseUrl = '");
|
||||||
|
|
||||||
|
|
||||||
#line 122 "..\..\Areas\Config\Views\Enrolment\Status.cshtml"
|
#line 124 "..\..\Areas\Config\Views\Enrolment\Status.cshtml"
|
||||||
Write(Url.Action(MVC.Device.Show()));
|
Write(Url.Action(MVC.Device.Show()));
|
||||||
|
|
||||||
|
|
||||||
@@ -415,7 +435,7 @@ WriteLiteral(@">
|
|||||||
WriteLiteral("/\'\r\n var deviceModelImageUrl = \'");
|
WriteLiteral("/\'\r\n var deviceModelImageUrl = \'");
|
||||||
|
|
||||||
|
|
||||||
#line 123 "..\..\Areas\Config\Views\Enrolment\Status.cshtml"
|
#line 125 "..\..\Areas\Config\Views\Enrolment\Status.cshtml"
|
||||||
Write(Url.Action(MVC.API.DeviceModel.Image()));
|
Write(Url.Action(MVC.API.DeviceModel.Image()));
|
||||||
|
|
||||||
|
|
||||||
@@ -424,7 +444,7 @@ WriteLiteral("/\'\r\n var deviceModelImageUrl = \'");
|
|||||||
WriteLiteral("/\'\r\n var iconWarningUrl = \'url(");
|
WriteLiteral("/\'\r\n var iconWarningUrl = \'url(");
|
||||||
|
|
||||||
|
|
||||||
#line 124 "..\..\Areas\Config\Views\Enrolment\Status.cshtml"
|
#line 126 "..\..\Areas\Config\Views\Enrolment\Status.cshtml"
|
||||||
Write(Links.ClientSource.Style.Images.Status.warning32_png);
|
Write(Links.ClientSource.Style.Images.Status.warning32_png);
|
||||||
|
|
||||||
|
|
||||||
@@ -433,7 +453,7 @@ WriteLiteral("/\'\r\n var iconWarningUrl = \'url(");
|
|||||||
WriteLiteral(")\';\r\n var iconErrorUrl = \'url(");
|
WriteLiteral(")\';\r\n var iconErrorUrl = \'url(");
|
||||||
|
|
||||||
|
|
||||||
#line 125 "..\..\Areas\Config\Views\Enrolment\Status.cshtml"
|
#line 127 "..\..\Areas\Config\Views\Enrolment\Status.cshtml"
|
||||||
Write(Links.ClientSource.Style.Images.Status.fail32_png);
|
Write(Links.ClientSource.Style.Images.Status.fail32_png);
|
||||||
|
|
||||||
|
|
||||||
@@ -451,110 +471,112 @@ WriteLiteral(")\';\r\n\r\n function pageViewModel() {\r\n var
|
|||||||
" }\r\n };\r\n }\r\n function sessionViewModel(id) " +
|
" }\r\n };\r\n }\r\n function sessionViewModel(id) " +
|
||||||
"{\r\n var self = this;\r\n\r\n self.id = id;\r\n self.t" +
|
"{\r\n var self = this;\r\n\r\n self.id = id;\r\n self.t" +
|
||||||
"itle = ko.observable(id);\r\n self.isPending = ko.observable(false);\r\n " +
|
"itle = ko.observable(id);\r\n self.isPending = ko.observable(false);\r\n " +
|
||||||
" self.messages = ko.observableArray();\r\n self.console = ko." +
|
" self.pendingIdentifier = ko.observable();\r\n self.messages " +
|
||||||
"observableArray();\r\n self.serialNumber = ko.observable();\r\n " +
|
"= ko.observableArray();\r\n self.console = ko.observableArray();\r\n " +
|
||||||
" self.sessionDeviceInfo = ko.observable();\r\n self.progressStatus = k" +
|
" self.serialNumber = ko.observable();\r\n self.sessionDeviceInfo " +
|
||||||
"o.observable();\r\n self.progressValue = ko.observable();\r\n " +
|
"= ko.observable();\r\n self.progressStatus = ko.observable();\r\n " +
|
||||||
"self.startTime = ko.observable();\r\n self.sessionEnded = ko.observable" +
|
" self.progressValue = ko.observable();\r\n self.startTime = ko.obser" +
|
||||||
"(false);\r\n self.progressbar = null;\r\n self.hasError = ko.o" +
|
"vable();\r\n self.sessionEnded = ko.observable(false);\r\n sel" +
|
||||||
"bservable(false);\r\n self.hasWarning = ko.observable(false);\r\n " +
|
"f.progressbar = null;\r\n self.hasError = ko.observable(false);\r\n " +
|
||||||
" self.deviceModelId = ko.observable();\r\n self.deviceModelDescripti" +
|
" self.hasWarning = ko.observable(false);\r\n self.deviceModelId = " +
|
||||||
"on = ko.computed(function () {\r\n var deviceModelId = self.deviceM" +
|
"ko.observable();\r\n self.deviceModelDescription = ko.computed(function" +
|
||||||
"odelId();\r\n var sessionDeviceInfo = self.sessionDeviceInfo();\r\n " +
|
" () {\r\n var deviceModelId = self.deviceModelId();\r\n " +
|
||||||
" if (deviceModelId) {\r\n var dm = deviceModels[de" +
|
" var sessionDeviceInfo = self.sessionDeviceInfo();\r\n if (deviceM" +
|
||||||
"viceModelId];\r\n if (dm) {\r\n if (dm.Des" +
|
"odelId) {\r\n var dm = deviceModels[deviceModelId];\r\n " +
|
||||||
"cription)\r\n return dm.Description;\r\n " +
|
" if (dm) {\r\n if (dm.Description)\r\n " +
|
||||||
" else\r\n return dm.Manufacturer + \' \' + dm.Model" +
|
" return dm.Description;\r\n else\r\n " +
|
||||||
";\r\n }\r\n }\r\n if (sessionDeviceIn" +
|
" return dm.Manufacturer + \' \' + dm.Model;\r\n }\r" +
|
||||||
"fo) {\r\n return sessionDeviceInfo.Arguments[6] + \' \' + session" +
|
"\n }\r\n if (sessionDeviceInfo) {\r\n " +
|
||||||
"DeviceInfo.Arguments[7];\r\n }\r\n });\r\n self.d" +
|
" return sessionDeviceInfo.Arguments[6] + \' \' + sessionDeviceInfo.Arguments[7];\r" +
|
||||||
"eviceUrl = ko.computed(function () {\r\n var serialNumber = self.se" +
|
"\n }\r\n });\r\n self.deviceUrl = ko.computed(fu" +
|
||||||
"rialNumber();\r\n if (serialNumber)\r\n return dev" +
|
"nction () {\r\n var serialNumber = self.serialNumber();\r\n " +
|
||||||
"iceBaseUrl + serialNumber;\r\n else\r\n return nul" +
|
" if (serialNumber)\r\n return deviceBaseUrl + serialNumber" +
|
||||||
"l;\r\n });\r\n self.deviceModelImageUrl = ko.computed(function" +
|
";\r\n else\r\n return null;\r\n });\r\n " +
|
||||||
" () {\r\n var deviceModelImage;\r\n if (self.deviceMod" +
|
" self.deviceModelImageUrl = ko.computed(function () {\r\n va" +
|
||||||
"elId())\r\n deviceModelImage = \'url(\' + deviceModelImageUrl + s" +
|
"r deviceModelImage;\r\n if (self.deviceModelId())\r\n " +
|
||||||
"elf.deviceModelId() + \')\';\r\n else\r\n deviceMode" +
|
" deviceModelImage = \'url(\' + deviceModelImageUrl + self.deviceModelId() + \')\'" +
|
||||||
"lImage = \'url(\' + deviceModelImageUrl + \')\';\r\n if (self.hasError(" +
|
";\r\n else\r\n deviceModelImage = \'url(\' + deviceM" +
|
||||||
"))\r\n return iconErrorUrl + \', \' + deviceModelImage;\r\n " +
|
"odelImageUrl + \')\';\r\n if (self.hasError())\r\n r" +
|
||||||
" else\r\n if (self.hasWarning())\r\n " +
|
"eturn iconErrorUrl + \', \' + deviceModelImage;\r\n else\r\n " +
|
||||||
" return iconWarningUrl + \', \' + deviceModelImage;\r\n else\r\n " +
|
" if (self.hasWarning())\r\n return iconWarningUrl +" +
|
||||||
" return \'none, \' + deviceModelImage;\r\n });\r\n " +
|
" \', \' + deviceModelImage;\r\n else\r\n ret" +
|
||||||
" self.select = function (e, d) {\r\n vm.currentSession(self)" +
|
"urn \'none, \' + deviceModelImage;\r\n });\r\n self.select = fun" +
|
||||||
";\r\n hostDialogSessions.dialog(\'open\');\r\n hostDialo" +
|
"ction (e, d) {\r\n vm.currentSession(self);\r\n hostDi" +
|
||||||
"gSessions.dialog(\'option\', \'title\', \'Device Enrollment: \' + self.title());\r\n " +
|
"alogSessions.dialog(\'open\');\r\n hostDialogSessions.dialog(\'option\'" +
|
||||||
" }\r\n }\r\n\r\n function parseLog(log) {\r\n if (log.Mo" +
|
", \'title\', \'Device Enrollment: \' + self.title());\r\n }\r\n }\r\n\r\n " +
|
||||||
"duleId === 50 && log.Arguments && log.Arguments.length > 0) {\r\n /" +
|
" function parseLog(log) {\r\n if (log.ModuleId === 50 && log.Argu" +
|
||||||
"/ find session\r\n var sessionId = log.Arguments[0];\r\n " +
|
"ments && log.Arguments.length > 0) {\r\n // find session\r\n " +
|
||||||
" var session = vm.sessionIndex[sessionId];\r\n if (!session && lo" +
|
" var sessionId = log.Arguments[0];\r\n var session = vm.sessi" +
|
||||||
"g.EventTypeId === 10) { // Starting Session (Ignore \'partial\' sessions)\r\n " +
|
"onIndex[sessionId];\r\n if (!session && log.EventTypeId === 10) { /" +
|
||||||
" session = new sessionViewModel(sessionId);\r\n vm." +
|
"/ Starting Session (Ignore \'partial\' sessions)\r\n session = ne" +
|
||||||
"sessionIndex[sessionId] = session;\r\n vm.sessions.unshift(sess" +
|
"w sessionViewModel(sessionId);\r\n vm.sessionIndex[sessionId] =" +
|
||||||
"ion);\r\n vm.noSessions(false);\r\n }\r\n " +
|
" session;\r\n vm.sessions.unshift(session);\r\n " +
|
||||||
" if (session) {\r\n switch (log.EventTypeId) {\r\n " +
|
" vm.noSessions(false);\r\n }\r\n if (session) {\r\n " +
|
||||||
" case 10: // SessionStarting\r\n session.ti" +
|
" switch (log.EventTypeId) {\r\n case 10: // " +
|
||||||
"tle(log.Arguments[1]);\r\n session.startTime(log.Format" +
|
"SessionStarting\r\n session.title(log.Arguments[1]);\r\n " +
|
||||||
"tedTimestamp.substring(log.FormattedTimestamp.indexOf(\' \') + 1));\r\n " +
|
" session.startTime(log.FormattedTimestamp.substring(lo" +
|
||||||
" session.messages.unshift(log);\r\n break" +
|
"g.FormattedTimestamp.indexOf(\' \') + 1));\r\n session.me" +
|
||||||
";\r\n case 11: // SessionProgress\r\n " +
|
"ssages.unshift(log);\r\n break;\r\n " +
|
||||||
" //session.progressbar.progressbar(\'option\', \'value\', log.Arguments[1]);\r\n " +
|
" case 11: // SessionProgress\r\n //session.progressbar" +
|
||||||
" session.progressValue(log.Arguments[1]);\r\n " +
|
".progressbar(\'option\', \'value\', log.Arguments[1]);\r\n " +
|
||||||
" session.progressStatus(log.Arguments[2]);\r\n " +
|
"session.progressValue(log.Arguments[1]);\r\n session.pr" +
|
||||||
" break;\r\n case 12: // SessionDevice\r\n " +
|
"ogressStatus(log.Arguments[2]);\r\n break;\r\n " +
|
||||||
" session.title(log.Arguments[1]);\r\n sessi" +
|
" case 12: // SessionDevice\r\n session.titl" +
|
||||||
"on.serialNumber(log.Arguments[1]);\r\n if (log.Argument" +
|
"e(log.Arguments[1]);\r\n session.serialNumber(log.Argum" +
|
||||||
"s.length >= 3 && log.Arguments[2])\r\n session.devi" +
|
"ents[1]);\r\n if (log.Arguments.length >= 3 && log.Argu" +
|
||||||
"ceModelId(log.Arguments[2]);\r\n break;\r\n " +
|
"ments[2])\r\n session.deviceModelId(log.Arguments[2" +
|
||||||
" break;\r\n case 13: // SessionDeviceInfo\r\n " +
|
"]);\r\n break;\r\n break;\r\n " +
|
||||||
" session.title(log.Arguments[1]);\r\n " +
|
" case 13: // SessionDeviceInfo\r\n " +
|
||||||
" session.serialNumber(log.Arguments[1]);\r\n sess" +
|
"session.title(log.Arguments[1]);\r\n session.serialNumb" +
|
||||||
"ion.sessionDeviceInfo(log);\r\n if (log.Arguments.lengt" +
|
"er(log.Arguments[1]);\r\n session.sessionDeviceInfo(log" +
|
||||||
"h >= 10 && log.Arguments[9])\r\n session.deviceMode" +
|
");\r\n if (log.Arguments.length >= 10 && log.Arguments[" +
|
||||||
"lId(log.Arguments[9]);\r\n break;\r\n " +
|
"9])\r\n session.deviceModelId(log.Arguments[9]);\r\n " +
|
||||||
" case 14: // SessionPending\r\n session.isPending(tr" +
|
" break;\r\n case 14: // SessionPe" +
|
||||||
"ue);\r\n session.messages.unshift(log);\r\n " +
|
"nding\r\n session.isPending(true);\r\n " +
|
||||||
|
" session.pendingIdentifier(log.Arguments[4]);\r\n " +
|
||||||
|
" session.messages.unshift(log);\r\n session.progressV" +
|
||||||
|
"alue(-1);\r\n session.progressStatus(\'Pending enrollmen" +
|
||||||
|
"t approval\');\r\n break;\r\n case " +
|
||||||
|
"15: // SessionPendingApproved\r\n session.isPending(fal" +
|
||||||
|
"se);\r\n session.messages.unshift(log);\r\n " +
|
||||||
" session.progressValue(-1);\r\n session.pr" +
|
" session.progressValue(-1);\r\n session.pr" +
|
||||||
"ogressStatus(\'Pending enrollment approval\');\r\n break;" +
|
"ogressStatus(\'Enrollment approval, waiting for client\');\r\n " +
|
||||||
"\r\n case 15: // SessionPendingApproved\r\n " +
|
" break;\r\n case 16: // SessionPendingRejected\r\n " +
|
||||||
" session.isPending(false);\r\n session.message" +
|
" session.isPending(false);\r\n ses" +
|
||||||
"s.unshift(log);\r\n session.progressValue(-1);\r\n " +
|
"sion.messages.unshift(log);\r\n session.progressValue(-" +
|
||||||
" session.progressStatus(\'Enrollment approval, waiting for cl" +
|
"1);\r\n session.progressStatus(\'Enrollment rejected, wa" +
|
||||||
"ient\');\r\n break;\r\n case 16: //" +
|
"iting for client\');\r\n break;\r\n " +
|
||||||
" SessionPendingRejected\r\n session.isPending(false);\r\n" +
|
" case 17: // SessionContinuing\r\n session.isPending(fa" +
|
||||||
" session.messages.unshift(log);\r\n " +
|
"lse);\r\n session.messages.unshift(log);\r\n " +
|
||||||
" session.progressValue(-1);\r\n session.progress" +
|
" break;\r\n case 20: // SessionFinished\r\n " +
|
||||||
"Status(\'Enrollment rejected, waiting for client\');\r\n " +
|
" session.sessionEnded(true);\r\n " +
|
||||||
"break;\r\n case 17: // SessionContinuing\r\n " +
|
" session.isPending(false);\r\n if (session.hasError())\r" +
|
||||||
" session.isPending(false);\r\n session.messag" +
|
"\n session.progressStatus(\'Enrollment Finished wit" +
|
||||||
"es.unshift(log);\r\n break;\r\n ca" +
|
"h an Error\');\r\n else\r\n " +
|
||||||
"se 20: // SessionFinished\r\n session.sessionEnded(true" +
|
" if (session.hasWarning())\r\n session.progress" +
|
||||||
");\r\n session.isPending(false);\r\n " +
|
"Status(\'Enrollment Finished with a Warning\');\r\n e" +
|
||||||
" if (session.hasError())\r\n session.progress" +
|
"lse\r\n session.progressStatus(\'Enrollment Fini" +
|
||||||
"Status(\'Enrollment Finished with an Error\');\r\n else\r\n" +
|
"shed Successfully\');\r\n session.messages.unshift(log);" +
|
||||||
" if (session.hasWarning())\r\n " +
|
"\r\n break;\r\n case 21: // Sessio" +
|
||||||
" session.progressStatus(\'Enrollment Finished with a Warning\');\r\n " +
|
"nDiagnosticInformation\r\n session.console.push(log);\r\n" +
|
||||||
" else\r\n session." +
|
" break;\r\n case 22: // SessionW" +
|
||||||
"progressStatus(\'Enrollment Finished Successfully\');\r\n " +
|
"arning\r\n session.hasWarning(true);\r\n " +
|
||||||
" session.messages.unshift(log);\r\n break;\r\n " +
|
" session.messages.unshift(log);\r\n break;\r\n " +
|
||||||
" case 21: // SessionDiagnosticInformation\r\n " +
|
" case 23: // SessionError\r\n case 24" +
|
||||||
" session.console.push(log);\r\n break;\r\n " +
|
": // SessionErrorWithInner\r\n case 25: // SessionClientErr" +
|
||||||
" case 22: // SessionWarning\r\n session.hasWa" +
|
"or\r\n session.hasError(true);\r\n " +
|
||||||
"rning(true);\r\n session.messages.unshift(log);\r\n " +
|
" session.messages.unshift(log);\r\n break;\r\n " +
|
||||||
" break;\r\n case 23: // SessionError\r\n" +
|
" default:\r\n session.messages.unshift(" +
|
||||||
" case 24: // SessionErrorWithInner\r\n " +
|
"log);\r\n }\r\n }\r\n }\r\n }\r\n " +
|
||||||
" case 25: // SessionClientError\r\n session.hasError(" +
|
" function init() {\r\n hostDialogSessions.dialog({\r\n m" +
|
||||||
"true);\r\n session.messages.unshift(log);\r\n " +
|
"odal: true,\r\n height: 574,\r\n width: 900,\r\n " +
|
||||||
" break;\r\n default:\r\n " +
|
" resizable: false,\r\n autoOpen: false\r\n });\r\n " +
|
||||||
" session.messages.unshift(log);\r\n }\r\n }\r\n" +
|
" //hostDialogSessionsProgress.progressbar();\r\n\r\n // Create Vi" +
|
||||||
" }\r\n }\r\n function init() {\r\n hostDialogSessi" +
|
"ew Model\r\n vm = new pageViewModel();\r\n $.ajax({\r\n " +
|
||||||
"ons.dialog({\r\n modal: true,\r\n height: 574,\r\n " +
|
" url: \'");
|
||||||
" width: 900,\r\n resizable: false,\r\n autoOp" +
|
|
||||||
"en: false\r\n });\r\n //hostDialogSessionsProgress.progressbar" +
|
|
||||||
"();\r\n\r\n // Create View Model\r\n vm = new pageViewModel();\r\n" +
|
|
||||||
" $.ajax({\r\n url: \'");
|
|
||||||
|
|
||||||
|
|
||||||
#line 314 "..\..\Areas\Config\Views\Enrolment\Status.cshtml"
|
#line 318 "..\..\Areas\Config\Views\Enrolment\Status.cshtml"
|
||||||
Write(Url.Action(MVC.API.DeviceModel.Index()));
|
Write(Url.Action(MVC.API.DeviceModel.Index()));
|
||||||
|
|
||||||
|
|
||||||
@@ -588,7 +610,7 @@ WriteLiteral(@"',
|
|||||||
url: '");
|
url: '");
|
||||||
|
|
||||||
|
|
||||||
#line 339 "..\..\Areas\Config\Views\Enrolment\Status.cshtml"
|
#line 343 "..\..\Areas\Config\Views\Enrolment\Status.cshtml"
|
||||||
Write(Url.Action(MVC.API.Logging.RetrieveEvents()));
|
Write(Url.Action(MVC.API.Logging.RetrieveEvents()));
|
||||||
|
|
||||||
|
|
||||||
@@ -627,7 +649,7 @@ WriteLiteral(@"',
|
|||||||
$.connection.hub.qs = { LogModules: '");
|
$.connection.hub.qs = { LogModules: '");
|
||||||
|
|
||||||
|
|
||||||
#line 369 "..\..\Areas\Config\Views\Enrolment\Status.cshtml"
|
#line 373 "..\..\Areas\Config\Views\Enrolment\Status.cshtml"
|
||||||
Write(Disco.Services.Devices.Enrolment.EnrolmentLog.Current.LiveLogGroupName);
|
Write(Disco.Services.Devices.Enrolment.EnrolmentLog.Current.LiveLogGroupName);
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -473,7 +473,7 @@ div.logEventsViewport table.logEventsViewport > tbody > tr > td.message {
|
|||||||
#enrolStatus #sessions .session > h3 span.details {
|
#enrolStatus #sessions .session > h3 span.details {
|
||||||
font-size: 0.8em;
|
font-size: 0.8em;
|
||||||
}
|
}
|
||||||
#enrolStatus #sessions .session > h3 i {
|
#enrolStatus #sessions .session > h3 span.pending {
|
||||||
float: right;
|
float: right;
|
||||||
color: #F0A30A;
|
color: #F0A30A;
|
||||||
}
|
}
|
||||||
@@ -532,6 +532,10 @@ div.logEventsViewport table.logEventsViewport > tbody > tr > td.message {
|
|||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
margin-bottom: 3px;
|
margin-bottom: 3px;
|
||||||
}
|
}
|
||||||
|
#dialogSession .sessionProgress code {
|
||||||
|
font-size: 2em;
|
||||||
|
color: #E51400;
|
||||||
|
}
|
||||||
#dialogSession .sessionProgress div.reason {
|
#dialogSession .sessionProgress div.reason {
|
||||||
margin-bottom: 3px;
|
margin-bottom: 3px;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -480,7 +480,7 @@ div.logEventsViewport {
|
|||||||
font-size: .8em;
|
font-size: .8em;
|
||||||
}
|
}
|
||||||
|
|
||||||
i {
|
span.pending {
|
||||||
float: right;
|
float: right;
|
||||||
color: @ThemeAmber;
|
color: @ThemeAmber;
|
||||||
}
|
}
|
||||||
@@ -554,6 +554,11 @@ div.logEventsViewport {
|
|||||||
margin-bottom: 3px;
|
margin-bottom: 3px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
& code {
|
||||||
|
font-size: 2em;
|
||||||
|
color: @ThemeRed;
|
||||||
|
}
|
||||||
|
|
||||||
& div.reason {
|
& div.reason {
|
||||||
margin-bottom: 3px;
|
margin-bottom: 3px;
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user