Src/Private/Get-AbrFgtVPNSSL.ps1
function Get-AbrFgtVPNSSL { <# .SYNOPSIS Used by As Built Report to returns VPN SSL settings. .DESCRIPTION Documents the configuration of Fortinet FortiGate in Word/HTML/Text formats using PScribo. .NOTES Version: 0.2.0 Author: Alexis La Goutte Twitter: @alagoutte Github: alagoutte Credits: Iain Brighton (@iainbrighton) - PScribo module .LINK https://github.com/AsBuiltReport/AsBuiltReport.Fortinet.FortiGate #> [CmdletBinding()] param ( ) begin { Write-PScriboMessage "Discovering VPN SSL settings information from $System." } process { Section -Style Heading2 'VPN SSL' { Paragraph "The following section details VPN SSL settings configured on FortiGate." BlankLine $settings = Get-FGTVpnSSLSettings $portals = Get-FGTVPNSSLPortal $users = Get-FGTMonitorVpnSsl if ($InfoLevel.VPNSSL -ge 1) { Section -Style Heading3 'Summary' { Paragraph "The following section provides a summary of VPN SSL settings." BlankLine $OutObj = [pscustomobject]@{ "Portal" = @($settings).count "User (connected)" = @($users).Count } $TableParams = @{ Name = "Summary" List = $true ColumnWidths = 50, 50 } if ($Report.ShowTableCaptions) { $TableParams['Caption'] = "- $($TableParams.Name)" } $OutObj | Table @TableParams } } if ($settings -and $InfoLevel.VPNSSL -ge 1) { Section -Style Heading3 'VPN SSL Settings' { $OutObj = @() $OutObj += [pscustomobject]@{ "Status" = $settings.status "Port" = $settings.port "Source Interface" = $settings.'source-interface'.name "Source Address" = $settings.'source-address'.name "Default Portal" = $settings.'default-portal' "Certificate Server" = $settings.servercert "Algorithm" = $settings.algorithm "Idle Timeout" = $settings.'idle-timeout' "Auth Timeout" = $settings.'auth-timeout' "Force Two factor Auth" = $settings.'force-two-factor-auth' "Tunnel IP Pool" = $settings.'tunnel-ip-pools'.name "DNS Suffix" = $settings.'dns-suffix' "DNS Server1" = $settings.'dns-server1' "DNS Server2" = $settings.'dns-server2' } $TableParams = @{ Name = "VPN SSL Settings" List = $true ColumnWidths = 30, 70 } if ($Report.ShowTableCaptions) { $TableParams['Caption'] = "- $($TableParams.Name)" } $OutObj | Table @TableParams if ($settings.'authentication-rule' -and $InfoLevel.VPNSSL -ge 2) { Section -Style Heading3 "VPN SSL Settings: Authentication Rule" { BlankLine $OutObj = @() foreach ($ar in $settings.'authentication-rule') { $OutObj += [pscustomobject]@{ "id" = $ar.id "users" = $ar.users "groups" = $ar.groups.name "portal" = $ar.portal "realm" = $ar.realm "auth" = $ar.auth } } $TableParams = @{ Name = "VPN SSL Settings: Authentication Rule" List = $false ColumnWidths = 10, 20, 20, 20, 15, 15 } if ($Report.ShowTableCaptions) { $TableParams['Caption'] = "- $($TableParams.Name)" } $OutObj | Table @TableParams } } } } if ($portals -and $InfoLevel.VPNSSL -ge 1) { Section -Style Heading3 'VPN Portal' { Section -Style NOTOCHeading4 -ExcludeFromTOC 'Summary' { $OutObj = @() foreach ($portal in $portals) { $OutObj += [pscustomobject]@{ "Name" = $portal.name "Tunnel Mode" = $portal.'tunnel-mode' "Web Mode" = $portal.'web-mode' "IP Pools" = $portal.'ip-pools'.name } } $TableParams = @{ Name = "VPN SSL Portal Summary" List = $false ColumnWidths = 30, 20, 20, 30 } if ($Report.ShowTableCaptions) { $TableParams['Caption'] = "- $($TableParams.Name)" } $OutObj | Table @TableParams } if ($InfoLevel.VPNSSL -ge 2) { foreach ($portal in $portals) { Section -Style Heading3 "VPN SSL Portal: $($portal.name)" { BlankLine $OutObj = @() $OutObj += [pscustomobject]@{ "Name" = $portal.name "Tunnel Mode" = $portal.'tunnel-mode' "Auto Connect" = $portal.'auto-connect' "Keep Alive" = $portal.'keep-alive' "Save Password " = $portal.'save-password' "IP Pools" = $portal.'ip-pools'.name "Split Tunneling" = $portal.'split-tunneling' "Split Tunneling Routing Address" = $portal.'split-tunneling-routing-address'.name "DNS Server1" = $portal.'dns-server1' "DNS Server2" = $portal.'dns-server2' "DNS Suffix" = $portal.'dns-suffix' "Web Mode" = $portal.'web-mode' "Display Bookmark" = $portal.'display-bookmark' "User Bookmark" = $portal.'user-bookmark' "User Group Bookmark" = $portal.'user-group-bookmark' "Allow User Access" = $portal.'allow-user-access' "Heading" = $portal.heading "Theme" = $portal.theme "Custom Language" = $portal.'custom-lang' "Use SDWAN" = $portal.'use-sdwan' "Clipboard" = $portal.clipboard "Limit User Logins" = $portal.'limit-user-logins' "Host Check" = $portal.'host-check' "MAC Address Check" = $portal.'mac-addr-check' "OS Check" = $portal.'os-check' #> } $TableParams = @{ Name = "VPN SSL Portal: $($portal.name)" List = $true ColumnWidths = 50, 50 } if ($Report.ShowTableCaptions) { $TableParams['Caption'] = "- $($TableParams.Name)" } $OutObj | Table @TableParams } } } } } if ($users -and $InfoLevel.VPNSSL -ge 1) { Section -Style Heading3 'VPN SSL Users Connected' { $OutObj = @() foreach ($user in $users) { $OutObj += [pscustomobject]@{ "User Name" = $user.user_name "Remote Host" = $user.remote_host "Client IP " = $user.subsessions.aip "Last Login Time" = $user.last_login_time } } $TableParams = @{ Name = "VPN SSL Users Connected" List = $false ColumnWidths = 30, 20, 20, 30 } if ($Report.ShowTableCaptions) { $TableParams['Caption'] = "- $($TableParams.Name)" } $OutObj | Table @TableParams } } } } end { } } |