#Connect-AzAccount

class ResourceCheck {
    [string] $ResourceId = ""
    [string] $Kind = ""
    [string] $Location = ""
    [string] $ResourceName = ""
    [string] $ResourceGroup = ""
    [string] $ResourceType = ""
    [string] $State = ""
    [string] $SubscriptionId = ""
    [string] $SubscriptionName = ""
    [string] $Tag_Team = ""
    [string] $Tag_Product = ""
    [string] $Tag_Environment = ""
    [string] $Tag_Data = ""
    [string] $Tag_CreatedOnDate = ""
    [string] $Prop_HttpsOnly = ""
    [string] $Prop_PhpVersion = ""
    [string] $Prop_NetFrameworkVersion = ""
    [string] $Prop_WindowsFxVersion = ""
    [string] $Prop_RemoteDebuggingEnabled = ""
    [string] $Prop_MinTlsVersion = ""
    [string] $Prop_FtpsState = ""
}


Write-Host "======================================================================================================================================================================"
Write-Host "Creating webapp resource overview."
Write-Host "======================================================================================================================================================================"

$subscriptions = Get-AzSubscription | Where-Object State -eq "Enabled"

foreach ($subscription in $subscriptions) 
{
    Write-Host "----------------------------------------------------------------------------------------------------------------------------------------------------------------------"

    Set-AzContext -SubscriptionId $subscription.Id

    Write-Host "----------------------------------------------------------------------------------------------------------------------------------------------------------------------"

    $allResourceGroups = Get-AzResourceGroup

    foreach ($group in $allResourceGroups) {

        Write-Host "Resource group $($group.ResourceGroupName)"

        $allWebApps = Get-AzWebApp -ResourceGroupName $group.ResourceGroupName
        
        foreach ($webApp in $allWebApps) {

            if (($webApp.SiteConfig.FtpsState -ne "Disabled") -and ($webApp.SiteConfig.FtpsState -ne "FtpsOnly")) {
                Write-Host "Disable FTP $($webApp.Name)"
                $x = Set-AzWebApp -Name $webApp.Name -ResourceGroupName $group.ResourceGroupName -FtpsState Disabled
            }
            if (($webApp.SiteConfig.PhpVersion -ne "off") -and ($webApp.SiteConfig.PhpVersion -ne "")) {
                Write-Host "Disable PHP $($webApp.Name)"
                $x = Set-AzWebApp -Name $webApp.Name -ResourceGroupName $group.ResourceGroupName -PhpVersion "off"
            }

            $allSlots = Get-AzWebAppSlot -Name $webApp.Name -ResourceGroupName $webApp.ResourceGroup

            foreach ($slotTemp in $allSlots) {

                [string] $slotName = $slotTemp.Name.Split("/")[1]
                $slot = Get-AzWebAppSlot -Name $webApp.Name -ResourceGroupName $webApp.ResourceGroup -Slot $slotName

                if (($slot.SiteConfig.FtpsState -ne "Disabled") -and ($webApp.SiteConfig.FtpsState -ne "FtpsOnly")) {
                    Write-Host "Disable FTP $($webApp.Name) - $($slotName)"
                    $y = Set-AzWebAppSlot -Name $webApp.Name -Slot $slotName -ResourceGroupName $group.ResourceGroupName -FtpsState Disabled
                }
                if (($slot.SiteConfig.PhpVersion -ne "") -and ($slot.SiteConfig.PhpVersion -ne "off")) {
                    Write-Host "Disable PHP $($webApp.Name) - $($slotName)"
                    $y = Set-AzWebAppSlot -Name $webApp.Name -Slot $slotName -ResourceGroupName $group.ResourceGroupName -PhpVersion "off"
                }
            }
        }
    }
}

Write-Host "======================================================================================================================================================================"
Write-Host "Done."
