add tests and improve error

This commit is contained in:
Ryan Huber 2019-11-23 23:55:23 +00:00
parent 83d2550b2d
commit 08915315ff
3 changed files with 27 additions and 5 deletions

View File

@ -53,16 +53,16 @@ func NewLightHouse(amLighthouse bool, myIp uint32, ips []string, interval int, n
return &h
}
func (lh *LightHouse) ValidateLHStaticEntries() (bool, error) {
func (lh *LightHouse) ValidateLHStaticEntries() error {
for lhIP, _ := range lh.lighthouses {
for ip, _ := range lh.staticList {
if lhIP == ip {
continue
}
return false, fmt.Errorf("Lighthouse %s does not have a static_host_map entry", IntIp(lhIP))
return fmt.Errorf("Lighthouse %s does not have a static_host_map entry", IntIp(lhIP))
}
}
return true, nil
return nil
}
func (lh *LightHouse) Query(ip uint32, f EncWriter) ([]udpAddr, error) {

View File

@ -46,6 +46,27 @@ func TestNewipandportsfromudpaddrs(t *testing.T) {
}
func Test_lhStaticMapping(t *testing.T) {
lh1 := "10.128.0.2"
lh1IP := net.ParseIP(lh1)
udpServer, _ := NewListener("0.0.0.0", 0, true)
meh := NewLightHouse(true, 1, []string{lh1}, 10, 10003, udpServer, false)
meh.AddRemote(ip2int(lh1IP), NewUDPAddr(ip2int(lh1IP), uint16(4242)), true)
err := meh.ValidateLHStaticEntries()
assert.Nil(t, err)
lh2 := "10.128.0.3"
meh = NewLightHouse(true, 1, []string{lh1, lh2}, 10, 10003, udpServer, false)
meh.AddRemote(ip2int(lh1IP), NewUDPAddr(ip2int(lh1IP), uint16(4242)), true)
err = meh.ValidateLHStaticEntries()
assert.EqualError(t, err, "Lighthouse 10.128.0.3 does not have a static_host_map entry")
}
//func NewLightHouse(amLighthouse bool, myIp uint32, ips []string, interval int, nebulaPort int, pc *udpConn, punchBack bool) *LightHouse {
/*
func TestLHQuery(t *testing.T) {
//n := NewLhQueryByIpString("10.128.0.3")

View File

@ -205,6 +205,7 @@ func Main(configPath string, configTest bool, buildVersion string) {
go dnsMain(hostMap)
}
//TODO: Move all of this inside functions in lighthouse.go
for k, v := range config.GetMap("static_host_map", map[interface{}]interface{}{}) {
vpnIp := net.ParseIP(fmt.Sprintf("%v", k))
vals, ok := v.([]interface{})
@ -236,9 +237,9 @@ func Main(configPath string, configTest bool, buildVersion string) {
}
}
_, err = lightHouse.ValidateLHStaticEntries()
err = lightHouse.ValidateLHStaticEntries()
if err != nil {
l.Error(err)
l.WithError(err).Error("Lighthouse unreachable")
}
handshakeManager := NewHandshakeManager(tunCidr, preferredRanges, hostMap, lightHouse, udpServer)