Skip to content

Commit b72e147

Browse files
Merge branch 'develop' of https://github.com/SolidProgramming/firewall-orchestrator into feature_2822
2 parents b5e3a34 + a5c23cb commit b72e147

File tree

2 files changed

+28
-12
lines changed

2 files changed

+28
-12
lines changed

roles/lib/files/FWO.Api.Client/APIcalls/owner/newNetworkOwnership.graphql

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ mutation newNetworkOwnership(
77
owner_id: $ownerId
88
ip: $ip
99
ip_end: $ip_end
10+
is_deleted: false
11+
nw_type: 10
1012
}) {
1113
returning {
1214
newIdLong: id

roles/lib/files/FWO.Report/ReportAppRules.cs

Lines changed: 26 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
using FWO.Api.Client;
1+
using FWO.Api.Client;
22
using FWO.Api.Client.Queries;
33
using FWO.Data;
44
using FWO.Data.Report;
@@ -63,13 +63,13 @@ private async Task PrepareAppRulesReport(ApiConnection apiConnection)
6363
List<NetworkLocation> disregardedFroms = [.. rule.Froms];
6464
if(modellingFilter.ShowSourceMatch)
6565
{
66-
(relevantFroms, disregardedFroms) = CheckNetworkObjects(rule.Froms);
66+
(relevantFroms, disregardedFroms) = CheckNetworkObjects(rule.Froms, rule.SourceNegated);
6767
}
6868
List<NetworkLocation> relevantTos = [];
6969
List<NetworkLocation> disregardedTos = [.. rule.Tos];
7070
if(modellingFilter.ShowDestinationMatch)
7171
{
72-
(relevantTos, disregardedTos) = CheckNetworkObjects(rule.Tos);
72+
(relevantTos, disregardedTos) = CheckNetworkObjects(rule.Tos, rule.DestinationNegated);
7373
}
7474

7575
if(relevantFroms.Count > 0 || relevantTos.Count > 0)
@@ -107,7 +107,7 @@ private async Task GetAppServers(ApiConnection apiConnection)
107107
IPAddress.Parse((s.IpEnd != "" ? s.IpEnd : s.Ip).StripOffNetmask())))];
108108
}
109109

110-
private (List<NetworkLocation>, List<NetworkLocation>) CheckNetworkObjects(NetworkLocation[] objList)
110+
private (List<NetworkLocation>, List<NetworkLocation>) CheckNetworkObjects(NetworkLocation[] objList, bool negated)
111111
{
112112
List<NetworkLocation> relevantObjects = [];
113113
List<NetworkLocation> disregardedObjects = [];
@@ -131,15 +131,15 @@ private async Task GetAppServers(ApiConnection apiConnection)
131131
{
132132
foreach(var grpobj in obj.Object.ObjectGroupFlats)
133133
{
134-
if(grpobj.Object != null && CheckObj(grpobj.Object))
134+
if(grpobj.Object != null && CheckObj(grpobj.Object, negated))
135135
{
136136
relevantObjects.Add(obj);
137137
found = true;
138138
break;
139139
}
140140
}
141141
}
142-
else if(CheckObj(obj.Object))
142+
else if(CheckObj(obj.Object, negated))
143143
{
144144
relevantObjects.Add(obj);
145145
found = true;
@@ -153,13 +153,27 @@ private async Task GetAppServers(ApiConnection apiConnection)
153153
return (relevantObjects, disregardedObjects);
154154
}
155155

156-
private bool CheckObj(NetworkObject obj)
156+
private bool CheckObj(NetworkObject obj, bool negated)
157157
{
158158
foreach(var ownerIpRange in ownerIps)
159159
{
160-
if(obj.IP != null &&
161-
IpOperations.RangeOverlapExists(new IPAddressRange(IPAddress.Parse(obj.IP.StripOffNetmask()),
162-
IPAddress.Parse((obj.IpEnd != null && obj.IpEnd != "" ? obj.IpEnd : obj.IP).StripOffNetmask())), ownerIpRange))
160+
if(obj.IP == null)
161+
{
162+
continue;
163+
}
164+
165+
IPAddressRange objRange = new(IPAddress.Parse(obj.IP.StripOffNetmask()),
166+
IPAddress.Parse((obj.IpEnd != null && obj.IpEnd != "" ? obj.IpEnd : obj.IP).StripOffNetmask()));
167+
168+
if(negated)
169+
{
170+
if (IpOperations.IpToUint(ownerIpRange.Begin) < IpOperations.IpToUint(objRange.Begin) ||
171+
(IpOperations.IpToUint(ownerIpRange.End) > IpOperations.IpToUint(objRange.End)))
172+
{
173+
return true;
174+
}
175+
}
176+
else if(IpOperations.RangeOverlapExists(objRange, ownerIpRange))
163177
{
164178
return true;
165179
}
@@ -185,7 +199,7 @@ private void PrepareFilter(ManagementReport mgt)
185199
{
186200
foreach(var grpobj in from.Object.ObjectGroupFlats)
187201
{
188-
if(grpobj.Object != null && CheckObj(grpobj.Object))
202+
if(grpobj.Object != null && CheckObj(grpobj.Object, rule.SourceNegated))
189203
{
190204
mgt.HighlightedObjectIds.Add(grpobj.Object.Id);
191205
}
@@ -207,7 +221,7 @@ private void PrepareFilter(ManagementReport mgt)
207221
{
208222
foreach(var grpobj in to.Object.ObjectGroupFlats)
209223
{
210-
if(grpobj.Object != null && CheckObj(grpobj.Object))
224+
if(grpobj.Object != null && CheckObj(grpobj.Object, rule.DestinationNegated))
211225
{
212226
mgt.HighlightedObjectIds.Add(grpobj.Object.Id);
213227
}

0 commit comments

Comments
 (0)