Compare commits

...

6 Commits

Author SHA1 Message Date
Claire Wang
ef76ece932 wip 2023-09-13 15:45:14 -04:00
Claire Wang
4450a12ffc wip 2023-09-13 15:27:54 -04:00
Claire Wang
b62a0b7978 wip 2023-09-13 15:12:57 -04:00
Claire Wang
b2e849170f wip 2023-09-13 14:35:42 -04:00
Claire Wang
e582d148bd wip
Co-authored-by: Andrea Gottardo <andrea@tailscale.com>
2023-09-13 14:23:11 -04:00
Andrea Gottardo
0d8033fd83 mdm: read user defaults + registry proto
Signed-off-by: Andrea Gottardo <andrea@tailscale.com>
2023-09-13 10:26:50 -07:00

50
mdm/mdm.go Normal file
View File

@@ -0,0 +1,50 @@
// Copyright (c) Tailscale Inc & AUTHORS
// SPDX-License-Identifier: BSD-3-Clause
// Package mdm contains functions to read platform-specific MDM-enforced flags
// in a platform-independent manner.
package mdm
import (
"errors"
"sync/atomic"
)
type MDMHandler struct {
Settings MDMSettings
}
var mdmHandler atomic.Value // of MDMHandler type
// MDMSettings gets MDM settings from device.
type MDMSettings interface {
// ReadBool returns a boolean whether the given MDM key exists or not on device settings.
ReadBool(key string) (bool, error)
// ReadString reads the MDM settings value string given the key.
ReadString(key string) (string, error)
}
func RegisterMDMSettings(settings MDMSettings) *MDMHandler {
if e, ok := mdmHandler.Load().(*MDMHandler); ok {
return e
}
e := &MDMHandler{Settings: settings}
mdmHandler.Store(e)
return e
}
func ReadBool(key string) (bool, error) {
h := mdmHandler.Load().(*MDMHandler)
if h == nil {
return false, errors.New("nil handler")
}
return h.Settings.ReadBool(key)
}
func ReadString(key string) (string, error) {
h := mdmHandler.Load().(*MDMHandler)
if h == nil {
return "", errors.New("nil handler")
}
return h.Settings.ReadString(key)
}