1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- package local
- import (
- "io/ioutil"
- "os"
- "strings"
- //"github.com/davecgh/go-spew/spew"
- "log"
- "os/exec"
- )
- func SetDNS(nameserver string) error {
- bytes, err := ioutil.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
- }
- func UpdateDNS(ifacename string, network string, nameserver string) error {
- _, 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 = exec.Command("resolvectl", "domain", ifacename, "~"+network).Output()
- if err != nil {
- log.Println(err)
- log.Println("WARNING: Error encountered setting dns. Aborted setting dns.")
- } else {
- _, err = exec.Command("resolvectl", "default-route", ifacename, "false").Output()
- if err != nil {
- log.Println(err)
- log.Println("WARNING: Error encountered setting dns. Aborted setting dns.")
- } else {
- _, err = exec.Command("resolvectl", "dns", ifacename, nameserver).Output()
- if err!= nil {
- log.Println("WARNING: Error encountered running resolvectl dns " + ifacename + " " + nameserver)
- log.Println(err)
- }
- }
- }
- }
- return err
- }
|