Skip to content

Commit fb5e411

Browse files
authored
Merge pull request #1328 from kris6673/endpoints-again
Modernize a little bit again and reorganize endpoints again
2 parents 0b08f61 + 89ac106 commit fb5e411

File tree

125 files changed

+768
-725
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

125 files changed

+768
-725
lines changed

Modules/CIPPCore/Public/Entrypoints/HTTP Functions/CIPP/Core/Invoke-ExecAddAlert.ps1

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,10 @@ Function Invoke-ExecAddAlert {
1010
[CmdletBinding()]
1111
param($Request, $TriggerMetadata)
1212

13+
$APIName = $Request.Params.CIPPEndpoint
14+
$Headers = $Request.Headers
15+
Write-LogMessage -headers $Headers -API $APIName -message 'Accessed this API' -Sev 'Debug'
16+
1317
$Severity = 'Alert'
1418

1519
$Result = if ($Request.Body.sendEmailNow -or $Request.Body.sendWebhookNow -eq $true -or $Request.Body.writeLog -eq $true) {
@@ -35,11 +39,11 @@ Function Invoke-ExecAddAlert {
3539
Send-CIPPAlert @CIPPAlert
3640
}
3741
if ($Request.Body.writeLog) {
38-
Write-LogMessage -headers $Request.Headers -API 'Alerts' -message $Request.Body.text -Sev $Severity
42+
Write-LogMessage -headers $Headers -API 'Alerts' -message $Request.Body.text -Sev $Severity
3943
'Successfully generated alert.'
4044
}
4145
} else {
42-
Write-LogMessage -headers $Request.Headers -API 'Alerts' -message $Request.Body.text -Sev $Severity
46+
Write-LogMessage -headers $Headers -API 'Alerts' -message $Request.Body.text -Sev $Severity
4347
'Successfully generated alert.'
4448
}
4549
Push-OutputBinding -Name Response -Value ([HttpResponseContext]@{

Modules/CIPPCore/Public/Entrypoints/HTTP Functions/CIPP/Core/Invoke-ExecAzBobbyTables.ps1

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,10 @@ function Invoke-ExecAzBobbyTables {
1313
[CmdletBinding()]
1414
param($Request, $TriggerMetadata)
1515

16+
$APIName = $Request.Params.CIPPEndpoint
17+
$Headers = $Request.Headers
18+
Write-LogMessage -headers $Headers -API $APIName -message 'Accessed this API' -Sev 'Debug'
19+
1620
$AllowList = @(
1721
'Add-AzDataTableEntity'
1822
'Update-AzDataTableEntity'

Modules/CIPPCore/Public/Entrypoints/HTTP Functions/CIPP/Core/Invoke-ExecCPVRefresh.ps1

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,11 @@ function Invoke-ExecCPVRefresh {
1010
CIPP.Core.ReadWrite
1111
#>
1212
[CmdletBinding()]
13-
param(
14-
$Request,
15-
$TriggerMetadata
16-
)
13+
param($Request, $TriggerMetadata)
14+
15+
$APIName = $Request.Params.CIPPEndpoint
16+
$Headers = $Request.Headers
17+
Write-LogMessage -headers $Headers -API $APIName -message 'Accessed this API' -Sev 'Debug'
1718

1819
$InstanceId = Start-UpdatePermissionsOrchestrator
1920

Modules/CIPPCore/Public/Entrypoints/HTTP Functions/CIPP/Core/Invoke-ExecCippFunction.ps1

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,10 @@ function Invoke-ExecCippFunction {
1212
[CmdletBinding()]
1313
param($Request, $TriggerMetadata)
1414

15+
$APIName = $Request.Params.CIPPEndpoint
16+
$Headers = $Request.Headers
17+
Write-LogMessage -headers $Headers -API $APIName -message 'Accessed this API' -Sev 'Debug'
18+
1519
$BlockList = @(
1620
'Get-GraphToken'
1721
'Get-GraphTokenFromCert'
@@ -45,4 +49,4 @@ function Invoke-ExecCippFunction {
4549
StatusCode = $StatusCode
4650
Body = $Results
4751
})
48-
}
52+
}

Modules/CIPPCore/Public/Entrypoints/HTTP Functions/CIPP/Core/Invoke-ExecDurableFunctions.ps1

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,9 @@ function Invoke-ExecDurableFunctions {
88
[CmdletBinding(SupportsShouldProcess = $true)]
99
param($Request, $TriggerMetadata)
1010

11-
$APIName = 'ExecDurableStats'
12-
Write-LogMessage -headers $Request.Headers -API $APINAME -message 'Accessed this API' -Sev 'Debug'
11+
$APIName = $Request.Params.CIPPEndpoint
12+
$Headers = $Request.Headers
13+
Write-LogMessage -headers $Headers -API $APIName -message 'Accessed this API' -Sev 'Debug'
1314

1415
# Collect info
1516
$StorageContext = New-AzStorageContext -ConnectionString $env:AzureWebJobsStorage

Modules/CIPPCore/Public/Entrypoints/HTTP Functions/CIPP/Core/Invoke-ExecEditTemplate.ps1

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,8 @@ Function Invoke-ExecEditTemplate {
1111
param($Request, $TriggerMetadata)
1212

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

1617
try {
1718
$Table = Get-CippTable -tablename 'templates'

Modules/CIPPCore/Public/Entrypoints/HTTP Functions/CIPP/Core/Invoke-ExecGeoIPLookup.ps1

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,9 @@ Function Invoke-ExecGeoIPLookup {
1111
param($Request, $TriggerMetadata)
1212

1313
$APIName = $Request.Params.CIPPEndpoint
14-
Write-LogMessage -headers $Request.Headers -API $APINAME -message 'Accessed this API' -Sev 'Debug'
14+
$Headers = $Request.Headers
15+
Write-LogMessage -headers $Headers -API $APIName -message 'Accessed this API' -Sev 'Debug'
16+
1517
$IP = $Request.Query.IP ?? $Request.Body.IP
1618

1719
if (-not $IP) {
Lines changed: 95 additions & 94 deletions
Original file line numberDiff line numberDiff line change
@@ -1,111 +1,112 @@
11
using namespace System.Net
22

33
Function Invoke-ExecGraphRequest {
4-
<#
4+
<#
55
.FUNCTIONALITY
66
Entrypoint
77
#>
8-
[CmdletBinding()]
9-
param($Request, $TriggerMetadata)
8+
[CmdletBinding()]
9+
param($Request, $TriggerMetadata)
1010

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

14-
Function ConvertTo-FlatObject {
15-
# https://evotec.xyz/powershell-converting-advanced-object-to-flat-object/ - MIT License
16-
[CmdletBinding()]
17-
Param (
18-
[Parameter(ValueFromPipeLine)][Object[]]$Objects,
19-
[String]$Separator = '.',
20-
[ValidateSet('', 0, 1)]$Base = 1,
21-
[int]$Depth = 5,
22-
[Parameter(DontShow)][String[]]$Path,
23-
[Parameter(DontShow)][System.Collections.IDictionary] $OutputObject
24-
)
25-
Begin {
26-
$InputObjects = [System.Collections.Generic.List[Object]]::new()
27-
}
28-
Process {
29-
foreach ($O in $Objects) {
30-
$InputObjects.Add($O)
15+
Function ConvertTo-FlatObject {
16+
# https://evotec.xyz/powershell-converting-advanced-object-to-flat-object/ - MIT License
17+
[CmdletBinding()]
18+
Param (
19+
[Parameter(ValueFromPipeLine)][Object[]]$Objects,
20+
[String]$Separator = '.',
21+
[ValidateSet('', 0, 1)]$Base = 1,
22+
[int]$Depth = 5,
23+
[Parameter(DontShow)][String[]]$Path,
24+
[Parameter(DontShow)][System.Collections.IDictionary] $OutputObject
25+
)
26+
Begin {
27+
$InputObjects = [System.Collections.Generic.List[Object]]::new()
28+
}
29+
Process {
30+
foreach ($O in $Objects) {
31+
$InputObjects.Add($O)
32+
}
33+
}
34+
End {
35+
If ($PSBoundParameters.ContainsKey('OutputObject')) {
36+
$Object = $InputObjects[0]
37+
$Iterate = [ordered] @{}
38+
if ($null -eq $Object) {
39+
#Write-Verbose -Message "ConvertTo-FlatObject - Object is null"
40+
} elseif ($Object.GetType().Name -in 'String', 'DateTime', 'TimeSpan', 'Version', 'Enum') {
41+
$Object = $Object.ToString()
42+
} elseif ($Depth) {
43+
$Depth--
44+
If ($Object -is [System.Collections.IDictionary]) {
45+
$Iterate = $Object
46+
} elseif ($Object -is [Array] -or $Object -is [System.Collections.IEnumerable]) {
47+
$i = $Base
48+
foreach ($Item in $Object.GetEnumerator()) {
49+
$Iterate["$i"] = $Item
50+
$i += 1
3151
}
32-
}
33-
End {
34-
If ($PSBoundParameters.ContainsKey('OutputObject')) {
35-
$Object = $InputObjects[0]
36-
$Iterate = [ordered] @{}
37-
if ($null -eq $Object) {
38-
#Write-Verbose -Message "ConvertTo-FlatObject - Object is null"
39-
} elseif ($Object.GetType().Name -in 'String', 'DateTime', 'TimeSpan', 'Version', 'Enum') {
40-
$Object = $Object.ToString()
41-
} elseif ($Depth) {
42-
$Depth--
43-
If ($Object -is [System.Collections.IDictionary]) {
44-
$Iterate = $Object
45-
} elseif ($Object -is [Array] -or $Object -is [System.Collections.IEnumerable]) {
46-
$i = $Base
47-
foreach ($Item in $Object.GetEnumerator()) {
48-
$Iterate["$i"] = $Item
49-
$i += 1
50-
}
51-
} else {
52-
foreach ($Prop in $Object.PSObject.Properties) {
53-
if ($Prop.IsGettable) {
54-
$Iterate["$($Prop.Name)"] = $Object.$($Prop.Name)
55-
}
56-
}
57-
}
58-
}
59-
If ($Iterate.Keys.Count) {
60-
foreach ($Key in $Iterate.Keys) {
61-
ConvertTo-FlatObject -Objects @(, $Iterate["$Key"]) -Separator $Separator -Base $Base -Depth $Depth -Path ($Path + $Key) -OutputObject $OutputObject
62-
}
63-
} else {
64-
$Property = $Path -Join $Separator
65-
$OutputObject[$Property] = $Object
66-
}
67-
} elseif ($InputObjects.Count -gt 0) {
68-
foreach ($ItemObject in $InputObjects) {
69-
$OutputObject = [ordered]@{}
70-
ConvertTo-FlatObject -Objects @(, $ItemObject) -Separator $Separator -Base $Base -Depth $Depth -Path $Path -OutputObject $OutputObject
71-
[PSCustomObject] $OutputObject
72-
}
52+
} else {
53+
foreach ($Prop in $Object.PSObject.Properties) {
54+
if ($Prop.IsGettable) {
55+
$Iterate["$($Prop.Name)"] = $Object.$($Prop.Name)
56+
}
7357
}
58+
}
7459
}
75-
}
76-
$TenantFilter = $Request.Query.TenantFilter
77-
try {
78-
if ($TenantFilter -ne 'AllTenants') {
79-
$RawGraphRequest = New-GraphGetRequest -uri "https://graph.microsoft.com/beta/$($Request.Query.Endpoint)" -tenantid $TenantFilter -NoPagination [boolean]$Request.query.DisablePagination -ComplexFilter
60+
If ($Iterate.Keys.Count) {
61+
foreach ($Key in $Iterate.Keys) {
62+
ConvertTo-FlatObject -Objects @(, $Iterate["$Key"]) -Separator $Separator -Base $Base -Depth $Depth -Path ($Path + $Key) -OutputObject $OutputObject
63+
}
8064
} else {
81-
$RawGraphRequest = Get-Tenants | ForEach-Object -Parallel {
82-
Import-Module '.\Modules\AzBobbyTables'
83-
Import-Module '.\Modules\CIPPCore'
84-
try {
85-
$DefaultDomainName = $_.defaultDomainName
86-
$TenantName = $_.displayName
87-
New-GraphGetRequest -uri "https://graph.microsoft.com/beta/$($using:Request.Query.Endpoint)" -tenantid $DefaultDomainName -NoPagination [boolean]$using:Request.query.DisablePagination -ComplexFilter | Select-Object @{
88-
label = 'Tenant'
89-
expression = { $TenantName }
90-
}, *
91-
} catch {
92-
continue
93-
}
94-
}
95-
65+
$Property = $Path -Join $Separator
66+
$OutputObject[$Property] = $Object
67+
}
68+
} elseif ($InputObjects.Count -gt 0) {
69+
foreach ($ItemObject in $InputObjects) {
70+
$OutputObject = [ordered]@{}
71+
ConvertTo-FlatObject -Objects @(, $ItemObject) -Separator $Separator -Base $Base -Depth $Depth -Path $Path -OutputObject $OutputObject
72+
[PSCustomObject] $OutputObject
9673
}
97-
$GraphRequest = $RawGraphRequest | Where-Object -Property '@odata.context' -EQ $null | ConvertTo-FlatObject
98-
$StatusCode = [HttpStatusCode]::OK
99-
} catch {
100-
$ErrorMessage = Get-NormalizedError -Message $_.Exception.Message
101-
$StatusCode = [HttpStatusCode]::Forbidden
102-
$GraphRequest = $ErrorMessage
74+
}
75+
}
76+
}
77+
$TenantFilter = $Request.Query.TenantFilter
78+
try {
79+
if ($TenantFilter -ne 'AllTenants') {
80+
$RawGraphRequest = New-GraphGetRequest -uri "https://graph.microsoft.com/beta/$($Request.Query.Endpoint)" -tenantid $TenantFilter -NoPagination [boolean]$Request.query.DisablePagination -ComplexFilter
81+
} else {
82+
$RawGraphRequest = Get-Tenants | ForEach-Object -Parallel {
83+
Import-Module '.\Modules\AzBobbyTables'
84+
Import-Module '.\Modules\CIPPCore'
85+
try {
86+
$DefaultDomainName = $_.defaultDomainName
87+
$TenantName = $_.displayName
88+
New-GraphGetRequest -uri "https://graph.microsoft.com/beta/$($using:Request.Query.Endpoint)" -tenantid $DefaultDomainName -NoPagination [boolean]$using:Request.query.DisablePagination -ComplexFilter | Select-Object @{
89+
label = 'Tenant'
90+
expression = { $TenantName }
91+
}, *
92+
} catch {
93+
continue
94+
}
95+
}
96+
10397
}
98+
$GraphRequest = $RawGraphRequest | Where-Object -Property '@odata.context' -EQ $null | ConvertTo-FlatObject
99+
$StatusCode = [HttpStatusCode]::OK
100+
} catch {
101+
$ErrorMessage = Get-NormalizedError -Message $_.Exception.Message
102+
$StatusCode = [HttpStatusCode]::Forbidden
103+
$GraphRequest = $ErrorMessage
104+
}
104105

105-
# Associate values to output bindings by calling 'Push-OutputBinding'.
106-
Push-OutputBinding -Name Response -Value ([HttpResponseContext]@{
107-
StatusCode = $StatusCode
108-
Body = @($GraphRequest)
109-
})
106+
# Associate values to output bindings by calling 'Push-OutputBinding'.
107+
Push-OutputBinding -Name Response -Value ([HttpResponseContext]@{
108+
StatusCode = $StatusCode
109+
Body = @($GraphRequest)
110+
})
110111

111112
}

Modules/CIPPCore/Public/Entrypoints/HTTP Functions/CIPP/Core/Invoke-ExecPartnerWebhook.ps1

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,10 @@ function Invoke-ExecPartnerWebhook {
77
#>
88
Param($Request, $TriggerMetadata)
99

10+
$APIName = $Request.Params.CIPPEndpoint
11+
$Headers = $Request.Headers
12+
Write-LogMessage -headers $Headers -API $APIName -message 'Accessed this API' -Sev 'Debug'
13+
1014
switch ($Request.Query.Action) {
1115
'ListEventTypes' {
1216
$Uri = 'https://api.partnercenter.microsoft.com/webhooks/v1/registration/events'
@@ -42,7 +46,7 @@ function Invoke-ExecPartnerWebhook {
4246
PartnerCenter = $true
4347
BaseURL = $BaseURL
4448
EventType = $Request.Body.EventType
45-
Headers = $Request.Headers.'x-ms-client-principal'
49+
Headers = $Request.Headers.'x-ms-client-principal'
4650
}
4751

4852
$Results = New-CIPPGraphSubscription @Webhook

Modules/CIPPCore/Public/Entrypoints/HTTP Functions/CIPP/Core/Invoke-ExecServicePrincipals.ps1

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,10 @@ function Invoke-ExecServicePrincipals {
88
[CmdletBinding()]
99
param($Request, $TriggerMetadata)
1010

11+
$APIName = $Request.Params.CIPPEndpoint
12+
$Headers = $Request.Headers
13+
Write-LogMessage -headers $Headers -API $APIName -message 'Accessed this API' -Sev 'Debug'
14+
1115
$TenantFilter = $env:TenantID
1216

1317
$Success = $true

0 commit comments

Comments
 (0)