Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
8430 commits
Select commit Hold shift + click to select a range
d7c97b6
add logging
JohnDuprey Dec 8, 2025
73e51f8
Feat: Add QuarantineReleaseRequests alert for handling quarantine rel…
kris6673 Dec 8, 2025
af7d941
WORD WORD WORD WORD WORD WORD
kris6673 Dec 8, 2025
f734c3a
app approval
KelvinTegelaar Dec 8, 2025
8d7ea64
paging
KelvinTegelaar Dec 8, 2025
4cc42c5
Mailbox Auditing changes
KelvinTegelaar Dec 8, 2025
4b8a24b
Merge pull request #1733 from kris6673/QuarantineReleaseRequests
KelvinTegelaar Dec 8, 2025
026f259
temp change to test app logging retention
KelvinTegelaar Dec 8, 2025
2e06bbb
Merge branch 'dev' of https://github.com/KelvinTegelaar/CIPP-API into…
KelvinTegelaar Dec 8, 2025
23ae551
Improve DMARC record handling for multiple domains
JohnDuprey Dec 8, 2025
c10da45
Merge branch 'dev' of https://github.com/KelvinTegelaar/CIPP-API into…
JohnDuprey Dec 8, 2025
52b81aa
Improve error handling in New-GraphGetRequest
JohnDuprey Dec 8, 2025
161ff44
recommended change by thiago
KelvinTegelaar Dec 9, 2025
5d4d0c4
Merge branch 'dev' of https://github.com/KelvinTegelaar/CIPP-API into…
KelvinTegelaar Dec 9, 2025
e142a97
Merge pull request #1730 from lacymooretx/fix/pwpush-pro-field-mismatch
KelvinTegelaar Dec 9, 2025
671853f
Merge pull request #1726 from Zacgoose/fix-audit-log-rules-search
KelvinTegelaar Dec 9, 2025
c3ae8fc
Add User-Agent header with CIPP version to Graph requests
JohnDuprey Dec 9, 2025
c51c9e3
Preserve Package property in template operations
JohnDuprey Dec 9, 2025
fbe994f
Delete master_cippkdsva.yml
JohnDuprey Dec 9, 2025
7f3d7e0
Add SHA hash checks to tenant template library
JohnDuprey Dec 9, 2025
2a1ffb7
update metadata
KelvinTegelaar Dec 9, 2025
21f8cee
Enhance template library logic
JohnDuprey Dec 9, 2025
aeeab5a
Merge branch 'dev' of https://github.com/KelvinTegelaar/CIPP-API into…
JohnDuprey Dec 9, 2025
7fdce16
Improve error handling in activity orchestration
JohnDuprey Dec 9, 2025
ebfd5ef
Update CippEntrypoints.psm1
JohnDuprey Dec 9, 2025
7f1e787
entrypoint change
KelvinTegelaar Dec 9, 2025
d100ce3
Merge branch 'dev' of https://github.com/KelvinTegelaar/CIPP-API into…
KelvinTegelaar Dec 9, 2025
45580d5
Fix property assignment and config validation in orchestrators
JohnDuprey Dec 9, 2025
5db3bd7
Merge branch 'dev' of https://github.com/KelvinTegelaar/CIPP-API into…
JohnDuprey Dec 9, 2025
84df20a
Improve error handling in orchestration and activity triggers
JohnDuprey Dec 9, 2025
bd2ce60
test
KelvinTegelaar Dec 9, 2025
75c9291
Add default domain name
KelvinTegelaar Dec 9, 2025
c240553
rage
KelvinTegelaar Dec 9, 2025
24bb9bc
changing to extract logs instead of long standing operations
KelvinTegelaar Dec 10, 2025
50eae1a
added data for tracking
KelvinTegelaar Dec 10, 2025
85c61ce
auditlog changes
KelvinTegelaar Dec 10, 2025
3eb2fb2
reset priority
KelvinTegelaar Dec 10, 2025
bbd4241
performance improvements
KelvinTegelaar Dec 10, 2025
ccf6357
add stopwatches for checking timings
KelvinTegelaar Dec 10, 2025
c017e15
prevent lockout issues if refresh token expires or ca changes
JohnDuprey Dec 10, 2025
61f0943
see if filters improve timing
KelvinTegelaar Dec 10, 2025
ec03dd2
Merge branch 'dev' of https://github.com/KelvinTegelaar/CIPP-API into…
KelvinTegelaar Dec 10, 2025
8308833
remove seconds
KelvinTegelaar Dec 10, 2025
4c008ed
add temporary profiling
KelvinTegelaar Dec 10, 2025
1424561
removing timings, updating processing
KelvinTegelaar Dec 10, 2025
b9bfbe2
corrected exclude
KelvinTegelaar Dec 10, 2025
545f9f7
temp post
KelvinTegelaar Dec 11, 2025
b805ce6
fixes
KelvinTegelaar Dec 11, 2025
57ad95c
Enhance alert comment handling in scheduled command
JohnDuprey Dec 11, 2025
498866b
Feat: Support JIT admin for guest users
kris6673 Dec 11, 2025
e80f04a
Feat: Add auto-archiving configuration standard
kris6673 Dec 11, 2025
6d7ded5
Extra logging
KelvinTegelaar Dec 11, 2025
caae09d
Merge branch 'dev' of https://github.com/KelvinTegelaar/CIPP-API into…
KelvinTegelaar Dec 11, 2025
cc48ec1
fix data
KelvinTegelaar Dec 11, 2025
f176e99
cleanup compiled module
JohnDuprey Dec 11, 2025
d5e86dd
Update .gitignore
JohnDuprey Dec 11, 2025
39abb7e
Add error handling to group template parsing
JohnDuprey Dec 11, 2025
80016c0
Compress JSON output in New-CIPPIntuneTemplate
JohnDuprey Dec 11, 2025
899597c
logs
KelvinTegelaar Dec 12, 2025
c12b7fb
add a raw json print from the return
KelvinTegelaar Dec 12, 2025
da06e49
Refactor Get-CIPPTimerFunctions and clean up stale entries
JohnDuprey Dec 12, 2025
5e80d13
Add time settings management for function app
JohnDuprey Dec 12, 2025
2e320e3
Update Invoke-ExecTimeSettings.ps1
JohnDuprey Dec 12, 2025
e476fa3
add invocation ids
KelvinTegelaar Dec 12, 2025
24ba12e
Merge branch 'dev' of https://github.com/KelvinTegelaar/CIPP-API into…
KelvinTegelaar Dec 12, 2025
73d5ab2
license check
KelvinTegelaar Dec 12, 2025
f299691
Reduce batch size from 1000 to 500 in orchestrator
JohnDuprey Dec 12, 2025
2394d85
Cache directory lookups to reduce API calls
JohnDuprey Dec 12, 2025
3f6104d
Use WEBSITE_AUTH_V2_CONFIG_JSON for auth settings if available
JohnDuprey Dec 12, 2025
106272f
Update CippEntrypoints.psm1
JohnDuprey Dec 12, 2025
b0c96a1
Update Get-CippApiAuth.ps1
JohnDuprey Dec 12, 2025
91d3738
New tenant checks in get standards then executing.
KelvinTegelaar Dec 12, 2025
0bfa456
Merge branch 'dev' of https://github.com/KelvinTegelaar/CIPP-API into…
KelvinTegelaar Dec 12, 2025
d241d67
Add bulk support for standards
KelvinTegelaar Dec 13, 2025
2766531
Refactor audit log ingestion to use orchestrated activities
JohnDuprey Dec 13, 2025
633883e
Initial plan
Copilot Dec 8, 2025
6abaf95
Implement AllTenants filtering logic for user default templates
Copilot Dec 8, 2025
0a0352a
Fix comparison operator consistency in user defaults filter
Copilot Dec 8, 2025
e9b3495
Add includeAllTenants flag to control AllTenants template filtering
Copilot Dec 13, 2025
7d2bf77
Simplify includeAllTenants boolean logic
Copilot Dec 13, 2025
4345257
Fix string comparison for includeAllTenants parameter
Copilot Dec 13, 2025
b6c5c74
Refactor standards orchestration to batch activities
JohnDuprey Dec 13, 2025
2ce4011
Fix missing $ in $top query parameters for Intune endpoints
JohnDuprey Dec 13, 2025
cb18d7a
Add includeAllTenants flag to user defaults listing
Zacgoose Dec 13, 2025
80af0d8
Merge pull request #1731 from Zacgoose/copilot/update-user-defaults-l…
KelvinTegelaar Dec 13, 2025
1e1cdf4
Merge pull request #1732 from kris6673/queues
KelvinTegelaar Dec 13, 2025
d118bcc
Merge pull request #1736 from kris6673/jit-admin
KelvinTegelaar Dec 13, 2025
1354aa6
Merge pull request #1737 from kris6673/AutoArchive
KelvinTegelaar Dec 13, 2025
a7c767f
Add Reference field to scheduled task handling
Zacgoose Dec 13, 2025
14f242a
extra ref message
Zacgoose Dec 13, 2025
7f2cab6
Merge branch 'dev' into update-tenant-user-templates
Zacgoose Dec 13, 2025
507dd34
formatting
Zacgoose Dec 13, 2025
3ae6748
formatting
Zacgoose Dec 13, 2025
2b68fc7
some added logging to see the batch
KelvinTegelaar Dec 13, 2025
f22afac
added some write hosts
KelvinTegelaar Dec 13, 2025
f7176c8
clear return to see where things fail
KelvinTegelaar Dec 13, 2025
5ab8876
CIPP-API
KelvinTegelaar Dec 13, 2025
2f6ac75
checking input obj
KelvinTegelaar Dec 13, 2025
bf2c2c0
feat: Add Get-CIPPAlertGlobalAdminAllowList function and correspondin…
MWG-Logan Dec 13, 2025
edfe33a
chore: Enhance tests for Get-CIPPAlertGlobalAdminAllowList with error…
MWG-Logan Dec 13, 2025
802701e
Merge pull request #1741 from MWG-Logan/ga-list-alert
KelvinTegelaar Dec 13, 2025
9165db4
fixes #5022
KelvinTegelaar Dec 13, 2025
3c75243
Refactor activity function waiting logic
JohnDuprey Dec 13, 2025
6f5a133
Fix standards aggregation logic in batch apply script
JohnDuprey Dec 13, 2025
20ba91b
Add reporting jit
KelvinTegelaar Dec 13, 2025
def80ca
Merge branch 'dev' of https://github.com/KelvinTegelaar/CIPP-API into…
KelvinTegelaar Dec 13, 2025
f8dcaa7
Jit admin changes
KelvinTegelaar Dec 13, 2025
7150399
backup cleanup
KelvinTegelaar Dec 13, 2025
451c606
quick fix for #5070
KelvinTegelaar Dec 13, 2025
e3931e6
ExecDevicePasscodeAction
KelvinTegelaar Dec 14, 2025
983485b
minor logging updates
KelvinTegelaar Dec 14, 2025
3219a98
allow disabling of email
KelvinTegelaar Dec 14, 2025
a019449
disable all notifications instead
KelvinTegelaar Dec 14, 2025
f6cbc2a
Remove Az.KeyVault 6.3.1 module and add KeyVault secret cmdlets
Zacgoose Dec 14, 2025
dacfb38
Merge pull request #1739 from Zacgoose/update-tenant-user-templates
KelvinTegelaar Dec 14, 2025
4d5c105
Add Az identity token function
Dec 14, 2025
928abeb
Minor cleanup/speed improvements
Dec 14, 2025
3bd06d4
Fix #5044
KelvinTegelaar Dec 14, 2025
185a7f9
More explicit module imports
Dec 14, 2025
7a99763
Merge branch 'dev' of https://github.com/KelvinTegelaar/CIPP-API into…
KelvinTegelaar Dec 14, 2025
5fc20af
Merge branch 'dev' into kv-replacement-test
Zacgoose Dec 14, 2025
b3aad3a
Add resource support to AzIdentityToken
Dec 14, 2025
0924d62
Merge branch 'dev' of https://github.com/KelvinTegelaar/CIPP-API into…
Dec 14, 2025
ca27d49
Merge pull request #1740 from Zacgoose/Reference-message-CA-and-Sched…
KelvinTegelaar Dec 14, 2025
06fc021
Replace function app subid lookup with function
Dec 15, 2025
5a82592
New-CIPPAzRestRequest
Dec 15, 2025
d74249a
this probably needs cleanup
Dec 15, 2025
50b5e54
Request change by many users - Drift alerting at lower rate.
KelvinTegelaar Dec 15, 2025
a10a744
rollback audit logs
JohnDuprey Dec 15, 2025
5121b3c
Add CreateGroups parameter to CAPolicy creation
JohnDuprey Dec 15, 2025
c97a113
Feat: Add MDM enrollment isMdmEnrollmentDuringRegistrationDisabled st…
kris6673 Dec 15, 2025
515f800
Merge pull request #1743 from kris6673/isMdmEnrollmentDuringRegistrat…
KelvinTegelaar Dec 15, 2025
02544e4
restore audit log search creation
JohnDuprey Dec 15, 2025
f6c627f
Refactor license overview and queue handling logic
JohnDuprey Dec 15, 2025
87d9cd6
Merge pull request #1742 from Zacgoose/kv-replacement-test
JohnDuprey Dec 15, 2025
d0870b3
Add detailed timing metrics to profile.ps1 startup
JohnDuprey Dec 15, 2025
523f433
Update Invoke-ListApiTest.ps1
JohnDuprey Dec 15, 2025
f035280
Update Invoke-ListApiTest.ps1
JohnDuprey Dec 15, 2025
448994e
test az query
JohnDuprey Dec 15, 2025
7d528ff
Update Resource Graph request to POST and set default content type
JohnDuprey Dec 15, 2025
ed46141
Update Invoke-ListApiTest.ps1
JohnDuprey Dec 15, 2025
eaed4f6
Update Invoke-ListApiTest.ps1
JohnDuprey Dec 15, 2025
9b270ec
automated onboarding changes
KelvinTegelaar Dec 16, 2025
3cca1f6
Add or update the Azure App Service build and deployment workflow config
KelvinTegelaar Dec 16, 2025
8f8933e
Refactor durable cleanup to use custom AzStorage helpers
JohnDuprey Dec 16, 2025
c664481
Refactor to use ARM REST for Function App and Key Vault ops
JohnDuprey Dec 16, 2025
19af37d
Remove Az.Accounts, Az.Functions, and Az.Storage v4/8 modules
JohnDuprey Dec 16, 2025
a7da0de
Remove AzContext autosave disabling and timing
JohnDuprey Dec 16, 2025
17203b2
Change auth settings retrieval order in Get-CippApiAuth
JohnDuprey Dec 16, 2025
4e6385b
Update Get-CippApiAuth.ps1
JohnDuprey Dec 16, 2025
1b34dd9
Add per-request user roles cache and improve timing logic
JohnDuprey Dec 16, 2025
cc3f2ab
Update Invoke-ListApiTest.ps1
JohnDuprey Dec 16, 2025
3e845ca
Add detailed HTTP request timing telemetry
JohnDuprey Dec 16, 2025
9684634
Add detailed profiling to access and user role checks
JohnDuprey Dec 16, 2025
f7325ff
remove modulebuilder steps
JohnDuprey Dec 16, 2025
e01b728
Switch timing logs from Write-Information to Write-Debug
JohnDuprey Dec 17, 2025
94c0207
Replace Write-Information with Write-Debug for logging
JohnDuprey Dec 17, 2025
41895aa
Add tag support to console logging messages
JohnDuprey Dec 17, 2025
825ff30
Add function permissions cache and build script
Zacgoose Dec 17, 2025
479bdae
Merge pull request #1747 from Zacgoose/access-speeeeed
JohnDuprey Dec 17, 2025
9512822
Add CFZTNA headers support to webhook alerts
JohnDuprey Dec 17, 2025
9ad27a5
Merge branch 'dev' of https://github.com/KelvinTegelaar/CIPP-API into…
JohnDuprey Dec 17, 2025
9d29876
switch to asapp for api configs
JohnDuprey Dec 17, 2025
b2b3b7b
Update Get-CIPPAzIdentityToken.ps1
JohnDuprey Dec 17, 2025
7424e39
fix table override when creating invites via the api
JohnDuprey Dec 17, 2025
5c4fe80
Add domain management entrypoints for tenants
JohnDuprey Dec 17, 2025
aa2d53a
Add step tracking and retries to API app setup
JohnDuprey Dec 17, 2025
4a74df8
cleanup
JohnDuprey Dec 17, 2025
48e0d18
Add PowerShell module build and caching to workflows
JohnDuprey Dec 17, 2025
d2ceae9
temp delete
KelvinTegelaar Dec 17, 2025
00e3d4a
Merge branch 'dev' of https://github.com/KelvinTegelaar/CIPP-API into…
KelvinTegelaar Dec 17, 2025
ec53711
Rename cippcore
KelvinTegelaar Dec 17, 2025
350349e
Update workflow and add function metadata comments
JohnDuprey Dec 17, 2025
cd6df9f
version up
KelvinTegelaar Dec 17, 2025
5542d4c
Merge branch 'dev' of https://github.com/KelvinTegelaar/CIPP-API into…
KelvinTegelaar Dec 17, 2025
34e0715
Rollback audit logs to 8.7.2
JohnDuprey Dec 17, 2025
2b79c1d
rollback workflows
JohnDuprey Dec 17, 2025
b611861
Enhance JIT admin schema and function permission caching
JohnDuprey Dec 18, 2025
54fd2bc
restore modulebuilder in dev
JohnDuprey Dec 18, 2025
91ec243
fix missing permission
JohnDuprey Dec 18, 2025
b39c5f3
undo modulebuilder
JohnDuprey Dec 18, 2025
dda5773
Update Invoke-ListGDAPAccessAssignments.ps1
JohnDuprey Dec 18, 2025
f3c5e3d
handle errors with cached data
JohnDuprey Dec 18, 2025
d31530a
log messages
KelvinTegelaar Dec 18, 2025
9903a0b
fixes object
KelvinTegelaar Dec 18, 2025
7cf0f36
Fixed
KelvinTegelaar Dec 18, 2025
8480bf2
prevent null permissions
JohnDuprey Dec 18, 2025
e97d981
filter list to only tenants that have standards applied
JohnDuprey Dec 18, 2025
4463cc6
Improve error logging in Get-CIPPAlertRestrictedUsers
JohnDuprey Dec 18, 2025
1d4bfad
Update Invoke-CIPPStandardsRun.ps1
JohnDuprey Dec 18, 2025
126af84
fix release notes
JohnDuprey Dec 18, 2025
d57712b
Improve error handling for repo permissions JSON conversion
JohnDuprey Dec 18, 2025
c90423e
Handle null values in directory lookups
JohnDuprey Dec 18, 2025
41a2e3d
Improve release notes cache validation by major.minor
JohnDuprey Dec 18, 2025
f86aad3
Improve CA policy location and service exception handling
JohnDuprey Dec 18, 2025
e2be69c
version up
JohnDuprey Dec 18, 2025
521d8f3
comment line
KelvinTegelaar Dec 19, 2025
9e5ec3d
move to debug loging
JohnDuprey Dec 19, 2025
fca10c3
fix member list in alignment
JohnDuprey Dec 19, 2025
d79fc49
Merge branch 'dev' of https://github.com/KelvinTegelaar/CIPP-API into…
JohnDuprey Dec 19, 2025
b4a141d
Fix: Alert shows RecipientAddress as System.Object[]
kris6673 Dec 19, 2025
f34bbcb
Replace Write-AlertMessage with Write-LogMessage in TERRL alert
JohnDuprey Dec 19, 2025
4fce105
Update Start-UpdateTokensTimer.ps1
JohnDuprey Dec 19, 2025
1ef9db9
Merge pull request #1752 from kris6673/issue5114
KelvinTegelaar Dec 19, 2025
038e3e8
Add Reason and lastChangedByUser to policy deviations
JohnDuprey Dec 19, 2025
2c4f860
Improve template matching by adding Source filter
JohnDuprey Dec 19, 2025
81d6913
Add 'source' and 'isSynced' properties to template entities
JohnDuprey Dec 19, 2025
74edf99
version up
JohnDuprey Dec 19, 2025
b9ca96c
Refine NameOnly logic in Get-CIPPBackup
JohnDuprey Dec 19, 2025
423a605
Fix tenant filter logic in Get-CIPPBackup
JohnDuprey Dec 19, 2025
538b5a3
Add TenantFilter extraction to backup list output
JohnDuprey Dec 19, 2025
5f55eaf
Update Invoke-ExecListBackup.ps1
JohnDuprey Dec 19, 2025
a87fed3
Add Azure Storage SAS and blob upload utilities
JohnDuprey Dec 21, 2025
c0457be
Update New-CIPPAzServiceSAS.ps1
JohnDuprey Dec 21, 2025
968ed82
Fix for management stats
KelvinTegelaar Dec 21, 2025
e9576d3
Add data collection for tests
KelvinTegelaar Dec 21, 2025
2ad0dcf
db request add type
KelvinTegelaar Dec 21, 2025
a4633fe
reporting
KelvinTegelaar Dec 22, 2025
8a86ddb
Reporting template tests
KelvinTegelaar Dec 22, 2025
85ac7ee
reporting updates
KelvinTegelaar Dec 22, 2025
418a8cc
Tests
KelvinTegelaar Dec 22, 2025
df632ea
tests with reporting
KelvinTegelaar Dec 22, 2025
a0203a8
Allow reserved app names in include/exclude applications
JohnDuprey Dec 23, 2025
b090550
ZTNA test batch1
KelvinTegelaar Dec 23, 2025
2323719
Add more tests
KelvinTegelaar Dec 23, 2025
9c8f1de
updates
KelvinTegelaar Dec 23, 2025
950ec36
More ZTNA tests(untested)
KelvinTegelaar Dec 23, 2025
e4c9818
Added Tests
KelvinTegelaar Dec 24, 2025
f61e984
Next batch
KelvinTegelaar Dec 24, 2025
20158d3
Next batch
KelvinTegelaar Dec 24, 2025
e8e1465
extra test
KelvinTegelaar Dec 24, 2025
2ceb15c
Add new tests
KelvinTegelaar Dec 24, 2025
eaae2d8
Added caches
KelvinTegelaar Dec 24, 2025
90a084f
Named locations
KelvinTegelaar Dec 24, 2025
1ef2c30
NEw tests, not tested
KelvinTegelaar Dec 24, 2025
bdc4330
Tests
KelvinTegelaar Dec 24, 2025
e9a6336
updates to tests
KelvinTegelaar Dec 24, 2025
749a40d
new tests
KelvinTegelaar Dec 24, 2025
489f507
new tests
KelvinTegelaar Dec 24, 2025
020776a
more tests
KelvinTegelaar Dec 24, 2025
97f1ac6
More tests
KelvinTegelaar Dec 24, 2025
2f885bb
Updated Tests
KelvinTegelaar Dec 24, 2025
291fbf9
Tested first files
KelvinTegelaar Dec 24, 2025
c9cb112
functions that are done
KelvinTegelaar Dec 24, 2025
ac7a4dc
remove backtics, mark as tested.
KelvinTegelaar Dec 26, 2025
4403e7b
Updated tests after testing
KelvinTegelaar Dec 26, 2025
9660318
bug fixes for tests
KelvinTegelaar Dec 26, 2025
a065711
Moved tests
KelvinTegelaar Dec 27, 2025
5536b25
Move files
KelvinTegelaar Dec 27, 2025
e03c96a
Move files
KelvinTegelaar Dec 27, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
1 change: 1 addition & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
local.settings.json
22 changes: 22 additions & 0 deletions .editorconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
# Editor configuration, see http://editorconfig.org
root = true

