diff --git a/cmd/cli/ad_windows.go b/cmd/cli/ad_windows.go index 475ba09..3f9fa17 100644 --- a/cmd/cli/ad_windows.go +++ b/cmd/cli/ad_windows.go @@ -1,11 +1,13 @@ package cli import ( + "io" + "log" + "os" "strings" - "syscall" - "unsafe" - "golang.org/x/sys/windows" + "github.com/microsoft/wmi/pkg/base/host" + hh "github.com/microsoft/wmi/pkg/hardware/host" "github.com/Control-D-Inc/ctrld" ) @@ -50,15 +52,20 @@ func addSplitDnsRule(cfg *ctrld.Config, domain string) bool { // getActiveDirectoryDomain returns AD domain name of this computer. func getActiveDirectoryDomain() (string, error) { - var domain *uint16 - var status uint32 - err := syscall.NetGetJoinInformation(nil, &domain, &status) + log.SetOutput(io.Discard) + defer log.SetOutput(os.Stderr) + whost := host.NewWmiLocalHost() + cs, err := hh.GetComputerSystem(whost) if err != nil { return "", err } - defer syscall.NetApiBufferFree((*byte)(unsafe.Pointer(domain))) - if status == syscall.NetSetupDomainName { - return windows.UTF16PtrToString(domain), nil + defer cs.Close() + pod, err := cs.GetPropertyPartOfDomain() + if err != nil { + return "", err + } + if pod { + return cs.GetPropertyDomain() } return "", nil } diff --git a/go.mod b/go.mod index 67fe9a2..a86557e 100644 --- a/go.mod +++ b/go.mod @@ -58,6 +58,7 @@ require ( github.com/golang/protobuf v1.5.4 // indirect github.com/google/go-cmp v0.6.0 // indirect github.com/google/pprof v0.0.0-20240409012703-83162a5b38cd // indirect + github.com/google/uuid v1.6.0 // indirect github.com/hashicorp/hcl v1.0.0 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/jsimonetti/rtnetlink v1.4.0 // indirect diff --git a/go.sum b/go.sum index bcf1ee7..3eb268a 100644 --- a/go.sum +++ b/go.sum @@ -166,6 +166,8 @@ github.com/google/pprof v0.0.0-20240409012703-83162a5b38cd h1:gbpYu9NMq8jhDVbvlG github.com/google/pprof v0.0.0-20240409012703-83162a5b38cd/go.mod h1:kf6iHlnVGwgKolg33glAes7Yg/8iWP8ukqeldJSO7jw= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= +github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g=