");
report.AppendLine($"| {RuleDisplayBase.DisplayNumber(rule)} | ");
report.AppendLine($"{RuleDisplayBase.DisplayName(rule)} | ");
- report.AppendLine($"{RuleDisplayBase.DisplaySourceZone(rule)} | ");
+ report.AppendLine($"{RuleDisplayBase.DisplaySourceZones(rule)} | ");
report.AppendLine($"{ruleDisplay.DisplaySource(rule, OutputLocation.export, ReportType, chapterNumber)} | ");
- report.AppendLine($"{RuleDisplayBase.DisplayDestinationZone(rule)} | ");
+ report.AppendLine($"{RuleDisplayBase.DisplayDestinationZones(rule)} | ");
report.AppendLine($"{ruleDisplay.DisplayDestination(rule, OutputLocation.export, ReportType, chapterNumber)} | ");
report.AppendLine($"{ruleDisplay.DisplayServices(rule, OutputLocation.export, ReportType, chapterNumber)} | ");
report.AppendLine($"{ruleDisplay.DisplayTranslatedSource(rule, OutputLocation.export, chapterNumber)} | ");
diff --git a/roles/lib/files/FWO.Report/ReportRules.cs b/roles/lib/files/FWO.Report/ReportRules.cs
index 1e2121d67..4b2a15bcf 100644
--- a/roles/lib/files/FWO.Report/ReportRules.cs
+++ b/roles/lib/files/FWO.Report/ReportRules.cs
@@ -603,9 +603,9 @@ private void AppendRulesForRulebaseHtml(ref StringBuilder report, RulebaseLink r
report.AppendLine($"{RuleDisplayHtml.DisplayLastHit(rule.Metadata)} | ");
}
report.AppendLine($"{RuleDisplayBase.DisplayName(rule)} | ");
- report.AppendLine($"{RuleDisplayBase.DisplaySourceZone(rule)} | ");
+ report.AppendLine($"{RuleDisplayBase.DisplaySourceZones(rule)} | ");
report.AppendLine($"{ruleDisplayHtml.DisplaySource(rule, OutputLocation.export, ReportType, chapterNumber)} | ");
- report.AppendLine($"{RuleDisplayBase.DisplayDestinationZone(rule)} | ");
+ report.AppendLine($"{RuleDisplayBase.DisplayDestinationZones(rule)} | ");
report.AppendLine($"{ruleDisplayHtml.DisplayDestination(rule, OutputLocation.export, ReportType, chapterNumber)} | ");
report.AppendLine($"{ruleDisplayHtml.DisplayServices(rule, OutputLocation.export, ReportType, chapterNumber)} | ");
report.AppendLine($"{RuleDisplayBase.DisplayAction(rule)} | ");
diff --git a/roles/tests-unit/files/FWO.Test/ExportTest.cs b/roles/tests-unit/files/FWO.Test/ExportTest.cs
index cbf5b9444..06ca742c1 100644
--- a/roles/tests-unit/files/FWO.Test/ExportTest.cs
+++ b/roles/tests-unit/files/FWO.Test/ExportTest.cs
@@ -1,4 +1,4 @@
-using NUnit.Framework;
+using NUnit.Framework;
using NUnit.Framework.Legacy;
using FWO.Logging;
using FWO.Report;
@@ -170,7 +170,7 @@ public void ChangesGenerateHtml()
ReportData = ConstructChangeReport(false)
};
- string expectedHtmlResult = "Changes ReportChanges Report
Change Time: from: 2023-04-19T15:00:04Z, until: 2023-04-20T15:00:04Z (UTC)
Generated on: Z (UTC)
Devices: TestMgt [TestDev]
Filter: TestFilter
TestMgt
TestDev
";
+ string expectedHtmlResult = "Changes ReportChanges Report
Change Time: from: 2023-04-19T15:00:04Z, until: 2023-04-20T15:00:04Z (UTC)
Generated on: Z (UTC)
Devices: TestMgt [TestDev]
Filter: TestFilter
TestMgt
TestDev
";
string reportHtml = RemoveLinebreaks(RemoveGenDate(reportChanges.ExportToHtml(), true));
@@ -189,7 +189,7 @@ public void ResolvedChangesGenerateHtml()
ReportData = ConstructChangeReport(true)
};
- string expectedHtmlResult = "Changes Report (resolved)Changes Report (resolved)
Change Time: from: 2023-04-19T15:00:04Z, until: 2023-04-20T15:00:04Z (UTC)
Generated on: Z (UTC)
Devices: TestMgt [TestDev]
Filter: TestFilter
TestMgt
TestDev
| Change Time | Change Type | Name | Source Zone | Source | Destination Zone | Destination | Services | Action | Track | Enabled | Uid | Comment |
|---|
| 05.04.2023 12:00:00 | Rule added | TestRule1 | srczn | TestIp1 (1.2.3.4/32) TestIp2 (127.0.0.1/32) | dstzn | TestIpRange (1.2.3.4-1.2.3.5) | TestService1 (443/TCP) | accept | none | Y | uid1 | comment1 |
| 05.04.2023 12:00:00 | Rule modified | TestRule1 | srczn | TestIp2 (127.0.0.1/32)
deleted: TestIp1 (1.2.3.4/32)
added: TestIp1Changed (2.3.4.5) | dstzn | TestIpRange (1.2.3.4-1.2.3.5)
added: TestIpNew (10.0.6.0/24) | deleted: TestService1 (443/TCP)
added: not TestService1 (443/TCP) | accept | none | Y | deleted: uid1
| deleted: comment1
added: new comment |
| 05.04.2023 12:00:00 | Rule modified | TestRule2 | | not TestUser1@TestIp1 (1.2.3.4/32) TestUser1@TestIp2 (127.0.0.1/32) | | deleted: not TestUser2@TestIpRange (1.2.3.4-1.2.3.5)
added: TestUser2@TestIpRange (1.2.3.4-1.2.3.5) | deleted: not TestService2 (6666-7777/UDP)
added: TestService2 (6666-7777/UDP) | deny | none | deleted: Y
added: N | uid2:123 | comment2 |
| 05.04.2023 12:00:00 | Rule deleted | TestRule2 | | not TestUser1@TestIp1 (1.2.3.4/32) TestUser1@TestIp2 (127.0.0.1/32) | | not TestUser2@TestIpRange (1.2.3.4-1.2.3.5) | not TestService2 (6666-7777/UDP) | deny | none | Y | uid2:123 | comment2 |
";
+ string expectedHtmlResult = "Changes Report (resolved)Changes Report (resolved)
Change Time: from: 2023-04-19T15:00:04Z, until: 2023-04-20T15:00:04Z (UTC)
Generated on: Z (UTC)
Devices: TestMgt [TestDev]
Filter: TestFilter
TestMgt
TestDev
| Change Time | Change Type | Name | Source Zone | Source | Destination Zone | Destination | Services | Action | Track | Enabled | Uid | Comment |
|---|
| 05.04.2023 12:00:00 | Rule added | TestRule1 | srczn1 srczn2 srczn3 | TestIp1 (1.2.3.4/32) TestIp2 (127.0.0.1/32) | dstzn1 dstzn2 dstzn3 | TestIpRange (1.2.3.4-1.2.3.5) | TestService1 (443/TCP) | accept | none | Y | uid1 | comment1 |
| 05.04.2023 12:00:00 | Rule modified | TestRule1 | srczn1 srczn2 srczn3 | TestIp2 (127.0.0.1/32)
deleted: TestIp1 (1.2.3.4/32)
added: TestIp1Changed (2.3.4.5) | dstzn1 dstzn2 dstzn3 | TestIpRange (1.2.3.4-1.2.3.5)
added: TestIpNew (10.0.6.0/24) | deleted: TestService1 (443/TCP)
added: not TestService1 (443/TCP) | accept | none | Y | deleted: uid1
| deleted: comment1
added: new comment |
| 05.04.2023 12:00:00 | Rule modified | TestRule2 | | not TestUser1@TestIp1 (1.2.3.4/32) TestUser1@TestIp2 (127.0.0.1/32) | | deleted: not TestUser2@TestIpRange (1.2.3.4-1.2.3.5)
added: TestUser2@TestIpRange (1.2.3.4-1.2.3.5) | deleted: not TestService2 (6666-7777/UDP)
added: TestService2 (6666-7777/UDP) | deny | none | deleted: Y
added: N | uid2:123 | comment2 |
| 05.04.2023 12:00:00 | Rule deleted | TestRule2 | | not TestUser1@TestIp1 (1.2.3.4/32) TestUser1@TestIp2 (127.0.0.1/32) | | not TestUser2@TestIpRange (1.2.3.4-1.2.3.5) | not TestService2 (6666-7777/UDP) | deny | none | Y | uid2:123 | comment2 |
";
string reportHtml = RemoveLinebreaks(RemoveGenDate(reportChanges.ExportToHtml(), true));
@@ -208,7 +208,7 @@ public void ResolvedChangesTechGenerateHtml()
ReportData = ConstructChangeReport(true)
};
- string expectedHtmlResult = "Changes Report (technical)Changes Report (technical)
Change Time: from: 2023-04-19T15:00:04Z, until: 2023-04-20T15:00:04Z (UTC)
Generated on: Z (UTC)
Devices: TestMgt [TestDev]
Filter: TestFilter
TestMgt
TestDev
| Change Time | Change Type | Name | Source Zone | Source | Destination Zone | Destination | Services | Action | Track | Enabled | Uid | Comment |
|---|
| 05.04.2023 12:00:00 | Rule added | TestRule1 | srczn | 1.2.3.4/32 127.0.0.1/32 | dstzn | 1.2.3.4-1.2.3.5 | 443/TCP | accept | none | Y | uid1 | comment1 |
| 05.04.2023 12:00:00 | Rule modified | TestRule1 | srczn | 127.0.0.1/32
deleted: 1.2.3.4/32
added: 2.3.4.5 | dstzn | 1.2.3.4-1.2.3.5
added: 10.0.6.0/24 | deleted: 443/TCP
added: not 443/TCP | accept | none | Y | deleted: uid1
| deleted: comment1
added: new comment |
| 05.04.2023 12:00:00 | Rule modified | TestRule2 | | not TestUser1@1.2.3.4/32 TestUser1@127.0.0.1/32 | | deleted: not TestUser2@1.2.3.4-1.2.3.5
added: TestUser2@1.2.3.4-1.2.3.5 | deleted: not 6666-7777/UDP
added: 6666-7777/UDP | deny | none | deleted: Y
added: N | uid2:123 | comment2 |
| 05.04.2023 12:00:00 | Rule deleted | TestRule2 | | not TestUser1@1.2.3.4/32 TestUser1@127.0.0.1/32 | | not TestUser2@1.2.3.4-1.2.3.5 | not 6666-7777/UDP | deny | none | Y | uid2:123 | comment2 |
";
+ string expectedHtmlResult = "Changes Report (technical)Changes Report (technical)
Change Time: from: 2023-04-19T15:00:04Z, until: 2023-04-20T15:00:04Z (UTC)
Generated on: Z (UTC)
Devices: TestMgt [TestDev]
Filter: TestFilter
TestMgt
TestDev
| Change Time | Change Type | Name | Source Zone | Source | Destination Zone | Destination | Services | Action | Track | Enabled | Uid | Comment |
|---|
| 05.04.2023 12:00:00 | Rule added | TestRule1 | srczn1 srczn2 srczn3 | 1.2.3.4/32 127.0.0.1/32 | dstzn1 dstzn2 dstzn3 | 1.2.3.4-1.2.3.5 | 443/TCP | accept | none | Y | uid1 | comment1 |
| 05.04.2023 12:00:00 | Rule modified | TestRule1 | srczn1 srczn2 srczn3 | 127.0.0.1/32
deleted: 1.2.3.4/32
added: 2.3.4.5 | dstzn1 dstzn2 dstzn3 | 1.2.3.4-1.2.3.5
added: 10.0.6.0/24 | deleted: 443/TCP
added: not 443/TCP | accept | none | Y | deleted: uid1
| deleted: comment1
added: new comment |
| 05.04.2023 12:00:00 | Rule modified | TestRule2 | | not TestUser1@1.2.3.4/32 TestUser1@127.0.0.1/32 | | deleted: not TestUser2@1.2.3.4-1.2.3.5
added: TestUser2@1.2.3.4-1.2.3.5 | deleted: not 6666-7777/UDP
added: 6666-7777/UDP | deny | none | deleted: Y
added: N | uid2:123 | comment2 |
| 05.04.2023 12:00:00 | Rule deleted | TestRule2 | | not TestUser1@1.2.3.4/32 TestUser1@127.0.0.1/32 | | not TestUser2@1.2.3.4-1.2.3.5 | not 6666-7777/UDP | deny | none | Y | uid2:123 | comment2 |
";
string reportHtml = RemoveLinebreaks(RemoveGenDate(reportChanges.ExportToHtml(), true));
@@ -734,6 +734,10 @@ private static ServiceWrapper[] InitServices(NetworkService service, bool resolv
private static Rule InitRule1(bool resolved)
{
+ var srcZoneNames = new[] { "srczn1", "srczn2", "srczn3" };
+ var dstZoneNames = new[] { "dstzn1", "dstzn2", "dstzn3" };
+
+
return new Rule()
{
Name = "TestRule1",
@@ -743,10 +747,10 @@ private static Rule InitRule1(bool resolved)
DisplayOrderNumber = 1,
Track = "none",
Uid = "uid1",
- SourceZone = new NetworkZone() { Name = "srczn" },
+ RuleFromZones = srcZoneNames.Select(name => new ZoneWrapper { Content = new NetworkZone { Name = name } }).ToArray(),
SourceNegated = false,
Froms = InitFroms(resolved),
- DestinationZone = new NetworkZone() { Name = "dstzn" },
+ RuleToZones = dstZoneNames.Select(name => new ZoneWrapper { Content = new NetworkZone { Name = name } }).ToArray(),
DestinationNegated = false,
Tos = InitTos(resolved),
ServiceNegated = false,
diff --git a/roles/ui/files/FWO.UI/Pages/Reporting/Report.razor b/roles/ui/files/FWO.UI/Pages/Reporting/Report.razor
index d4f1347a3..cf2588cb1 100644
--- a/roles/ui/files/FWO.UI/Pages/Reporting/Report.razor
+++ b/roles/ui/files/FWO.UI/Pages/Reporting/Report.razor
@@ -250,9 +250,9 @@
private ReportBase? currentReport;
- private FWO.Ui.Shared.TabSet rsbTabset;
+ private FWO.Ui.Shared.TabSet? rsbTabset;
private Sidebar? deviceSelectionSidebar;
- private FWO.Ui.Shared.AnchorNavToRSB anchorNavToRSB;
+ private FWO.Ui.Shared.AnchorNavToRSB? anchorNavToRSB;
private string filterFeedbackStart = "";
private string filterFeedbackError = "";
diff --git a/roles/ui/files/FWO.UI/Pages/Reporting/ReportedRules.razor b/roles/ui/files/FWO.UI/Pages/Reporting/ReportedRules.razor
index e055df97f..6e29bfbd2 100644
--- a/roles/ui/files/FWO.UI/Pages/Reporting/ReportedRules.razor
+++ b/roles/ui/files/FWO.UI/Pages/Reporting/ReportedRules.razor
@@ -97,9 +97,9 @@
@if (SelectedReportType != ReportType.VarianceAnalysis && !HandleAsVariance)
{
-
+
- @((MarkupString)RuleDisplayBase.DisplaySourceZone(rule))
+ @((MarkupString)RuleDisplayBase.DisplaySourceZones(rule))
}
@@ -110,9 +110,9 @@
@if (SelectedReportType != ReportType.VarianceAnalysis && !HandleAsVariance)
{
-
+
- @((MarkupString)RuleDisplayBase.DisplayDestinationZone(rule))
+ @((MarkupString)RuleDisplayBase.DisplayDestinationZones(rule))
}
diff --git a/roles/ui/files/FWO.UI/Pages/Reporting/ReportedRulesForDiff.razor b/roles/ui/files/FWO.UI/Pages/Reporting/ReportedRulesForDiff.razor
index a013334ca..df7f22a5d 100644
--- a/roles/ui/files/FWO.UI/Pages/Reporting/ReportedRulesForDiff.razor
+++ b/roles/ui/files/FWO.UI/Pages/Reporting/ReportedRulesForDiff.razor
@@ -12,6 +12,11 @@
+
+
+ @((MarkupString)RuleDisplayHtml.DisplaySourceZones(rule))
+
+
@((MarkupString)ruleDiffDisplay.DisplaySourceDiff(rule, OutputLocation.report, ReportType.VarianceAnalysis))
@@ -22,6 +27,11 @@
@((MarkupString)ruleDiffDisplay.DisplayServiceDiff(rule, OutputLocation.report, ReportType.VarianceAnalysis))
+
+
+ @((MarkupString)RuleDisplayHtml.DisplayDestinationZones(rule))
+
+
@((MarkupString)ruleDiffDisplay.DisplayDestinationDiff(rule, OutputLocation.report, ReportType.VarianceAnalysis))
@@ -42,8 +52,8 @@
-
-
+ @* *@
+ @* *@
@if(context.Metadata != null)
{
diff --git a/roles/ui/files/FWO.UI/Pages/Reporting/Reports/RulesReport.razor b/roles/ui/files/FWO.UI/Pages/Reporting/Reports/RulesReport.razor
index ee7d9c9bb..ab0a634c7 100644
--- a/roles/ui/files/FWO.UI/Pages/Reporting/Reports/RulesReport.razor
+++ b/roles/ui/files/FWO.UI/Pages/Reporting/Reports/RulesReport.razor
@@ -121,9 +121,9 @@
}
@if (EmptyColumns[2] == false)
{
-
+
- @((MarkupString)RuleDisplayHtml.DisplaySourceZone(rule))
+ @((MarkupString)RuleDisplayHtml.DisplaySourceZones(rule))
}
@@ -137,9 +137,9 @@
}
@if (EmptyColumns[4] == false)
{
-
+
- @((MarkupString)RuleDisplayHtml.DisplayDestinationZone(rule))
+ @((MarkupString)RuleDisplayHtml.DisplayDestinationZones(rule))
}