[*]
charset = utf-8
indent_style = space
insert_final_newline = true

[*.{ps1, psd1, psm1}]
indent_size = 4
end_of_line = lf
trim_trailing_whitespace = true

[*.json]
indent_size = 2
end_of_line = lf
trim_trailing_whitespace = true

[*.{md, txt}]
end_of_line = crlf
max_line_length = off
trim_trailing_whitespace = false
7 changes: 7 additions & 0 deletions .env.example
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
FUNCTIONS_WORKER_RUNTIME='powershell'
FUNCTIONS_WORKER_RUNTIME_VERSION='7.4'
AzureWebJobsStorage='DefaultEndpointsProtocol=http;AccountName=devstoreaccount1;AccountKey=Eby8vdM02xNoBnZf6KgBVU4=;BlobEndpoint=http://azurite:10000/devstoreaccount1;QueueEndpoint=http://azurite:10001/devstoreaccount1;TableEndpoint=http://azurite:10002/devstoreaccount1;'
DEV_SKIP_BPA_TIMER='true'
DEV_SKIP_DOMAIN_TIMER='true'
FUNCTIONS_EXTENSION_VERSION='4'
NonLocalHostAzurite='true'
13 changes: 13 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
* text=lf

*.txt text eol=crlf
*.md text eol=crlf

