diff --git a/app/Http/Livewire/Server/Form.php b/app/Http/Livewire/Server/Form.php index 935ad5c79..2d9a6cf60 100644 --- a/app/Http/Livewire/Server/Form.php +++ b/app/Http/Livewire/Server/Form.php @@ -10,6 +10,7 @@ class Form extends Component { public $server_id; public Server $server; + public $uptime; protected $rules = [ 'server.name' => 'required|min:6', @@ -22,6 +23,10 @@ class Form extends Component { $this->server = Server::find($this->server_id); } + public function checkConnection() + { + $this->uptime = runRemoteCommandSync($this->server, ['uptime']); + } public function submit() { $this->validate(); diff --git a/app/Http/Livewire/Server/New/ByIp.php b/app/Http/Livewire/Server/New/ByIp.php new file mode 100644 index 000000000..016ab2c13 --- /dev/null +++ b/app/Http/Livewire/Server/New/ByIp.php @@ -0,0 +1,55 @@ +private_keys = PrivateKey::where('team_id', session('currentTeam')->id)->get(); + } + public function setPrivateKey($private_key_id) + { + $this->private_key_id = $private_key_id; + } + public function addPrivateKey() + { + $this->new_private_key_value = trim($this->new_private_key_value); + if (!str_ends_with($this->new_private_key_value, "\n")) { + $this->new_private_key_value .= "\n"; + } + PrivateKey::create([ + 'name' => $this->new_private_key_name, + 'description' => $this->new_private_key_description, + 'private_key' => $this->new_private_key_value, + 'team_id' => session('currentTeam')->id + ]); + session('currentTeam')->privateKeys = $this->private_keys = PrivateKey::where('team_id', session('currentTeam')->id)->get(); + } + public function submit() + { + $server = Server::create([ + 'name' => fake()->company, + 'ip' => $this->ip, + 'user' => $this->user, + 'port' => $this->port, + 'team_id' => session('currentTeam')->id, + 'private_key_id' => $this->private_key_id + ]); + return redirect()->route('server.show', $server->uuid); + } +} diff --git a/app/Models/PrivateKey.php b/app/Models/PrivateKey.php index 45f69cb2a..fc7407ca4 100644 --- a/app/Models/PrivateKey.php +++ b/app/Models/PrivateKey.php @@ -4,6 +4,12 @@ namespace App\Models; class PrivateKey extends BaseModel { + protected $fillable = [ + 'name', + 'description', + 'private_key', + 'team_id', + ]; public function servers() { return $this->hasMany(Server::class); diff --git a/app/Models/Server.php b/app/Models/Server.php index e06dc67e3..42739ce23 100644 --- a/app/Models/Server.php +++ b/app/Models/Server.php @@ -12,6 +12,14 @@ class Server extends BaseModel ]); }); } + protected $fillable = [ + 'name', + 'ip', + 'user', + 'port', + 'team_id', + 'private_key_id', + ]; public function destinations() { return $this->hasMany(PrivateKey::class); diff --git a/app/Models/ServerSetting.php b/app/Models/ServerSetting.php index 7b76e829c..03faf3067 100644 --- a/app/Models/ServerSetting.php +++ b/app/Models/ServerSetting.php @@ -4,6 +4,9 @@ namespace App\Models; class ServerSetting extends BaseModel { + protected $fillable = [ + 'server_id' + ]; public function server() { return $this->belongsTo(Server::class); diff --git a/app/Models/Team.php b/app/Models/Team.php index e08ea7ad5..4c9938c5b 100644 --- a/app/Models/Team.php +++ b/app/Models/Team.php @@ -12,13 +12,16 @@ class Team extends BaseModel 'name', 'personal_team' ]; - public function projects() { + public function projects() + { return $this->hasMany(Project::class); } - public function servers() { + public function servers() + { return $this->hasMany(Server::class); } - public function applications() { + public function applications() + { return $this->hasManyThrough(Application::class, Project::class); } } diff --git a/app/Models/User.php b/app/Models/User.php index 877ad2c0b..3b65fa8bb 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -52,7 +52,8 @@ class User extends Authenticatable $model->uuid = (string) new Cuid2(7); }); } - public function isRoot() { + public function isRoot() + { return $this->id == 0; } public function teams() diff --git a/database/migrations/2023_03_24_140853_create_private_keys_table.php b/database/migrations/2023_03_24_140853_create_private_keys_table.php index be0c5211f..2795f6b0e 100644 --- a/database/migrations/2023_03_24_140853_create_private_keys_table.php +++ b/database/migrations/2023_03_24_140853_create_private_keys_table.php @@ -17,6 +17,7 @@ return new class extends Migration $table->string('name'); $table->string('description')->nullable(); $table->longText('private_key'); + $table->foreignId('team_id'); $table->timestamps(); }); } diff --git a/database/seeders/PrivateKeySeeder.php b/database/seeders/PrivateKeySeeder.php index b54a07f6b..25561053d 100644 --- a/database/seeders/PrivateKeySeeder.php +++ b/database/seeders/PrivateKeySeeder.php @@ -4,6 +4,7 @@ namespace Database\Seeders; use App\Models\PrivateKey; use App\Models\Server; +use App\Models\Team; use Illuminate\Database\Console\Seeds\WithoutModelEvents; use Illuminate\Database\Seeder; @@ -14,8 +15,9 @@ class PrivateKeySeeder extends Seeder */ public function run(): void { + $team_1 = Team::find(0); PrivateKey::create([ - "id" => 1, + "team_id" => $team_1->id, "name" => "Testing-host", "description" => "This is a test docker container", "private_key" => "-----BEGIN OPENSSH PRIVATE KEY----- @@ -26,9 +28,10 @@ AAAECBQw4jg1WRT2IGHMncCiZhURCts2s24HoDS0thHnnRKVuGmoeGq/pojrsyP1pszcNV uZx9iFkCELtxrh31QJ68AAAAEXNhaWxANzZmZjY2ZDJlMmRkAQIDBA== -----END OPENSSH PRIVATE KEY----- " + ]); PrivateKey::create([ - "id" => 2, + "team_id" => $team_1->id, "name" => "development-github-app", "description" => "This is the key for using the development GitHub app", "private_key" => "-----BEGIN RSA PRIVATE KEY----- @@ -60,7 +63,7 @@ a1C8EDKapCw5hAhizEFOUQKOygL8Ipn+tmEUkORYdZ8Q8cWFCv9nIw== -----END RSA PRIVATE KEY-----" ]); PrivateKey::create([ - "id" => 3, + "team_id" => $team_1->id, "name" => "development-gitlab-app", "description" => "This is the key for using the development Gitlab app", "private_key" => "asdf" diff --git a/database/seeders/ServerSeeder.php b/database/seeders/ServerSeeder.php index 32fc46613..67b91d825 100644 --- a/database/seeders/ServerSeeder.php +++ b/database/seeders/ServerSeeder.php @@ -17,7 +17,6 @@ class ServerSeeder extends Seeder $root_team = Team::find(0); $private_key_1 = PrivateKey::find(1); Server::create([ - 'id' => 1, 'name' => "testing-local-docker-container", 'description' => "This is a test docker container", 'ip' => "coolify-testing-host", @@ -25,13 +24,11 @@ class ServerSeeder extends Seeder 'private_key_id' => $private_key_1->id, ]); Server::create([ - 'id' => 2, 'name' => "testing-local-docker-container-2", 'description' => "This is a test docker container", 'ip' => "coolify-testing-host-2", 'team_id' => $root_team->id, 'private_key_id' => $private_key_1->id, ]); - } } diff --git a/resources/views/components/form-input.blade.php b/resources/views/components/form-input.blade.php index 9fb1a030c..d4dd79631 100644 --- a/resources/views/components/form-input.blade.php +++ b/resources/views/components/form-input.blade.php @@ -25,9 +25,16 @@ * @endif - + @if ($type === 'textarea') + + @else + + @endif + @error($id)
No projects found.
@endforelse -No servers found.
@endforelse diff --git a/resources/views/livewire/server/form.blade.php b/resources/views/livewire/server/form.blade.php index 38e33833f..d2bf5856b 100644 --- a/resources/views/livewire/server/form.blade.php +++ b/resources/views/livewire/server/form.blade.php @@ -11,8 +11,15 @@Connection OK
+Uptime: {{ $uptime }}
+ @endisset diff --git a/resources/views/livewire/server/new/by-ip.blade.php b/resources/views/livewire/server/new/by-ip.blade.php new file mode 100644 index 000000000..733dff9dc --- /dev/null +++ b/resources/views/livewire/server/new/by-ip.blade.php @@ -0,0 +1,24 @@ +