//go:build windows || darwin package mdm import "strings" // allKeys is the set of recognised MDM keys. Unknown keys in a managed // configuration are ignored but logged. Lives in this build-tagged file // (windows || darwin) because only desktop loaders need the // canonicalisation table that consumes it; including it unconditionally // would trigger the `unused` golangci-lint check on platforms that // don't import canonical_loaders.go. var allKeys = []string{ KeyManagementURL, KeyDisableUpdateSettings, KeyDisableProfiles, KeyDisableNetworks, KeyDisableClientRoutes, KeyDisableServerRoutes, KeyBlockInbound, KeyDisableMetricsCollection, KeyAllowServerSSH, KeyDisableAutoConnect, KeyPreSharedKey, KeyRosenpassEnabled, KeyRosenpassPermissive, KeyWireguardPort, KeySplitTunnelMode, KeySplitTunnelApps, } // canonicalKey maps the lowercase form of a managed-config value name to // its canonical mdm.Key* form. Admins commonly write PascalCase value // names in ADMX / Group Policy ("ManagementURL"); the iOS/AppConfig and // macOS plist conventions are camelCase ("managementURL"); both must // resolve to the same Policy lookup. // // Lives in a desktop-loader-only file (build tag `windows || darwin`) // because no other build path consumes it. Linux / FreeBSD / mobile // builds don't ship a platform loader that reads arbitrary-case key // names, so they don't need the canonicalisation table — and including // the var unconditionally would trigger the `unused` golangci-lint // check on those platforms. var canonicalKey = func() map[string]string { m := make(map[string]string, len(allKeys)) for _, k := range allKeys { m[strings.ToLower(k)] = k } return m }()