*.ps1 text eol=lf
*.psd1 text eol=lf
*.psm1 text eol=lf

*.json text eol=lf

*.png binary
*.jpg binary
113 changes: 113 additions & 0 deletions .github/agents/CIPP-Alert-Agent.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,113 @@
---
# Fill in the fields below to create a basic custom agent for your repository.
# The Copilot CLI can be used for local testing: https://gh.io/customagents/cli
# To make this agent available, merge this file into the default repository branch.
# For format details, see: https://gh.io/customagents/config

name: CIPP Alert Engineer
description: >
Implements and maintains CIPP tenant alerts in PowerShell using existing CIPP
patterns, without touching API specs, avoiding CodeQL, and using
Test-CIPPStandardLicense for license/SKU checks.
---

# CIPP Alert Engineer

## Mission

You are an expert CIPP alert engineer for the CIPP repository.

Your job is to implement, update, and review **alert-related functionality** in CIPP, following existing repository patterns and conventions. You primarily work on:

- Creating new `Get-CIPPAlert*` PowerShell functions
- Adjusting existing alert logic when requested
- Ensuring alerts integrate cleanly with the existing scheduler and alerting framework
- Performing light validation and linting

You **must follow all constraints in this file** exactly.

---

## Scope of Work

Use this agent when a task involves:

