forked from toolshed/abra
refactor!: drop "record" & "server new" command
These were alpha prototypes and we'll reconsider once other layers of Abra are more stable.
This commit is contained in:
50
pkg/dns/dns.go
Normal file
50
pkg/dns/dns.go
Normal file
@ -0,0 +1,50 @@
|
||||
package dns
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"net"
|
||||
)
|
||||
|
||||
// EnsureIPv4 ensures that an ipv4 address is set for a domain name
|
||||
func EnsureIPv4(domainName string) (string, error) {
|
||||
ipv4, err := net.ResolveIPAddr("ip", domainName)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
|
||||
return ipv4.String(), nil
|
||||
}
|
||||
|
||||
// EnsureDomainsResolveSameIPv4 ensures that domains resolve to the same ipv4 address
|
||||
func EnsureDomainsResolveSameIPv4(domainName, server string) (string, error) {
|
||||
if server == "default" || server == "local" {
|
||||
return "", nil
|
||||
}
|
||||
|
||||
var ipv4 string
|
||||
|
||||
domainIPv4, err := EnsureIPv4(domainName)
|
||||
if err != nil {
|
||||
return ipv4, err
|
||||
}
|
||||
|
||||
if domainIPv4 == "" {
|
||||
return ipv4, fmt.Errorf("cannot resolve ipv4 for %s?", domainName)
|
||||
}
|
||||
|
||||
serverIPv4, err := EnsureIPv4(server)
|
||||
if err != nil {
|
||||
return ipv4, err
|
||||
}
|
||||
|
||||
if serverIPv4 == "" {
|
||||
return ipv4, fmt.Errorf("cannot resolve ipv4 for %s?", server)
|
||||
}
|
||||
|
||||
if domainIPv4 != serverIPv4 {
|
||||
err := "app domain %s (%s) does not appear to resolve to app server %s (%s)?"
|
||||
return ipv4, fmt.Errorf(err, domainName, domainIPv4, server, serverIPv4)
|
||||
}
|
||||
|
||||
return ipv4, nil
|
||||
}
|
Reference in New Issue
Block a user