diff --git a/app/Models/LocalFileVolume.php b/app/Models/LocalFileVolume.php
index 2c223be77..d96f7125e 100644
--- a/app/Models/LocalFileVolume.php
+++ b/app/Models/LocalFileVolume.php
@@ -3,6 +3,7 @@
namespace App\Models;
use App\Events\FileStorageChanged;
+use Illuminate\Database\Eloquent\Casts\Attribute;
use Illuminate\Database\Eloquent\Factories\HasFactory;
class LocalFileVolume extends BaseModel
@@ -11,6 +12,8 @@ class LocalFileVolume extends BaseModel
protected $guarded = [];
+ public $appends = ['is_binary'];
+
protected static function booted()
{
static::created(function (LocalFileVolume $fileVolume) {
@@ -19,6 +22,15 @@ class LocalFileVolume extends BaseModel
});
}
+ protected function isBinary(): Attribute
+ {
+ return Attribute::make(
+ get: function () {
+ return $this->content === '[binary file]';
+ }
+ );
+ }
+
public function service()
{
return $this->morphTo('resource');
@@ -44,6 +56,10 @@ class LocalFileVolume extends BaseModel
$isFile = instant_remote_process(["test -f $path && echo OK || echo NOK"], $server);
if ($isFile === 'OK') {
$content = instant_remote_process(["cat $path"], $server, false);
+ // Check if content contains binary data by looking for null bytes or non-printable characters
+ if (str_contains($content, "\0") || preg_match('/[\x00-\x08\x0B\x0C\x0E-\x1F]/', $content)) {
+ $content = '[binary file]';
+ }
$this->content = $content;
$this->is_directory = false;
$this->save();
diff --git a/resources/views/livewire/project/service/file-storage.blade.php b/resources/views/livewire/project/service/file-storage.blade.php
index 550b43c20..e17835429 100644
--- a/resources/views/livewire/project/service/file-storage.blade.php
+++ b/resources/views/livewire/project/service/file-storage.blade.php
@@ -28,12 +28,15 @@
confirmationLabel="Please confirm the execution of the actions by entering the Filepath below"
shortConfirmationLabel="Filepath" step3ButtonText="Permanently Delete" />
@else
-
+ @if (!$fileStorage->is_binary)
+
+ @endif
- @if (!$fileStorage->is_based_on_git)
+ readonly="{{ $fileStorage->is_based_on_git || $fileStorage->is_binary }}">
+ @if (!$fileStorage->is_based_on_git && !$fileStorage->is_binary)
Save
@endif
@endif