From b7be5c5b1ed7c05d0adbfa01d7a57152af96f43d Mon Sep 17 00:00:00 2001 From: Alexis La Goutte Date: Fri, 12 Jul 2024 14:49:52 +0200 Subject: [PATCH 1/6] System: Fix indent --- Src/Private/Get-AbrFgtSystem.ps1 | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/Src/Private/Get-AbrFgtSystem.ps1 b/Src/Private/Get-AbrFgtSystem.ps1 index 539c0a9..1200c65 100644 --- a/Src/Private/Get-AbrFgtSystem.ps1 +++ b/Src/Private/Get-AbrFgtSystem.ps1 @@ -44,13 +44,13 @@ function Get-AbrFgtSystem { } $OutObj = [pscustomobject]@{ - "Nom" = $info.'hostname' - "Alias" = $info.'alias' - "Recurring Reboot" = $reboot - "Port SSH" = $info.'admin-ssh-port' - "Port HTTP" = $info.'admin-port' - "Port HTTPS" = $info.'admin-sport' - "HTTPS Redirect" = $info.'admin-https-redirect' + "Nom" = $info.'hostname' + "Alias" = $info.'alias' + "Recurring Reboot" = $reboot + "Port SSH" = $info.'admin-ssh-port' + "Port HTTP" = $info.'admin-port' + "Port HTTPS" = $info.'admin-sport' + "HTTPS Redirect" = $info.'admin-https-redirect' } $TableParams = @{ From cc8f54cd8cbd2300367ab9a31692383fda53874d Mon Sep 17 00:00:00 2001 From: Alexis La Goutte Date: Fri, 12 Jul 2024 15:11:24 +0200 Subject: [PATCH 2/6] System: Add DHCP Server Section --- Src/Private/Get-AbrFgtSystem.ps1 | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/Src/Private/Get-AbrFgtSystem.ps1 b/Src/Private/Get-AbrFgtSystem.ps1 index 1200c65..659dc5a 100644 --- a/Src/Private/Get-AbrFgtSystem.ps1 +++ b/Src/Private/Get-AbrFgtSystem.ps1 @@ -319,6 +319,38 @@ function Get-AbrFgtSystem { } } + #DHCP Server + $dhcp_servers = Get-FGTSystemDHCPServer + + if ($dhcp_servers -and $InfoLevel.System -ge 1) { + Section -Style Heading3 'DHCP Server' { + $OutObj = @() + + foreach ($dhcp_server in $dhcp_servers) { + $OutObj += [pscustomobject]@{ + "id" = $dhcp_server.id + "Status" = $dhcp_server.status + "Interface" = $dhcp_server.interface + "Range" = "$($dhcp_server.'ip-range'.'start-ip')-$($dhcp_server.'ip-range'.'end-ip')" + "Netmask" = $dhcp_server.netmask + "Gateway" = $dhcp_server.'default-gateway' + } + } + + $TableParams = @{ + Name = "DHCP Server" + List = $false + ColumnWidths = 5, 11, 15, 35, 17, 17 + } + + if ($Report.ShowTableCaptions) { + $TableParams['Caption'] = "- $($TableParams.Name)" + } + + $OutObj | Table @TableParams + } + } + # Fetch HA Configuration $haConfig = Get-FGTSystemHA $haPeers = Get-FGTMonitorSystemHAPeer From cee78c079265cb3d1e560fe14bc019ab77a403e7 Mon Sep 17 00:00:00 2001 From: Alexis La Goutte Date: Fri, 12 Jul 2024 15:42:57 +0200 Subject: [PATCH 3/6] System: Add DHCP Server Detail sub Section --- AsBuiltReport.Fortinet.FortiGate.json | 2 +- Src/Private/Get-AbrFgtSystem.ps1 | 39 +++++++++++++++++++++++++++ 2 files changed, 40 insertions(+), 1 deletion(-) diff --git a/AsBuiltReport.Fortinet.FortiGate.json b/AsBuiltReport.Fortinet.FortiGate.json index bf19fbd..f4c19e8 100644 --- a/AsBuiltReport.Fortinet.FortiGate.json +++ b/AsBuiltReport.Fortinet.FortiGate.json @@ -16,7 +16,7 @@ "InfoLevel": { "_comment_": "0 = Disabled, 1 = Enabled / Summary, 2 = Adv Summary", "FortiCare": 1, - "System": 1, + "System": 2, "Route": 1, "SDWAN": 1, "Firewall": 1, diff --git a/Src/Private/Get-AbrFgtSystem.ps1 b/Src/Private/Get-AbrFgtSystem.ps1 index 659dc5a..9689b9b 100644 --- a/Src/Private/Get-AbrFgtSystem.ps1 +++ b/Src/Private/Get-AbrFgtSystem.ps1 @@ -349,6 +349,45 @@ function Get-AbrFgtSystem { $OutObj | Table @TableParams } + + #DHCP Server detail + if ($InfoLevel.System -ge 2) { + foreach ($dhcp_server in $dhcp_servers) { + Section -Style NOTOCHeading4 -ExcludeFromTOC "DHCP: $($dhcp_server.id) - $($dhcp_server.interface)" { + BlankLine + + $dns = ($dhcp_server.'dns-server1' -replace "0.0.0.0", "") + ($dhcp_server.'dns-server2' -replace "0.0.0.0", "") + ($dhcp_server.'dns-server3' -replace "0.0.0.0", "") + ($dhcp_server.'dns-server4' -replace "0.0.0.0", "") + $ntp = ($dhcp_server.'ntp-server1' -replace "0.0.0.0", "") + ($dhcp_server.'ntp-server2' -replace "0.0.0.0", "") + ($dhcp_server.'ntp-server3' -replace "0.0.0.0", "") + ($dhcp_server.'ntp-server4' -replace "0.0.0.0", "") + $OutObj = [pscustomobject]@{ + "id" = $dhcp_server.id + "Status" = $dhcp_server.status + "Lease Time" = $dhcp_server.'lease-time' + "Interface" = $dhcp_server.interface + "Start IP" = $dhcp_server.'ip-range'.'start-ip' + "End IP" = $dhcp_server.'ip-range'.'end-ip' + "Netmask" = $dhcp_server.netmask + "Gateway" = $dhcp_server.'default-gateway' + "DNS" = $dns + "Domain" = $dhcp_server.domain + "NTP" = $ntp + } + + $TableParams = @{ + Name = "DHCP $($dhcp_server.id) - $($dhcp_server.interface)" + List = $true + ColumnWidths = 25, 75 + } + + if ($Report.ShowTableCaptions) { + $TableParams['Caption'] = "- $($TableParams.Name)" + } + + $OutObj | Table @TableParams + } + } + } + + } # Fetch HA Configuration From f33c42e03cb20db357aa056b3a02074c7ed919f8 Mon Sep 17 00:00:00 2001 From: Alexis La Goutte Date: Fri, 12 Jul 2024 15:57:01 +0200 Subject: [PATCH 4/6] System: Add DHCP Server Reservation (Address) --- Src/Private/Get-AbrFgtSystem.ps1 | 30 ++++++++++++++++++++++++++++-- 1 file changed, 28 insertions(+), 2 deletions(-) diff --git a/Src/Private/Get-AbrFgtSystem.ps1 b/Src/Private/Get-AbrFgtSystem.ps1 index 9689b9b..e2c1ffc 100644 --- a/Src/Private/Get-AbrFgtSystem.ps1 +++ b/Src/Private/Get-AbrFgtSystem.ps1 @@ -350,8 +350,8 @@ function Get-AbrFgtSystem { $OutObj | Table @TableParams } - #DHCP Server detail if ($InfoLevel.System -ge 2) { + #DHCP Server detail foreach ($dhcp_server in $dhcp_servers) { Section -Style NOTOCHeading4 -ExcludeFromTOC "DHCP: $($dhcp_server.id) - $($dhcp_server.interface)" { BlankLine @@ -385,8 +385,34 @@ function Get-AbrFgtSystem { $OutObj | Table @TableParams } } - } + #DHCP Server Reservation + if ($dhcp_servers.'reserved_address') { + Section -Style NOTOCHeading4 -ExcludeFromTOC "DHCP Server Reserved Address" { + $OutObj = @() + foreach ($reserved_address in ($dhcp_servers.'reserved-address')) { + $OutObj += [pscustomobject]@{ + "id" = $reserved_address.id + "IP" = $reserved_address.ip + "MAC" = $reserved_address.mac + "Action" = $reserved_address.action + } + } + + $TableParams = @{ + Name = "DHCP Server Reserved Address" + List = $false + ColumnWidths = 5, 35, 35, 25 + } + + if ($Report.ShowTableCaptions) { + $TableParams['Caption'] = "- $($TableParams.Name)" + } + + $OutObj | Table @TableParams + } + } + } } From b9b5569704e6a7386d91d613f3223b8fc3cab1eb Mon Sep 17 00:00:00 2001 From: Alexis La Goutte Date: Fri, 12 Jul 2024 16:04:38 +0200 Subject: [PATCH 5/6] System: Add DHCP Leases information --- Src/Private/Get-AbrFgtSystem.ps1 | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/Src/Private/Get-AbrFgtSystem.ps1 b/Src/Private/Get-AbrFgtSystem.ps1 index e2c1ffc..94257ea 100644 --- a/Src/Private/Get-AbrFgtSystem.ps1 +++ b/Src/Private/Get-AbrFgtSystem.ps1 @@ -412,6 +412,38 @@ function Get-AbrFgtSystem { $OutObj | Table @TableParams } } + + #DHCP Leases (from Monitoring) => no yet Get-FGTMonitorDHCP cmdlet on PowerFGT... + $dhcp_leases = (Invoke-FGTRestMethod -uri api/v2/monitor/system/dhcp).results + + if ($dhcp_leases) { + Section -Style NOTOCHeading4 -ExcludeFromTOC "DHCP Leases" { + $OutObj = @() + foreach ($dhcp_lease in $dhcp_leases) { + $OutObj += [pscustomobject]@{ + "IP" = $dhcp_lease.ip + "MAC" = $dhcp_lease.mac + "Hostname" = $dhcp_lease.hostname + "Status" = $dhcp_lease.status + "Reserved" = $dhcp_lease.reserved + "Expire Time" = ( Get-Date -UnixTimeSeconds $dhcp_lease.expire_time) + } + } + + $TableParams = @{ + Name = "DHCP Server Reserved Address" + List = $false + ColumnWidths = 19, 19, 24, 8, 11, 18 + } + + if ($Report.ShowTableCaptions) { + $TableParams['Caption'] = "- $($TableParams.Name)" + } + + $OutObj | Table @TableParams + } + } + } } From d2973a6527e7c27111c4d77081a379a00206589a Mon Sep 17 00:00:00 2001 From: Alexis La Goutte Date: Fri, 12 Jul 2024 16:06:53 +0200 Subject: [PATCH 6/6] README(.md): Update Settings for System (1 -> 2) --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 4ba2ba1..0f1b2c9 100644 --- a/README.md +++ b/README.md @@ -144,7 +144,7 @@ The table below outlines the default and maximum InfoLevel settings for each *Fo | Sub-Schema | Default Settings | Maximum Settings | |:----------:|------------------|------------------| | Forticare | 1 | 1 | -| System | 1 | 1 | +| System | 2 | 2 | | Route | 1 | 1 | | Firewall | 1 | 1 | | User | 2 | 2 |