fixes
This commit is contained in:
parent
793cae1dfa
commit
0123ae97a1
@ -7,7 +7,6 @@
|
||||
|
||||
class Change extends Component
|
||||
{
|
||||
public string $private_key_uuid;
|
||||
public PrivateKey $private_key;
|
||||
|
||||
protected $rules = [
|
||||
@ -20,15 +19,15 @@ class Change extends Component
|
||||
'private_key.description' => 'description',
|
||||
'private_key.private_key' => 'private key'
|
||||
];
|
||||
public function mount()
|
||||
{
|
||||
$this->private_key = PrivateKey::where('uuid', $this->private_key_uuid)->first();
|
||||
}
|
||||
public function delete()
|
||||
{
|
||||
try {
|
||||
PrivateKey::where('uuid', $this->private_key_uuid)->delete();
|
||||
session('currentTeam')->privateKeys = PrivateKey::where('team_id', session('currentTeam')->id)->get();
|
||||
redirect()->route('dashboard');
|
||||
} catch (\Exception $e) {
|
||||
return general_error_handler(err: $e, that: $this);
|
||||
}
|
||||
}
|
||||
public function changePrivateKey()
|
||||
{
|
||||
|
@ -5,12 +5,27 @@
|
||||
use App\Models\Server;
|
||||
use Illuminate\Support\Facades\Storage;
|
||||
use Livewire\Component;
|
||||
use Masmerise\Toaster\Toaster;
|
||||
|
||||
class PrivateKey extends Component
|
||||
{
|
||||
public Server $server;
|
||||
public $privateKeys;
|
||||
public $parameters;
|
||||
|
||||
public function checkConnection()
|
||||
{
|
||||
try {
|
||||
$uptime = instant_remote_process(['uptime'], $this->server, false);
|
||||
if ($uptime) {
|
||||
Toaster::success('Server is reachable with this private key.');
|
||||
} else {
|
||||
Toaster::error('Server is NOT reachable with this private key.');
|
||||
}
|
||||
} catch (\Exception $e) {
|
||||
return general_error_handler(err: $e, that: $this);
|
||||
}
|
||||
}
|
||||
public function setPrivateKey($private_key_id)
|
||||
{
|
||||
$this->server->update([
|
||||
@ -18,8 +33,9 @@ public function setPrivateKey($private_key_id)
|
||||
]);
|
||||
|
||||
// Delete the old ssh mux file to force a new one to be created
|
||||
Storage::disk('ssh-mux')->delete("{$this->server->first()->ip}_{$this->server->first()->port}_{$this->server->first()->user}");
|
||||
Storage::disk('ssh-mux')->delete($this->server->muxFilename());
|
||||
$this->server->refresh();
|
||||
$this->checkConnection();
|
||||
}
|
||||
public function mount()
|
||||
{
|
||||
|
@ -11,9 +11,6 @@ class PrivateKey extends BaseModel
|
||||
'private_key',
|
||||
'team_id',
|
||||
];
|
||||
protected $hidden = [
|
||||
'private_key',
|
||||
];
|
||||
static public function ownedByCurrentTeam(array $select = ['*'])
|
||||
{
|
||||
$selectArray = collect($select)->concat(['id']);
|
||||
|
@ -74,6 +74,10 @@ public function settings()
|
||||
{
|
||||
return $this->hasOne(ServerSetting::class);
|
||||
}
|
||||
public function muxFilename()
|
||||
{
|
||||
return "{$this->ip}_{$this->port}_{$this->user}";
|
||||
}
|
||||
static public function ownedByCurrentTeam(array $select = ['*'])
|
||||
{
|
||||
$selectArray = collect($select)->concat(['id']);
|
||||
|
@ -15,7 +15,7 @@ .main {
|
||||
@apply pl-24 pr-10 mx-auto max-w-screen-xl pt-4;
|
||||
}
|
||||
input {
|
||||
@apply input input-sm h-7 outline-none placeholder:text-neutral-700 text-white rounded bg-coolgray-200 w-full read-only:bg-coolgray-200/50 read-only:text-opacity-25;
|
||||
@apply input input-sm h-7 outline-none placeholder:text-neutral-700 text-white rounded bg-coolgray-200 w-full read-only:bg-coolgray-200/50 read-only:text-opacity-25 disabled:border-none;
|
||||
}
|
||||
input && :not(input[type="checkbox"]) {
|
||||
@apply border-none;
|
||||
@ -25,7 +25,7 @@ input[type="checkbox"] {
|
||||
}
|
||||
|
||||
textarea {
|
||||
@apply textarea placeholder:text-neutral-700 text-white rounded scrollbar bg-coolgray-200;
|
||||
@apply textarea placeholder:text-neutral-700 text-white rounded scrollbar bg-coolgray-200 leading-5 text-xs;
|
||||
}
|
||||
select {
|
||||
@apply h-7 select select-xs disabled:bg-coolgray-200 border-none disabled:opacity-50 font-normal placeholder:text-neutral-700 text-white rounded bg-coolgray-200;
|
||||
|
@ -1,20 +1,26 @@
|
||||
<div>
|
||||
<div class="flex items-end gap-2">
|
||||
<div class="flex items-end gap-2 pb-6 ">
|
||||
<h1>Private Key</h1>
|
||||
<a href="{{ route('private-key.new') }}">
|
||||
<x-forms.button>Add a new Private Key</x-forms.button>
|
||||
</a>
|
||||
<x-forms.button wire:click.prevent='checkConnection'>
|
||||
Check connection
|
||||
</x-forms.button>
|
||||
</div>
|
||||
<div class="pt-2 pb-6 ">Selected Private Key for SSH connection</div>
|
||||
<div class="pb-10 ">
|
||||
|
||||
<div class="flex flex-col gap-2 pb-6">
|
||||
@if (data_get($server, 'privateKey.uuid'))
|
||||
<div>
|
||||
Currently attached Private Key:
|
||||
<a href="{{ route('private-key.show', ['private_key_uuid' => data_get($server, 'privateKey.uuid')]) }}">
|
||||
<button class="text-white btn-link">{{ data_get($server, 'privateKey.name') }}</button>
|
||||
</a>
|
||||
</div>
|
||||
@else
|
||||
<div class="">No private key attached.</div>
|
||||
@endif
|
||||
|
||||
</div>
|
||||
<h3 class="pb-4">Select a different Private Key</h3>
|
||||
<div class="grid gap-2">
|
||||
|
@ -1,4 +1,3 @@
|
||||
<x-layout>
|
||||
|
||||
<livewire:private-key.change :private_key_uuid="$private_key->uuid" />
|
||||
<livewire:private-key.change :private_key="$private_key" />
|
||||
</x-layout>
|
||||
|
@ -99,11 +99,11 @@
|
||||
|
||||
Route::middleware(['auth'])->group(function () {
|
||||
Route::get('/private-keys', fn () => view('private-key.all', [
|
||||
'privateKeys' => PrivateKey::ownedByCurrentTeam()->get()
|
||||
'privateKeys' => PrivateKey::ownedByCurrentTeam(['name', 'uuid'])->get()
|
||||
]))->name('private-key.all');
|
||||
Route::get('/private-key/new', fn () => view('private-key.new'))->name('private-key.new');
|
||||
Route::get('/private-key/{private_key_uuid}', fn () => view('private-key.show', [
|
||||
'private_key' => PrivateKey::ownedByCurrentTeam()->whereUuid(request()->private_key_uuid)->firstOrFail()
|
||||
'private_key' => PrivateKey::ownedByCurrentTeam(['name', 'description', 'private_key'])->whereUuid(request()->private_key_uuid)->firstOrFail()
|
||||
]))->name('private-key.show');
|
||||
});
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user