Commit graph

225 commits

Author SHA1 Message Date
Andras Bacsai
800396b443 feat: add S3 storage integration for file import
This commit introduces functionality for integrating S3 storage into the import process. It allows users to select S3 storage, check for file existence, and download files directly from S3. This enhancement improves the flexibility of the import feature by enabling users to work with files stored in S3, addressing a common use case for teams that utilize cloud storage solutions.
2025-11-14 10:43:19 +01:00
Andras Bacsai
64c7d301ce feat(DatabaseBackupJob, ScheduledTaskJob): enforce minimum timeout and add execution ID for timeout handling 2025-11-11 12:07:39 +01:00
Andras Bacsai
9d0d8c6729 Fix loading icon showing during automatic status checks
The loading icon was appearing during automatic background status checks
(every 10 seconds) even when users didn't click anything, which caused
confusion and made it seem like something was running unexpectedly.

Changes:
- Added manualCheckStatus() method to Application, Database, and Service
  Heading components that wraps the checkStatus() call
- Updated status component buttons to call manualCheckStatus() instead
  of checkStatus()
- Added wire:target="manualCheckStatus" to loading directives so the
  loading icon only appears when users explicitly click the refresh button
- Added delay.shortest to prevent flickering on fast operations

The automatic wire:poll.10000ms="checkStatus" now runs silently in the
background without showing the loading icon, while manual refreshes
still provide visual feedback to the user.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-24 12:58:52 +02:00
Andras Bacsai
837a0f4545 Merge branch 'next' into andrasbacsai/livewire-model-binding
Resolved merge conflicts between Livewire model binding refactoring and UI/CSS updates from next branch. Key integrations:

- Preserved unique HTML ID generation for form components
- Maintained wire:model bindings using $modelBinding
- Integrated new wire:dirty.class styles (border-l-warning pattern)
- Kept both syncData(true) and validateDockerComposeForInjection in StackForm
- Merged security tests and helper improvements from next

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-16 11:05:29 +02:00
Andras Bacsai
e20327b9c4 fix: add authorization checks to database Livewire components
Added authorization checks to 11 database-related Livewire components
that were loading sensitive database configuration without verifying
user permissions.

Changes:
- Added authorize('view', $database) to all 8 database type General.php mount() methods
- Added authorization to Configuration.php before loading database
- Added authorization to BackupEdit.php before loading backup config
- Added authorization to Import.php before loading database resource

This prevents unauthorized users from accessing database credentials,
connection strings, and configuration details.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-14 17:33:42 +02:00
Andras Bacsai
74c70b431c fix: prevent TypeError in database General components with null server
Nullable server + guard to avoid TypeError/NPE. Don't terminate the app, terminate the bug.

Changes:
- Made Server property nullable (?Server $server = null) in all 8 database General components
- Added guard clause in mount() to check for null server before accessing it
- Displays user-friendly error message when destination server is not configured
- Prevents crashes in methods like isLogDrainEnabled() and sslCertificates()

Fixed components:
- Mariadb, Dragonfly, Clickhouse, Keydb
- Mysql, Mongodb, Redis, Postgresql

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-14 17:04:48 +02:00
Andras Bacsai
a15ab54495 refactor: migrate database components from legacy model binding to explicit properties
- Remove global 'refresh' event listeners from all database General components
- Migrate Redis, MySQL, MariaDB, MongoDB, PostgreSQL, and KeyDB components to use explicit public properties instead of wire:model="database.field"
- Implement syncData() method in each component for manual data synchronization between properties and Eloquent models
- Update all validation rules, messages, and attributes to reference new property names
- Update Blade views to bind inputs to explicit properties (e.g., id="name" instead of id="database.name")
- Prepare codebase for disabling Livewire's legacy_model_binding configuration option

