Andras Bacsai
c6c7ec1c31
fix(security): validate application domains safely
...
Use shared domain validation and normalization for application, service, and
preview domains so unsafe host input is rejected consistently.
Cover command-substitution payloads in application domain tests.
2026-07-02 17:47:04 +02:00
Andras Bacsai
062ad57740
fix(security): enforce team access on mutable actions
...
Authorize cloud provider token access, audit sensitive operations, and
standardize public IDs across deployment and resource flows.
2026-06-04 11:03:06 +02:00
Andras Bacsai
6ab88c46b2
Merge remote-tracking branch 'origin/next' into audit-policies
2026-05-13 11:15:29 +02:00
Andras Bacsai
63c2d31ca0
feat(applications): add configurable stop grace period
...
Add centralized stop grace period resolution for application settings and use it across manual stops, preview stops, and deployments. Validate the Livewire advanced setting against shared min/max constants and cover persistence, fillable creation, and fallback behavior with tests.
2026-05-11 23:43:53 +02:00
Hendrik Kleinwaechter
60d8aba323
feat: configurable stop grace period for applications
...
Adds stop_grace_period to application settings (seconds, 1-3600, default 30).
Used in place of the hardcoded docker stop -t 30 in the four places that
stop application containers: rolling update shutdown, manual stop, stop on
another server, and preview deployment stop.
Non-positive values fall back to the default via ($val > 0) ? $val : default,
with tests covering 0 and -10 so the cast does not blow up if a bad value
ever lands in the db.
Picks up Jack Coy's work from #7125 which went dormant. His commits are
squashed here with credit below.
Co-authored-by: Jack Coy <jackman3000@gmail.com>
2026-04-22 21:18:18 +02:00
Andras Bacsai
43f33d94ad
Merge remote-tracking branch 'origin/next' into audit-policies
...
# Conflicts:
# app/Http/Controllers/Api/SecurityController.php
# app/Http/Controllers/Api/ServersController.php
# app/Livewire/Admin/Index.php
# app/Livewire/Destination/Show.php
# app/Livewire/NavbarDeleteTeam.php
# app/Livewire/Project/Application/Previews.php
# app/Livewire/Project/DeleteProject.php
# app/Livewire/Project/Shared/ResourceOperations.php
# app/Livewire/Server/Resources.php
# app/Livewire/Server/ValidateAndInstall.php
# app/Livewire/Storage/Show.php
# resources/views/livewire/dashboard.blade.php
# resources/views/livewire/project/application/heading.blade.php
# resources/views/livewire/project/database/heading.blade.php
# resources/views/livewire/project/service/heading.blade.php
# resources/views/livewire/project/shared/environment-variable/show.blade.php
# resources/views/livewire/project/shared/scheduled-task/show.blade.php
# tests/Feature/Security/TrustHostsMiddlewareTest.php
2026-04-19 15:19:37 +02:00
Andras Bacsai
1a603a10ed
fix(models): replace forceFill/forceCreate with fill/create and add fillable guards
...
Replace all uses of `forceFill`, `forceCreate`, and `forceFill` with their
non-force equivalents across models, actions, controllers, and Livewire
components. Add explicit `$fillable` arrays to all affected Eloquent models
to enforce mass assignment protection.
Add ModelFillableCreationTest and ModelFillableRegressionTest to verify that
model creation respects fillable constraints and prevent regressions.
2026-03-31 13:45:31 +02:00
Andras Bacsai
61f47cc7ee
feat(deployments): support Docker image tags for preview deployments
...
Add end-to-end support for `docker_registry_image_tag` in preview and deployment queue flows.
- Extend deploy API to accept `pull_request_id` alias and `docker_tag` for preview deploys
- Persist preview-specific Docker tags on `application_previews` and `application_deployment_queues`
- Pass tag through `queue_application_deployment()` and de-duplicate queued jobs by tag
- Update deployment job logic to resolve and use preview Docker tags for dockerimage build packs
- Update Livewire previews UI/state to manage per-preview tags and manual preview/tag inputs
- Add migration for new tag columns and model fillable/casts updates
- Add feature and unit tests covering API behavior and tag resolution
2026-03-30 13:35:35 +02:00
Andras Bacsai
1da1f32f0e
refactor: use forceCreate() for internal model creation
...
Replace create() with forceCreate() across internal model creation operations to bypass mass assignment protection. This is appropriate for internal code that constructs complete model state without user input.
Add InternalModelCreationMassAssignmentTest to ensure internal model creation behavior is properly tested. Optimize imports by using shortened Livewire attribute references and removing unused imports.
2026-03-30 13:04:11 +02:00
Andras Bacsai
86b05b902a
fix(auth): enforce authorization checks across API and Livewire components
...
- Add authorization checks to API controller endpoints (view, create, update, delete)
- Wrap Livewire component methods with try-catch for consistent error handling
- Add AuthorizesRequests trait to components requiring authorization checks
- Ensure all sensitive operations verify user permissions before execution
- Implement unified error handling with handleError() helper function
2026-02-25 14:20:29 +01:00
Andras Bacsai
6d16f52143
Add deployment queue limit to prevent queue bombing
...
- Add configurable deployment_queue_limit server setting (default: 25)
- Check queue size before accepting new deployments
- Return 429 status for webhooks/API when queue is full (allows retry)
- Show error toast in UI when queue limit reached
- Add UI control in Server Advanced settings
Fixes #6708
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-04 13:52:27 +01:00
ShadowArcanist
9620455be0
Merge branch 'next' into shadow/fix-docker-time-command
2025-10-17 18:52:40 +05:30
Andras Bacsai
f77ad4cbd9
Complete Livewire legacy model binding migration (25+ components)
...
This completes the migration from Livewire's legacy `id="model.property"`
pattern to explicit properties with manual synchronization. This allows
disabling the `legacy_model_binding` feature flag.
**Components Migrated (Final Session - 9 components):**
- Server/Proxy.php (1 field)
- Service/EditDomain.php (1 field) - Fixed Collection/string bug & parent sync
- Application/Previews.php (2 fields - array handling)
- Service/EditCompose.php (4 fields)
- Service/FileStorage.php (6 fields)
- Service/Database.php (7 fields)
- Service/ServiceApplicationView.php (10 fields)
- Application/General.php (53 fields) - LARGEST migration
- Application/PreviewsCompose.php (1 field)
**Total Migration Summary:**
- 25+ components migrated across all phases
- 150+ explicit properties added
- 0 legacy bindings remaining (verified via grep)
- All wire:model, id, @entangle bindings updated
- All updater hooks renamed (updatedApplicationX → updatedX)
**Technical Changes:**
- Added explicit public properties (camelCase)
- Implemented syncData(bool $toModel) bidirectional sync
- Updated validation rules (removed model. prefix)
- Updated all action methods (mount, submit, instantSave)
- Fixed updater hooks: updatedBuildPack, updatedBaseDirectory, updatedIsStatic
- Updated Blade views (id & wire:model bindings)
- Applied Collection/string confusion fixes
- Added model refresh + re-sync pattern
**Critical Fixes:**
- EditDomain.php Collection/string confusion (use intermediate variables)
- EditDomain.php parent component sync (refresh + re-sync after save)
- General.php domain field empty (syncData at end of mount)
- General.php wire:model bindings (application.* → property)
- General.php updater hooks (wrong naming convention)
**Files Modified:** 34 files
- 17 PHP Livewire components
- 17 Blade view templates
- 1 MIGRATION_REPORT.md (documentation)
**Ready to disable legacy_model_binding flag in config/livewire.php**
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-13 15:38:59 +02:00
ShadowArcanist
b39690dfa2
Changed docker --time command to -t since --time is deprecated on v28
2025-10-09 13:26:10 +05:30
Andras Bacsai
0db2835565
fix(application): add functionality to stop and remove Docker containers on server
2025-09-11 12:39:28 +02:00
Andras Bacsai
a7671ed379
refactor(dns-validation): rename DNS validation functions for consistency and clarity, and remove unused code
2025-09-09 09:00:35 +02:00
Andras Bacsai
80499a03d8
feat(domains): implement domain conflict detection and user confirmation modal across application components
2025-08-28 10:52:41 +02:00
Andras Bacsai
e0aa28ba31
refactor(domains): rename check_domain_usage to checkDomainUsage and update references across the application
2025-08-28 10:00:19 +02:00
Andras Bacsai
63fcc0ebc3
feat(acl): Change views/backend code to able to use proper ACL's later on. Currently it is not enabled.
2025-08-26 10:27:38 +02:00
Andras Bacsai
40f108d6e1
feat(auth): implement authorization checks for application management
2025-08-22 16:47:59 +02:00
Andras Bacsai
13f10028db
feat(previews): implement soft delete and cleanup for ApplicationPreview, enhancing resource management in DeleteResourceJob
2025-07-14 21:17:40 +02:00
Andras Bacsai
5bdf2e8481
refactor(previews): move preview domain generation logic to ApplicationPreview model for better encapsulation and consistency across webhook handlers
2025-07-14 19:12:57 +02:00
Andras Bacsai
6d94aaf0f8
refactor(previews): streamline preview URL generation by utilizing application method
2025-07-07 13:14:45 +02:00
Andras Bacsai
1704a25a24
fix(previews): escape container names in stopContainers method to prevent shell injection vulnerabilities
2025-06-04 09:11:08 +02:00
Andras Bacsai
200b5cd4fb
refactor(service-management): enhance container stopping logic by implementing parallel processing and removing deprecated methods
2025-05-30 12:56:22 +02:00
Andras Bacsai
9f06e7193e
feat(previews): add force deploy without cache functionality and update deploy method to accept force rebuild parameter
2025-05-30 10:09:13 +02:00
Andras Bacsai
e062edb689
refactor(core): streamline container stopping process and reduce timeout duration; update related methods for consistency
2025-04-30 15:28:59 +02:00
Andras Bacsai
d075241289
feat(Deployment): enhance queue_application_deployment to handle existing deployments and return appropriate status messages
2025-04-11 15:27:56 +02:00
Andras Bacsai
1fe4dd722b
Revert "rector: arrrrr"
...
This reverts commit 16c0cd10d8 .
2025-01-07 15:31:43 +01:00
Andras Bacsai
16c0cd10d8
rector: arrrrr
2025-01-07 14:52:08 +01:00
peaklabs-dev
277fd78769
new uuid routes
2024-11-22 16:03:20 +01:00
Lucas Michot
702ee5cd70
Prefer Carbon methods when possible.
2024-10-31 16:47:08 +01:00
Andras Bacsai
b570ccd7d3
format
2024-09-23 19:51:31 +02:00
Andras Bacsai
5ec45d547a
Merge branch 'next' into fix-#2546-deletion-issues
2024-09-18 18:05:06 +02:00
ayntk-ai
fc3c69f687
Feat: more conformations and fixes
2024-09-05 17:54:32 +02:00
Andras Bacsai
4a64374bb3
fix: preview fqdn generation
2024-08-29 12:50:04 +02:00
andrasbacsai
96c4f5b8da
Fix styling
2024-07-25 11:31:59 +00:00
Andras Bacsai
6a4aa492c0
fix: random generated uuid will be full length (not 7 characters)
2024-07-25 13:31:01 +02:00
Andras Bacsai
fcb3d71cb4
feat: add high priority queue
2024-06-20 14:52:12 +02:00
andrasbacsai
2e01665340
Fix styling
2024-06-12 10:21:47 +00:00
Andras Bacsai
019cdd2b3a
fix: compose generator
2024-06-12 12:20:58 +02:00
Thijmen
d86274cc37
Fix styling
2024-06-10 20:43:34 +00:00
Andras Bacsai
7fd0deedb1
feat: able to add several domains to compose based previews
2024-06-05 15:14:44 +02:00
Andras Bacsai
68d3cea528
fix: multiple server deployments
...
feat: custom preview deployment fqdn
ui: improvements here and there
2024-05-30 12:28:29 +02:00
Andras Bacsai
561e424a7d
feat: dashboard live deployment view
2024-01-27 18:44:40 +01:00
Andras Bacsai
e7cafe6850
fix: restrict concurrent deployments per server
2024-01-25 08:36:47 +01:00
Andras Bacsai
381e24bea5
fix: git pull command for deploy key based previews
2024-01-16 15:45:19 +01:00
Andras Bacsai
4c3907c296
refactor routes
2024-01-07 16:23:41 +01:00
Andras Bacsai
f03aa57758
fix: routing, switch back to old one
2023-12-27 16:45:01 +01:00
Andras Bacsai
62c38c9859
wip: swarm
2023-12-18 14:01:25 +01:00