This commit is contained in:
Joao Patricio 2023-05-12 19:15:36 +01:00
parent 982f5beaf5
commit 931664c0c0
9 changed files with 111 additions and 13 deletions

View File

@ -3,12 +3,14 @@
namespace App\Actions\Proxy;
use App\Enums\ActivityTypes;
use App\Enums\ProxyTypes;
use App\Models\Server;
use Spatie\Activitylog\Models\Activity;
use Symfony\Component\Yaml\Yaml;
class InstallProxy
{
public function __invoke(Server $server)
public function __invoke(Server $server): Activity
{
$docker_compose_yml_base64 = base64_encode(
$this->getDockerComposeContents()
@ -30,6 +32,10 @@ public function __invoke(Server $server)
'docker ps',
], $server, ActivityTypes::INLINE->value);
// Persist to Database
$server->extra_attributes->proxy = ProxyTypes::TRAEFIK_V2->value;
$server->save();
return $activity;
}
@ -47,8 +53,6 @@ protected function getComposeData(): array
? config('proxy.project_path_on_host') . '/_testing_hosts/host_2_proxy'
: '.';
ray($cwd);
return [
"version" => "3.7",
"networks" => [

View File

@ -13,6 +13,11 @@ class Proxy extends Component
protected string $selectedProxy = '';
public $is_proxy_installed;
public $is_check_proxy_complete = false;
public $is_proxy_settings_in_sync = false;
public function mount(Server $server)
{
$this->server = $server;
@ -25,6 +30,14 @@ public function runInstallProxy()
$this->emit('newMonitorActivity', $activity->id);
}
public function checkProxySettingsInSync()
{
$this->is_check_proxy_complete = true;
$this->is_proxy_settings_in_sync = true;
}
public function render()
{
return view('livewire.server.proxy');

View File

@ -5,4 +5,9 @@ RUN apt-get -y autoremove \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* /usr/share/doc/*
RUN echo "alias ll='ls -al'" >> /etc/bash.bashrc
RUN echo "alias a='php artisan'" >> /etc/bash.bashrc
RUN echo "alias mfs='php artisan migrate:fresh --seed'" >> /etc/bash.bashrc
RUN echo "alias cda='composer dump-autoload'" >> /etc/bash.bashrc
# COPY --chmod=755 docker/dev-ssu/etc/s6-overlay/ /etc/s6-overlay/

View File

@ -0,0 +1,12 @@
<div class="absolute w-full h-full bg-sky-600 rounded-lg">
<div class="w-full mt-32 text-center animate-pulse">
Loading
</div>
<div class="mt-20 w-full flex justify-center">
<span class="relative flex h-28 w-28">
<span
class="animate-ping absolute inline-flex h-full w-full rounded-full bg-sky-400 opacity-75"></span>
<span class="relative inline-flex rounded-full h-28 w-28 bg-sky-500"></span>
</span>
</div>
</div>

View File

@ -0,0 +1,48 @@
<div class="mt-4">
<label>
<div>Edit config file</div>
<textarea cols="45" rows="25"></textarea>
</label>
</div>
<div class="mt-4">
<label>
Enable dashboard?
<input type="checkbox" />
(auto-save)
</label>
</div>
<div class="mt-4">
<a href="#">Visit Dashboard</a>
</div>
<div class="mt-4">
<label>
<div>Setup hostname for Dashboard</div>
<div class="mt-2"></div>
<label>
<div>Hostname <span class="text-xs"> Eg: dashboard.example.com </span></div>
<input type="text" />
</label>
<button>Update</button>
</label>
</div>
<div class="mt-4">
<label>
<div>Dashboard credentials</div>
<div class="mt-2"></div>
<label>
Username
<input type="text" />
</label>
<label>
Password
<input type="password" />
</label>
<button>Update</button>
</label>
</div>

View File

@ -0,0 +1,5 @@
<div class="absolute w-full h-full bg-orange-700 rounded-lg">
<div class="w-full mt-32 text-center animate-pulse">
Problems!
</div>
</div>

View File

@ -2,20 +2,29 @@
<h2> Proxy </h2>
@if($this->server->extra_attributes->proxy)
<div class="mt-12">
<div class="mt-6">
<div>
Proxy type: {{ $this->server->extra_attributes->proxy }}
</div>
<div class="mt-12"> Features in W11.</div>
<ul>
<li>Edit config file</li>
<li>Enable dashboard (blocking port by firewall)</li>
<li>Dashboard access - login/password</li>
<li>Setup host for Traefik Dashboard</li>
<li>Visit (nav to traefik dashboard)</li>
</ul>
<div id="proxy_options" x-init="$wire.checkProxySettingsInSync()" class="relative w-fit">
{{-- Proxy is being checked against DB information --}}
@if(! $this->is_check_proxy_complete)
@include('livewire.server._proxy.loading')
@endif
@if($this->is_check_proxy_complete && (! $this->is_proxy_settings_in_sync) )
@include('livewire.server._proxy.problems')
@endif
@include('livewire.server._proxy.options')
</div>
</div>
@else
{{-- There is no Proxy installed --}}
No proxy installed.
<select wire:model="selectedProxy">
<option value="{{ \App\Enums\ProxyTypes::TRAEFIK_V2 }}">

View File

@ -14,7 +14,6 @@
<p>Network: {{ data_get($docker, 'network') }}</p>
@endforeach
@endif
<h1> {{ $server->name }}</h1>
<livewire:server.proxy :server="$server"/>
</x-layout>

View File

@ -35,6 +35,9 @@ function schedule-run {
function reset-db {
bash vendor/bin/spin exec -u webuser coolify php artisan migrate:fresh --seed
}
function mfs {
reset-db
}
function coolify {
bash vendor/bin/spin exec -u webuser coolify bash
}