Public/get-ADFSTkFederationDefaults.ps1
function get-ADFSTkFederationDefaults { [CmdletBinding()] param ( $URL, [switch]$InstallDefaults, $ExtractionFilter ="ADFSToolkit/config/federation", [switch]$ClearCache, [switch]$Silent ) process { #Prepare to be able to use zip files Add-Type -assembly "system.io.compression.filesystem" #Get All paths and assert they exist if ([string]::IsNullOrEmpty($Global:ADFSTkPaths)) { $Global:ADFSTkPaths = Get-ADFSTKPaths } # setup our files $nowStamp=[DateTime]::Now.ToString("yyyyMMdd-HHmmss") $fedCacheFile="federationdefaults.zip" $fedCacheFileBackup="federationdefaults" +$nowStamp +".zip" $federationDirNameBackup="federation"+$nowStamp $federationConfigCacheFile= Join-Path $Global:ADFSTkPaths.cacheDir $fedCacheFile $federationConfigCacheFileBackup= Join-Path $Global:ADFSTkPaths.cacheDir $fedCacheFileBackup $federationConfigDirFullBackupPath= Join-Path $Global:ADFSTkPaths.mainBackupDir $federationDirNameBackup # Begin processing the various states for default handling # # if ($PSBoundParameters.ContainsKey('ClearCache') -and ($ClearCache -ne $null) ) { If ( ($PSBoundParameters.ContainsKey('InstallDefaults')) -or ($PSBoundParameters.ContainsKey('URL')) ) { #("ADFSToolkit: When used, ClearCache flag must be the only flag used. Nothing done, exiting ") Write-ADFSTkHost feddefaultsErrorFlags -Style Info return }else { #Write-Output ("ADFSToolkit: Removing cache file $federationConfigCacheFile") Write-ADFSTkHost feddefaultsErrorFlagsElse -f $federationConfigCacheFile -Style Info remove-item $federationConfigCacheFile return } } # Use case A: no url, no config cache available if ( ( $PSBoundParameters.ContainsKey('URL') -and ($URL -eq $null) ) -and !(Test-Path ( $federationConfigCacheFile ) ) ) { #Write-Output ("ADFSToolkit: Federation default behaviour expected with no extra federation settings.") Write-ADFSTkHost feddefaultsCaseNoURLNoCacheFile -Style info if ($InstallDefaults) { #Write-Output ("ADFSToolkit: InstallDefaults flag found but no defaults to apply, nothing changed, exiting.") Write-ADFSTkHost feddefaultsCaseInstallDefNothing -Style Info } return } # Use case B: no url, config cache detected, tell user about it elseif ( ( $PSBoundParameters.ContainsKey('URL') -and ($URL -eq $null) ) -and (Test-Path ( $federationConfigCacheFile ) ) ) { #Write-Output ("ADFSToolkit: Federation defaults in the cache are:") Write-ADFSTkHost feddefaultsCaseNoURLConfigCacheYesHeader -Style info Get-ChildItem $federationConfigCacheFile -Force | Select-Object FullName, CreationTime, LastAccessTime, LastWriteTime, Mode, Length } #Use case C: URL is not null, and we have a file. If InstallDefaults specified make backup and deploy. # # Note that we are now using if statements for presence as the defaults could be on disk if fetched but not installed # if ( $PSBoundParameters.ContainsKey('URL') -and ($URL -ne $null) ) { #Write-Output ("ADFSToolkit: Updating federation defaults on disk from: $URL") Write-ADFSTkHost feddefaultsCaseNoURLConfigCacheYesHeaderURLOK -f $URL -Style info # make backup If (Test-Path ( $federationConfigCacheFile ) ) { #Write-Output ("ADFSToolkit: Backing up $fedConfigCacheFile to $fedConfigCacheFileBackup") Write-ADFSTkHost feddefaultsCaseNoURLConfigCacheYesHeaderBackingUp -f $fedConfigCacheFile,$fedConfigCacheFileBackup -Style Info Copy-item $federationConfigCacheFile -Destination $federationConfigCacheFileBackup } # Begin fetch file $start_time = Get-Date #Write-Output ("ADFSToolkit: Fetching $URL to $federationConfigCacheFile") Write-ADFSTkHost feddefaultsFetchBegin -f $URL, $federationConfigCacheFilev -Style info [System.Net.WebClient]::New().DownloadFile($URL, $federationConfigCacheFile) #Write-Output "ADFSToolkit: Time taken: $((Get-Date).Subtract($start_time).Seconds) second(s)" Write-ADFSTkHost feddefaultsTimeTaken -f $((Get-Date).Subtract($start_time).Seconds) -Style info Get-ChildItem $federationConfigCacheFile -Force | Select-Object FullName, CreationTime, LastAccessTime, LastWriteTime, Mode, Length # interrogate the file we just fetched #Write-Output ("ADFSToolkit: contents of Federation Cache file: $federationConfigCacheFile :") Write-ADFSTkHost feddefaultsContents -f $federationConfigCacheFile -Style Info $zip = [io.compression.zipfile]::OpenRead($federationConfigCacheFile) $zip.Entries|where-object {$_.FullName -match $ExtractionFilter }|Select-object FullName -ExpandProperty "FullName" $zip.Dispose() } # deploy configuration that's on disk if ( ( $PSBoundParameters.ContainsKey('InstallDefaults') -and ($InstallDefaults -ne $null) ) -and (Test-Path ( $federationConfigCacheFile ) ) ) { #Write-Output ("ADFSToolkit: Installing federation defaults from: $federationConfigCacheFile ...") Write-ADFSTkHost feddefaultsInstalling -f $federationConfigCacheFile -style info $zip = [io.compression.zipfile]::OpenRead($federationConfigCacheFile) $unzippedDirName=($zip.Entries[0]).FullName $unzippedFullNameDir=Join-Path (Join-path $Global:ADFSTkPaths.cacheDir $unzippedDirName) $ExtractionFilter #backup previous federation-settings move-item -Path $Global:ADFSTkPaths.federationDir -Destination $federationConfigDirFullBackupPath # Get-ChildItem $Global:ADFSTkPaths.federationDir -Exclude backup,federations.xml | Move-Item $_.fullName $Global:ADFSTkPaths.federationBackupDir Expand-Archive -Path $federationConfigCacheFile -DestinationPath $Global:ADFSTkPaths.cacheDir -Force copy-item $unzippedFullNameDir $Global:ADFSTkPaths.federationDir -Recurse $zip.Dispose() # persist url in ADFSTkFederationSettings # verify URL exists, then persist if ( ( $PSBoundParameters.ContainsKey('URL') -and ($URL -ne $null) ) -and ($Global:ADFSTkPaths.mainConfigFile -ne $null) ) { [xml]$config = Get-Content $Global:ADFSTkPaths.mainConfigFile $config.Configuration.FederationConfig.Federation.URL= $URL $config.Save( $Global:ADFSTkPaths.mainConfigFile) } #Write-Output ("ADFSToolkit: Done. Next time a new aggregate is configured, defaults will be used. Existing configurations should remain unchanged") Write-ADFSTkHost feddefaultsUnchanged -Style Info } else { Write-Output " " #Write-Output "ADFSToolkit: Federation defaults not installed into ADFSToolkit. Specify -InstallDefaults to apply them." Write-ADFSTkHost feddefaultsNotInstalled -Style Info } return Write-ADFSTkHost feddefaultsAllDone -Style Info } } <# .SYNOPSIS show,fetch, and install federation defaults zip bundle to augment ADFSToolkit behaviour .DESCRIPTION show,fetch, and install federation defaults zip bundle. ADFSToolkit will use default behaviour otherwise .EXAMPLE get-ADFSTkFederationDefaults .EXAMPLE get-ADFSTkFederationDefaults -URL https://someurl/fed.zip .EXAMPLE get-ADFSTkFederationDefaults -InstallDefaults -URL https://someurl/fed.zip #> # SIG # Begin signature block # MIIRbgYJKoZIhvcNAQcCoIIRXzCCEVsCAQExCzAJBgUrDgMCGgUAMGkGCisGAQQB # gjcCAQSgWzBZMDQGCisGAQQBgjcCAR4wJgIDAQAABBAfzDtgWUsITrck0sYpfvNR # AgEAAgEAAgEAAgEAAgEAMCEwCQYFKw4DAhoFAAQUOOBN7vIUwfsUbYU7r7Zdj/M1 # Gieggg51MIIEfTCCA2WgAwIBAgIDG+cVMA0GCSqGSIb3DQEBCwUAMGMxCzAJBgNV # BAYTAlVTMSEwHwYDVQQKExhUaGUgR28gRGFkZHkgR3JvdXAsIEluYy4xMTAvBgNV # BAsTKEdvIERhZGR5IENsYXNzIDIgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcN # MTQwMTAxMDcwMDAwWhcNMzEwNTMwMDcwMDAwWjCBgzELMAkGA1UEBhMCVVMxEDAO # BgNVBAgTB0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxGjAYBgNVBAoTEUdv # RGFkZHkuY29tLCBJbmMuMTEwLwYDVQQDEyhHbyBEYWRkeSBSb290IENlcnRpZmlj # YXRlIEF1dGhvcml0eSAtIEcyMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC # AQEAv3FiCPH6WTT3G8kYo/eASVjpIoMTpsUgQwE7hPHmhUmfJ+r2hBtOoLTbcJjH # MgGxBT4HTu70+k8vWTAi56sZVmvigAf88xZ1gDlRe+X5NbZ0TqmNghPktj+pA4P6 # or6KFWp/3gvDthkUBcrqw6gElDtGfDIN8wBmIsiNaW02jBEYt9OyHGC0OPoCjM7T # 3UYH3go+6118yHz7sCtTpJJiaVElBWEaRIGMLKlDliPfrDqBmg4pxRyp6V0etp6e # MAo5zvGIgPtLXcwy7IViQyU0AlYnAZG0O3AqP26x6JyIAX2f1PnbU21gnb8s51ir # uF9G/M7EGwM8CetJMVxpRrPgRwIDAQABo4IBFzCCARMwDwYDVR0TAQH/BAUwAwEB # /zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFDqahQcQZyi27/a9BUFuIMGU2g/e # MB8GA1UdIwQYMBaAFNLEsNKR1EwRcbNhyz2h/t2oatTjMDQGCCsGAQUFBwEBBCgw # JjAkBggrBgEFBQcwAYYYaHR0cDovL29jc3AuZ29kYWRkeS5jb20vMDIGA1UdHwQr # MCkwJ6AloCOGIWh0dHA6Ly9jcmwuZ29kYWRkeS5jb20vZ2Ryb290LmNybDBGBgNV # HSAEPzA9MDsGBFUdIAAwMzAxBggrBgEFBQcCARYlaHR0cHM6Ly9jZXJ0cy5nb2Rh # ZGR5LmNvbS9yZXBvc2l0b3J5LzANBgkqhkiG9w0BAQsFAAOCAQEAWQtTvZKGEack # e+1bMc8dH2xwxbhuvk679r6XUOEwf7ooXGKUwuN+M/f7QnaF25UcjCJYdQkMiGVn # OQoWCcWgOJekxSOTP7QYpgEGRJHjp2kntFolfzq3Ms3dhP8qOCkzpN1nsoX+oYgg # HFCJyNwq9kIDN0zmiN/VryTyscPfzLXs4Jlet0lUIDyUGAzHHFIYSaRt4bNYC8nY # 7NmuHDKOKHAN4v6mF56ED71XcLNa6R+ghlO773z/aQvgSMO3kwvIClTErF0UZzds # yqUvMQg3qm5vjLyb4lddJIGvl5echK1srDdMZvNhkREg5L4wn3qkKQmw4TRfZHcY # QFHfjDCmrzCCBNAwggO4oAMCAQICAQcwDQYJKoZIhvcNAQELBQAwgYMxCzAJBgNV # BAYTAlVTMRAwDgYDVQQIEwdBcml6b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMRow # GAYDVQQKExFHb0RhZGR5LmNvbSwgSW5jLjExMC8GA1UEAxMoR28gRGFkZHkgUm9v # dCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgLSBHMjAeFw0xMTA1MDMwNzAwMDBaFw0z # MTA1MDMwNzAwMDBaMIG0MQswCQYDVQQGEwJVUzEQMA4GA1UECBMHQXJpem9uYTET # MBEGA1UEBxMKU2NvdHRzZGFsZTEaMBgGA1UEChMRR29EYWRkeS5jb20sIEluYy4x # LTArBgNVBAsTJGh0dHA6Ly9jZXJ0cy5nb2RhZGR5LmNvbS9yZXBvc2l0b3J5LzEz # MDEGA1UEAxMqR28gRGFkZHkgU2VjdXJlIENlcnRpZmljYXRlIEF1dGhvcml0eSAt # IEcyMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAueDLENSvdr3Uk2Lr # MGS4gQhswwTZYheOL/8+Zc+PzmLmPFIc2hZFS1WreGtjg2KQzg9pbJnIGhSLTMxF # M+qI3J6jryv+gGGdeVfEzy70PzA8XUf8mha8wzeWQVGOEUtU+Ci+0Iy+8DA4HvOw # JvhmR2Nt3nEmR484R1PRRh2049wA6kWsvbxx2apvANvbzTA6eU9fTEf4He9bwsSd # YDuxskOR2KQzTuqz1idPrSWKpcb01dCmrnQFZFeItURV1C0qOj74uL3pMgoClGTE # FjpQ8Uqu53kzrwwgB3/o3wQ5wmkCbGNS+nfBG8h0h8i5kxhQVDVLaU68O9NJLh/c # wdJS+wIDAQABo4IBGjCCARYwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC # AQYwHQYDVR0OBBYEFEDCvSeOzDSDMKIz1/tss/C0LIDOMB8GA1UdIwQYMBaAFDqa # hQcQZyi27/a9BUFuIMGU2g/eMDQGCCsGAQUFBwEBBCgwJjAkBggrBgEFBQcwAYYY # aHR0cDovL29jc3AuZ29kYWRkeS5jb20vMDUGA1UdHwQuMCwwKqAooCaGJGh0dHA6 # Ly9jcmwuZ29kYWRkeS5jb20vZ2Ryb290LWcyLmNybDBGBgNVHSAEPzA9MDsGBFUd # IAAwMzAxBggrBgEFBQcCARYlaHR0cHM6Ly9jZXJ0cy5nb2RhZGR5LmNvbS9yZXBv # c2l0b3J5LzANBgkqhkiG9w0BAQsFAAOCAQEACH5skxDIOLiWqZBL/6FfTwTvbD6c # iAbJUI+mc/dXMRu+vOQv2/i601vgtOfmeWIODKLXamNzMbX1qEikOwgtol2Q17R8 # JU8RVjDEtkSdeyyd5V7m7wxhqr/kKhvuhJ64g33BQ85EpxNwDZEf9MgTrYNg2dhy # qHMkHrWsIg7KF4liWEQbq4klAQAPzcQbYttRtNMPUSqb9Lxz/HbONqTN2dgs6q6b # 9SqykNFNdRiKP4pBkCN9W0v+pANYm0ayw2Bgg/h9UEHOwqGQw7vvAi/SFVTuRBXZ # Cq6nijPtsS12NibcBOuf92EfFdyHb+5GliitoSZ9CgmnLgSjjbz4vAQwATCCBRww # ggQEoAMCAQICCDeMqUwECkf0MA0GCSqGSIb3DQEBCwUAMIG0MQswCQYDVQQGEwJV # UzEQMA4GA1UECBMHQXJpem9uYTETMBEGA1UEBxMKU2NvdHRzZGFsZTEaMBgGA1UE # ChMRR29EYWRkeS5jb20sIEluYy4xLTArBgNVBAsTJGh0dHA6Ly9jZXJ0cy5nb2Rh # ZGR5LmNvbS9yZXBvc2l0b3J5LzEzMDEGA1UEAxMqR28gRGFkZHkgU2VjdXJlIENl # cnRpZmljYXRlIEF1dGhvcml0eSAtIEcyMB4XDTIwMDEwODExMjIyNFoXDTIxMDMw # ODE4NTgwMFowXjELMAkGA1UEBhMCQ0ExEDAOBgNVBAgTB09udGFyaW8xDzANBgNV # BAcTBk90dGF3YTEVMBMGA1UEChMMQ0FOQVJJRSBJbmMuMRUwEwYDVQQDEwxDQU5B # UklFIEluYy4wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDZhfCjFqiT # mN1uLoySixnwaOjf/ZAL9P6SvjlCaBA2mutoorEgnzUP8HnOIcvMRgEMPmpaZ8eg # M93Bmx9d41xoarsQpCN3DhYOo+b3fWnPucVtpxbul2OFePv63mw/uvr+dqkv4b/f # 3Tg+ilQbpsNonbvh9MKEFv8Pn9koj0ySV+qxz34PxTVAe6g//pel3/3i9fqilCnI # Ecx4zg/+NKBeOWROSs4oXo3IvBjVrunmz+YuieSr78TqIE6hD8JF2q1wKwfMB3+x # 7dEXZAus9WtIU/qITATtEfO9QAgrrYL4F1MLN+osSp8my5eCOjnLTQc47q574V3z # QhsIHW7yBXLdAgMBAAGjggGFMIIBgTAMBgNVHRMBAf8EAjAAMBMGA1UdJQQMMAoG # CCsGAQUFBwMDMA4GA1UdDwEB/wQEAwIHgDA1BgNVHR8ELjAsMCqgKKAmhiRodHRw # Oi8vY3JsLmdvZGFkZHkuY29tL2dkaWcyczUtNS5jcmwwXQYDVR0gBFYwVDBIBgtg # hkgBhv1tAQcXAjA5MDcGCCsGAQUFBwIBFitodHRwOi8vY2VydGlmaWNhdGVzLmdv # ZGFkZHkuY29tL3JlcG9zaXRvcnkvMAgGBmeBDAEEATB2BggrBgEFBQcBAQRqMGgw # JAYIKwYBBQUHMAGGGGh0dHA6Ly9vY3NwLmdvZGFkZHkuY29tLzBABggrBgEFBQcw # AoY0aHR0cDovL2NlcnRpZmljYXRlcy5nb2RhZGR5LmNvbS9yZXBvc2l0b3J5L2dk # aWcyLmNydDAfBgNVHSMEGDAWgBRAwr0njsw0gzCiM9f7bLPwtCyAzjAdBgNVHQ4E # FgQUUPnMg2nmYS8l7rmax3weVkrgz5AwDQYJKoZIhvcNAQELBQADggEBAIYabiAR # aY4KhO6oWgNHPOBjoHuqUH7NwRGN/ztYJznRBZbdD50smoK5GR0FvUZ8TXhYoZOa # zXe4NlFM4e6YcudU+EA/OF+sZHFBWziz1VS6U3sS+cGyJcxvelSoid0q3W3i9/Zy # 6Nv2kk/DEJp49O47mPNovpL15yykX3Vo26GwC9peo4s/cKMzthmgrcF2uLkT+LW4 # 4xKhaL7nBTGDMhjno+a3t00SWCId7wzgQadIJ1QlFOKm0xgmuiW3LIqCG0apvaOf # vWKTPKq68q+FbDPOO48oKrvw1c9K/m8gcnBLz6PX1REVIs5u3pvdOYBCz6uXyKxn # t+Q5jDEK0NskLu0xggJjMIICXwIBATCBwTCBtDELMAkGA1UEBhMCVVMxEDAOBgNV # BAgTB0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxGjAYBgNVBAoTEUdvRGFk # ZHkuY29tLCBJbmMuMS0wKwYDVQQLEyRodHRwOi8vY2VydHMuZ29kYWRkeS5jb20v # cmVwb3NpdG9yeS8xMzAxBgNVBAMTKkdvIERhZGR5IFNlY3VyZSBDZXJ0aWZpY2F0 # ZSBBdXRob3JpdHkgLSBHMgIIN4ypTAQKR/QwCQYFKw4DAhoFAKB4MBgGCisGAQQB # gjcCAQwxCjAIoAKAAKECgAAwGQYJKoZIhvcNAQkDMQwGCisGAQQBgjcCAQQwHAYK # KwYBBAGCNwIBCzEOMAwGCisGAQQBgjcCARUwIwYJKoZIhvcNAQkEMRYEFA4FRXe7 # 6gN1XleQM2wNxi4nlfjlMA0GCSqGSIb3DQEBAQUABIIBALW5gCoJ5rPvrmXSk9WG # 6V2mxpAeK9SEG73zChLYq0GQGB2PZrB6ukNIKoPw5bLCeskARx1dPqy4w8+hUSof # B/TtdDsehecEUv2EdnKkwRHy4SBcih9RiEo775bIHKwWSw/80LB9QdWLZpMKjbzj # EhJ4YKTl08KWHjSherTnn0qnI8NJQ9KyQ14ndawwf3+DekPDBgHT/Y0yBYL8hr8W # +i5rNaOpE5TufGK2krrUUKDWS2WeJVlx02Ria82PCSfyu2GvBnTCyUX0IGy97vLQ # tHQnaeJHrOLdHaYCPww3GKxeODB2hYPkVFXXf5c73LEjdYruGYV64DaTG54zfKJZ # sd4= # SIG # End signature block |