This refactoring resolves form field reset issues caused by global refresh events
and follows Livewire 3 best practices for component property management.
2025-10-13 10:01:17 +02:00
Andras Bacsai
f4e5c195fe refactor: replace direct SslCertificate queries with server relationship methods for consistency 2025-10-09 17:00:05 +02:00
Andras Bacsai
2c64136503 feat(backup): enhance backup job with S3 upload handling and notifications
- Introduced a new notification class, BackupSuccessWithS3Warning, to alert users when local backups succeed but S3 uploads fail.
- Updated DatabaseBackupJob to track local backup success and handle S3 upload errors, improving error reporting and user notifications.
- Modified ScheduledDatabaseBackupExecution model to include a new s3_uploaded boolean field for tracking S3 upload status.
- Adjusted views and validation logic to reflect changes in backup execution status and S3 handling.
- Added tests to ensure the new s3_uploaded column is correctly implemented and validated.
2025-10-07 15:02:23 +02:00
Andras Bacsai
133e72336a Revert "refactor(file-transfer): replace base64 encoding with direct file transfer method in various components for improved clarity and efficiency"
This reverts commit feacedbb04.
2025-09-15 17:56:48 +02:00
Andras Bacsai
feacedbb04 refactor(file-transfer): replace base64 encoding with direct file transfer method in various components for improved clarity and efficiency 2025-09-09 11:10:38 +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
adb8f9d88e feat(auth): implement authorization checks for database management 2025-08-23 18:50:35 +02:00
Andras Bacsai
5c4a265542 refactor(validation): implement centralized validation patterns across components
- Introduced `ValidationPatterns` class to standardize validation rules and messages for various fields across multiple components.
- Updated components including `General`, `StackForm`, `Create`, and `Show` to utilize the new validation patterns, ensuring consistent validation logic.
- Enhanced error messages for required fields and added regex validation for names and descriptions to improve user feedback.
- Adjusted styling in the `create.blade.php` view for better visual hierarchy.
2025-08-19 14:15:31 +02:00
Andras Bacsai
5cfe6464aa fix(database): conditionally set started_at only if the database is running 2025-08-18 12:09:58 +02:00
Andras Bacsai
0dada987a2 feat(backup): add disable local backup option and related logic for S3 uploads 2025-08-17 12:34:20 +02:00
🏔️ Peak
e5e1bdcd4d
fix(backups): large database backups are not working (#6217) 2025-07-18 15:47:14 +02:00
Andras Bacsai
0b84792871 feat(deployment): add pull request filtering and pagination to deployment and backup execution components
fix(ui): make them more stylish yeah
2025-07-13 12:36:53 +02:00
Nathan James
4d2910e740
Merge branch 'coollabsio:next' into next 2025-07-04 16:07:31 +01:00
Nathan James
4c4b115008
Correct Typo: 'form' -> 'from' 2025-07-04 16:06:53 +01:00
Andras Bacsai
4c887a3126 fix(database-heading): simplify stop database message for clarity 2025-06-05 13:33:02 +02:00
Andras Bacsai
b0e33eb59d fix(application-management): improve stop messages for application, database, and service to enhance clarity and formatting 2025-05-30 14:04:43 +02:00
peaklabs-dev
cb41670af9
refactor(ui): show toast when server does not work and on stop 2025-05-20 15:22:13 +02:00
Andras Bacsai
9c3817ee14 fix(deploy): update resource timestamp handling in deploy_resource method 2025-05-20 11:15:31 +02:00
Andras Bacsai
786bfa960f improvement(core): simplify events for app/db/service status changes 2025-05-19 21:50:32 +02:00
Andras Bacsai
daefe28fd8 fix(database): include DatabaseStatusChanged event in activityMonitor dispatch 2025-05-19 13:46:52 +02:00
Andras Bacsai
365bf3cbf0 fix(dev): mount points?! 2025-05-03 09:59:42 +02:00
Andras Bacsai
fe24296de7 feat(backup): implement custom database type selection and enhance scheduled backups management 2025-04-30 16:44:44 +02:00
Andras Bacsai
f31624c6eb fix(General): change redis_password property to nullable string 2025-04-06 21:13:15 +02:00
Andras Bacsai
d6d1c9ad82 feat(database): add CA certificate generation for database servers 2025-03-31 14:02:15 +02:00
Andras Bacsai
3be6be4c1b refactor(database): require PEM key file for SSL certificate regeneration 2025-03-27 10:02:25 +01:00
Andras Bacsai
1857a54d92 refactor(database): update import statements for Auth in database components 2025-03-26 18:31:42 +01:00
Andras Bacsai
44bf3f4ee3 refactor(database): streamline event listeners in Redis General component 2025-03-26 18:30:52 +01:00
Andras Bacsai
d7ded7f8e5 refactor(database): enhance SSL configuration handling for various databases 2025-03-26 17:24:46 +01:00
Andras Bacsai
950acffe0b refactor(database): streamline SSL configuration handling across database types 2025-03-17 15:15:54 +01:00
Andras Bacsai
009cee1bbd
Merge branch 'next' into feat-db-ssl 2025-03-17 15:15:24 +01:00
Andras Bacsai
40ad118492 fix(core): add server functionality check before dispatching container status 2025-02-22 12:51:22 +01:00
peaklabs-dev
225f24e650
chore: improve code quality suggested by code rabbit 2025-02-19 18:04:58 +01:00
peaklabs-dev
4fdd5679c9
fix(ui): enable SSL is not working correctly for KeyDB 2025-02-11 20:18:42 +01:00
peaklabs-dev
3e95387e10
Full: SSL Support for KeyDB 2025-02-10 21:29:45 +01:00
peaklabs-dev
90e681e24b
feat: Full SSL support for DrangonflyDB 2025-02-10 21:29:20 +01:00
peaklabs-dev
4547647e98
feat(ssl): improve Redis and remove modes 2025-02-10 19:23:39 +01:00
peaklabs-dev
6b6a9f57f3
fix(ui): remove unused mode for MongoDB 2025-02-10 15:26:05 +01:00
peaklabs-dev
484fc5140b
fix(ssl): rename Redis mode to verify-ca as it is not verify-full 2025-02-08 16:43:15 +01:00
peaklabs-dev
7b30b1aff1
feat(ssl): Full SSL support for Redis 2025-02-07 22:36:36 +01:00
peaklabs-dev
5b347f3d0f
fix(ssl): remove mode selection for MariaDB as it is not supported 2025-02-07 21:07:40 +01:00
peaklabs-dev
bd33f65c0a
feat(ssl): new modes for MongoDB and get caCert and mountPath correctly 2025-02-07 18:31:41 +01:00
peaklabs-dev
62fb2c2877
fix(ssl): ger caCert and mountPath correctly 2025-02-07 18:30:07 +01:00
peaklabs-dev
367eebc9fc
feat: Add full SSL support to MongoDB 2025-02-05 22:56:29 +01:00
peaklabs-dev
951a454cbc
fix(ssl): regenerating certs for a specific DB
- fix: add mount path to make file mounts work correctly
- fix: get CA cert of the server not some random cert
2025-02-05 21:22:54 +01:00
peaklabs-dev
e81ed1aad8
feat(ssl): Add full MariaDB SSL support 2025-02-04 21:08:20 +01:00
peaklabs-dev
3f857c6dac
feat(ssl): Add full MySQL SSL Support 2025-02-04 18:29:35 +01:00
peaklabs-dev
3c62130e86
fix(ssl): improve SSL cert file mounts
- If SSL is disabled, delete the SSL crt and file mounts in the DB
- If SSL is disabled, delete the SSL folder
- If SSL is enabled, make sure the file mounts are added inside the helper
- remove old file mounts first to make sure the ssl crt content is always up to date and no duplicates are added
2025-02-04 16:34:24 +01:00
peaklabs-dev
fd5b7492f8
chore(ui): improve valid until handling 2025-02-03 23:21:09 +01:00
peaklabs-dev
53510928d2
feat(ssl): regenerate certificate and valid until UI 2025-02-03 22:54:31 +01:00
peaklabs-dev
875d1d49bb
feat(ui): Add ssl settings to Postgres ui 2025-01-29 13:25:05 +01:00
Andras Bacsai
1ec15af1ad fix(database): adjust MongoDB restore command and import view styling 2025-01-28 12:41:22 +01:00
Andras Bacsai
52a38f238b fix(redis): update environment variable keys from standalone_redis_id to resourceable_id 2025-01-22 11:54:53 +01:00
peaklabs-dev
85f38b7cb5
refactor: improve data formatting and UI
- move date and duration functions to a shared function
- remove duplicate code
- redesigned the deployment executions tab
- added start and end times for backups, scheduled tasks, deployments and docker cleanup executions
- calculated the duration for backups, scheduled tasks, deployments and Docker cleanup executions
- redesigned status badges with colors to make it easier to see your current status
- removed dependency on dayjs
- fixed calculation of execution time was sometimes incorrect
2025-01-15 18:35:20 +01:00
Andras Bacsai
d9965fbdbe fix: wording 2025-01-14 09:22:15 +01:00
peaklabs-dev
8709a7749b
fix: db without s3 should still backup 2025-01-13 21:26:20 +01:00
peaklabs-dev
e9f691bf45
fix: storage retention setting
- feat: add storage retention to local storage as well
- fix: UI input for max storage now allows exact decimals so MB input is now also possible
- fix: Database column is now decimal instead of integer
- fix: variable naming of storage check no longer overwrites $backup - renamed it to $backupExecution
2025-01-13 19:49:12 +01:00
peaklabs-dev
3dfca4e4bd
fix: backup job deletion - delete all backups from s3 and local 2025-01-13 17:31:55 +01:00
peaklabs-dev
c03b629e85
fix: deletion of single backup 2025-01-13 17:21:03 +01:00
peaklabs-dev
a5fadb0536
fix: function calls 2025-01-13 16:54:17 +01:00
peaklabs-dev
a8b77b389a
feat: use new backup deletion functions 2025-01-13 16:38:16 +01:00
🏔️ Peak
0905479c8b
Merge pull request #4767 from peaklabs-dev/fix-backup-executions
fix: edge case where backup executions could be null
2025-01-10 20:57:27 +01: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
96d2a1a512
fix: edge case where executions could be null 2025-01-07 14:49:04 +01:00
Andras Bacsai
965d656c5b fix: update import command to append file redirection for database restoration 2025-01-07 14:39:31 +01:00
Andras Bacsai
40d9e05c0b feat: restore backup from server file 2025-01-07 14:39:31 +01:00
Andras Bacsai
5064fa246e feat/fix: able to import full db backups for pg/mysql/mariadb 2025-01-07 13:00:41 +01:00
Andras Bacsai
f2b62e93ce fix: readonly does not exists
fix: validate after setting timezone to the new value
2025-01-07 09:29:38 +01:00
Andras Bacsai
c33132d8d9 fix: show backup timezone on the UI 2025-01-03 20:39:27 +01:00
Andras Bacsai
07984ce74f Merge branch 'next' into fix-postgres-init-scripts 2024-12-18 10:35:16 +01:00
Andras Bacsai
9e3467578f feat: add environment_uuid support and update API documentation
- Introduced `environment_uuid` as a required field in various API endpoints and schemas.
- Updated descriptions to clarify that either `environment_name` or `environment_uuid` must be provided.
- Modified routes and controller methods to accommodate the new UUID parameter.
- Adjusted frontend components to utilize `environment_uuid` for better consistency and clarity.
- Removed deprecated fields related to environment handling.

This change enhances the API's flexibility in identifying environments, improving overall usability.
2024-12-17 13:42:16 +01:00
Andras Bacsai
bf9d89f279
Merge branch 'next' into fix-environement-route 2024-12-17 12:17:50 +01:00
Andras Bacsai
38256af9b3 fix: refactor database view 2024-12-17 12:10:55 +01:00
🏔️ Peak
f8a2d92ea0
Merge branch 'next' into fix-postgres-init-scripts 2024-12-16 12:36:50 +01:00
Andras Bacsai
d58abd1998 refactor 2024-12-16 10:38:18 +01:00
🏔️ Peak
7328724f3d
Merge branch 'coollabsio:main' into fix-postgres-init-scripts 2024-12-04 13:15:58 +01:00
peaklabs-dev
277fd78769
new uuid routes 2024-11-22 16:03:20 +01:00
peaklabs-dev
4cc4e28f29
fix clear frequency on exit and error 2024-11-14 18:27:06 +01:00
peaklabs-dev
67bd06d4f2
fix s3 is always set to true if you make an error like invalid cron 2024-11-14 18:25:04 +01:00
peaklabs-dev
b282c1f3ed
fix backup job without s3 can not be added 2024-11-14 18:20:26 +01:00
Andras Bacsai
c7daa32e21 ui fix 2024-11-08 11:48:15 +01:00
Andras Bacsai
9b578b2003 do not use Rule (deprecated), changed to Validate 2024-11-05 09:36:40 +01:00
Andras Bacsai
bf29dd4789 fix: keydb view 2024-11-04 14:33:44 +01:00
Andras Bacsai
ffb1e10248 fix dragonfly view 2024-11-04 14:22:42 +01:00
Andras Bacsai
7fb1a1fc75 fix: use Auth(), add new db proxy stop event refactor clickhouse view 2024-11-04 14:18:16 +01:00
Andras Bacsai
34c7aa122c refactor backup edit view 2024-11-04 12:40:10 +01:00
Andras Bacsai
2cbac34877 refactor initscripts view 2024-11-04 12:21:31 +01:00
Andras Bacsai
c11dfdee1f refactor create scheduled backup livewire 2024-11-04 11:53:32 +01:00
Lucas Michot
1ec224fde1 Inline many variables. 2024-10-31 18:20:11 +01:00
Lucas Michot
8e1444eaa7 Get rid of many useless blank lines 2024-10-31 17:44:01 +01:00
🏔️ Peak
588080d12d
Merge pull request #4086 from lucasmichot/feat/useless-catch-variable
Remove all useless catch block useless variables.
2024-10-31 16:26:31 +01:00
Lucas Michot
601f1a4717 Always prefer stricter string comparisons. 2024-10-31 15:23:19 +01:00
Lucas Michot
b1d04912a0 Remove all useless catch block useless variables. 2024-10-31 15:19:37 +01:00
Lucas Michot
c5403b0b3f Always prefer ::class notation 2024-10-28 14:56:13 +01:00