Public/DNS.ps1
# # Copyright 2018, Alexis La Goutte <alexis dot lagoutte at gmail dot com> # Copyright 2018, Cédric Moreau <moreaucedric0 at gmail dot com> # # SPDX-License-Identifier: Apache-2.0 # function Get-ArubaSWDns { <# .SYNOPSIS Get DNS information. .DESCRIPTION Get DNS information about the device .EXAMPLE Get-ArubaSWDns This function give you all the informations about the dns parameters configured on the switch #> Param( [Parameter (Mandatory = $False)] [ValidateNotNullOrEmpty()] [PSObject]$connection = $DefaultArubaSWConnection ) Begin { } Process { $uri = "rest/v4/dns" $response = Invoke-ArubaSWWebRequest -method "GET" -uri $uri -connection $connection $run = ($response | ConvertFrom-Json) $run } End { } } function Set-ArubaSWDns { <# .SYNOPSIS Set global configuration about DNS .DESCRIPTION Set DNS global parameters .EXAMPLE Set-ArubaSWDns -mode Manual Set the DNS mode to manual .EXAMPLE Set-ArubaSWDns -mode DHCP Set the DNS mode to DHCP .EXAMPLE Set-ArubaSWDns -mode Manual -server1 192.0.2.1 -server2 192.0.2.2 -domain example.org This set DNS mode to manual with server 1 and server 2 and domain name to example.org .EXAMPLE Set-ArubaSWDns -mode Manual -domain example.org, example.net This set DNS mode to manual with domain name to example.org and example.net #> Param( [Parameter (Mandatory = $true)] [ValidateSet ("DHCP", "Manual")] [string]$mode, [Parameter (Mandatory = $false)] [string]$server1, [Parameter (Mandatory = $false)] [string]$server2, [Parameter (Mandatory = $false)] [string[]]$domain, [Parameter (Mandatory = $False)] [ValidateNotNullOrEmpty()] [PSObject]$connection = $DefaultArubaSWConnection ) Begin { } Process { $uri = "rest/v4/dns" $conf = New-Object -TypeName PSObject $ip1 = New-Object -TypeName PSObject $ip2 = New-Object -TypeName PSObject $check = Get-ArubaSWDns switch ( $mode ) { DHCP { $mode_status = "DCM_DHCP" } Manual { $mode_status = "DCM_MANUAL" } } $conf | Add-Member -name "dns_config_mode" -membertype NoteProperty -Value $mode_status if ($PsBoundParameters.ContainsKey('server1')) { $ip1 | Add-Member -name "version" -MemberType NoteProperty -Value "IAV_IP_V4" $ip1 | Add-Member -name "octets" -MemberType NoteProperty -Value $server1 $conf | Add-Member -name "server_1" -membertype NoteProperty -Value $ip1 } else { $conf | Add-Member -name "server_1" -membertype NoteProperty -Value $check.server_1 } if ($PsBoundParameters.ContainsKey('server2')) { $ip2 | Add-Member -name "version" -MemberType NoteProperty -Value "IAV_IP_V4" $ip2 | Add-Member -name "octets" -MemberType NoteProperty -Value $server2 $conf | Add-Member -name "server_2" -membertype NoteProperty -Value $ip2 } else { $conf | Add-Member -name "server_2" -membertype NoteProperty -Value $check.server_2 } if ( $PsBoundParameters.ContainsKey('domain') ) { $conf | Add-Member -name "dns_domain_names" -membertype NoteProperty -Value $domain } $response = Invoke-ArubaSWWebRequest -method "PUT" -body $conf -uri $uri -connection $connection $run = $response | ConvertFrom-Json $run } End { } } function Remove-ArubaSWDns { <# .SYNOPSIS Remove DNS server or domain name on the switch .DESCRIPTION Remove DNS server or domain name .EXAMPLE Remove-ArubaSWDns Remove the ip of server 1 and server 2, and all the domain names #> Param( [Parameter(Mandatory = $false)] [switch]$noconfirm, [Parameter (Mandatory = $False)] [ValidateNotNullOrEmpty()] [PSObject]$connection = $DefaultArubaSWConnection ) Begin { } Process { $dns = New-Object -TypeName PSObject $dns | Add-Member -name "dns_config_mode" -membertype NoteProperty -Value "DCM_DISABLED" $uri = "rest/v4/dns" if ( -not ( $noconfirm )) { $message = "Remove DNS on the switch" $question = "Proceed with removal of DNS config ?" $choices = New-Object Collections.ObjectModel.Collection[Management.Automation.Host.ChoiceDescription] $choices.Add((New-Object Management.Automation.Host.ChoiceDescription -ArgumentList '&Yes')) $choices.Add((New-Object Management.Automation.Host.ChoiceDescription -ArgumentList '&No')) $decision = $Host.UI.PromptForChoice($message, $question, $choices, 1) } else { $decision = 0 } if ($decision -eq 0) { Write-Progress -activity "Remove DNS" $null = Invoke-ArubaSWWebRequest -method "PUT" -body $dns -uri $uri -connection $connection Write-Progress -activity "Remove DNS" -completed } } End { } } |