Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
8442 commits
Select commit Hold shift + click to select a range
71a0017
small robustness improvement
tpurschke Mar 30, 2026
2fa86e3
Merge pull request #4442 from tpurschke/fix/podman-docker-stablizing-…
tpurschke Mar 30, 2026
2788755
Merge branch 'develop' into fix/ldap-dn-logging
tpurschke Mar 30, 2026
fc48736
Merge remote-tracking branch 'Cactus/develop' into feat/develop-rule-…
Imat00 Mar 31, 2026
16be549
Merge remote-tracking branch 'cactus/develop' into CustomFieldResolve…
Elutrixx Mar 31, 2026
6b1990d
nullability fixes
Elutrixx Mar 31, 2026
84f16b9
Merge pull request #4418 from Elutrixx/CustomFieldResolver-Fixes
Elutrixx Mar 31, 2026
0aa85d5
Add: IP range intersection logic for owner mapping
Imat00 Mar 31, 2026
465ab7d
Merge remote-tracking branch 'Cactus/develop' into feat/develop-rule-…
Imat00 Mar 31, 2026
4c335dd
fix: test - jsonignore
Imat00 Mar 31, 2026
1583864
update: docu
Imat00 Mar 31, 2026
3f728f7
fix disposed userconfig
tpurschke Mar 31, 2026
b351728
Merge branch 'develop' of https://github.com/CactuseSecurity/firewall…
tpurschke Mar 31, 2026
ca4c0dc
add: IpOperation GetIntersection IPv6 save
Imat00 Mar 31, 2026
6c80c34
Merge branch 'develop' into fix/ldap-dn-logging
tpurschke Mar 31, 2026
109983f
better fallback in case hasura docker image download fails
tpurschke Apr 1, 2026
bfccbb4
fix test OrphanedRequestedInterfaceTicketsPopup_LoadsOnlyTicketsWithM…
tpurschke Apr 1, 2026
d9b39cb
new demo devs
tpurschke Apr 1, 2026
90ea043
fix rollback handler
tpurschke Apr 1, 2026
99298af
add 2nd test device
tpurschke Apr 1, 2026
afd21c8
fix demo dev cp
tpurschke Apr 1, 2026
67c4814
Merge pull request #4459 from tpurschke/fix/cp-demo-data-for-timeobjs
tpurschke Apr 1, 2026
64f70a1
Merge branch 'develop' into develop
tpurschke Apr 1, 2026
a8bfaf2
2 small fixes
tpurschke Apr 1, 2026
acb4133
Merge branch 'develop' into fix/ldap-dn-logging
tpurschke Apr 1, 2026
981b892
Merge pull request #4451 from tpurschke/develop
tpurschke Apr 2, 2026
1a7da1b
Bump IPNetwork2 from 4.0.1 to 4.0.2
dependabot[bot] Apr 2, 2026
ca78965
Bump Microsoft.AspNetCore.Authentication.JwtBearer from 10.0.3 to 10.0.5
dependabot[bot] Apr 2, 2026
33d2eeb
Bump Microsoft.AspNetCore.Components from 10.0.3 to 10.0.5
dependabot[bot] Apr 2, 2026
10bd2cf
Bump Microsoft.IdentityModel.Tokens from 8.16.0 to 8.17.0
dependabot[bot] Apr 2, 2026
af6c1eb
version .17
tpurschke Apr 2, 2026
9c5c072
Merge pull request #4466 from tpurschke/develop
tpurschke Apr 2, 2026
9995efe
Merge branch 'develop' into feat/develop-rule-owner-mapping-IPbase-clean
Imat00 Apr 2, 2026
9a9ae93
Merge branch 'develop' into fix/ldap-dn-logging
tpurschke Apr 2, 2026
fe5a668
feat(ansible): set executable permissions for scripts
Y4nnikH Apr 2, 2026
452e804
feat(sql scripts): add maintenance script to fix missing time objects
Y4nnikH Apr 2, 2026
79f8ec5
Merge branch 'develop' of https://github.com/CactuseSecurity/firewall…
abarz722 Apr 3, 2026
aec24c8
Merge pull request #4467 from Y4nnikH/feat/improve-install-and-mainte…
tpurschke Apr 3, 2026
edaeaa1
Merge branch 'develop' into dependabot/nuget/roles/lib/files/FWO.Basi…
tpurschke Apr 3, 2026
1ecf142
rework policy check in wf action
abarz722 Apr 3, 2026
8f6bf24
fixes + tests
abarz722 Apr 3, 2026
eab4b15
Merge branch 'develop' of https://github.com/CactuseSecurity/firewall…
abarz722 Apr 3, 2026
2891ccc
move version
abarz722 Apr 3, 2026
db846dc
some fixes, change approval init
abarz722 Apr 5, 2026
a38f127
sonar fix
abarz722 Apr 5, 2026
8ca575f
small wf fix
abarz722 Apr 5, 2026
67671d0
Merge branch 'dependabot/nuget/roles/lib/files/FWO.Config.File/develo…
tpurschke Apr 7, 2026
e12194e
Merge branch 'dependabot/nuget/roles/lib/files/FWO.Api.Client/develop…
tpurschke Apr 7, 2026
a8e5cdc
Merge branch 'dependabot/nuget/roles/middleware/files/FWO.Middleware.…
tpurschke Apr 7, 2026
0de34ce
Merge branch 'dependabot/nuget/roles/lib/files/FWO.Basics/develop/IPN…
tpurschke Apr 7, 2026
81e294c
force sonar start
tpurschke Apr 7, 2026
5212049
Merge branch 'develop' into feat/develop-rule-owner-mapping-IPbase-clean
Imat00 Apr 7, 2026
c2953c3
parse add. info
tpurschke Apr 7, 2026
4229a52
linting
tpurschke Apr 7, 2026
83ea2e8
reduce tokens package ref
tpurschke Apr 7, 2026
c10eb6a
Monitoring Logs initial
Elutrixx Apr 7, 2026
6c05063
Merge pull request #4488 from tpurschke/chore/nuget-bumps
tpurschke Apr 7, 2026
1195131
Merge remote-tracking branch 'cactus/develop' into Monitoring-Logs
Elutrixx Apr 7, 2026
c8c874e
Merge branch 'develop' into develop-clean
abarz722 Apr 7, 2026
77331ae
sonar
tpurschke Apr 7, 2026
f29b379
Merge pull request #4429 from abarz722/develop-clean
tpurschke Apr 7, 2026
32338ae
polished output and added tests
Elutrixx Apr 7, 2026
ab82088
Merge remote-tracking branch 'cactus/develop' into Monitoring-Logs
Elutrixx Apr 7, 2026
984da3d
bunit bump
tpurschke Apr 7, 2026
7a3f77d
scheduler to notification
abarz722 Apr 7, 2026
5fa11b5
Merge branch 'develop' into feat/NET-3478-AppDataImport-additional-info
tpurschke Apr 7, 2026
2e2e8b6
refinements + fixes
abarz722 Apr 8, 2026
aa69028
Merge remote-tracking branch 'Cactus/develop' into feat/develop-rule-…
Imat00 Apr 8, 2026
3a41baf
Merge branch 'feat/develop-rule-owner-mapping-IPbase-clean' of https:…
Imat00 Apr 8, 2026
39690f6
sonar fix
abarz722 Apr 8, 2026
2b4884a
feat(ansible): skip scripts that do not exist instead of creating emp…
Y4nnikH Apr 8, 2026
29c8f1a
feat(ansible): add acquire_lock.py and release_lock.py to make execut…
Y4nnikH Apr 8, 2026
18f8c57
Update PuppeteerSharp from 21.1.1 to 24.40.0
SolidProgramming Apr 8, 2026
ed41888
fix/opt: now just once IP overlap gets checkt in getIntersections
Imat00 Apr 8, 2026
8b6923b
Merge pull request #4375 from Imat00/feat/develop-rule-owner-mapping-…
tpurschke Apr 8, 2026
ca6a125
Merge pull request #4503 from Y4nnikH/fix/ansible-set-scripts-executable
tpurschke Apr 8, 2026
97f0265
Merge pull request #4502 from SolidProgramming/chores/nuget_updates/0…
tpurschke Apr 8, 2026
e251af4
Merge remote-tracking branch 'cactus/develop' into Monitoring-Logs
Elutrixx Apr 9, 2026
f079e53
WIP monitoring logs
Elutrixx Apr 9, 2026
07ee6b7
mw import part and UI
tpurschke Apr 9, 2026
ffc2f1a
hotfix cryptography
tpurschke Apr 9, 2026
721f5a9
Merge branch 'develop' of https://github.com/CactuseSecurity/firewall…
tpurschke Apr 9, 2026
7a5c3e8
monitoring logs clean up phase 2
Elutrixx Apr 9, 2026
045b2de
fix log titles
Elutrixx Apr 9, 2026
7d00633
monitoring logs cleanup phase 3
Elutrixx Apr 9, 2026
97e76db
fix oversights in logging
Elutrixx Apr 9, 2026
87fefee
Swap logging to request classes
Elutrixx Apr 9, 2026
8fe4141
Merge pull request #4508 from tpurschke/fix/security-pip-cryptography
Y4nnikH Apr 9, 2026
de7b054
upgrade from 5.3.3 to 5.3.8
tpurschke Apr 10, 2026
f9918f1
Merge branch 'develop' of https://github.com/CactuseSecurity/firewall…
tpurschke Apr 10, 2026
3aca3bc
Merge branch 'develop' of https://github.com/CactuseSecurity/firewall…
tpurschke Apr 10, 2026
865526e
fix permissions, assign userId in scheduler notif, WorkflowRolesList …
abarz722 Apr 10, 2026
5790ff6
Merge pull request #4512 from tpurschke/chore/bootstrap-update
tpurschke Apr 10, 2026
0226aed
fix UI errors on unchanged owner saves
tpurschke Apr 11, 2026
96358bb
Merge branch 'develop' into fix/ldap-dn-logging
tpurschke Apr 11, 2026
39ad0f5
fix too broad sanitzing
tpurschke Apr 11, 2026
eb3cf6e
Merge branch 'develop' into feat/NET-3478-AppDataImport-additional-info
tpurschke Apr 11, 2026
30ca0be
Merge pull request #4491 from tpurschke/feat/NET-3478-AppDataImport-a…
tpurschke Apr 11, 2026
a5e8ec3
Merge branch 'develop' into fix/ldap-dn-logging
tpurschke Apr 11, 2026
04a1ae5
Merge pull request #4448 from tpurschke/fix/ldap-dn-logging
tpurschke Apr 11, 2026
0dbfc9d
Merge pull request #4493 from Elutrixx/Monitoring-Logs
tpurschke Apr 11, 2026
6ea0658
Merge branch 'develop' of https://github.com/CactuseSecurity/firewall…
abarz722 Apr 11, 2026
1415f39
fixes
abarz722 Apr 11, 2026
7433b5e
some fixes
abarz722 Apr 11, 2026
c35e34b
align role switch exception safe
abarz722 Apr 11, 2026
556581e
review fixes
abarz722 Apr 11, 2026
fbed459
sonar fix
abarz722 Apr 11, 2026
b5f55d6
sonar fix fix
abarz722 Apr 11, 2026
fe1da3d
adding script delete_unused_owners
tpurschke Apr 12, 2026
b74dd50
handle notification saving errors
abarz722 Apr 12, 2026
51f4e55
stop creating new api keys on upgrade
tpurschke Apr 13, 2026
36ded93
changes after review
abarz722 Apr 13, 2026
e819a77
fix hasura_metadata
abarz722 Apr 13, 2026
27c6270
upper case
abarz722 Apr 13, 2026
d4e9ed6
auditor access all owners in report
abarz722 Apr 13, 2026
488b5ba
remove obsolete delete (cascading now)
abarz722 Apr 13, 2026
fffc0e9
Merge pull request #4499 from abarz722/develop-clean
tpurschke Apr 13, 2026
068a07e
enhance owner recert report etc
abarz722 Apr 13, 2026
4f5fa66
Merge branch 'develop' of https://github.com/CactuseSecurity/firewall…
abarz722 Apr 13, 2026
1230faf
Merge branch 'develop' into fix/installer-api-fallback-new-key
tpurschke Apr 13, 2026
4905e76
Merge branch 'develop' into feat/issue-2752-delete-unused-owners
tpurschke Apr 13, 2026
ff16207
Merge pull request #4526 from tpurschke/fix/installer-api-fallback-ne…
tpurschke Apr 13, 2026
d572cbb
Merge branch 'develop' into feat/issue-2752-delete-unused-owners
tpurschke Apr 13, 2026
ec6f4d4
ignore some refs
tpurschke Apr 13, 2026
f7243eb
Merge branch 'develop' into develop-clean
abarz722 Apr 14, 2026
5de6bde
Merge pull request #4529 from abarz722/develop-clean
tpurschke Apr 14, 2026
27c894c
Merge branch 'develop' into feat/issue-2752-delete-unused-owners
tpurschke Apr 14, 2026
a4dfa36
fixes https://github.com/CactuseSecurity/firewall-orchestrator/securi…
tpurschke Apr 14, 2026
52d24d0
Merge branch 'develop' into fix/security/pytest-vulnerability
tpurschke Apr 14, 2026
b490348
Merge branch 'develop' into feat/guardicore-load-test
Y4nnikH Apr 14, 2026
31f7610
Merge pull request #4521 from tpurschke/feat/issue-2752-delete-unused…
tpurschke Apr 14, 2026
480a39e
test(scripts): refactor duplicate code
Y4nnikH Apr 14, 2026
93896ea
Merge branch 'develop' into feat/guardicore-load-test
Y4nnikH Apr 14, 2026
fb431a8
Merge pull request #4431 from Y4nnikH/feat/guardicore-load-test
tpurschke Apr 14, 2026
50d14da
Merge branch 'develop' into fix/security/pytest-vulnerability
tpurschke Apr 14, 2026
28de7ab
allow wf changes by approver
abarz722 Apr 14, 2026
966ee9a
Merge branch 'develop' of https://github.com/CactuseSecurity/firewall…
abarz722 Apr 14, 2026
77f7281
Merge pull request #4533 from tpurschke/fix/security/pytest-vulnerabi…
tpurschke Apr 14, 2026
956b483
Bump Quartz and Quartz.Serialization.Json from 3.17.1 to 3.18.0. #4532
SolidProgramming Apr 14, 2026
7fee933
Merge branch 'develop' into nuget_updates/14-04-26
SolidProgramming Apr 14, 2026
85503ff
add css spacing
SolidProgramming Apr 14, 2026
d127c12
Merge branch 'develop' into issue_4516
SolidProgramming Apr 14, 2026
b44c4a1
fixing ldap-dn normalization
tpurschke Apr 14, 2026
73cdc85
some wf fixes and hardening
abarz722 Apr 14, 2026
ae3f54f
feat: Run test install on multiple os and python versions
Laennart Feb 5, 2026
97dc211
fix: Review comments
Laennart Feb 17, 2026
3d3895f
fix: Changes
Laennart Feb 17, 2026
e758a16
fix: File formatting
Laennart Apr 14, 2026
82b48ce
chore: Upgrade ruff action to support Node 24
Laennart Apr 14, 2026
c8427f5
chore: Revert changes to normal test install
Laennart Apr 14, 2026
1bbbd49
sonar fixes
tpurschke Apr 15, 2026
d1d1b73
Merge pull request #4541 from SolidProgramming/nuget_updates/14-04-26
tpurschke Apr 15, 2026
b503ba6
Merge branch 'develop' into fix/issue-4543-role-handling
tpurschke Apr 15, 2026
1679071
2nd sonar fix attempt
tpurschke Apr 15, 2026
9d162a6
Merge branch 'develop' into issue_4516
SolidProgramming Apr 15, 2026
e6c927b
Merge pull request #4542 from SolidProgramming/issue_4516
Elutrixx Apr 15, 2026
1d2c275
Merge branch 'develop' into develop-clean
abarz722 Apr 15, 2026
7604140
sonar fix
abarz722 Apr 15, 2026
d6814f7
Merge branch 'develop' into fix/issue-4543-role-handling
tpurschke Apr 15, 2026
6925331
3rd fix sonar
tpurschke Apr 15, 2026
5d031bb
4th sonar fix
tpurschke Apr 15, 2026
767ae39
Merge remote-tracking branch 'upstream/develop' into feature/os-and-p…
Laennart Apr 15, 2026
f2fb118
fix: Review comments
Laennart Apr 15, 2026
ae2d4ae
Merge pull request #4245 from Laennart/feature/os-and-python-versions
tpurschke Apr 15, 2026
324a18e
replace: ruleViewData Customfield Methode with CustomFieldResolver me…
Imat00 Apr 15, 2026
8076265
Merge remote-tracking branch 'Cactus/develop' into task/develop-Repor…
Imat00 Apr 15, 2026
d070d9c
Merge pull request #4553 from Imat00/task/develop-ReportCompliance-Nu…
tpurschke Apr 15, 2026
880928d
Merge branch 'develop' into fix/issue-4543-role-handling
tpurschke Apr 15, 2026
e3e3527
Merge branch 'develop' into refactor/skipped-tests
tpurschke Apr 15, 2026
f17ae4d
remove agents dir
tpurschke Apr 16, 2026
b2dc61d
Merge pull request #4241 from Laennart/refactor/skipped-tests
Y4nnikH Apr 16, 2026
89e7210
Merge branch 'develop' into fix/issue-4543-role-handling
tpurschke Apr 16, 2026
7b9fa65
Merge branch 'develop' into develop-clean
abarz722 Apr 16, 2026
77f5704
Merge pull request #4551 from abarz722/develop-clean
tpurschke Apr 16, 2026
68a3ae6
Merge branch 'develop' of https://github.com/CactuseSecurity/firewall…
tpurschke Apr 17, 2026
81cd21a
fixing duplicate method
tpurschke Apr 17, 2026
32a7c85
fix empty inactive owner rules report notify
abarz722 Apr 17, 2026
82e569d
Merge branch 'develop' of https://github.com/CactuseSecurity/firewall…
abarz722 Apr 17, 2026
59a1781
Merge pull request #4546 from tpurschke/fix/issue-4543-role-handling
tpurschke Apr 17, 2026
de84e40
sonar fix
abarz722 Apr 17, 2026
2503218
Merge branch 'develop' into develop-clean
abarz722 Apr 17, 2026
83190c5
Merge branch 'develop' of https://github.com/CactuseSecurity/firewall…
abarz722 Apr 17, 2026
d5a6fe2
Merge branch 'develop-clean' of https://github.com/abarz722/firewall-…
abarz722 Apr 17, 2026
d0cd0f6
Merge pull request #4575 from abarz722/develop-clean
tpurschke Apr 17, 2026
e0a5dd0
build: update AspNetCore and MailKit deps
SolidProgramming Apr 18, 2026
cce0731
owner report first throw
abarz722 Apr 18, 2026
179f346
Merge branch 'develop' of https://github.com/CactuseSecurity/firewall…
abarz722 Apr 18, 2026
faf54b9
feat(importer): include tz in normalized time objects
Y4nnikH Apr 20, 2026
98df3b2
fix(report): use DateTimeOffset in display rule time
Y4nnikH Apr 20, 2026
2ae153c
remove duplicate agents submodule
Y4nnikH Apr 20, 2026
cc3bd6e
Merge pull request #4580 from SolidProgramming/nuget_updates/18-04-26
Y4nnikH Apr 20, 2026
5adf80f
align template parameters to sidebar + fixes
abarz722 Apr 20, 2026
6bd80c8
test fixes
abarz722 Apr 20, 2026
9f7a688
Merge branch 'develop' of https://github.com/CactuseSecurity/firewall…
abarz722 Apr 20, 2026
386b880
sonar fixes
abarz722 Apr 20, 2026
9b269ce
more tests
abarz722 Apr 20, 2026
6914ebc
feat(importer): convert time obj times to utc always
Y4nnikH Apr 21, 2026
9a6e1b3
fix(middleware): include correct tz in get normalized config
Y4nnikH Apr 21, 2026
02b784e
fix(middleware): convert time obj tz to utc in normalized config
Y4nnikH Apr 21, 2026
18d0e39
fix(importer): add validation for rule last_hit format and ensure UTC…
Y4nnikH Apr 21, 2026
6410984
fix(UI): Edit policy layout
SolidProgramming Apr 21, 2026
ca8d5a9
fix(UI): popup reappears when closed with X and changing Report Type
SolidProgramming Apr 21, 2026
8c96969
fix: Strange X-button behaviour
SolidProgramming Apr 21, 2026
ff66fbc
fix(middleware): include tz in rule lastHit
Y4nnikH Apr 21, 2026
3d8c3e5
fix(middleware): handle last_hit being without tz
Y4nnikH Apr 21, 2026
b3e1354
fix(middleware): normalized config tz with colon
Y4nnikH Apr 21, 2026
ec50a7a
Merge branch 'develop' into fix/import-time-object-tz
Y4nnikH Apr 21, 2026
28ba925
test(cs unit): fix test
Y4nnikH Apr 21, 2026
0cbd8c8
fix(importer): write correct last_hit tz for forti
Y4nnikH Apr 21, 2026
b937ec6
feat: update version to 9.0.21 and document recent changes
Y4nnikH Apr 21, 2026
92d3f75
Merge pull request #4588 from Y4nnikH/fix/import-time-object-tz
Y4nnikH Apr 21, 2026
732ea3c
Bump Microsoft.AspNetCore.Components from 10.0.6 to 10.0.7
SolidProgramming Apr 22, 2026
f6af5a6
harmonize report visibility + fixes
abarz722 Apr 22, 2026
262fc53
authorization compliance pages
abarz722 Apr 22, 2026
76ba868
Merge branch 'develop' of https://github.com/CactuseSecurity/firewall…
abarz722 Apr 22, 2026
e156ee3
Merge branch 'develop' into fix/issue_4585
SolidProgramming Apr 22, 2026
5f6489b
Merge pull request #4587 from SolidProgramming/fix/issue_4585
SolidProgramming Apr 22, 2026
d491ddb
Merge branch 'develop' into nuget_updates/22-04-24
SolidProgramming Apr 22, 2026
cedeaab
Merge branch 'develop' into fix/issue_4369
SolidProgramming Apr 22, 2026
8f3861a
Merge branch 'develop' into fix/issue_4186
SolidProgramming Apr 22, 2026
0f5eccf
Merge branch 'develop' into develop-clean
abarz722 Apr 22, 2026
e4a21c9
remove agents folder
SolidProgramming Apr 22, 2026
7046fff
Merge branch 'fix/issue_4186' of https://github.com/SolidProgramming/…
SolidProgramming Apr 22, 2026
3f944ef
remove agents folder
SolidProgramming Apr 22, 2026
5ac5eef
remove agents folder
SolidProgramming Apr 22, 2026
209b565
Merge pull request #4594 from SolidProgramming/nuget_updates/22-04-24
SolidProgramming Apr 23, 2026
c78164b
Merge branch 'develop' into fix/issue_4369
SolidProgramming Apr 23, 2026
770c03c
Merge branch 'develop' into fix/issue_4186
SolidProgramming Apr 23, 2026
174687f
fixes owner + device selections, report visibility, hardening
abarz722 Apr 23, 2026
07e9df2
Merge branch 'develop' of https://github.com/CactuseSecurity/firewall…
abarz722 Apr 23, 2026
bac6d2b
Merge branch 'develop-clean' of https://github.com/abarz722/firewall-…
abarz722 Apr 23, 2026
6e5d60c
Merge pull request #4586 from SolidProgramming/fix/issue_4369
SolidProgramming Apr 23, 2026
28fd2e8
Merge branch 'develop' into fix/issue_4186
SolidProgramming Apr 23, 2026
183fc49
Merge pull request #4584 from SolidProgramming/fix/issue_4186
SolidProgramming Apr 23, 2026
0360a34
Merge branch 'develop' of https://github.com/CactuseSecurity/firewall…
abarz722 Apr 23, 2026
9d2034d
Merge pull request #4583 from abarz722/develop-clean
abarz722 Apr 24, 2026
4c89309
Notification language, missing objects, fix docu
abarz722 Apr 24, 2026
7a49d6e
Merge branch 'develop' of https://github.com/CactuseSecurity/firewall…
abarz722 Apr 24, 2026
8f81c6e
review fixes
abarz722 Apr 24, 2026
a76d8ca
Enhance Ticket Changes Report
abarz722 Apr 24, 2026
2d97b3d
fix(importer): cp timestamps
Y4nnikH Apr 26, 2026
8bba3cb
feat(importer): always log change details
Y4nnikH Apr 26, 2026
da9f8a1
fix(api calls): add missing active filter for time objs in rule details
Y4nnikH Apr 26, 2026
993ecd6
Merge pull request #4604 from abarz722/develop-clean
Y4nnikH Apr 26, 2026
dd7df55
test(importer): fix tests
Y4nnikH Apr 26, 2026
3fd4b88
Merge branch 'develop' into fix/time-zone-inconsistencies
Y4nnikH Apr 26, 2026
2a0bbd0
feat: version 9.0.22
Y4nnikH Apr 26, 2026
e12aa1a
fix(db): table owner permission for role middleware
Y4nnikH Apr 26, 2026
32a01ed
fix(importer): time object
Y4nnikH Apr 26, 2026
e694031
Merge pull request #4607 from Y4nnikH/fix/time-zone-inconsistencies
Y4nnikH Apr 26, 2026
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 .agents
Submodule .agents added at c677fd
File renamed without changes.
18 changes: 18 additions & 0 deletions .editorconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# top-level editorconfig file
# should be the same file as the one for solution in roles directory

