Skip to content

Move some functions, modernize and support POST and GET #1313

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 41 commits into from
Feb 24, 2025
Merged
Show file tree
Hide file tree
Changes from 40 commits
Commits
Show all changes
41 commits
Select commit Hold shift + click to select a range
65354e8
Change to POST
kris6673 Feb 17, 2025
3bde938
Refactor Set-CIPPMailboxType function to use consistent parameter cas…
kris6673 Feb 17, 2025
cb477ee
Change to POST
kris6673 Feb 17, 2025
fa94d4b
Implement and replace mailbox conversions with Invoke-ExecConvertMailbox
kris6673 Feb 17, 2025
e3ca0a0
Support POST and new messages
kris6673 Feb 17, 2025
23923ad
Change to POST and modernize
kris6673 Feb 17, 2025
70a6683
Fix casing for tenant filter and improve error logging in Invoke-List…
kris6673 Feb 17, 2025
0a61a45
Fix casing for Get-UnifiedGroup command and improve logging in Invoke…
kris6673 Feb 17, 2025
941b6be
Move some endpoints around
kris6673 Feb 17, 2025
dd4ac1e
Refactor Invoke-EditSpamFilter and Invoke-RemoveSpamfilter for improv…
kris6673 Feb 17, 2025
7b6b71c
Enhance Invoke-ExecRemoveMailboxRule and Remove-CIPPMailboxRule for i…
kris6673 Feb 17, 2025
4b28940
Fix casing and improve comments in Invoke-ExecSendPush function for c…
kris6673 Feb 17, 2025
bf96766
Refactor Invoke-ExecEnableArchive for improved error handling and par…
kris6673 Feb 17, 2025
735d61a
Refactor Invoke-ExecDisableUser and Set-CIPPSignInState for improved …
kris6673 Feb 17, 2025
6a3f4b8
Refactor Invoke-ExecResetPass for improved parameter handling, error …
kris6673 Feb 17, 2025
ea8e734
Refactor Invoke-ExecRevokeSessions and Revoke-CIPPSessions for improv…
kris6673 Feb 17, 2025
31bc097
Refactor Invoke-RemoveUser for improved parameter handling, logging, …
kris6673 Feb 17, 2025
f1e7549
Modernize and support POST
kris6673 Feb 19, 2025
0b19f8a
Modernize
kris6673 Feb 19, 2025
7562863
Refactor Invoke-RemoveConnectionfilterTemplate for improved parameter…
kris6673 Feb 19, 2025
ad8b04f
Modernize
kris6673 Feb 19, 2025
f366798
Small bit of cleanup
kris6673 Feb 19, 2025
abfd081
Modernizations and support POST
kris6673 Feb 20, 2025
6c2ff6f
Remove unused comment
kris6673 Feb 20, 2025
b513b19
Add listType property manually to make deletion possible without too …
kris6673 Feb 21, 2025
0df2009
Better logging message
kris6673 Feb 21, 2025
71b7002
Dont import stuff that isnt needed
kris6673 Feb 21, 2025
4e3524c
add forgotten logging
kris6673 Feb 21, 2025
b1e77ca
Modernize more endpoints
kris6673 Feb 21, 2025
096b65d
Fix SP site admin permission changes
kris6673 Feb 22, 2025
d55cd03
Refactor API logging and parameter handling for consistency
kris6673 Feb 22, 2025
ff41a68
remove unused endpoint
kris6673 Feb 22, 2025
d26e457
Refactor tenant filter handling and improve logging consistency acros…
kris6673 Feb 22, 2025
ca9a658
Various modernizations and GET to POST refactoring
kris6673 Feb 23, 2025
0d81d82
Refactor API functions to improve parameter handling and logging cons…
kris6673 Feb 23, 2025
12d7e71
Refactor API functions to enhance parameter handling and improve logg…
kris6673 Feb 23, 2025
83e55d4
Refactor email filter functions to improve parameter handling and log…
kris6673 Feb 23, 2025
fef5710
typo
kris6673 Feb 23, 2025
e246aac
Refactor API functions to improve header handling, error messaging, a…
kris6673 Feb 23, 2025
ea27a05
Refactor API functions to enhance parameter handling, logging consist…
kris6673 Feb 23, 2025
6bd7c23
fix dumb
kris6673 Feb 24, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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 @@ -12,17 +12,15 @@ Function Invoke-ExecCPVPermissions {

$APIName = $Request.Params.CIPPEndpoint
Write-LogMessage -headers $Request.Headers -API $APINAME -message 'Accessed this API' -Sev 'Debug'
$TenantFilter = $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