Bozhidar Slaveykov hace 1 año
padre
commit
01e2d4fa7f
Se han modificado 5 ficheros con 44 adiciones y 17 borrados
  1. 22 12
      web/app/Models/CronJob.php
  2. 3 3
      web/app/Models/Website.php
  3. 16 0
      web/app/ShellApi.php
  4. 2 1
      web/composer.json
  5. 1 1
      web/composer.lock

+ 22 - 12
web/app/Models/CronJob.php

@@ -2,6 +2,7 @@
 
 namespace App\Models;
 
+use App\ShellApi;
 use Illuminate\Database\Eloquent\Factories\HasFactory;
 use Illuminate\Database\Eloquent\Model;
 use Sushi\Sushi;
@@ -27,19 +28,25 @@ class CronJob extends Model
         parent::boot();
 
         static::creating(function ($model) {
-            $args = escapeshellarg($model->user) .' '. escapeshellarg($model->schedule) . ' ' . escapeshellarg($model->command);
-            $addCron = shell_exec('/usr/local/phyre/bin/cron-job-add.sh ' . $args);
+
+            $addCron = ShellApi::callBin('cron-job-add', [
+                $model->user,
+                $model->schedule,
+                $model->command,
+            ]);
             if (empty($addCron)) {
                 return false;
             }
+            
         });
 
         static::deleting(function ($model) {
 
-            $args = escapeshellarg($model->user) .' '. escapeshellarg($model->schedule) . ' ' . escapeshellarg($model->command);
-            $args = str_replace(PHP_EOL, '', $args);
-            $command = '/usr/local/phyre/bin/cron-job-delete.sh ' . $args;
-            $deleteCron = shell_exec($command);
+            $deleteCron = ShellApi::callBin('cron-job-delete', [
+                $model->user,
+                $model->schedule,
+                $model->command,
+            ]);
             if (empty($deleteCron)) {
                 return false;
             }
@@ -47,15 +54,18 @@ class CronJob extends Model
         });
     }
 
-//    protected function sushiShouldCache()
-//    {
-//        return true;
-//    }
+    protected function sushiShouldCache()
+    {
+        return true;
+    }
 
     public function getRows()
     {
-        $user = shell_exec('whoami');
-        $cronList = shell_exec('/usr/local/phyre/bin/cron-jobs-list.sh ' . $user);
+        $user = ShellApi::exec('whoami');
+
+        $cronList = ShellApi::callBin('cron-jobs-list', [
+            $user
+        ]);
 
         $rows = [];
         if (!empty($cronList)) {

+ 3 - 3
web/app/Models/Website.php

@@ -29,7 +29,7 @@ class Website extends Model
 
         static::creating(function ($model) {
 
-            $createWebsite = ShellApi::exec('website-create', [
+            $createWebsite = ShellApi::callBin('website-create', [
                $model->server_name,
                'bobkata'
             ]);
@@ -41,7 +41,7 @@ class Website extends Model
         });
 
         static::deleting(function ($model) {
-            $deleteWebsite = ShellApi::exec('website-delete', [
+            $deleteWebsite = ShellApi::callBin('website-delete', [
                 $model->server_name
             ]);
             if (empty($deleteWebsite)) {
@@ -57,7 +57,7 @@ class Website extends Model
 
     public function getRows()
     {
-        $websitesList = ShellApi::exec('websites-list');
+        $websitesList = ShellApi::callBin('websites-list');
 
         $rows = [];
         if (!empty($websitesList)) {

+ 16 - 0
web/app/ShellApi.php

@@ -13,6 +13,22 @@ class ShellApi
             }
         }
 
+        $fullCommand = escapeshellarg($command) . $args;
+        $execOutput = shell_exec($fullCommand);
+        $execOutput = str_replace(PHP_EOL, '', $execOutput);
+
+        return $execOutput;
+    }
+
+    public static function callBin($command, $argsArray = [])
+    {
+        $args = '';
+        if (!empty($argsArray)) {
+            foreach ($argsArray as $arg) {
+                $args .= escapeshellarg($arg) . ' ';
+            }
+        }
+
         $fullCommand = escapeshellarg('/usr/local/phyre/bin/' . $command . '.sh') . ' ' . $args;
         $commandAsSudo = '/usr/bin/sudo ' . $fullCommand;
 

+ 2 - 1
web/composer.json

@@ -15,7 +15,8 @@
         "laravel/framework": "^10.10",
         "laravel/sanctum": "^3.3",
         "laravel/tinker": "^2.8",
-        "mkocansey/bladewind": "^2.4"
+        "mkocansey/bladewind": "^2.4",
+        "symfony/process": "^6.3"
     },
     "require-dev": {
         "fakerphp/faker": "^1.9.1",

+ 1 - 1
web/composer.lock

@@ -4,7 +4,7 @@
         "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
         "This file is @generated automatically"
     ],
-    "content-hash": "4fbb7c7f0a39000819ceb94d722139fa",
+    "content-hash": "4156f41c529370e484d10e9e768c0279",
     "packages": [
         {
             "name": "blade-ui-kit/blade-heroicons",