Skip to content

Commit

Permalink
Merge branch 'KelvinTegelaar:master' into master
Browse files Browse the repository at this point in the history
  • Loading branch information
psreekumarinfx committed Jul 11, 2024
2 parents 893a087 + eb1c02a commit c760ba5
Show file tree
Hide file tree
Showing 14 changed files with 238 additions and 175 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,8 @@ function Get-CIPPAlertDepTokenExpiry {
$DepTokens = (New-GraphGetRequest -uri 'https://graph.microsoft.com/beta/deviceManagement/depOnboardingSettings' -tenantid $TenantFilter).value
$AlertData = foreach ($Dep in $DepTokens) {
if ($Dep.tokenExpirationDateTime -lt (Get-Date).AddDays(30) -and $Dep.tokenExpirationDateTime -gt (Get-Date).AddDays(-7)) {
'Apple Device Enrollment Program token expiring on {0}' -f $Dep.tokenExpirationDateTime
$Message = 'Apple Device Enrollment Program token expiring on {0}' -f $Dep.tokenExpirationDateTime
$Dep | Select-Object -Property tokenName, @{Name = 'Message'; Expression = { $Message } }
}
}
Write-AlertTrace -cmdletName $MyInvocation.MyCommand -tenantFilter $TenantFilter -data $AlertData
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,12 @@ function Get-CIPPAlertVppTokenExpiry {
$VppTokens = (New-GraphGetRequest -uri 'https://graph.microsoft.com/beta/deviceAppManagement/vppTokens' -tenantid $TenantFilter).value
$AlertData = foreach ($Vpp in $VppTokens) {
if ($Vpp.state -ne 'valid') {
'Apple Volume Purchase Program Token is not valid, new token required'
$Message = 'Apple Volume Purchase Program Token is not valid, new token required'
$Vpp | Select-Object -Property organizationName, appleId, vppTokenAccountType, @{Name = 'Message'; Expression = { $Message } }
}
if ($Vpp.expirationDateTime -lt (Get-Date).AddDays(30) -and $Vpp.expirationDateTime -gt (Get-Date).AddDays(-7)) {
'Apple Volume Purchase Program token expiring on {0}' -f $Vpp.expirationDateTime
$Message = 'Apple Volume Purchase Program token expiring on {0}' -f $Vpp.expirationDateTime
$Vpp | Select-Object -Property organizationName, appleId, vppTokenAccountType, @{Name = 'Message'; Expression = { $Message } }
}
}
Write-AlertTrace -cmdletName $MyInvocation.MyCommand -tenantFilter $TenantFilter -data $AlertData
Expand All @@ -28,4 +30,4 @@ function Get-CIPPAlertVppTokenExpiry {
} catch {
# Error handling
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -49,8 +49,11 @@ Function Invoke-ExecExtensionTest {
'Hudu' {
Connect-HuduAPI -configuration $Configuration.Hudu
$Version = Get-HuduAppInfo
Write-Host ($Version | ConvertTo-Json)
$Results = [pscustomobject]@{'Results' = ('Successfully Connected to Hudu, version: {0}' -f $Version.version) }
if ($Version.version) {
$Results = [pscustomobject]@{'Results' = ('Successfully Connected to Hudu, version: {0}' -f $Version.version) }
} else {
$Results = [pscustomobject]@{'Results' = 'Failed to connect to Hudu' }
}
}
}
} catch {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,11 @@ Function Invoke-ExecExtensionsConfig {
$null = Set-AzKeyVaultSecret -VaultName $ENV:WEBSITE_DEPLOYMENT_ID -Name $APIKey -SecretValue (ConvertTo-SecureString -AsPlainText -Force -String $Request.Body.$APIKey.APIKey)
}
}
$Request.Body.$APIKey.APIKey = 'SentToKeyVault'
if ($Request.Body.$APIKey.PSObject.Properties -notcontains 'APIKey') {
$Request.Body.$APIKey | Add-Member -MemberType NoteProperty -Name APIKey -Value 'SentToKeyVault' -PassThru
} else {
$Request.Body.$APIKey.APIKey = 'SentToKeyVault'
}
}
$Request.Body.$APIKey = $Request.Body.$APIKey | Select-Object * -ExcludeProperty ResetPassword
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
using namespace System.Net

Function Invoke-ListExtensionSync {
<#
.FUNCTIONALITY
Entrypoint
.ROLE
CIPP.Extension.Read
#>
[CmdletBinding()]
param($Request, $TriggerMetadata)

$APIName = $TriggerMetadata.FunctionName
Write-LogMessage -user $request.headers.'x-ms-client-principal' -API $APINAME -message 'Accessed this API' -Sev 'Debug'

# Write to the Azure Functions log stream.
Write-Host 'PowerShell HTTP trigger function processed a request.'
$ScheduledTasksTable = Get-CIPPTable -TableName 'ScheduledTasks'
$ScheduledTasks = Get-CIPPAzDataTableEntity @ScheduledTasksTable -Filter 'Hidden eq true' | Where-Object { $_.Command -match 'CippExtension' }

$AllowedTenants = Test-CIPPAccess -Request $Request -TenantList
$TenantList = Get-Tenants -IncludeErrors
$AllTasksArrayList = [system.collections.generic.list[object]]::new()

foreach ($Task in $ScheduledTasks) {
if ($Task.Results -and (Test-Json -Json $Task.Results -ErrorAction SilentlyContinue)) {
$Results = $Task.Results | ConvertFrom-Json
} else {
$Results = $Task.Results
}

$TaskEntry = [PSCustomObject]@{
RowKey = $Task.RowKey
PartitionKey = $Task.PartitionKey
Tenant = $Task.Tenant
Name = $Task.Name
SyncType = $Task.SyncType
ScheduledTime = $Task.ScheduledTime
ExecutedTime = $Task.ExecutedTime
RepeatsEvery = $Task.Recurrence
Results = $Results
}

if ($AllowedTenants -notcontains 'AllTenants') {
$Tenant = $TenantList | Where-Object -Property defaultDomainName -EQ $Task.Tenant
if ($AllowedTenants -contains $Tenant.customerId) {
$AllTasksArrayList.Add($TaskEntry)
}
} else {
$AllTasksArrayList.Add($TaskEntry)
}
}
Write-Host ($AllTasksArrayList | ConvertTo-Json -Depth 5 -Compress)
# Associate values to output bindings by calling 'Push-OutputBinding'.
Push-OutputBinding -Name Response -Value ([HttpResponseContext]@{
StatusCode = [HttpStatusCode]::OK
Body = ConvertTo-Json -Depth 5 -InputObject $($AllTasksArrayList)
})
}
4 changes: 2 additions & 2 deletions Modules/CIPPCore/Public/GraphHelper/New-ExoRequest.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ function New-ExoRequest ($tenantid, $cmdlet, $cmdParams, $useSystemMailbox, $Anc
if ($cmdparams.anr) { $Anchor = $cmdparams.anr }
if ($cmdparams.User) { $Anchor = $cmdparams.User }
if ($cmdparams.mailbox) { $Anchor = $cmdparams.mailbox }
if ($cmdlet -eq 'Set-AdminAuditLogConfig') { $anchor = "UPN:SystemMailbox{8cc370d3-822a-4ab8-a926-bb94bd0641a9}@$($OnMicrosoft)" }
if ($cmdlet -in 'Set-AdminAuditLogConfig', 'Get-AdminAuditLogConfig', 'Enable-OrganizationCustomization', 'Get-OrganizationConfig') { $anchor = "UPN:SystemMailbox{8cc370d3-822a-4ab8-a926-bb94bd0641a9}@$($OnMicrosoft)" }
if (!$Anchor -or $useSystemMailbox) {
if (!$Tenant.initialDomainName -or $Tenant.initialDomainName -notlike '*onmicrosoft.com*') {
$OnMicrosoft = (New-GraphGetRequest -uri 'https://graph.microsoft.com/beta/domains?$top=999' -tenantid $tenantid -NoAuthCheck $NoAuthCheck | Where-Object -Property isInitial -EQ $true).id
Expand Down Expand Up @@ -78,4 +78,4 @@ function New-ExoRequest ($tenantid, $cmdlet, $cmdParams, $useSystemMailbox, $Anc
} else {
Write-Error 'Not allowed. You cannot manage your own tenant or tenants not under your scope'
}
}
}
17 changes: 11 additions & 6 deletions Modules/CIPPCore/Public/GraphRequests/Get-GraphRequestList.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -285,12 +285,17 @@ function Get-GraphRequestList {
if (!$QueueThresholdExceeded) {
$GraphRequestResults = New-GraphGetRequest @GraphRequest -ErrorAction Stop | Select-Object *, @{l = 'Tenant'; e = { $TenantFilter } }, @{l = 'CippStatus'; e = { 'Good' } }
if ($ReverseTenantLookup -and $GraphRequestResults) {
$TenantInfo = $GraphRequestResults.$ReverseTenantLookupProperty | Sort-Object -Unique | ForEach-Object {
New-GraphGetRequest -uri "https://graph.microsoft.com/beta/tenantRelationships/findTenantInformationByTenantId(tenantId='$_')" -noauthcheck $true -asApp:$true -tenant $env:TenantId
}
foreach ($Result in $GraphRequestResults) {
$Result | Select-Object @{n = 'TenantInfo'; e = { $TenantInfo | Where-Object { $Result.$ReverseTenantLookupProperty -eq $_.tenantId } } }, *
$ReverseLookupRequests = $GraphRequestResults.$ReverseTenantLookupProperty | Sort-Object -Unique | ForEach-Object {
@{
id = $_
url = "tenantRelationships/findTenantInformationByTenantId(tenantId='$_')"
method = 'GET'
}
}
$TenantInfo = New-GraphBulkRequest -Requests @($ReverseLookupRequests) -tenantid $env:TenantId -NoAuthCheck $true -asapp $true

$GraphRequestResults | Select-Object @{n = 'TenantInfo'; e = { Get-GraphBulkResultByID -Results @($TenantInfo) -ID $_.$ReverseTenantLookupProperty } }, *

} else {
$GraphRequestResults
}
Expand All @@ -306,4 +311,4 @@ function Get-GraphRequestList {
$_.Data | ConvertFrom-Json
}
}
}
}
2 changes: 1 addition & 1 deletion Modules/CippExtensions/Private/Hudu/Get-HuduLinkBlock.ps1
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
function Get-HuduLinkBlock($URL, $Icon, $Title) {
return "<button class='button' style='background-color: var(--primary)' role='button'><a style='color: white;' role='button' href=$URL target=_blank><i class=`"$Icon me-2`" />$Title</a></button>"
return '<button class="button" style="background-color: var(--primary)" role="button"><a style="color: white;" role="button" href="{0}" target="_blank"><i class="{1} me-2"></i>{2}</a></button>' -f $URL, $Icon, $Title
}
Original file line number Diff line number Diff line change
Expand Up @@ -151,14 +151,14 @@ function Sync-CippExtensionData {
)
}
'Mailboxes' {
$Select = 'id,ExchangeGuid,ArchiveGuid,UserPrincipalName,DisplayName,PrimarySMTPAddress,RecipientType,RecipientTypeDetails,EmailAddresses,WhenSoftDeleted,IsInactiveMailbox'
$Select = 'id,ExchangeGuid,ArchiveGuid,UserPrincipalName,DisplayName,PrimarySMTPAddress,RecipientType,RecipientTypeDetails,EmailAddresses,WhenSoftDeleted,IsInactiveMailbox,ProhibitSendQuota,ProhibitSendReceiveQuota,LitigationHoldEnabled,InPlaceHolds,HiddenFromAddressListsEnabled'
$ExoRequest = @{
tenantid = $TenantFilter
cmdlet = 'Get-Mailbox'
cmdParams = @{}
Select = $Select
}
$Mailboxes = (New-ExoRequest @ExoRequest) | Select-Object id, ExchangeGuid, ArchiveGuid, WhenSoftDeleted, @{ Name = 'UPN'; Expression = { $_.'UserPrincipalName' } },
$Mailboxes = (New-ExoRequest @ExoRequest) | Select-Object id, ExchangeGuid, ArchiveGuid, WhenSoftDeleted, ProhibitSendQuota, ProhibitSendReceiveQuota, LitigationHoldEnabled, InplaceHolds, HiddenFromAddressListsEnabled, @{ Name = 'UPN'; Expression = { $_.'UserPrincipalName' } },

@{ Name = 'displayName'; Expression = { $_.'DisplayName' } },
@{ Name = 'primarySmtpAddress'; Expression = { $_.'PrimarySMTPAddress' } },
Expand Down Expand Up @@ -298,7 +298,7 @@ function Sync-CippExtensionData {
} catch {
$LastSync.Status = 'Failed'
$LastSync.Error = [string](Get-CippException -Exception $_ | ConvertTo-Json -Compress)
throw "Failed to sync data: $($_.Exception.Message)"
throw "Failed to sync data: $(Get-NormalizedError -message $_.Exception.Message)"
} finally {
Add-CIPPAzDataTableEntity @Table -Entity $LastSync -Force
}
Expand Down
Loading

0 comments on commit c760ba5

Please sign in to comment.