diff --git a/app/Http/Livewire/RunCommand.php b/app/Http/Livewire/RunCommand.php index ae189422e..db96b17b7 100755 --- a/app/Http/Livewire/RunCommand.php +++ b/app/Http/Livewire/RunCommand.php @@ -14,6 +14,8 @@ class RunCommand extends Component public $command = 'ls'; + public $server = 'testing-host'; + public function render() { return view('livewire.run-command'); @@ -23,14 +25,14 @@ public function runCommand() { $this->isKeepAliveOn = true; - $this->activity = remoteProcess($this->command, 'testing-host'); + $this->activity = remoteProcess($this->command, $this->server); } public function runSleepingBeauty() { $this->isKeepAliveOn = true; - $this->activity = remoteProcess('x=1; while [ $x -le 40 ]; do sleep 0.1 && echo "Welcome $x times" $(( x++ )); done', 'testing-host'); + $this->activity = remoteProcess('x=1; while [ $x -le 40 ]; do sleep 0.1 && echo "Welcome $x times" $(( x++ )); done', $this->server); } public function runDummyProjectBuild() @@ -40,7 +42,7 @@ public function runDummyProjectBuild() $this->activity = remoteProcess(<<server); } public function polling() diff --git a/bootstrap/helpers.php b/bootstrap/helpers.php index c7517b0db..e2b9e64ed 100644 --- a/bootstrap/helpers.php +++ b/bootstrap/helpers.php @@ -2,9 +2,10 @@ use App\Actions\RemoteProcess\DispatchRemoteProcess; use App\Data\RemoteProcessArgs; +use App\Models\Server; use Spatie\Activitylog\Contracts\Activity; -if (! function_exists('remoteProcess')) { +if (!function_exists('remoteProcess')) { /** * Run a Coolify Process, which SSH's asynchronously into a machine to run the command(s). * @TODO Change 'root' to 'coolify' when it's able to run Docker commands without sudo @@ -12,17 +13,22 @@ */ function remoteProcess( string $command, - string $destination, - ?int $port = 22, - ?string $user = 'root', - ): Activity - { + string $destination + ): Activity { + $found_server = Server::where('name', $destination)->first(); + if (!$found_server) { + throw new \RuntimeException('Server not found.'); + } + $found_team = auth()->user()->teams->pluck('id')->contains($found_server->team_id); + if (!$found_team) { + throw new \RuntimeException('You do not have access to this server.'); + } return resolve(DispatchRemoteProcess::class, [ 'remoteProcessArgs' => new RemoteProcessArgs( - destination: $destination, + destination: $found_server->ip, command: $command, - port: $port, - user: $user, + port: $found_server->port, + user: $found_server->user, ), ])(); } diff --git a/resources/views/livewire/run-command.blade.php b/resources/views/livewire/run-command.blade.php index 87be7419c..704c467ea 100755 --- a/resources/views/livewire/run-command.blade.php +++ b/resources/views/livewire/run-command.blade.php @@ -1,8 +1,8 @@