|
@@ -1,17 +1,21 @@
|
|
package logic
|
|
package logic
|
|
|
|
|
|
import (
|
|
import (
|
|
|
|
+ "context"
|
|
"encoding/json"
|
|
"encoding/json"
|
|
"errors"
|
|
"errors"
|
|
"fmt"
|
|
"fmt"
|
|
|
|
+ "net"
|
|
"os"
|
|
"os"
|
|
"regexp"
|
|
"regexp"
|
|
"sort"
|
|
"sort"
|
|
|
|
|
|
validator "github.com/go-playground/validator/v10"
|
|
validator "github.com/go-playground/validator/v10"
|
|
"github.com/gravitl/netmaker/database"
|
|
"github.com/gravitl/netmaker/database"
|
|
|
|
+ "github.com/gravitl/netmaker/db"
|
|
"github.com/gravitl/netmaker/logger"
|
|
"github.com/gravitl/netmaker/logger"
|
|
"github.com/gravitl/netmaker/models"
|
|
"github.com/gravitl/netmaker/models"
|
|
|
|
+ "github.com/gravitl/netmaker/schema"
|
|
"github.com/txn2/txeh"
|
|
"github.com/txn2/txeh"
|
|
)
|
|
)
|
|
|
|
|
|
@@ -74,6 +78,31 @@ func GetDNS(network string) ([]models.DNSEntry, error) {
|
|
return dns, nil
|
|
return dns, nil
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+func EgressDNs(network string) (entries []models.DNSEntry) {
|
|
|
|
+ egs, _ := (&schema.Egress{
|
|
|
|
+ Network: network,
|
|
|
|
+ }).ListByNetwork(db.WithContext(context.TODO()))
|
|
|
|
+ for _, egI := range egs {
|
|
|
|
+ if egI.Domain != "" && len(egI.DomainAns) > 0 {
|
|
|
|
+ entry := models.DNSEntry{
|
|
|
|
+ Name: egI.Domain,
|
|
|
|
+ }
|
|
|
|
+ for _, domainAns := range egI.DomainAns {
|
|
|
|
+ ip, _, err := net.ParseCIDR(domainAns)
|
|
|
|
+ if err == nil {
|
|
|
|
+ if ip.To4() != nil {
|
|
|
|
+ entry.Address = ip.String()
|
|
|
|
+ } else {
|
|
|
|
+ entry.Address6 = ip.String()
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ entries = append(entries, entry)
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ return
|
|
|
|
+}
|
|
|
|
+
|
|
// GetExtclientDNS - gets all extclients dns entries
|
|
// GetExtclientDNS - gets all extclients dns entries
|
|
func GetExtclientDNS() []models.DNSEntry {
|
|
func GetExtclientDNS() []models.DNSEntry {
|
|
extclients, err := GetAllExtClients()
|
|
extclients, err := GetAllExtClients()
|