Skip to content

Commit

Permalink
applying dns changes for ubuntu 18 compatibility
Browse files Browse the repository at this point in the history
  • Loading branch information
ectrimble20 authored and ddollar committed Aug 2, 2018
1 parent b335bc6 commit aaedff9
Show file tree
Hide file tree
Showing 2 changed files with 76 additions and 1 deletion.
42 changes: 41 additions & 1 deletion router/dns_linux.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,47 @@ import (
)

func (d *DNS) setupResolver(domain string, ip net.IP) error {
version, err := linuxRelease()

if err != nil {
return err
}

switch version {
case "ubuntu-18.04":
if err := setupResolverUbuntu1804(domain, ip); err != nil {
return err
}
default:
if err := setupResolverGenericLinux(domain, ip); err != nil {
return err
}
}
return nil
}

func setupResolverUbuntu1804(domain string, ip net.IP) error {
data := []byte(fmt.Sprintf("[Resolve]\nDNS=%s\nDomains=~%s", ip, domain))

if err := writeFile("/usr/lib/systemd/resolved.conf.d/convox.conf", data); err != nil {
return err
}

if err := execute("systemctl", "daemon-reload"); err != nil {
return err
}

if err := execute("systemctl", "restart", "systemd-networkd"); err != nil {
return err
}

if err := execute("systemctl", "restart", "systemd-resolved"); err != nil {
return err
}
return nil
}

func setupResolverGenericLinux(domain string, ip net.IP) error {
data := []byte("[main]\ndns=dnsmasq\n")

if err := writeFile("/etc/NetworkManager/conf.d/convox.conf", data); err != nil {
Expand All @@ -21,6 +62,5 @@ func (d *DNS) setupResolver(domain string, ip net.IP) error {
if err := execute("systemctl", "restart", "NetworkManager"); err != nil {
return err
}

return nil
}
35 changes: 35 additions & 0 deletions router/helpers_linux.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
package router

import (
"bufio"
"bytes"
"fmt"
"io/ioutil"
"regexp"
)

var kvpair = regexp.MustCompile(`\s*(\w+)\s*=\s*"?([^"]*)`)

func linuxReleaseAttributes() (map[string]string, error) {
attrs := map[string]string{}
data, err := ioutil.ReadFile("/etc/os-release")
if err != nil {
return nil, err
}
s := bufio.NewScanner(bytes.NewReader(data))
for s.Scan() {
p := kvpair.FindStringSubmatch(s.Text())
if len(p) == 3 {
attrs[p[1]] = p[2]
}
}
return attrs, nil
}

func linuxRelease() (string, error) {
attrs, err := linuxReleaseAttributes()
if err != nil {
return "", err
}
return fmt.Sprintf("%s-%s", attrs["ID"], attrs["VERSION_ID"]), nil
}

0 comments on commit aaedff9

Please sign in to comment.