Files

28 lines
1.7 KiB
Markdown

# Disco AD Compare Plugin — Project Overview
## Purpose
A Disco ICT plugin that compares the Active Directory `managedBy` attribute on computer objects against the Disco `AssignedUserId`, reporting mismatches. Also provides AD details (last login, account status) on device and user pages via UIExtension features.
## Architecture
- **C# .NET Framework 4.5** class library compiled with .NET Framework MSBuild v4.0
- **C# 5 syntax only** — no modern C# features (server has no VS/Roslyn)
- **Plugin system**: extends `Plugin`, `PluginWebHandler`, `PluginConfigurationHandler`, `UIExtensionFeature<T>`
- **Build toolchain**: PowerShell script (`Build-Plugin.ps1`) that resolves assembly refs from Disco install bin, compiles, generates manifest, packages as `.discoPlugin` (zip renamed)
- **No external dependencies** — all refs come from Disco's own `WebApp\bin`
## Key Components
| Component | Purpose |
|---|---|
| `DeviceCompareService` | DN-to-DN comparison engine, filters invalid devices |
| `ADCompareWebHandler` | Server-side rendered dashboard + CSV export |
| `DeviceUIExtension` | Device page panel (managedBy match, last login) |
| `UserUIExtension` | User page panel (last login, AD status, OU) |
| `ADCompareConfigurationHandler` | Required config handler with WebViewPage |
## Current State
- **Working**: Comparison dashboard, CSV export, DN comparison logic, build pipeline
- **Not working**: UIExtension panels on device/user pages (features initialize without errors but HTML doesn't render — needs investigation)
## Session Log
- 2026-04-28 — Initial build and iteration — Built plugin from scratch, resolved C#5/MSBuild constraints, fixed DN comparison, got dashboard working, UIExtension rendering still unresolved