- Adding a new alert (e.g. “implement alert for X condition”)
- Modifying logic of an existing alert
- Investigating how alerts are scheduled, run, or configured
- Performing small refactors or improvements to alert-related PowerShell code

You **do not** make broad architectural changes. Keep changes focused and minimal.

---

## Key Directories & Patterns

When working on alerts, you should:

1. **Discover existing alerts and patterns**
- Use shell commands to explore:
- `Modules/CIPPCore/Public/Alerts/`
- Inspect several existing alert files, e.g.:
- `Modules/CIPPCore/Public/Alerts/Get-CIPPAlertNoCAConfig.ps1`
- Other `Get-CIPPAlert*.ps1` files
- Understand how alerts are **named, parameterized, and how they call Graph / Exo and helper functions**.

2. **Follow the standard alert pattern**
- Alert functions live in:
`Modules/CIPPCore/Public/Alerts/`
- Alert functions are named:
`Get-CIPPAlert<Something>.ps1`
- Typical characteristics:
- Standard parameter set, including `TenantFilter` and similar common params.
- Uses CIPP helper functions like:
- `New-GraphGetRequest` / other Graph or Exo helpers
- `Write-AlertTrace` for emitting alert results
- Uses CIPP logging and error-handling patterns (try/catch, consistent message formatting).

