|
|
|
@ -9,6 +9,7 @@ import (
|
|
|
|
|
"os/exec"
|
|
|
|
|
"strings"
|
|
|
|
|
"syscall"
|
|
|
|
|
"time"
|
|
|
|
|
|
|
|
|
|
"github.com/tailscale/wireguard-go/tun"
|
|
|
|
|
"golang.org/x/sys/windows/registry"
|
|
|
|
@ -96,12 +97,19 @@ func (m windowsManager) Up(config Config) error {
|
|
|
|
|
// have changed, which makes the DNS settings actually take
|
|
|
|
|
// effect.
|
|
|
|
|
//
|
|
|
|
|
// This command can take a few seconds to run.
|
|
|
|
|
cmd := exec.Command("ipconfig", "/registerdns")
|
|
|
|
|
cmd.SysProcAttr = &syscall.SysProcAttr{HideWindow: true}
|
|
|
|
|
if err := cmd.Run(); err != nil {
|
|
|
|
|
return fmt.Errorf("running ipconfig /registerdns: %w", err)
|
|
|
|
|
}
|
|
|
|
|
// This command can take a few seconds to run, so run it async, best effort.
|
|
|
|
|
go func() {
|
|
|
|
|
t0 := time.Now()
|
|
|
|
|
m.logf("running ipconfig /registerdns ...")
|
|
|
|
|
cmd := exec.Command("ipconfig", "/registerdns")
|
|
|
|
|
cmd.SysProcAttr = &syscall.SysProcAttr{HideWindow: true}
|
|
|
|
|
d := time.Since(t0).Round(time.Millisecond)
|
|
|
|
|
if err := cmd.Run(); err != nil {
|
|
|
|
|
m.logf("error running ipconfig /registerdns after %v: %v", d, err)
|
|
|
|
|
} else {
|
|
|
|
|
m.logf("ran ipconfig /registerdns in %v", d)
|
|
|
|
|
}
|
|
|
|
|
}()
|
|
|
|
|
|
|
|
|
|
return nil
|
|
|
|
|
}
|
|
|
|
|