Certificate/wireless plugins; major refactoring

Migrate much of BI to Services.
Added Wireless Profile Provider plugin feature.
Added Certificate Authority Provider plugin feature.
Modified Certificate Provider plugin feature.
Database migration v17, for Device Profiles.
Enrolment Client Updated to support CA Certificates, Wireless Profiles
and Hardware Info.
New Client Enrolment Protocol to support new features.
Plugin Manifest Generator added to main solution.
Improved AD search performance.
This commit is contained in:
Gary Sharp
2016-09-28 20:16:25 +10:00
parent 489a5df7cc
commit 27c21175d7
210 changed files with 9822 additions and 6675 deletions
@@ -1,5 +1,4 @@
using Disco.BI.Extensions;
using Disco.Data.Configuration;
using Disco.Data.Configuration;
using Disco.Services;
using Disco.Services.Authorization;
using Disco.Services.Interop.ActiveDirectory;
@@ -29,40 +28,9 @@ namespace Disco.Web.Areas.API.Controllers
[DiscoAuthorize(Claims.DiscoAdminAccount)]
public virtual ActionResult UpdateAttachmentThumbnails()
{
// Device Attachments
var das = Database.DeviceAttachments.Where(da => da.MimeType == "application/pdf");
foreach (var da in das)
{
var fileName = da.RepositoryThumbnailFilename(Database);
if (!System.IO.File.Exists(fileName))
{
da.GenerateThumbnail(Database);
}
}
// User Attachments
var uas = Database.UserAttachments.Where(ua => ua.MimeType == "application/pdf");
foreach (var ua in uas)
{
var fileName = ua.RepositoryThumbnailFilename(Database);
if (!System.IO.File.Exists(fileName))
{
ua.GenerateThumbnail(Database);
}
}
// Job Attachments
var jas = Database.JobAttachments.Where(ja => ja.MimeType == "application/pdf");
foreach (var ja in jas)
{
var fileName = ja.RepositoryThumbnailFilename(Database);
if (!System.IO.File.Exists(fileName))
{
ja.GenerateThumbnail(Database);
}
}
return Content("Done", "text/text");
var ts = Disco.Services.Documents.AttachmentImport.ThumbnailUpdateTask.ScheduleImmediately();
ts.SetFinishedUrl(Url.Action(MVC.Config.SystemConfig.Index()));
return RedirectToAction(MVC.Config.Logging.TaskStatus(ts.SessionId));
}
[DiscoAuthorize(Claims.Config.System.Show)]
@@ -243,7 +211,7 @@ namespace Disco.Web.Areas.API.Controllers
try
{
var result = ActiveDirectory.Context.UpdateSearchAllForestServers(Database, SearchAllForestServers);
Database.SaveChanges();
if (!result)
@@ -269,11 +237,24 @@ namespace Disco.Web.Areas.API.Controllers
}
}
[DiscoAuthorize(Claims.Config.System.ConfigureActiveDirectory)]
public virtual ActionResult UpdateActiveDirectorySearchWildcardSuffixOnly(bool SearchWildcardSuffixOnly, bool redirect = false)
{
ActiveDirectory.Context.UpdateWildcardSearchSuffixOnly(Database, SearchWildcardSuffixOnly);
Database.SaveChanges();
if (redirect)
return RedirectToAction(MVC.Config.SystemConfig.Index());
else
return Json("OK", JsonRequestBehavior.AllowGet);
}
[DiscoAuthorizeAny(Claims.Config.System.ConfigureActiveDirectory, Claims.Config.DeviceProfile.Configure)]
public virtual ActionResult DomainOrganisationalUnits()
{
var domainOUs = ActiveDirectory.RetrieveADOrganisationalUnitStructure()
.Select(d => new Models.System.DomainOrganisationalUnitsModel() { Domain = d.Item1, OrganisationalUnits = d.Item2})
.Select(d => new Models.System.DomainOrganisationalUnitsModel() { Domain = d.Item1, OrganisationalUnits = d.Item2 })
.Select(ous => ous.ToFancyTreeNode()).ToList();
return new JsonResult()
@@ -322,12 +303,12 @@ namespace Disco.Web.Areas.API.Controllers
public virtual ActionResult SyncActiveDirectoryManagedGroup(string id, string redirectUrl = null)
{
ADManagedGroup managedGroup;
if (!ActiveDirectory.Context.ManagedGroups.TryGetValue(id, out managedGroup))
throw new ArgumentException("Unknown Managed Group Key");
var taskStatus = ADManagedGroupsSyncTask.ScheduleSync(managedGroup);
if (redirectUrl != null)
taskStatus.SetFinishedUrl(redirectUrl);