mirror of
https://github.com/linuxserver/Heimdall.git
synced 2025-12-06 15:04:01 +09:00
Traefik: enhanced conversion
This commit is contained in:
@@ -1,12 +1,78 @@
|
|||||||
<?php namespace App\SupportedApps;
|
<?php namespace App\SupportedApps;
|
||||||
|
|
||||||
class Traefik implements Contracts\Applications {
|
use GuzzleHttp\Client;
|
||||||
|
use GuzzleHttp\Exception\GuzzleException;
|
||||||
|
|
||||||
|
class Traefik implements Contracts\Applications, Contracts\Livestats
|
||||||
|
{
|
||||||
|
|
||||||
public function defaultColour()
|
public function defaultColour()
|
||||||
{
|
{
|
||||||
return '#28434a';
|
return '#28434a';
|
||||||
}
|
}
|
||||||
|
|
||||||
public function icon()
|
public function icon()
|
||||||
{
|
{
|
||||||
return 'supportedapps/traefik.png';
|
return 'supportedapps/traefik.png';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function configDetails()
|
||||||
|
{
|
||||||
|
return 'traefik';
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testConfig()
|
||||||
|
{
|
||||||
|
$res = $this->sendRequest();
|
||||||
|
if ($res == null) {
|
||||||
|
echo 'Traefik connection failed';
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
switch($res->getStatusCode()) {
|
||||||
|
case 200:
|
||||||
|
$data = json_decode($res->getBody());
|
||||||
|
echo "Successfully connected with status: ".$data->result."\n";
|
||||||
|
break;
|
||||||
|
case 404:
|
||||||
|
echo 'Failed: Please make sure your URL is correct and includes the port';
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
echo 'Something went wrong... Code: '.$res->getStatusCode();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function executeConfig()
|
||||||
|
{
|
||||||
|
$html = '';
|
||||||
|
$active = 'inactive';
|
||||||
|
$res = $this->sendRequest();
|
||||||
|
$data = json_decode($res->getBody());
|
||||||
|
if ($data) {
|
||||||
|
$avg_response_time = $data->average_response_time_sec;
|
||||||
|
$time = $avg_response_time*1000;
|
||||||
|
$time_output = number_format($time, 2);
|
||||||
|
$active = ($time > 0) ? 'active' : 'inactive';
|
||||||
|
$html = '
|
||||||
|
<ul class="livestats">
|
||||||
|
<li><span class="title">Avg. Response Time</span><sub><i class="fas fa-heartbeat"></i> '.$time_output.' ms</sub></li>
|
||||||
|
</ul>
|
||||||
|
';
|
||||||
|
}
|
||||||
|
return json_encode(['status' => $active, 'html' => $html]);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function sendRequest()
|
||||||
|
{
|
||||||
|
$config = $this->config;
|
||||||
|
$url = $config->url;
|
||||||
|
|
||||||
|
$url = rtrim($url, '/');
|
||||||
|
$api_url = $url.'/health';
|
||||||
|
|
||||||
|
$client = new Client(['http_errors' => false, 'timeout' => 15, 'connect_timeout' => 15]);
|
||||||
|
$res = $client->request('GET', $api_url);
|
||||||
|
|
||||||
|
return $res;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -38,6 +38,7 @@ Supported applications are recognized by the title of the application as entered
|
|||||||
- Runeaudio
|
- Runeaudio
|
||||||
- Sabnzbd
|
- Sabnzbd
|
||||||
- Tautulli
|
- Tautulli
|
||||||
|
- Traefik
|
||||||
- Transmission
|
- Transmission
|
||||||
|
|
||||||
**Foundation**
|
**Foundation**
|
||||||
@@ -69,7 +70,6 @@ Supported applications are recognized by the title of the application as entered
|
|||||||
- SickRage
|
- SickRage
|
||||||
- Sonarr
|
- Sonarr
|
||||||
- TT-RSS
|
- TT-RSS
|
||||||
- Traefik
|
|
||||||
- UniFI
|
- UniFI
|
||||||
- unRAID
|
- unRAID
|
||||||
- pfSense
|
- pfSense
|
||||||
|
|||||||
11
resources/views/supportedapps/traefik.blade.php
Normal file
11
resources/views/supportedapps/traefik.blade.php
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
<h2>{{ __('app.apps.config') }} ({{ __('app.optional') }})</h2>
|
||||||
|
<div class="items">
|
||||||
|
<input type="hidden" data-config="type" class="config-item" name="config[type]" value="\App\SupportedApps\Traefik" />
|
||||||
|
<div class="input">
|
||||||
|
<label>{{ strtoupper(__('app.url')) }}</label>
|
||||||
|
{!! Form::text('config[override_url]', null, array('placeholder' => __('app.apps.override'), 'id' => 'override_url', 'class' => 'form-control')) !!}
|
||||||
|
</div>
|
||||||
|
<div class="input">
|
||||||
|
<button style="margin-top: 32px;" class="btn test" id="test_config">Test</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
Reference in New Issue
Block a user