@@ -71,11 +71,35 @@ func GetEgressRangesOnNetwork(client *models.ExtClient) ([]string, error) {
71
71
72
72
var result []string
73
73
eli , _ := (& schema.Egress {Network : client .Network }).ListByNetwork (db .WithContext (context .TODO ()))
74
+ staticNode := client .ConvertToStaticNode ()
75
+ userPolicies := ListUserPolicies (models .NetworkID (client .Network ))
74
76
for _ , eI := range eli {
75
- if ! eI .Status || eI . Range == "" {
77
+ if ! eI .Status {
76
78
continue
77
79
}
78
- result = append (result , eI .Range )
80
+ if eI .Domain == "" && eI .Range == "" {
81
+ continue
82
+ }
83
+ if eI .Domain != "" && len (eI .DomainAns ) == 0 {
84
+ continue
85
+ }
86
+ rangesToBeAdded := []string {}
87
+ if eI .Domain != "" {
88
+ rangesToBeAdded = append (rangesToBeAdded , eI .DomainAns ... )
89
+ } else {
90
+ rangesToBeAdded = append (rangesToBeAdded , eI .Range )
91
+ }
92
+ if staticNode .IsUserNode && staticNode .StaticNode .OwnerID != "" {
93
+ user , err := GetUser (staticNode .StaticNode .OwnerID )
94
+ if err != nil {
95
+ return []string {}, errors .New ("user not found" )
96
+ }
97
+ if DoesUserHaveAccessToEgress (user , & eI , userPolicies ) {
98
+ result = append (result , rangesToBeAdded ... )
99
+ }
100
+ } else {
101
+ result = append (result , rangesToBeAdded ... )
102
+ }
79
103
}
80
104
extclients , _ := GetNetworkExtClients (client .Network )
81
105
for _ , extclient := range extclients {
0 commit comments