@model Disco.Web.Areas.Config.Models.SystemConfig.IndexModel @{ Authorization.Require(Claims.Config.System.Show); var canConfigProxy = Authorization.Has(Claims.Config.System.ConfigureProxy); var canConfigAD = Authorization.Has(Claims.Config.System.ConfigureActiveDirectory); ViewBag.Title = Html.ToBreadcrumb("Configuration", MVC.Config.Config.Index(), "System"); if (canConfigAD) { Html.BundleDeferred("~/Style/Fancytree"); Html.BundleDeferred("~/ClientScripts/Modules/jQuery-Fancytree"); Html.BundleDeferred("~/ClientScripts/Modules/Disco-PropertyChangeHelpers"); } }
Disco Version:
@Model.DiscoVersion.ToString(4)
Built @CommonHelpers.FriendlyDate(Model.DiscoVersionBuilt, "Unknown")
Database Connection: @{if (Model.DatabaseSqlAuthUsername != null) { } }
Server: @Model.DatabaseServer
Database: @Model.DatabaseName
Authentication: @Model.DatabaseAuthentication
SQL User: @Model.DatabaseSqlAuthUsername
Data Store Location: @Model.DataStoreLocation

Updates

@{ if (Model.UpdateLatestResponse == null) { } else { if (Model.UpdateAvailable) { } else { } } }
Last Check:
 Never
Last Run: @CommonHelpers.FriendlyDate(Model.UpdateLatestResponse.UpdateResponseDate.ToLocalTime())
Update Available:
 Version @(Model.UpdateLatestResponse.LatestVersion) is available
[Released @(CommonHelpers.FriendlyDate(Model.UpdateLatestResponse.ReleasedDate))]
@(new HtmlString(Model.UpdateLatestResponse.Description))
Download Now
Status:  The latest version is installed
Check for Update: @{ if (Model.UpdateRunningStatus == null) { @Html.ActionLinkSmallButton("Check Now", MVC.API.System.UpdateCheck()) [Will run automatically @CommonHelpers.FriendlyDate(Model.UpdateNextScheduled, "Unknown")] } else { @Html.ActionLink("View Status", MVC.Config.Logging.TaskStatus(Model.UpdateRunningStatus.SessionId)) [Running Now] } } @if (Model.UpdateBetaDeployment) {
 Beta Deployment }

Active Directory

