From a42223a0be12ec4e6dbbeecd7389fbb56a51d31d Mon Sep 17 00:00:00 2001 From: David Bomba Date: Sun, 13 Jun 2021 19:44:33 +1000 Subject: [PATCH 1/3] Clean up filesystem: --- app/Console/Commands/S3Cleanup.php | 74 +++++++++++++++++++++++++++++ app/Jobs/Entity/CreateEntityPdf.php | 1 + 2 files changed, 75 insertions(+) create mode 100644 app/Console/Commands/S3Cleanup.php diff --git a/app/Console/Commands/S3Cleanup.php b/app/Console/Commands/S3Cleanup.php new file mode 100644 index 000000000000..f0609e234c1b --- /dev/null +++ b/app/Console/Commands/S3Cleanup.php @@ -0,0 +1,74 @@ +pluck('company_key'); + $c2 = Company::on('db-ninja-02')->pluck('company_key'); + + $merged = $c1->merge($c2); + + $c3 = Storage::disk(config('filesystems.default'))->directories(); + + $diff = $merged->diff($c3); + + $this->LogMessage("Disk Cleanup"); + + $this->logMessage("Folders to delete = ". $c1->count()); + + $diff->each(function ($dir){ + + $this->logMessage("Deleting $dir"); + + Storage::deleteDirectory($dir); + + }); + + $this->logMessage("exiting"); + + } + + private function logMessage($str) + { + $str = date('Y-m-d h:i:s').' '.$str; + $this->info($str); + $this->log .= $str."\n"; + } +} diff --git a/app/Jobs/Entity/CreateEntityPdf.php b/app/Jobs/Entity/CreateEntityPdf.php index cd9682e98b4f..d86ee6b041e9 100644 --- a/app/Jobs/Entity/CreateEntityPdf.php +++ b/app/Jobs/Entity/CreateEntityPdf.php @@ -105,6 +105,7 @@ class CreateEntityPdf implements ShouldQueue /* Set customized translations _NOW_ */ $t->replace(Ninja::transformTranslations($this->entity->client->getMergedSettings())); + /*This line of code hurts... it deletes ALL $entity PDFs... this causes a race condition when trying to send an email*/ // $this->entity->service()->deletePdf(); if (config('ninja.phantomjs_pdf_generation') || config('ninja.pdf_generator') == 'phantom') { From 2b6f0870b3b29809fafc8703693c06f3c41808b2 Mon Sep 17 00:00:00 2001 From: = Date: Sun, 13 Jun 2021 20:09:52 +1000 Subject: [PATCH 2/3] Tests for clean up S3 orphans --- app/Console/Commands/S3Cleanup.php | 23 ++++++++---------- tests/Unit/S3CleanupTest.php | 39 ++++++++++++++++++++++++++++++ 2 files changed, 49 insertions(+), 13 deletions(-) create mode 100644 tests/Unit/S3CleanupTest.php diff --git a/app/Console/Commands/S3Cleanup.php b/app/Console/Commands/S3Cleanup.php index f0609e234c1b..f7409764b3a5 100644 --- a/app/Console/Commands/S3Cleanup.php +++ b/app/Console/Commands/S3Cleanup.php @@ -43,23 +43,20 @@ class S3Cleanup extends Command $c1 = Company::on('db-ninja-01')->pluck('company_key'); $c2 = Company::on('db-ninja-02')->pluck('company_key'); - $merged = $c1->merge($c2); + $merged = $c1->merge($c2)->toArray(); - $c3 = Storage::disk(config('filesystems.default'))->directories(); - - $diff = $merged->diff($c3); + $directories = Storage::disk(config('filesystems.default'))->directories(); $this->LogMessage("Disk Cleanup"); - $this->logMessage("Folders to delete = ". $c1->count()); - - $diff->each(function ($dir){ - - $this->logMessage("Deleting $dir"); - - Storage::deleteDirectory($dir); - - }); + foreach($directories as $dir) + { + if(!in_array($dir, $merged)) + { + $this->logMessage("Deleting $dir"); + Storage::disk(config('filesystems.default'))->deleteDirectory($dir); + } + } $this->logMessage("exiting"); diff --git a/tests/Unit/S3CleanupTest.php b/tests/Unit/S3CleanupTest.php new file mode 100644 index 000000000000..b4056ff4f5e0 --- /dev/null +++ b/tests/Unit/S3CleanupTest.php @@ -0,0 +1,39 @@ +merge($c2)->toArray(); + + $this->assertTrue(in_array("1", $merged)); + $this->assertFalse(in_array("10", $merged)); + + } +} From 46ae91f92078fdd2f894a6e57c50062f060bbe50 Mon Sep 17 00:00:00 2001 From: = Date: Sun, 13 Jun 2021 20:47:49 +1000 Subject: [PATCH 3/3] Fixes for regex for subdomain name --- app/Http/Requests/Company/StoreCompanyRequest.php | 2 +- app/Http/Requests/Company/UpdateCompanyRequest.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/Http/Requests/Company/StoreCompanyRequest.php b/app/Http/Requests/Company/StoreCompanyRequest.php index 12b3c9a26e8e..3fb397608d0f 100644 --- a/app/Http/Requests/Company/StoreCompanyRequest.php +++ b/app/Http/Requests/Company/StoreCompanyRequest.php @@ -49,7 +49,7 @@ class StoreCompanyRequest extends Request } else { if(Ninja::isHosted()){ - $rules['subdomain'] = ['nullable', 'alpha_num', new ValidSubdomain($this->all())]; + $rules['subdomain'] = ['nullable', 'regex:/^[a-zA-Z0-9][a-zA-Z0-9.-]+[a-zA-Z0-9]$/', new ValidSubdomain($this->all())]; } else $rules['subdomain'] = 'nullable|alpha_num'; diff --git a/app/Http/Requests/Company/UpdateCompanyRequest.php b/app/Http/Requests/Company/UpdateCompanyRequest.php index 42fb295e7f70..01b94b28de38 100644 --- a/app/Http/Requests/Company/UpdateCompanyRequest.php +++ b/app/Http/Requests/Company/UpdateCompanyRequest.php @@ -50,7 +50,7 @@ class UpdateCompanyRequest extends Request } else { if(Ninja::isHosted()){ - $rules['subdomain'] = ['nullable', 'alpha_num', new ValidSubdomain($this->all())]; + $rules['subdomain'] = ['nullable', 'regex:/^[a-zA-Z0-9][a-zA-Z0-9.-]+[a-zA-Z0-9]$/', new ValidSubdomain($this->all())]; } else $rules['subdomain'] = 'nullable|alpha_num';