Module/Rule.DnsServerSetting/Convert/DnsServerSettingRule.Convert.psm1
# Copyright (c) Microsoft Corporation. All rights reserved. # Licensed under the MIT License. using module .\..\..\Common\Common.psm1 using module .\..\DnsServerSettingRule.psm1 $exclude = @($MyInvocation.MyCommand.Name,'Template.*.txt') $supportFileList = Get-ChildItem -Path $PSScriptRoot -Exclude $exclude foreach ($supportFile in $supportFileList) { Write-Verbose "Loading $($supportFile.FullName)" . $supportFile.FullName } # Header <# .SYNOPSIS Convert the contents of an xccdf check-content element into an Dns Server Setting object .DESCRIPTION The DnsServerSettingRuleConvert class is used to extract the Dns Server settings from the check-content of the xccdf. Once a STIG rule is identified as a DNS server setting, it is passed to the DnsServerSettingRuleConvert class for parsing and validation. #> class DnsServerSettingRuleConvert : DnsServerSettingRule { <# .SYNOPSIS Empty constructor for SplitFactory #> DnsServerSettingRuleConvert () { } <# .SYNOPSIS Converts a xccdf stig rule element into a Dns Server Setting Rule .PARAMETER XccdfRule The STIG rule to convert #> DnsServerSettingRuleConvert ([xml.xmlelement] $XccdfRule) : base ($XccdfRule, $true) { $this.SetDnsServerPropertyName() $this.SetDnsServerPropertyValue() $this.SetDuplicateRule() if ($this.IsExistingRule($global:stigSettings)) { $newId = Get-AvailableId -Id $this.Id $this.set_id($newId) } $this.SetDscResource() } #region Methods <# .SYNOPSIS Extracts the DNS server setting name from the check-content and sets the value .DESCRIPTION Gets the DNS server setting name from the xccdf content and sets the value. If the DNS server setting that is returned is not a valid name, the parser status is set to fail. #> [void] SetDnsServerPropertyName () { $thisDnsServerSettingPropertyName = Get-DnsServerSettingProperty -CheckContent $this.SplitCheckContent if (-not $this.SetStatus($thisDnsServerSettingPropertyName)) { $this.set_PropertyName($thisDnsServerSettingPropertyName) } } <# .SYNOPSIS Extracts the DNS server setting value from the check-content and sets the value .DESCRIPTION Gets the DNS server setting value from the xccdf content and sets the value. If the DNS server setting that is returned is not a valid property, the parser status is set to fail. #> [void] SetDnsServerPropertyValue () { $thisDnsServerSettingPropertyValue = Get-DnsServerSettingPropertyValue -CheckContent $this.SplitCheckContent if (-not $this.SetStatus($thisDnsServerSettingPropertyValue)) { $this.set_PropertyValue($thisDnsServerSettingPropertyValue) } } hidden [void] SetDscResource () { if ($null -eq $this.DuplicateOf) { $this.DscResource = 'xDnsServerSetting' } else { $this.DscResource = 'None' } } static [bool] Match ([string] $CheckContent) { if ( $CheckContent -Match 'dnsmgmt\.msc' -and $CheckContent -NotMatch 'Forward Lookup Zones' -and $CheckContent -Notmatch 'Logs\\Microsoft' -and $CheckContent -NotMatch 'Verify the \"root hints\"' ) { return $true } return $false } #endregion } |