root = true

[*]
end_of_line = lf
insert_final_newline = true
charset = utf-8

[*.cs]
indent_style = space
indent_size = 4
trim_trailing_whitespace = false

[*.razor]
indent_style = space
indent_size = 4
4 changes: 4 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
Expand Up @@ -23,3 +23,7 @@ roles/sample-data-connect-sting/** -linguist-detectable
roles/sample-data/** -linguist-detectable
roles/test/** -linguist-detectable
#############################################################

# Git canonical EOL policy
* text=auto eol=lf

2 changes: 2 additions & 0 deletions .githooks/post-checkout
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
#!/usr/bin/env bash
"$(dirname "$0")/submodule-sync"
2 changes: 2 additions & 0 deletions .githooks/post-merge
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
#!/usr/bin/env bash
"$(dirname "$0")/submodule-sync"
2 changes: 2 additions & 0 deletions .githooks/post-rewrite
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
#!/usr/bin/env bash
"$(dirname "$0")/submodule-sync"
87 changes: 87 additions & 0 deletions .githooks/pre-commit
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
#!/usr/bin/env bash
set -euo pipefail

VENV_BIN=""

# Load config file
CONFIG_FILE=".githooks/tooling.env"
set -a
source "$CONFIG_FILE"
set +a

if [ -d ".venv/Scripts" ]; then
# Using virtual environment from .venv (Windows)
VENV_BIN=".venv/Scripts/"
source ".venv/Scripts/activate"
elif [ -d ".venv/bin" ]; then
# Using virtual environment from .venv (Unix)
VENV_BIN=".venv/bin/"
source ".venv/bin/activate"
elif command -v conda >/dev/null 2>&1; then
# Using conda
CONDA_BASE="$(conda info --base)"
source "$CONDA_BASE/etc/profile.d/conda.sh"
conda activate "$CONDA_ENV"
if [ -d "$CONDA_PREFIX/Scripts" ]; then
# Conda Windows
VENV_BIN="$CONDA_PREFIX/Scripts/"
else
# Conda Unix
VENV_BIN="$CONDA_PREFIX/bin/"
fi
fi

if [ -z "$VENV_BIN" ]; then
echo "Warning: No virtual environment found. Assuming python (with ruff and pyright) is available in base environment."
fi

# Assure dotnet and python are available
UNAVAILABLE_DEPENDENCIES=false
for cmd in "dotnet" "python"; do
command -v "$cmd" >/dev/null 2>&1 || {
echo "Error: '$cmd' not found. Please install it or activate your environment."
UNAVAILABLE_DEPENDENCIES=true
}
done
if $UNAVAILABLE_DEPENDENCIES; then
exit 1;
fi

PYTHON_PATH="$(command -v python)"

# Assure ruff and pyright are available
for python_tool in ruff pyright; do
if ! "$PYTHON_PATH" -m "$python_tool" --version >/dev/null 2>&1; then
echo "Error: 'python -m $python_tool' is not available. Please install $python_tool in the active environment."
exit 1
fi
done

# Python Checks
"$PYTHON_PATH" -m ruff check --fix
"$PYTHON_PATH" -m ruff format
"$PYTHON_PATH" -m pyright

# Determine changed Dotnet files
STAGED_ROLES_DOTNET_FORMAT_FILES=()
while IFS= read -r -d '' staged_file; do
case "$staged_file" in
roles/*.cs|roles/*.razor|roles/*.cshtml)
STAGED_ROLES_DOTNET_FORMAT_FILES+=("${staged_file#roles/}")
;;
esac
done < <(git diff --cached --name-only -z --diff-filter=ACMR -- '*.cs' '*.razor' '*.cshtml')

# If any Dontet files have been changed run
# Dotnet checks
if [ "${#STAGED_ROLES_DOTNET_FORMAT_FILES[@]}" -gt 0 ]; then
dotnet format roles --no-restore --include "${STAGED_ROLES_DOTNET_FORMAT_FILES[@]}"
fi

# Prevent committing submodule pointer updates (auto-unstage)
for submodule in $CHECK_SUBMODULE_POINTERS; do
if ! git diff --cached --quiet --ignore-submodules=none -- "$submodule"; then
echo "Info: Unstaging '$submodule' submodule pointer change (not allowed in commits)."
git restore --staged -- "$submodule" >/dev/null 2>&1
fi
done
71 changes: 71 additions & 0 deletions .githooks/submodule-sync
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
#!/usr/bin/env bash
set -euo pipefail

# Sync submodules quietly after common Git operations.

# Resolve repository root; bail out if not inside a Git repo.
repo_root="$(git rev-parse --show-toplevel 2>/dev/null || true)"
if [[ -z "${repo_root}" ]]; then
exit 0
fi

cd "${repo_root}"

# No submodules configured.
if [[ ! -f .gitmodules ]]; then
exit 0
fi

# No submodule paths registered in .gitmodules.
if ! git config --file .gitmodules --get-regexp '^submodule\..*\.path$' >/dev/null 2>&1; then
exit 0
fi

# Disable prompts and keep this hook silent for users without repo access.
export GIT_TERMINAL_PROMPT=0
export GIT_ASKPASS=/bin/true
export GIT_SSH_COMMAND="ssh -o BatchMode=yes"

run_quiet() {
# Ignore failures to avoid blocking normal Git operations.
"$@" >/dev/null 2>&1 || true
}

# Initialize submodules first so each path exists.
run_quiet git submodule update --init --recursive

# Iterate configured submodules to ensure we are on a branch (not detached).
while read -r key path; do
# Convert `submodule.<name>.path` -> `<name>`.
name="${key#submodule.}"
name="${name%.path}"

# Skip if the submodule path is missing or not initialized.
if [[ ! -d "${path}" ]]; then
continue
fi

# Skip if the path is not a Git repo.
if ! git -C "${path}" rev-parse --git-dir >/dev/null 2>&1; then
continue
fi

# Prefer repo-local submodule.<name>.branch, fallback to .gitmodules.
branch="$(git config --get "submodule.${name}.branch" || true)"
if [[ -z "${branch}" ]]; then
branch="$(git config --file .gitmodules --get "submodule.${name}.branch" || true)"
fi

if [[ -n "${branch}" ]]; then
# Try to checkout the branch if it already exists locally.
run_quiet git -C "${path}" checkout -q "${branch}"

# If still detached, create/reset the branch from origin.
if ! git -C "${path}" symbolic-ref -q HEAD >/dev/null 2>&1; then
run_quiet git -C "${path}" checkout -q -B "${branch}" "origin/${branch}"
fi
fi
done < <(git config --file .gitmodules --get-regexp '^submodule\..*\.path$')

# Move submodules to the newest commit on their tracking branch, merging instead of detaching.
run_quiet git submodule update --remote --merge --recursive
2 changes: 2 additions & 0 deletions .githooks/tooling.env
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
CONDA_ENV=fwo
CHECK_SUBMODULE_POINTERS=".agents"
9 changes: 9 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -1,8 +1,17 @@
version: 2

registries:
private-github:
type: git
url: https://github.com
username: x-access-token
password: ${{ secrets.PRIVATE_SUBMODULE_TOKEN }}

updates:
- package-ecosystem: "nuget"
directory: "/roles/"
target-branch: "develop"
schedule:
interval: "daily"
registries:
- private-github
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
name: Sync develop to importer-rework

on:
push:
branches: [develop]

permissions:
contents: write
pull-requests: write

jobs:
sync-branches:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0

- name: Set up Git
run: |
git config --global user.name "github-actions[bot]"
git config --global user.email "github-actions[bot]@users.noreply.github.com"

- name: Ensure "automation" label exists
run: |
gh label create automation \
--color "0e8a16" \
--description "Automatically created for syncing branches" \
--force
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}

- name: Compute ahead/behind
id: ab
run: |
git fetch origin develop importer-rework
read behind ahead < <(git rev-list --left-right --count origin/importer-rework...origin/develop)
echo "ahead=$ahead" >> $GITHUB_OUTPUT
echo "behind=$behind" >> $GITHUB_OUTPUT
# rev-list separates counts with a TAB. :contentReference[oaicite:2]{index=2}

- name: Push sync branch (mirror develop)
if: steps.ab.outputs.ahead != '0'
run: |
BR=bot/sync-develop-into-importer-rework
git checkout -B "$BR" origin/develop
git push -f origin "HEAD:$BR"

- name: Check for existing PR (sync branch → importer-rework)
id: pr_check
if: steps.ab.outputs.ahead != '0'
run: |
existing_pr=$(gh pr list \
--base importer-rework \
--head bot/sync-develop-into-importer-rework \
--state open \
--json number \
--jq '.[0].number // empty')
echo "existing_pr=$existing_pr" >> $GITHUB_OUTPUT
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}

- name: Create PR from sync branch to importer-rework
if: steps.ab.outputs.ahead != '0' && steps.pr_check.outputs.existing_pr == ''
run: |
gh pr create \
--base importer-rework \
--head bot/sync-develop-into-importer-rework \
--title "Sync develop → importer-rework" \
--body "Auto-sync from \`develop\` via sync branch." \
--label automation
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}

# OPTIONAL: Automatically merge the PR if all checks pass
# - name: Auto-merge PR
# if: steps.pr_check.outputs.existing_pr != ''
# run: |
# gh pr merge "${{ steps.pr_check.outputs.existing_pr }}" --merge --admin
# env:
# GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
48 changes: 48 additions & 0 deletions .github/workflows/full-test-install.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
name: Full Test Install

on:
push:
branches:
- main

jobs:
test-install:
name: Test install on ${{ matrix.os }} with Python ${{ matrix.python-version }}
runs-on: ${{ matrix.os }}
env:
RUNNING_ON_GITHUB_ACTIONS: true
strategy:
fail-fast: false
matrix:
os: [ubuntu-24.04, ubuntu-22.04]
python-version: ['3.10', '3.11', '3.12', '3.13', '3.14']
steps:
- uses: actions/checkout@v6

- uses: actions/setup-dotnet@v5
with:
dotnet-version: '8.0.x'

- uses: actions/setup-python@v6
with:
python-version: ${{ matrix.python-version }}

- name: Install dependencies
run: |
sudo apt update
sudo DEBIAN_FRONTEND=noninteractive apt install build-essential ldap-utils libldap2-dev libsasl2-dev -y
python -m pip install ansible psycopg2-binary python-ldap requests

- name: Run Ansible test install
run: |
cd ${{ github.workspace }}
ansible-playbook -e force_install=true -e "ansible_python_interpreter=$(which python)" site.yml -K

- name: Running in GitHub actions requires testing puppeteer pdf creation separately
if: ${{ env.RUNNING_ON_GITHUB_ACTIONS == 'true' }}
run: |
cd ${{ github.workspace }}/roles/tests-unit/files/FWO.Test
dotnet restore
dotnet build
dotnet test --filter "Name=HtmlToPdfTest"

Loading