3. **Rely on existing module loading**
- The CIPP module auto-loads `Public` functions recursively.
- **Do not** modify module manifest or loader behavior just to pick up your new alert.

---

## Critical Constraints

You **must** respect all of these:

### 1. Always follow existing CIPP alert patterns

When adding or modifying alerts:

- Use the **same structure** as existing `Get-CIPPAlert*.ps1` files:
- Similar function signatures
- Similar logging and error handling
- Same approach to returning alert data via `Write-AlertTrace`
- Reuse helper functions instead of inlining raw Graph calls or custom HTTP code, whenever possible.
- Keep alert behavior predictable and consistent with existing alerts.

### 2. No CodeQL runs

- **Do not** invoke CodeQL or similar heavy security tooling in your workflow.
- Rely on:
- PowerShell syntax checking
- `PSScriptAnalyzer`
- Manual/code-review style reasoning for security (no secrets, least privilege, etc.)

### 3. License / SKU checks must use `Test-CIPPStandardLicense`

When an alert depends on a tenant having certain SKUs or capabilities, you **must**:

- Use `Test-CIPPStandardLicense`
- Do **not** manually inspect SKUs, raw license IDs, or raw capability lists.

Example pattern (adapt to the specific feature):

```powershell
$TestResult = Test-CIPPStandardLicense -StandardName 'AutopilotProfile' -TenantFilter $Tenant -RequiredCapabilities @(
'INTUNE_A',
'MDM_Services',
'EMS',
'SCCM',
'MICROSOFTINTUNEPLAN1'
)
142 changes: 142 additions & 0 deletions .github/agents/CIPP-Standards-Agent.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,142 @@
---
name: CIPP Standards Engineer
description: >
This agent creates a new standard based on existing standards inside of the CIPP codebase.
The agent must never modify any other file or perform any other change than creating a new standard.
---

# CIPP Standards Engineer

name: CIPP Alert Engineer
description: >
Implements and maintains CIPP tenant alerts in PowerShell using existing CIPP
patterns, without touching API specs, avoiding CodeQL, and using
Test-CIPPStandardLicense for license/SKU checks.
---

# CIPP Alert Engineer

## Mission

You are an expert CIPP Standards engineer for the CIPP repository.

Your job is to implement, update, and review **Standards-related functionality** in CIPP, following existing repository patterns and conventions. You primarily work on:

- Creating new `Invoke-CIPPStandard*` PowerShell functions
- Adjusting existing standard logic when requested
- Ensuring standards integrate into the frontend by returning the correct information
- Performing light validation and linting

You **must follow all constraints in this file** exactly.

---

## Scope of Work

Use this agent when a task involves:

- Adding a new standard (e.g. “implement a standard to enable the audit log”)

You **do not** make broad architectural changes. Keep changes focused and minimal.

---

## Key Directories & Patterns

When working on alerts, you should:

1. **Discover existing alerts and patterns**
- Use shell commands to explore:
- `Modules/CIPPCore/Public/Standards/`
- Inspect several existing alert files, e.g.:
- `\Modules\CIPPCore\Public\Standards\Invoke-CIPPStandardAddDKIM.ps1`
- `\Modules\CIPPCore\Public\Standards\Invoke-CIPPStandardlaps.ps1`
- `\Modules\CIPPCore\Public\Standards\Invoke-CIPPStandardOutBoundSpamAlert.ps1`
- Other `Invoke-CIPPStandard*.ps1` files
- Understand how alerts are **named, parameterized, and how they call Graph / Exo and helper functions**.

2. **Follow the standard alert pattern**
- Alert functions live in:
`Modules/CIPPCore/Public/Standardss/`
- Alert functions are named:
`Invoke-CIPPStandardAddDKIM.ps1`
- Typical characteristics:
- Standard parameter set, including `Tenant` and `Settings` which can be a complex object with subsettings, and similar common params.
- Uses CIPP helper functions like:
- `New-GraphGetRequest` for any graph requests
- `New-ExoReques` for creating exo requests
- Uses CIPP logging and error-handling patterns (try/catch, consistent message formatting).
- Each standard requires a Remediate, alert, and report section.

3. **Rely on existing module loading**
- The CIPP module auto-loads `Public` functions recursively.
- **Do not** modify module manifest or loader behavior just to pick up your new standard.

---

## Critical Constraints

You **must** respect all of these:

### 1. Always follow existing CIPP alert patterns

When adding or modifying alerts:

- Use the **same structure** as existing `Invoke-CIPPStandard*.ps1` files:
- Similar function signatures
- Similar logging and error handling
- Reuse helper functions instead of inlining raw Graph calls or custom HTTP code.
- Keep behaviour predictable.

### 2. Return the code for the frontend.

The frontend requires a section to be changed in standards.json. This is an example JSON payload:

```json
{
"name": "standards.MailContacts",
"cat": "Global Standards",
"tag": [],
"helpText": "Defines the email address to receive general updates and information related to M365 subscriptions. Leave a contact field blank if you do not want to update the contact information.",
"docsDescription": "",
"executiveText": "Establishes designated contact email addresses for receiving important Microsoft 365 subscription updates and notifications. This ensures proper communication channels are maintained for general, security, marketing, and technical matters, improving organizational responsiveness to critical system updates.",
"addedComponent": [
{
"type": "textField",
"name": "standards.MailContacts.GeneralContact",
"label": "General Contact",
"required": false
},
{
"type": "textField",
"name": "standards.MailContacts.SecurityContact",
"label": "Security Contact",
"required": false
},
{
"type": "textField",
"name": "standards.MailContacts.MarketingContact",
"label": "Marketing Contact",
"required": false
},
{
"type": "textField",
"name": "standards.MailContacts.TechContact",
"label": "Technical Contact",
"required": false
}
],
"label": "Set contact e-mails",
"impact": "Low Impact",
"impactColour": "info",
"addedDate": "2022-03-13",
"powershellEquivalent": "Set-MsolCompanyContactInformation",
"recommendedBy": []
},
```

the name of the standard should be standards.<standardname>. e.g. Invoke-CIPPStandardMailcontacts becomes standards.Mailcontacts.

Added components might be required to populate the $settings variable. for example addedcomponent "standards.MailContacts.GeneralContact" becomes $Settings.GeneralContact

When creating the PR, return the json in the PR text so a frontend engineer can update the frontend repository.
8 changes: 8 additions & 0 deletions .github/pull.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
version: "1"
rules:
- base: master
upstream: KelvinTegelaar:master
mergeMethod: merge
- base: dev
upstream: KelvinTegelaar:dev
mergeMethod: none
62 changes: 62 additions & 0 deletions .github/workflows/PR_Branch_Check.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
name: PR Branch Check

on:
# Using pull_request_target instead of pull_request for secure handling of fork PRs
pull_request_target:
# Only run on these PR events
types: [opened, synchronize, reopened]
# Only check PRs targeting these branches
branches:
- main
- master

permissions:
pull-requests: write
issues: write

jobs:
check-branch:
runs-on: ubuntu-latest
steps:
- name: Check and Comment on PR
# Only process fork PRs with specific branch conditions
# Must be a fork AND (source is main/master OR target is main/master)
if: |
github.event.pull_request.head.repo.fork == true &&
((github.event.pull_request.head.ref == 'main' || github.event.pull_request.head.ref == 'master') ||
(github.event.pull_request.base.ref == 'main' || github.event.pull_request.base.ref == 'master'))
uses: actions/github-script@v7
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
script: |
let message = '';

message += '🔄 If you are attempting to update your CIPP repo please follow the instructions at: https://docs.cipp.app/setup/self-hosting-guide/updating ';
message += '\n\n';

// Check if PR is targeting main/master
if (context.payload.pull_request.base.ref === 'main' || context.payload.pull_request.base.ref === 'master') {
message += '⚠️ PRs cannot target the main branch directly. If you are attempting to contribute code please PR to the dev branch.\n\n';
}

// Check if PR is from a fork's main/master branch
if (context.payload.pull_request.head.repo.fork &&
(context.payload.pull_request.head.ref === 'main' || context.payload.pull_request.head.ref === 'master')) {
message += '⚠️ This PR cannot be merged because it originates from your fork\'s main/master branch. If you are attempting to contribute code please PR from your dev branch or another non-main/master branch.\n\n';
}

message += '🔒 This PR will now be automatically closed due to the above violation(s).';

// Post the comment
await github.rest.issues.createComment({
...context.repo,
issue_number: context.issue.number,
body: message
});

// Close the PR
await github.rest.pulls.update({
...context.repo,
pull_number: context.issue.number,
state: 'closed'
});
Loading