| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 | package localimport (	"os"	"strings"	//"github.com/davecgh/go-spew/spew"	"log"	"os/exec"	"github.com/gravitl/netmaker/netclient/ncutils")// SetDNS - sets the DNS of a local machinefunc SetDNS(nameserver string) error {	bytes, err := os.ReadFile("/etc/resolv.conf")	if err != nil {		return err	}	resolvstring := string(bytes)	// //check whether s contains substring text	hasdns := strings.Contains(resolvstring, nameserver)	if hasdns {		return nil	}	resolv, err := os.OpenFile("/etc/resolv.conf", os.O_APPEND|os.O_WRONLY, 0644)	if err != nil {		return err	}	defer resolv.Close()	_, err = resolv.WriteString("nameserver " + nameserver + "\n")	return err}// UpdateDNS - updates local DNS of clientfunc UpdateDNS(ifacename string, network string, nameserver string) error {	if ncutils.IsWindows() {		return nil	}	_, err := exec.LookPath("resolvectl")	if err != nil {		log.Println(err)		log.Println("WARNING: resolvectl not present. Unable to set dns. Install resolvectl or run manually.")	} else {		_, err = ncutils.RunCmd("resolvectl domain "+ifacename+" ~"+network, true)		if err != nil {			log.Println("WARNING: Error encountered setting domain on dns. Aborted setting dns.")		} else {			_, err = ncutils.RunCmd("resolvectl default-route "+ifacename+" false", true)			if err != nil {				log.Println("WARNING: Error encountered setting default-route on dns. Aborted setting dns.")			} else {				_, err = ncutils.RunCmd("resolvectl dns "+ifacename+" "+nameserver, true)				if err != nil {					log.Println("WARNING: Error encountered running resolvectl dns " + ifacename + " " + nameserver)				}			}		}	}	return err}
 |