@@ -3,7 +3,6 @@ package commands
33import (
44 "fmt"
55 "os"
6- "os/exec"
76 "regexp"
87 "strings"
98
@@ -76,24 +75,24 @@ func (cmd *DNS) configureMacRoutes(machine Machine) {
7675 if machine .IsXhyve () {
7776 cmd .removeHostFilter (machineIP )
7877 }
79- exec .Command ("sudo" , "route" , "-n" , "delete" , "-net" , "172.17.0.0" ).Run ()
80- util .StreamCommand (exec . Command ( "sudo" , "route" , "-n" , "add" , "172.17.0.0/16" , machineIP ) )
78+ util .Command ("sudo" , "route" , "-n" , "delete" , "-net" , "172.17.0.0" ).Run ()
79+ util .StreamCommand ("sudo" , "route" , "-n" , "add" , "172.17.0.0/16" , machineIP )
8180 if _ , err := os .Stat ("/usr/sbin/discoveryutil" ); err == nil {
8281 // Put this here for people running OS X 10.10.0 to 10.10.3 (oy vey.)
8382 cmd .out .Verbose .Println ("Restarting discoveryutil to flush DNS caches" )
84- util .StreamCommand (exec . Command ( "sudo" , "launchctl" , "unload" , "-w" , "/System/Library/LaunchDaemons/com.apple.discoveryd.plist" ) )
85- util .StreamCommand (exec . Command ( "sudo" , "launchctl" , "load" , "-w" , "/System/Library/LaunchDaemons/com.apple.discoveryd.plist" ) )
83+ util .StreamCommand ("sudo" , "launchctl" , "unload" , "-w" , "/System/Library/LaunchDaemons/com.apple.discoveryd.plist" )
84+ util .StreamCommand ("sudo" , "launchctl" , "load" , "-w" , "/System/Library/LaunchDaemons/com.apple.discoveryd.plist" )
8685 } else {
8786 // Reset DNS cache. We have seen this suddenly make /etc/resolver/vm work.
8887 cmd .out .Verbose .Println ("Restarting mDNSResponder to flush DNS caches" )
89- util .StreamCommand (exec . Command ( "sudo" , "killall" , "-HUP" , "mDNSResponder" ) )
88+ util .StreamCommand ("sudo" , "killall" , "-HUP" , "mDNSResponder" )
9089 }
9190}
9291
9392// removeHostFilter removes the host filter from the xhyve bridge interface
9493func (cmd * DNS ) removeHostFilter (ipAddr string ) {
9594 // #1: route -n get <machineIP> to find the interface name
96- routeData , err := exec .Command ("route" , "-n" , "get" , ipAddr ).CombinedOutput ()
95+ routeData , err := util .Command ("route" , "-n" , "get" , ipAddr ).CombinedOutput ()
9796 if err != nil {
9897 cmd .out .Warning .Println ("Unable to determine bridge interface to remove hostfilter" )
9998 return
@@ -102,7 +101,7 @@ func (cmd *DNS) removeHostFilter(ipAddr string) {
102101 iface := ifaceRegexp .FindStringSubmatch (string (routeData ))[1 ]
103102
104103 // #2: ifconfig <interface name> to get the details
105- ifaceData , err := exec .Command ("ifconfig" , iface ).CombinedOutput ()
104+ ifaceData , err := util .Command ("ifconfig" , iface ).CombinedOutput ()
106105 if err != nil {
107106 cmd .out .Warning .Println ("Unable to determine member to remove hostfilter" )
108107 return
@@ -111,13 +110,13 @@ func (cmd *DNS) removeHostFilter(ipAddr string) {
111110 member := memberRegexp .FindStringSubmatch (string (ifaceData ))[1 ]
112111
113112 // #4: ifconfig <bridge> -hostfilter <member>
114- util .StreamCommand (exec . Command ( "sudo" , "ifconfig" , iface , "-hostfilter" , member ) )
113+ util .StreamCommand ("sudo" , "ifconfig" , iface , "-hostfilter" , member )
115114}
116115
117116// ConfigureWindowsRoutes configures network routing
118117func (cmd * DNS ) configureWindowsRoutes (machine Machine ) {
119- exec .Command ("runas" , "/noprofile" , "/user:Administrator" , "route" , "DELETE" , "172.17.0.0" ).Run ()
120- util .StreamCommand (exec . Command ( "runas" , "/noprofile" , "/user:Administrator" , "route" , "-p" , "ADD" , "172.17.0.0/16" , machine .GetIP () ))
118+ util .Command ("runas" , "/noprofile" , "/user:Administrator" , "route" , "DELETE" , "172.17.0.0" ).Run ()
119+ util .StreamCommand ("runas" , "/noprofile" , "/user:Administrator" , "route" , "-p" , "ADD" , "172.17.0.0/16" , machine .GetIP ())
121120}
122121
123122// StartDNS will start the dnsdock service
@@ -153,8 +152,8 @@ func (cmd *DNS) StartDNS(machine Machine, nameservers string) error {
153152 for _ , server := range dnsServers {
154153 args = append (args , "--nameserver=" + server )
155154 }
156- util .StreamCommand (exec .Command ("docker" , args ... ))
157155
156+ util .ForceStreamCommand ("docker" , args ... )
158157 // Configure the resolvers based on platform
159158 var resolverReturn error
160159 if util .IsMac () {
@@ -174,21 +173,21 @@ func (cmd *DNS) configureMacResolver(machine Machine) error {
174173 cmd .out .Verbose .Print ("Configuring DNS resolution for macOS" )
175174 bridgeIP := machine .GetBridgeIP ()
176175
177- if err := exec .Command ("sudo" , "mkdir" , "-p" , "/etc/resolver" ).Run (); err != nil {
176+ if err := util .Command ("sudo" , "mkdir" , "-p" , "/etc/resolver" ).Run (); err != nil {
178177 return err
179178 }
180- if err := exec .Command ("bash" , "-c" , fmt .Sprintf ("echo 'nameserver %s' | sudo tee /etc/resolver/vm" , bridgeIP )).Run (); err != nil {
179+ if err := util .Command ("bash" , "-c" , fmt .Sprintf ("echo 'nameserver %s' | sudo tee /etc/resolver/vm" , bridgeIP )).Run (); err != nil {
181180 return err
182181 }
183182 if _ , err := os .Stat ("/usr/sbin/discoveryutil" ); err == nil {
184183 // Put this here for people running OS X 10.10.0 to 10.10.3 (oy vey.)
185184 cmd .out .Verbose .Println ("Restarting discoveryutil to flush DNS caches" )
186- util .StreamCommand (exec . Command ( "sudo" , "launchctl" , "unload" , "-w" , "/System/Library/LaunchDaemons/com.apple.discoveryd.plist" ) )
187- util .StreamCommand (exec . Command ( "sudo" , "launchctl" , "load" , "-w" , "/System/Library/LaunchDaemons/com.apple.discoveryd.plist" ) )
185+ util .StreamCommand ("sudo" , "launchctl" , "unload" , "-w" , "/System/Library/LaunchDaemons/com.apple.discoveryd.plist" )
186+ util .StreamCommand ("sudo" , "launchctl" , "load" , "-w" , "/System/Library/LaunchDaemons/com.apple.discoveryd.plist" )
188187 } else {
189188 // Reset DNS cache. We have seen this suddenly make /etc/resolver/vm work.
190189 cmd .out .Verbose .Println ("Restarting mDNSResponder to flush DNS caches" )
191- util .StreamCommand (exec . Command ( "sudo" , "killall" , "-HUP" , "mDNSResponder" ) )
190+ util .StreamCommand ("sudo" , "killall" , "-HUP" , "mDNSResponder" )
192191 }
193192 return nil
194193}
@@ -204,18 +203,18 @@ func (cmd *DNS) configureLinuxResolver() error {
204203 // Is NetworkManager in use
205204 if _ , err := os .Stat ("/etc/NetworkManager/dnsmasq.d" ); err == nil {
206205 // Install for NetworkManager/dnsmasq connection to dnsdock
207- util .StreamCommand (exec . Command ( "bash" , "-c" , fmt .Sprintf ("echo 'server=/vm/%s' | sudo tee /etc/NetworkManager/dnsmasq.d/dnsdock.conf" , bridgeIP ) ))
206+ util .StreamCommand ("bash" , "-c" , fmt .Sprintf ("echo 'server=/vm/%s' | sudo tee /etc/NetworkManager/dnsmasq.d/dnsdock.conf" , bridgeIP ))
208207
209208 // Restart NetworkManager if it is running
210- if err := exec .Command ("systemctl" , "is-active" , "NetworkManager" ).Run (); err != nil {
211- util .StreamCommand (exec . Command ( "sudo" , "systemctl" , "restart" , "NetworkManager" ) )
209+ if err := util .Command ("systemctl" , "is-active" , "NetworkManager" ).Run (); err != nil {
210+ util .StreamCommand ("sudo" , "systemctl" , "restart" , "NetworkManager" )
212211 }
213212 }
214213
215214 // Is libnss-resolver in use
216215 if _ , err := os .Stat ("/etc/resolver" ); err == nil {
217216 // Install for libnss-resolver connection to dnsdock
218- exec .Command ("bash" , "-c" , fmt .Sprintf ("echo 'nameserver %s' | sudo tee /etc/resolver/vm" , bridgeIP )).Run ()
217+ util .Command ("bash" , "-c" , fmt .Sprintf ("echo 'nameserver %s:53 ' | sudo tee /etc/resolver/vm" , bridgeIP )).Run ()
219218 }
220219
221220 return nil
@@ -230,6 +229,6 @@ func (cmd *DNS) configureWindowsResolver(machine Machine) error {
230229
231230// StopDNS stops the dnsdock service and cleans up
232231func (cmd * DNS ) StopDNS () {
233- exec .Command ("docker" , "stop" , "dnsdock" ).Run ()
234- exec .Command ("docker" , "rm" , "dnsdock" ).Run ()
232+ util .Command ("docker" , "stop" , "dnsdock" ).Run ()
233+ util .Command ("docker" , "rm" , "dnsdock" ).Run ()
235234}
0 commit comments