2
0
Эх сурвалжийг харах

add tests and improve error

Ryan Huber 5 жил өмнө
parent
commit
08915315ff
3 өөрчлөгдсөн 27 нэмэгдсэн , 5 устгасан
  1. 3 3
      lighthouse.go
  2. 21 0
      lighthouse_test.go
  3. 3 2
      main.go

+ 3 - 3
lighthouse.go

@@ -53,16 +53,16 @@ func NewLightHouse(amLighthouse bool, myIp uint32, ips []string, interval int, n
 	return &h
 	return &h
 }
 }
 
 
-func (lh *LightHouse) ValidateLHStaticEntries() (bool, error) {
+func (lh *LightHouse) ValidateLHStaticEntries() error {
 	for lhIP, _ := range lh.lighthouses {
 	for lhIP, _ := range lh.lighthouses {
 		for ip, _ := range lh.staticList {
 		for ip, _ := range lh.staticList {
 			if lhIP == ip {
 			if lhIP == ip {
 				continue
 				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) {
 func (lh *LightHouse) Query(ip uint32, f EncWriter) ([]udpAddr, error) {

+ 21 - 0
lighthouse_test.go

@@ -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) {
 func TestLHQuery(t *testing.T) {
 	//n := NewLhQueryByIpString("10.128.0.3")
 	//n := NewLhQueryByIpString("10.128.0.3")

+ 3 - 2
main.go

@@ -205,6 +205,7 @@ func Main(configPath string, configTest bool, buildVersion string) {
 		go dnsMain(hostMap)
 		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{}{}) {
 	for k, v := range config.GetMap("static_host_map", map[interface{}]interface{}{}) {
 		vpnIp := net.ParseIP(fmt.Sprintf("%v", k))
 		vpnIp := net.ParseIP(fmt.Sprintf("%v", k))
 		vals, ok := v.([]interface{})
 		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 {
 	if err != nil {
-		l.Error(err)
+		l.WithError(err).Error("Lighthouse unreachable")
 	}
 	}
 
 
 	handshakeManager := NewHandshakeManager(tunCidr, preferredRanges, hostMap, lightHouse, udpServer)
 	handshakeManager := NewHandshakeManager(tunCidr, preferredRanges, hostMap, lightHouse, udpServer)