Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .env.example
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
APP_NAME=Laravel
APP_NAME=Webapps
APP_ENV=local
APP_KEY=
APP_DEBUG=true
Expand Down
43 changes: 43 additions & 0 deletions app/Actions/AuthenticatePortainer.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
<?php

namespace App\Actions;

use Illuminate\Support\Facades\Http;

class AuthenticatePortainer
{
/**
* Create a new class instance.
*/
public function __construct()
{
//
}

public static function execute()
{
$portainerUrl = env('PORTAINER_URL');
$username = env('PORTAINER_USERNAME');
$password = env('PORTAINER_PASSWORD');

$auth = Http::post(
"{$portainerUrl}/api/auth",
[
'username' => $username,
'password' => $password,
]
);

$jwt = $auth->json('jwt');

$endpoints = Http::withToken($jwt)
->get("{$portainerUrl}/api/endpoints")
->json();
$endpointId = $endpoints[0]['Id'];

return [
'jwt' => $jwt,
'endpointId' => $endpointId
];
}
}
48 changes: 48 additions & 0 deletions app/Actions/GenerateComposeYml.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
<?php

namespace App\Actions;

use App\Models\DockerImage;
use App\Models\Webapp;
use Symfony\Component\Yaml\Yaml;

class GenerateComposeYml
{
/**
* Create a new class instance.
*/
public function __construct()
{
//
}

public static function execute(DockerImage $dockerImage, Webapp $webapp)
{
$env_variables = $webapp->appVariables;
$environment = [];
foreach ($env_variables as $env_variable):
$environment[$env_variable->imageVariable->name] = $env_variable->value;
endforeach;

$composeArray = [
'services' => [
'app' => [
'image' => "{$dockerImage->path}:{$dockerImage->tag}",
'restart' => 'unless-stopped',
'ports' => ['8888:80'],
'environment' => $environment,
'entrypoint' => [
'sh',
'-c',
'php artisan migrate --force && exec apache2-foreground'
]
]
]
];

$composeYaml = Yaml::dump($composeArray, 4, 2);
$composeYaml = str_replace("'-c'", "-c", $composeYaml);

return $composeYaml;
}
}
30 changes: 30 additions & 0 deletions app/Actions/GetGwmariadbPayload.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
<?php

namespace App\Actions;

class GetGwmariadbPayload
{
/**
* Create a new class instance.
*/
public function __construct()
{
//
}

public static function execute(string $action, string $siteName = '')
{
if($siteName == ''):
$payload = [
'action' => $action
];
else:
$payload = [
'action' => $action,
'nome' => $siteName
];
endif;

return $payload;
}
}
25 changes: 25 additions & 0 deletions app/Actions/SendGwmariadbRequest.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
<?php

namespace App\Actions;

use Illuminate\Support\Facades\Http;

class SendGwmariadbRequest
{
/**
* Create a new class instance.
*/
public function __construct()
{
//
}

public static function execute(array $payload)
{
$response = Http::withHeaders([
'X-Token' => env('GWMARIADB_TOKEN'),
])->post(env('GWMARIADB_URL'), $payload);

return $response;
}
}
27 changes: 27 additions & 0 deletions app/Actions/StoreAppVariablesOnImageSelection.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
<?php

namespace App\Actions;

use App\Models\AppVariable;
use App\Models\ImageVariable;
use App\Models\Webapp;

class StoreAppVariablesOnImageSelection
{
/**
* Create a new class instance.
*/
public function __construct()
{
//
}

public static function execute(Webapp $webapp, ImageVariable $imageVariable)
{
AppVariable::create([
'image_variable_id' => $imageVariable->id,
'app_id' => $webapp->id,
'value' => null
]);
}
}
11 changes: 11 additions & 0 deletions app/Http/Controllers/Bucket/BucketController.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
<?php

namespace App\Http\Controllers\Bucket;

use App\Http\Controllers\Controller;
use Illuminate\Http\Request;

class BucketController extends Controller
{
//
}
17 changes: 17 additions & 0 deletions app/Http/Controllers/Bucket/TestConnectionBucketController.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
<?php

namespace App\Http\Controllers\Bucket;

use App\Http\Controllers\Controller;
use Illuminate\Http\Request;

class TestConnectionBucketController extends Controller
{
/**
* Handle the incoming request.
*/
public function __invoke(Request $request)
{
//
}
}
69 changes: 69 additions & 0 deletions app/Http/Controllers/DockerImageController.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
<?php

namespace App\Http\Controllers;

use App\Http\Requests\DockerImageRequest;
use App\Http\Requests\DockerImageUpdateRequest;
use App\Http\Requests\StoreImageVariableRequest;
use App\Models\DockerImage;
use App\Services\DockerImageService;
use App\Services\ImageVariableService;

class DockerImageController extends Controller
{
public function index()
{
$dockerImages = (new DockerImageService())->getAllDockerImages();
return view('dockerimages.index', [
'docker_images' => $dockerImages
]);
}

public function show(DockerImage $dockerimage)
{
return view('dockerimages.show', [
'docker_image' => $dockerimage
]);
}

public function create()
{
return view('dockerimages.create');
}

public function store(DockerImageRequest $request)
{
$dockerImage = (new DockerImageService())->createDockerImage($request->validated());
return redirect("/dockerimages/{$dockerImage->id}");
}

public function edit(DockerImage $dockerimage)
{
return view('dockerimages.edit', [
'docker_image' => $dockerimage
]);
}

public function update(DockerImageUpdateRequest $request, DockerImage $dockerimage)
{
$dockerImage = (new DockerImageService())->updateDockerImage($dockerimage, $request->validated());
return redirect("/dockerimages/{$dockerImage->id}");
}

public function destroy(DockerImage $dockerimage)
{
$deleted = (new DockerImageService())->destroyDockerImage($dockerimage);

if($deleted) {
return redirect("/dockerimages");
}
}

public function storeImageVariable(string $imageId, StoreImageVariableRequest $request)
{

(new ImageVariableService())->storeVariable($imageId, $request->validated());

return redirect("/dockerimages/{$imageId}");
}
}
30 changes: 30 additions & 0 deletions app/Http/Controllers/Dockerimage/ImageVariableController.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
<?php

namespace App\Http\Controllers\Dockerimage;

use App\Http\Controllers\Controller;
use App\Http\Requests\StoreImageVariableRequest;
use App\Models\ImageVariable;
use App\Services\ImageVariableService;
use Illuminate\Http\Request;

class ImageVariableController extends Controller
{
public function update(ImageVariable $variable, StoreImageVariableRequest $request)
{
$imageId = $variable->image->id;

(new ImageVariableService())->updateVariable($variable, $request->validated());

return redirect("/dockerimages/{$imageId}");
}

public function destroy(string $variableId)
{
$variable = (new ImageVariableService())->getImageVariableById($variableId);
$imageId = $variable->image->id;
$variable->delete();

return redirect("/dockerimages/{$imageId}");
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
<?php

namespace App\Http\Controllers\Gwmariadb;

use App\Http\Controllers\Controller;
use App\Services\WebappService;
use Illuminate\Support\Facades\Http;

class TestGwmariadbConnectionController extends Controller
{
/**
* Handle the incoming request.
*/
public function __invoke()
{
$response = Http::withHeaders([
'X-Token' => env('GWMARIADB_TOKEN'),
])->get(env('GWMARIADB_URL'));

return json_encode($response->json());
}
}
Loading