Framework/Framework.ps1

Set-StrictMode -Version Latest
# Hack to load AI dlls
try {Get-AzureRmContext -ErrorAction SilentlyContinue | Out-Null}catch {}

#Constants
. $PSScriptRoot\Helpers\Constants.ps1


#Models
. $PSScriptRoot\Models\Enums.ps1
. $PSScriptRoot\Models\AzSdkGenericEvent.ps1
. $PSScriptRoot\Models\CommandDetails.ps1
. $PSScriptRoot\Helpers\CommandHelper.ps1

. $PSScriptRoot\Abstracts\EventBase.ps1

. $PSScriptRoot\Helpers\Helpers.ps1

#Helpers (independent of models)
. $PSScriptRoot\Helpers\ConfigurationHelper.ps1

. $PSScriptRoot\Models\AzSdkConfig.ps1
. $PSScriptRoot\Models\AzSdkEvent.ps1
. $PSScriptRoot\Models\AzSdkSettings.ps1

. $PSScriptRoot\Models\SVT\SVTConfig.ps1
. $PSScriptRoot\Models\SVT\SVTEvent.ps1
. $PSScriptRoot\Models\SVT\SVTResource.ps1
. $PSScriptRoot\Models\SVT\PSCloudService.ps1
. $PSScriptRoot\Models\SVT\SVTBaselineRMap.ps1

. $PSScriptRoot\Models\SubscriptionCore\AzureSecurityCenter.ps1
. $PSScriptRoot\Models\SubscriptionCore\ManagementCertificate.ps1
. $PSScriptRoot\Models\SubscriptionSecurity\SubscriptionRBAC.ps1
. $PSScriptRoot\Models\ContinuousCompliance\AutomationAccount.ps1

. $PSScriptRoot\Models\ControlState.ps1
. $PSScriptRoot\Models\FixControl\FixControlModel.ps1

. $PSScriptRoot\Models\RemoteReports\ScanResultModels.ps1

#Helpers
. $PSScriptRoot\Helpers\Helpers.ps1

. $PSScriptRoot\Helpers\WebRequestHelper.ps1
. $PSScriptRoot\Helpers\ActiveDirectoryHelper.ps1
. $PSScriptRoot\Helpers\RoleAssignmentHelper.ps1
. $PSScriptRoot\Helpers\SecurityCenterHelper.ps1
. $PSScriptRoot\Helpers\SVTMapping.ps1
. $PSScriptRoot\Helpers\IdentityHelpers.ps1


#Managers
. $PSScriptRoot\Managers\ConfigurationManager.ps1
. $PSScriptRoot\Managers\ControlStateExtension.ps1
. $PSScriptRoot\Managers\AzSDKPDFExtension.ps1
. $PSScriptRoot\Managers\ControlBaselineManager.ps1

. $PSScriptRoot\Helpers\RemoteApiHelper.ps1

#Abstracts
. $PSScriptRoot\Abstracts\AzSdkRoot.ps1
. $PSScriptRoot\Abstracts\SVTBase.ps1

. $PSScriptRoot\Abstracts\FixControl\FixControlBase.ps1
. $PSScriptRoot\Abstracts\FixControl\FixServicesBase.ps1
. $PSScriptRoot\Abstracts\FixControl\FixSubscriptionBase.ps1

. $PSScriptRoot\Abstracts\ListenerBase.ps1
. $PSScriptRoot\Abstracts\FileOutputBase.ps1

#Listeners
. $PSScriptRoot\Listeners\UserReports\WriteFolderPath.ps1
(Get-ChildItem -Path "$PSScriptRoot\Listeners\UserReports" -Recurse -File -Include "*.ps1" -Exclude "WriteFolderPath.ps1") |
    ForEach-Object {
    . $_.FullName
}

. $PSScriptRoot\Listeners\RemoteReports\TelemetryStrings.ps1
. $PSScriptRoot\Helpers\RemoteReportHelper.ps1
. $PSScriptRoot\Helpers\AppInsightsHelper.ps1

. $PSScriptRoot\Listeners\RemoteReports\RemoteReportsListner.ps1
. $PSScriptRoot\Listeners\RemoteReports\ControlTelemetry.ps1
. $PSScriptRoot\Listeners\RemoteReports\UsageTelemetry.ps1
. $PSScriptRoot\Listeners\OMS\OMSOutput.ps1
. $PSScriptRoot\Listeners\FixControl\WriteFixControlFiles.ps1
. $PSScriptRoot\Listeners\EventHub\EventHubOutput.ps1
. $PSScriptRoot\Listeners\Webhook\WebhookOutput.ps1
. $PSScriptRoot\Listeners\CA\WriteCAStatus.ps1
. $PSScriptRoot\Listeners\ListenerHelper.ps1

#Remaining Abstracts
. $PSScriptRoot\Core\SVT\SVTControlAttestation.ps1
. $PSScriptRoot\Abstracts\CommandBase.ps1
. $PSScriptRoot\Abstracts\SVTCommandBase.ps1

#Core

. $PSScriptRoot\Core\SVT\SVTIaasBase.ps1
(Get-ChildItem -Path "$PSScriptRoot\Core\SVT\Services\" -Recurse -File) |
    ForEach-Object {
    . $_.FullName
}
(Get-ChildItem -Path "$PSScriptRoot\Core\SubscriptionSecurity\" -Recurse -File) |
    ForEach-Object {
    . $_.FullName
}

. $PSScriptRoot\Core\FixControl\FixControlConfigResolver.ps1
. $PSScriptRoot\Core\FixControl\ControlSecurityFixes.ps1

. $PSScriptRoot\Core\AzureMonitoring\OMSMonitoring.ps1
. $PSScriptRoot\Core\SVT\SubscriptionCore\SubscriptionCore.ps1
. $PSScriptRoot\Core\SVT\SVTResourceResolver.ps1
. $PSScriptRoot\Core\SVT\ServicesSecurityStatus.ps1
. $PSScriptRoot\Core\SVT\SubscriptionSecurityStatus.ps1
. $PSScriptRoot\Core\SVT\SVTStatusReport.ps1
. $PSScriptRoot\Core\ContinuousCompliance\CCAutomation.ps1