Skip to content

Commit 5cb43af

Browse files
gbraadanjannath
authored andcommitted
Issue #8 Use win32 API to set nameservers
1 parent 8ab2d9d commit 5cb43af

File tree

2 files changed

+13
-13
lines changed

2 files changed

+13
-13
lines changed

pkg/crc/services/dns/dns_windows.go

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -10,18 +10,18 @@ import (
1010
"github.com/code-ready/crc/pkg/crc/services"
1111

1212
"github.com/code-ready/crc/pkg/os/windows/powershell"
13+
"github.com/code-ready/crc/pkg/os/windows/win32"
1314
)
1415

1516
func runPostStartForOS(serviceConfig services.ServicePostStartConfig, result *services.ServicePostStartResult) (services.ServicePostStartResult, error) {
16-
mainInterface := getMainInterface()
17-
serverAddresses := getInterfaceNameserverValues(mainInterface)
18-
serverAddresses = append([]string{serviceConfig.IP}, serverAddresses...)
17+
// TODO: localize
18+
networkInterface := "vEthernet (Default Switch)" //getMainInterface()
1919

20-
setInterfaceNameserverValues(mainInterface, serverAddresses)
20+
setInterfaceNameserverValue(networkInterface, serviceConfig.IP)
2121

2222
time.Sleep(2 * time.Second)
2323

24-
if !contains(getInterfaceNameserverValues(mainInterface), serviceConfig.IP) {
24+
if !contains(getInterfaceNameserverValues(networkInterface), serviceConfig.IP) {
2525
err := errors.New("Nameserver not successfully set")
2626
result.Success = false
2727
result.Error = err.Error()
@@ -60,11 +60,11 @@ func formatValues(serverAddresses []string) string {
6060
return out
6161
}
6262

63-
func setInterfaceNameserverValues(iface string, serverAddresses []string) {
64-
setDNSServerCommand := fmt.Sprintf(`Set-DNSClientServerAddress "%s" -ServerAddresses (%s)`,
65-
iface, formatValues(serverAddresses))
63+
func setInterfaceNameserverValue(iface string, address string) {
64+
exe := "netsh"
65+
args := fmt.Sprintf(`interface ip set dns "%s" static %s primary`, iface, address)
6666

67-
powershell.ExecuteAsAdmin(setDNSServerCommand)
67+
win32.ShellExecute(win32.HWND_DESKTOP, "runas", exe, args, "", 0)
6868
}
6969

7070
func getMainInterface() string {

pkg/os/windows/win32/shell32_windows.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
package win32
22

33
import (
4+
"errors"
5+
"fmt"
46
"syscall"
57
"unsafe"
6-
7-
"github.com/code-ready/crc/pkg/crc/errors"
88
)
99

1010
var (
@@ -35,9 +35,9 @@ func ShellExecute(hwnd HWND, verb, file, parameters, directory string, showCmd i
3535

3636
ret, _, _ := procShellExecute.Call(uintptr(hwnd), op, toUintptr(file), params, dir, uintptr(showCmd))
3737

38-
if ret == 0 {
38+
if ret == 0 || ret < 32 {
3939
return nil
4040
}
4141

42-
return errors.Newf("win32 error %v", ret)
42+
return errors.New(fmt.Sprintf("win32 error %v", ret))
4343
}

0 commit comments

Comments
 (0)