Primary Domain: @Model.ADPrimaryDomain.Name [@Model.ADPrimaryDomain.NetBiosName]
Additional Domains: @if (Model.ADDomains.Count > 1) { var adAdditionalDomains = Model.ADDomains.Where(d => d != Model.ADPrimaryDomain).OrderBy(d => d.Name).ToList(); var adDomainFirst = adAdditionalDomains.First(); @adDomainFirst.Name [@adDomainFirst.NetBiosName] foreach (var adDomain in adAdditionalDomains.Skip(1)) {
@adDomain.Name [@adDomain.NetBiosName]
} } else { <None> }
Site: @Model.ADSite.Name
Servers:
@if (Model.ADServers.Count > 0) {
    @foreach (var server in Model.ADServers) { var serverDescription = string.Format("{0} [{1}]", server.Name.EndsWith(server.Domain.Name, StringComparison.OrdinalIgnoreCase) ? server.Name.Substring(0, server.Name.Length - server.Domain.Name.Length - 1) : server.Name, server.Domain.NetBiosName); var reachable = server.IsAvailable;
  • @if (server.IsAvailable) { } else { } @(serverDescription) @if (server.IsSiteServer) { } else { } @if (server.IsWritable) { }
  • }
} else {
 None Found
}
Forest: @if (Model.ADForestServers == null) {
@Html.CheckBoxFor(m => m.ADSearchAllForestServers, new { disabled = "disabled" }) @Html.LabelFor(m => m.ADSearchAllForestServers)

Forest servers are currently being retrieved.
Try refreshing this page in a moment.

} else { if (canConfigAD) { var canSearchEntireForest = (Model.ADForestServers.Count <= Disco.Services.Interop.ActiveDirectory.ActiveDirectory.MaxForestServerSearch);
@if (!canSearchEntireForest) { @Html.CheckBoxFor(m => m.ADSearchAllForestServers, new { disabled = "disabled" }) @Html.LabelFor(m => m.ADSearchAllForestServers)

Disco will not search entire forests which consist of more than @(Disco.Services.Interop.ActiveDirectory.ActiveDirectory.MaxForestServerSearch) servers. Only servers within this site will be searched.

} else { @Html.CheckBoxFor(m => m.ADSearchAllForestServers) @Html.LabelFor(m => m.ADSearchAllForestServers) @AjaxHelpers.AjaxLoader()

If this setting is enabled, Disco will query all servers within the forest rather than only servers within this site.

}
} else {
@Html.CheckBoxFor(m => m.ADSearchAllForestServers, new { disabled = "disabled" }) @Html.LabelFor(m => m.ADSearchAllForestServers)

If this setting is enabled, Disco will query all servers within the forest rather than only servers within this site.

}

All Servers:
    @{ var domainIndex = Model.ADDomains.ToDictionary(d => d.Name, StringComparer.OrdinalIgnoreCase); foreach (var server in Model.ADForestServers.OrderBy(s => s)) { var isSiteServer = Model.ADServers.Any(s => s.IsSiteServer && s.Name.Equals(server, StringComparison.OrdinalIgnoreCase)); var serverDescription = server; if (server.Contains('.')) { Disco.Services.Interop.ActiveDirectory.ADDomain serverDomain; if (domainIndex.TryGetValue(server.Substring(server.IndexOf('.') + 1), out serverDomain)) { serverDescription = string.Format("{0} [{1}]", server.Substring(0, server.IndexOf('.')), serverDomain.NetBiosName); } }
  • @serverDescription@if (isSiteServer) { }
  • } }
}
Searching: @{ object ADSearchWildcardSuffixOnlyAttributes = null; if (!canConfigAD) { ADSearchWildcardSuffixOnlyAttributes = new { disabled = "disabled" }; } } @Html.CheckBoxFor(m => m.ADSearchWildcardSuffixOnly, ADSearchWildcardSuffixOnlyAttributes) @Html.LabelFor(m => m.ADSearchWildcardSuffixOnly) @AjaxHelpers.AjaxLoader()

If this setting is enabled, Disco will utilize Active Directory indexes to greatly improve search performance. If disabled, more results may be returned however performance will be reduced especially in large Active Directory domains.

@if (canConfigAD) { }
Search Scope: @if (Model.ADSearchContainers != null && Model.ADSearchContainers.Count > 0) {
Searching is restricted to the following Organisational Unit containers
    @foreach (var adContainer in Model.ADSearchContainers) {
  • @adContainer.Item3
  • }
} else {
No Organisational Unit restrictions are in effect.

When searching, the entire domain will be queried. This is suitable for most single-domain deployments.

} @if (canConfigAD) {
@AjaxHelpers.AjaxLoader() Loading Organisational Units
@using (Html.BeginForm(MVC.API.System.UpdateActiveDirectorySearchScope(null, redirect: true))) { }
}
@if (canConfigProxy) { using (Html.BeginForm(MVC.API.System.UpdateProxySettings())) {

Proxy Settings

Address: @Html.EditorFor(m => m.ProxyAddress)
@Html.ValidationMessageFor(m => m.ProxyAddress)
Port: @Html.EditorFor(m => m.ProxyPort)
@Html.ValidationMessageFor(m => m.ProxyPort)
Username: @Html.EditorFor(m => m.ProxyUsername)
@Html.ValidationMessageFor(m => m.ProxyUsername)
Password: @Html.EditorFor(m => m.ProxyPassword)
@Html.ValidationMessageFor(m => m.ProxyPassword)
  @AjaxHelpers.AjaxLoader()
} } else {

Proxy Settings

Address: @Html.DisplayFor(m => m.ProxyAddress)
Port: @Html.DisplayFor(m => m.ProxyPort)
Username: @Html.DisplayFor(m => m.ProxyUsername)
Password: ********
}
@Html.ActionLinkButton("Update Device Last Network Logons", MVC.API.System.UpdateLastNetworkLogonDates())