Skip to content

Commit

Permalink
Merge pull request #1313 from kris6673/endpoints
Browse files Browse the repository at this point in the history
Move some functions, modernize and support POST and GET
  • Loading branch information
JohnDuprey authored Feb 24, 2025
2 parents ce0fdd4 + 6bd7c23 commit cd3394a
Show file tree
Hide file tree
Showing 126 changed files with 1,116 additions and 1,090 deletions.
3 changes: 0 additions & 3 deletions Modules/CIPPCore/Public/CippQueue/Invoke-ListCippQueue.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,6 @@ function Invoke-ListCippQueue {
if ($Request) {
$APIName = $Request.Params.CIPPEndpoint
Write-LogMessage -headers $Request.Headers -API $APINAME -message 'Accessed this API' -Sev 'Debug'

# Write to the Azure Functions log stream.
Write-Host 'PowerShell HTTP trigger function processed a request.'
}

$CippQueue = Get-CippTable -TableName 'CippQueue'
Expand Down
3 changes: 0 additions & 3 deletions Modules/CIPPCore/Public/CippQueue/Invoke-RemoveCippQueue.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,6 @@ function Invoke-RemoveCippQueue {
$APIName = $Request.Params.CIPPEndpoint
Write-LogMessage -headers $Request.Headers -API $APINAME -message 'Accessed this API' -Sev 'Debug'

# Write to the Azure Functions log stream.
Write-Host 'PowerShell HTTP trigger function processed a request.'

$CippQueue = Get-CippTable -TableName 'CippQueue'
Clear-AzDataTable @CippQueue
$CippQueueTasks = Get-CippTable -TableName 'CippQueueTasks'
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,23 +10,32 @@ Function Invoke-ExecListBackup {
[CmdletBinding()]
param($Request, $TriggerMetadata)

$APIName = $Request.Params.CIPPEndpoint
$Headers = $Request.Headers
Write-LogMessage -headers $Headers -API $APIName -message 'Accessed this API' -Sev 'Debug'

$Type = $Request.Query.Type
$TenantFilter = $Request.Query.tenantFilter
$NameOnly = $Request.Query.NameOnly
$BackupName = $Request.Query.BackupName

$CippBackupParams = @{}
if ($Request.Query.Type) {
$CippBackupParams.Type = $Request.Query.Type
if ($Type) {
$CippBackupParams.Type = $Type
}
if ($Request.Query.TenantFilter) {
$CippBackupParams.TenantFilter = $Request.Query.TenantFilter
if ($TenantFilter) {
$CippBackupParams.TenantFilter = $TenantFilter
}
if ($Request.Query.NameOnly) {
if ($NameOnly) {
$CippBackupParams.NameOnly = $true
}
if ($Request.Query.BackupName) {
$CippBackupParams.Name = $Request.Query.BackupName
if ($BackupName) {
$CippBackupParams.Name = $BackupName
}

$Result = Get-CIPPBackup @CippBackupParams

if ($request.Query.NameOnly) {
if ($NameOnly) {
$Result = $Result | Select-Object @{Name = 'BackupName'; exp = { $_.RowKey } }, Timestamp | Sort-Object Timestamp -Descending
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,10 +13,9 @@ Function Invoke-GetVersion {
$APIName = $Request.Params.CIPPEndpoint
Write-LogMessage -headers $Request.Headers -API $APINAME -message 'Accessed this API' -Sev 'Debug'

$CIPPVersion = $request.query.localversion
$CIPPVersion = $request.query.LocalVersion

$Version = Assert-CippVersion -CIPPVersion $CIPPVersion
# Write to the Azure Functions log stream.

# Associate values to output bindings by calling 'Push-OutputBinding'.
Push-OutputBinding -Name Response -Value ([HttpResponseContext]@{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ function Invoke-ListApiTest {
[CmdletBinding()]
param($Request, $TriggerMetadata)

# Associate values to output bindings by calling 'Push-OutputBinding'.
Push-OutputBinding -Name Response -Value ([HttpResponseContext]@{
StatusCode = [HttpStatusCode]::OK
Body = ($Request | ConvertTo-Json -Depth 5)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ Function invoke-ListEmptyResults {
param($Request, $TriggerMetadata)


# Associate values to output bindings by calling 'Push-OutputBinding'.
Push-OutputBinding -Name Response -Value ([HttpResponseContext]@{
StatusCode = [HttpStatusCode]::OK
Body = @()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,35 +10,42 @@ Function Invoke-ListScheduledItems {
[CmdletBinding()]
param($Request, $TriggerMetadata)

# Write to the Azure Functions log stream.
Write-Host 'PowerShell HTTP trigger function processed a request.'
$APIName = $Request.Params.CIPPEndpoint
$Headers = $Request.Headers
Write-LogMessage -headers $Headers -API $APIName -message 'Accessed this API' -Sev 'Debug'


# Interact with query parameters or the body of the request.
$ShowHidden = $Request.Query.ShowHidden ?? $Request.Body.ShowHidden
$Name = $Request.Query.Name ?? $Request.Body.Name
$Type = $Request.Query.Type ?? $Request.Body.Type

$ScheduledItemFilter = [System.Collections.Generic.List[string]]::new()
$ScheduledItemFilter.Add("PartitionKey eq 'ScheduledTask'")

if ($Request.Query.ShowHidden) {
if ($ShowHidden -eq $true) {
$ScheduledItemFilter.Add('Hidden eq true')
} else {
$ScheduledItemFilter.Add('Hidden eq false')
}

if ($Request.Query.Name) {
$ScheduledItemFilter.Add("Name eq '$($Request.Query.Name)'")
if ($Name -eq $true) {
$ScheduledItemFilter.Add("Name eq '$($Name)'")
}

$Filter = $ScheduledItemFilter -join ' and '

Write-Host "Filter: $Filter"
$Table = Get-CIPPTable -TableName 'ScheduledTasks'
if ($Request.Query.Showhidden -eq $true) {
if ($ShowHidden -eq $true) {
$HiddenTasks = $false
} else {
$HiddenTasks = $true
}
$Tasks = Get-CIPPAzDataTableEntity @Table -Filter $Filter | Where-Object { $_.Hidden -ne $HiddenTasks }
if ($Request.Query.Type) {
$tasks.Command
$Tasks = $Tasks | Where-Object { $_.command -eq $Request.Query.Type }
if ($Type) {
$Tasks.Command
$Tasks = $Tasks | Where-Object { $_.command -eq $Type }
}

$AllowedTenants = Test-CIPPAccess -Request $Request -TenantList
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,18 +11,17 @@ Function Invoke-ExecCPVPermissions {
param($Request, $TriggerMetadata)

$APIName = $Request.Params.CIPPEndpoint
Write-LogMessage -headers $Request.Headers -API $APINAME -message 'Accessed this API' -Sev 'Debug'
$Headers = $Request.Headers
Write-LogMessage -headers $Headers -API $APIName -message 'Accessed this API' -Sev 'Debug'
$TenantFilter = $Request.Body.tenantFilter

# Write to the Azure Functions log stream.
Write-Host 'PowerShell HTTP trigger function processed a request.'
$Tenant = Get-Tenants -IncludeAll | Where-Object -Property customerId -EQ $Request.Body.TenantFilter | Select-Object -First 1
$Tenant = Get-Tenants -IncludeAll | Where-Object -Property customerId -EQ $TenantFilter | Select-Object -First 1

if ($Tenant) {
Write-Host "Our tenant is $($Tenant.displayName) - $($Tenant.defaultDomainName)"

$TenantFilter = $Request.Body.TenantFilter
$CPVConsentParams = @{
TenantFilter = $Request.Body.TenantFilter
TenantFilter = $TenantFilter
}
if ($Request.Query.ResetSP -eq 'true') {
$CPVConsentParams.ResetSP = $true
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,24 +9,24 @@ function Invoke-EditAntiPhishingFilter {
param($Request, $TriggerMetadata)

$APIName = $Request.Params.CIPPEndpoint
Write-LogMessage -headers $Request.Headers -API $APINAME -message 'Accessed this API' -Sev 'Debug'

# Write to the Azure Functions log stream.
Write-Host 'PowerShell HTTP trigger function processed a request.'
$Headers = $Request.Headers
Write-LogMessage -headers $Headers -API $APINAME -message 'Accessed this API' -Sev 'Debug'

# Interact with query parameters or the body of the request.
$TenantFilter = $Request.Query.TenantFilter
$TenantFilter = $Request.Query.tenantFilter ?? $Request.Body.tenantFilter
$RuleName = $Request.Query.RuleName ?? $Request.Body.RuleName
$State = $Request.Query.State ?? $Request.Body.State

try {
$ExoRequestParam = @{
tenantid = $TenantFilter
cmdParams = @{
Identity = $Request.query.RuleName
tenantid = $TenantFilter
cmdParams = @{
Identity = $RuleName
}
useSystemmailbox = $true
useSystemMailbox = $true
}

switch ($Request.query.State) {
switch ($State) {
'Enable' {
$ExoRequestParam.Add('cmdlet', 'Enable-AntiPhishRule')
}
Expand All @@ -37,19 +37,21 @@ function Invoke-EditAntiPhishingFilter {
throw 'Invalid state'
}
}
New-ExoRequest @ExoRequestParam
$null = New-ExoRequest @ExoRequestParam

$Result = "Sucessfully set Anti-Phishing rule $($Request.query.RuleName) to $($Request.query.State)"
Write-LogMessage -headers $Request.Headers -API $APINAME -tenant $TenantFilter -message $Result -Sev Info
$Result = "Successfully set Anti-Phishing rule $RuleName to $State"
Write-LogMessage -headers $Headers -API $APINAME -tenant $TenantFilter -message $Result -Sev Info
$StatusCode = [HttpStatusCode]::OK
} catch {
$ErrorMessage = Get-NormalizedError -Message $_.Exception.Message
$Result = "Failed setting Anti-Phishing rule $($Request.query.RuleName) to $($request.query.State). Error: $ErrorMessage"
Write-LogMessage -headers $Request.Headers -API $APINAME -tenant $TenantFilter -message $Result -Sev 'Error'
$ErrorMessage = Get-CippException -Exception $_
$Result = "Failed setting Anti-Phishing rule $RuleName to $State. Error: $($ErrorMessage.NormalizedError)"
Write-LogMessage -headers $Headers -API $APINAME -tenant $TenantFilter -message $Result -Sev 'Error' -LogData $ErrorMessage
$StatusCode = [HttpStatusCode]::InternalServerError
}

# Associate values to output bindings by calling 'Push-OutputBinding'.
Push-OutputBinding -Name Response -Value ([HttpResponseContext]@{
StatusCode = [HttpStatusCode]::OK
StatusCode = $StatusCode
Body = @{Results = $Result }
})
})
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,24 +9,24 @@ function Invoke-EditMalwareFilter {
param($Request, $TriggerMetadata)

$APIName = $Request.Params.CIPPEndpoint
Write-LogMessage -headers $Request.Headers -API $APINAME -message 'Accessed this API' -Sev 'Debug'

# Write to the Azure Functions log stream.
Write-Host 'PowerShell HTTP trigger function processed a request.'
$Headers = $Request.Headers
Write-LogMessage -headers $Headers -API $APINAME -message 'Accessed this API' -Sev 'Debug'

# Interact with query parameters or the body of the request.
$TenantFilter = $Request.Query.TenantFilter
$TenantFilter = $Request.Query.tenantFilter ?? $Request.Body.tenantFilter
$RuleName = $Request.Query.RuleName ?? $Request.Body.RuleName
$State = $Request.Query.State ?? $Request.Body.State

try {
$ExoRequestParam = @{
tenantid = $TenantFilter
cmdParams = @{
Identity = $Request.query.RuleName
tenantid = $TenantFilter
cmdParams = @{
Identity = $RuleName
}
useSystemmailbox = $true
useSystemMailbox = $true
}

switch ($Request.query.State) {
switch ($State) {
'Enable' {
$ExoRequestParam.Add('cmdlet', 'Enable-MalwareFilterRule')
}
Expand All @@ -37,19 +37,21 @@ function Invoke-EditMalwareFilter {
throw 'Invalid state'
}
}
New-ExoRequest @ExoRequestParam
$null = New-ExoRequest @ExoRequestParam

$Result = "Sucessfully set Malware Filter rule $($Request.query.RuleName) to $($Request.query.State)"
Write-LogMessage -headers $Request.Headers -API $APINAME -tenant $TenantFilter -message $Result -Sev Info
$Result = "Successfully set Malware Filter rule $($RuleName) to $($State)"
Write-LogMessage -headers $Headers -API $APIName -tenant $TenantFilter -message $Result -Sev Info
$StatusCode = [HttpStatusCode]::OK
} catch {
$ErrorMessage = Get-NormalizedError -Message $_.Exception.Message
$Result = "Failed setting Malware Filter rule $($Request.query.RuleName) to $($request.query.State). Error: $ErrorMessage"
Write-LogMessage -headers $Request.Headers -API $APINAME -tenant $TenantFilter -message $Result -Sev 'Error'
$ErrorMessage = Get-CippException -Exception $_
$Result = "Failed setting Malware Filter rule $($RuleName) to $($State). Error: $($ErrorMessage.NormalizedError)"
Write-LogMessage -headers $Headers -API $APIName -tenant $TenantFilter -message $Result -Sev 'Error' -LogData $ErrorMessage
$StatusCode = [HttpStatusCode]::InternalServerError
}

# Associate values to output bindings by calling 'Push-OutputBinding'.
Push-OutputBinding -Name Response -Value ([HttpResponseContext]@{
StatusCode = [HttpStatusCode]::OK
StatusCode = $StatusCode
Body = @{Results = $Result }
})
})
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,24 +9,24 @@ function Invoke-EditSafeAttachmentsFilter {
param($Request, $TriggerMetadata)

$APIName = $Request.Params.CIPPEndpoint
Write-LogMessage -headers $Request.Headers -API $APINAME -message 'Accessed this API' -Sev 'Debug'

# Write to the Azure Functions log stream.
Write-Host 'PowerShell HTTP trigger function processed a request.'
$Headers = $Request.Headers
Write-LogMessage -headers $Headers -API $APIName -message 'Accessed this API' -Sev 'Debug'

# Interact with query parameters or the body of the request.
$TenantFilter = $Request.Query.TenantFilter
$TenantFilter = $Request.Query.tenantFilter ?? $Request.Body.tenantFilter
$RuleName = $Request.Query.RuleName ?? $Request.Body.RuleName
$State = $Request.Query.State ?? $Request.Body.State

try {
$ExoRequestParam = @{
tenantid = $TenantFilter
cmdParams = @{
Identity = $Request.query.RuleName
tenantid = $TenantFilter
cmdParams = @{
Identity = $RuleName
}
useSystemmailbox = $true
useSystemMailbox = $true
}

switch ($Request.query.State) {
switch ($State) {
'Enable' {
$ExoRequestParam.Add('cmdlet', 'Enable-SafeAttachmentRule')
}
Expand All @@ -37,19 +37,21 @@ function Invoke-EditSafeAttachmentsFilter {
throw 'Invalid state'
}
}
New-ExoRequest @ExoRequestParam
$null = New-ExoRequest @ExoRequestParam

$Result = "Sucessfully set SafeAttachment rule $($Request.query.RuleName) to $($Request.query.State)"
Write-LogMessage -headers $Request.Headers -API $APINAME -tenant $TenantFilter -message $Result -Sev Info
$Result = "Successfully set SafeAttachment rule $($RuleName) to $($State)"
Write-LogMessage -headers $Headers -API $APIName -tenant $TenantFilter -message $Result -Sev 'Info'
$StatusCode = [HttpStatusCode]::OK
} catch {
$ErrorMessage = Get-NormalizedError -Message $_.Exception.Message
$Result = "Failed setting SafeAttachment rule $($Request.query.RuleName) to $($request.query.State). Error: $ErrorMessage"
Write-LogMessage -headers $Request.Headers -API $APINAME -tenant $TenantFilter -message $Result -Sev 'Error'
$ErrorMessage = Get-CippException -Exception $_
$Result = "Failed setting SafeAttachment rule $($RuleName) to $($State). Error: $($ErrorMessage.NormalizedError)"
Write-LogMessage -headers $Headers -API $APIName -tenant $TenantFilter -message $Result -Sev 'Error' -LogData $ErrorMessage
$StatusCode = [HttpStatusCode]::InternalServerError
}

# Associate values to output bindings by calling 'Push-OutputBinding'.
Push-OutputBinding -Name Response -Value ([HttpResponseContext]@{
StatusCode = [HttpStatusCode]::OK
StatusCode = $StatusCode
Body = @{Results = $Result }
})
})
}
Loading

0 comments on commit cd3394a

Please sign in to comment.