ajout heimdall
31
heimdall/config/www/.env
Executable file
@@ -0,0 +1,31 @@
|
||||
APP_NAME=Heimdall
|
||||
APP_ENV=local
|
||||
APP_KEY=base64:b4dz4c5W2PVJo6dxJJsE4PNo3JgK+K/M0MDHJ1qGHFY=
|
||||
APP_DEBUG=true
|
||||
APP_LOG_LEVEL=debug
|
||||
APP_URL=http://localhost
|
||||
|
||||
DB_CONNECTION=sqlite
|
||||
DB_DATABASE=app.sqlite
|
||||
|
||||
BROADCAST_DRIVER=log
|
||||
CACHE_DRIVER=file
|
||||
SESSION_DRIVER=file
|
||||
SESSION_LIFETIME=120
|
||||
QUEUE_DRIVER=database
|
||||
|
||||
REDIS_HOST=127.0.0.1
|
||||
REDIS_PASSWORD=null
|
||||
REDIS_PORT=6379
|
||||
|
||||
MAIL_DRIVER=smtp
|
||||
MAIL_HOST=smtp.mailtrap.io
|
||||
MAIL_PORT=2525
|
||||
MAIL_USERNAME=null
|
||||
MAIL_PASSWORD=null
|
||||
MAIL_ENCRYPTION=null
|
||||
|
||||
PUSHER_APP_ID=
|
||||
PUSHER_APP_KEY=
|
||||
PUSHER_APP_SECRET=
|
||||
PUSHER_APP_CLUSTER=mt1
|
||||
5
heimdall/config/www/SupportedApps/AMP/AMP.php
Executable file
@@ -0,0 +1,5 @@
|
||||
<?php namespace App\SupportedApps\AMP;
|
||||
|
||||
class AMP extends \App\SupportedApps {
|
||||
|
||||
}
|
||||
BIN
heimdall/config/www/SupportedApps/AMP/amp.png
Executable file
|
After Width: | Height: | Size: 6.5 KiB |
10
heimdall/config/www/SupportedApps/AMP/app.json
Executable file
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"appid": "65f59ec6b1ecd6170d5044474043cca9560a8071",
|
||||
"name": "AMP",
|
||||
"website": "https://cubecoders.com/AMP",
|
||||
"license": "Proprietary",
|
||||
"description": "AMP is short for Application Management Panel. It's our next-generation server administration software built for both users, and service providers. It supports both Windows and Linux based servers and allows you to manage all your game servers from a single web interface.",
|
||||
"enhanced": false,
|
||||
"tile_background": "light",
|
||||
"icon": "amp.png"
|
||||
}
|
||||
5
heimdall/config/www/SupportedApps/AVMFritzbox/AVMFritzbox.php
Executable file
@@ -0,0 +1,5 @@
|
||||
<?php namespace App\SupportedApps\AVMFritzbox;
|
||||
|
||||
class AVMFritzbox extends \App\SupportedApps {
|
||||
|
||||
}
|
||||
10
heimdall/config/www/SupportedApps/AVMFritzbox/app.json
Executable file
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"appid": "e8354374b262e6f1055e7412d11f24a164a50f79",
|
||||
"name": "AVM Fritzbox",
|
||||
"website": "www.avm.de",
|
||||
"license": "GNU General Public License v2.0 only",
|
||||
"description": "\"The\" Fritzbox, stylised as FRITZ!Box, is a series of residential gateway devices produced by the German company AVM GmbH. \r\nFRITZ!OS is the FRITZ!Box operating system and can be easily controlled via your browser. User-friendly menus, easy-to-understand wizards, and the optional advanced mode come in handy in all scenarios.",
|
||||
"enhanced": false,
|
||||
"tile_background": "light",
|
||||
"icon": "avmfritzbox.png"
|
||||
}
|
||||
BIN
heimdall/config/www/SupportedApps/AVMFritzbox/avmfritzbox.png
Executable file
|
After Width: | Height: | Size: 13 KiB |
35
heimdall/config/www/SupportedApps/AWX/AWX.php
Executable file
@@ -0,0 +1,35 @@
|
||||
<?php namespace App\SupportedApps\AWX;
|
||||
|
||||
class AWX extends \App\SupportedApps implements \App\EnhancedApps {
|
||||
|
||||
public $config;
|
||||
|
||||
//protected $login_first = true; // Uncomment if api requests need to be authed first
|
||||
//protected $method = 'POST'; // Uncomment if requests to the API should be set by POST
|
||||
|
||||
function __construct() {
|
||||
//$this->jar = new \GuzzleHttp\Cookie\CookieJar; // Uncomment if cookies need to be set
|
||||
}
|
||||
|
||||
public function test()
|
||||
{
|
||||
$test = parent::appTest($this->url('status'));
|
||||
echo $test->status;
|
||||
}
|
||||
|
||||
public function livestats()
|
||||
{
|
||||
$status = 'inactive';
|
||||
$res = parent::execute($this->url('status'));
|
||||
$details = json_decode($res->getBody());
|
||||
|
||||
$data = [];
|
||||
return parent::getLiveStats($status, $data);
|
||||
|
||||
}
|
||||
public function url($endpoint)
|
||||
{
|
||||
$api_url = parent::normaliseurl($this->config->url).$endpoint;
|
||||
return $api_url;
|
||||
}
|
||||
}
|
||||
10
heimdall/config/www/SupportedApps/AWX/app.json
Executable file
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"appid": "47bf44c0ec908654f16bacf131107a5aac3ae7b4",
|
||||
"name": "AWX",
|
||||
"website": "https://github.com/ansible/awx",
|
||||
"license": "Apache License 2.0",
|
||||
"description": "AWX provides a web-based user interface, REST API, and task engine built on top of Ansible. It is the upstream project for Tower, a commercial derivative of AWX.",
|
||||
"enhanced": true,
|
||||
"tile_background": "dark",
|
||||
"icon": "awx.png"
|
||||
}
|
||||
BIN
heimdall/config/www/SupportedApps/AWX/awx.png
Executable file
|
After Width: | Height: | Size: 14 KiB |
19
heimdall/config/www/SupportedApps/AWX/config.blade.php
Executable file
@@ -0,0 +1,19 @@
|
||||
<h2>{{ __('app.apps.config') }} ({{ __('app.optional') }}) @include('items.enable')</h2>
|
||||
<div class="items">
|
||||
<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">
|
||||
<label>{{ __('app.apps.username') }}</label>
|
||||
{!! Form::text('config[username]', null, array('placeholder' => __('app.apps.username'), 'data-config' => 'username', 'class' => 'form-control config-item')) !!}
|
||||
</div>
|
||||
<div class="input">
|
||||
<label>{{ __('app.apps.password') }}</label>
|
||||
{!! Form::text('config[password]', null, array('placeholder' => __('app.apps.password'), 'data-config' => 'password', 'class' => 'form-control config-item')) !!}
|
||||
</div>
|
||||
<div class="input">
|
||||
<button style="margin-top: 32px;" class="btn test" id="test_config">Test</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
10
heimdall/config/www/SupportedApps/AWX/livestats.blade.php
Executable file
@@ -0,0 +1,10 @@
|
||||
<ul class="livestats">
|
||||
<li>
|
||||
<span class="title">Queue</span>
|
||||
<strong>{!! $queue_size !!}</strong>
|
||||
</li>
|
||||
<li>
|
||||
<span class="title">Speed</span>
|
||||
<strong>{!! $current_speed !!}</strong>
|
||||
</li>
|
||||
</ul>
|
||||
52
heimdall/config/www/SupportedApps/AdGuardHome/AdGuardHome.php
Executable file
@@ -0,0 +1,52 @@
|
||||
<?php namespace App\SupportedApps\AdGuardHome;
|
||||
|
||||
class AdGuardHome extends \App\SupportedApps implements \App\EnhancedApps {
|
||||
|
||||
public $config;
|
||||
|
||||
//protected $login_first = true; // Uncomment if api requests need to be authed first
|
||||
//protected $method = 'POST'; // Uncomment if requests to the API should be set by POST
|
||||
|
||||
function __construct() {
|
||||
//$this->jar = new \GuzzleHttp\Cookie\CookieJar; // Uncomment if cookies need to be set
|
||||
}
|
||||
|
||||
public function test()
|
||||
{
|
||||
$test = parent::appTest($this->url('/control/stats'));
|
||||
echo $test->status;
|
||||
}
|
||||
|
||||
public function livestats()
|
||||
{
|
||||
$status = 'inactive';
|
||||
$res = parent::execute($this->url('/control/stats'));
|
||||
$details = json_decode($res->getBody());
|
||||
|
||||
$data = [];
|
||||
if($details) {
|
||||
// format has been changed in AdguardHome v0.99.0
|
||||
if (is_array($details->dns_queries)) {
|
||||
$data['dns_queries'] = number_format(array_sum($details->dns_queries));
|
||||
$data['blocked_filtering'] = number_format(array_sum($details->blocked_filtering));
|
||||
} else {
|
||||
$data['dns_queries'] = number_format($details->dns_queries);
|
||||
$data['blocked_filtering'] = number_format($details->blocked_filtering);
|
||||
}
|
||||
}
|
||||
|
||||
return parent::getLiveStats($status, $data);
|
||||
}
|
||||
public function url($endpoint)
|
||||
{
|
||||
$api_url = parent::normaliseurl($this->config->url);
|
||||
$username = $this->config->username;
|
||||
$password = $this->config->password;
|
||||
$rebuild_url = str_replace('http://', 'http://'.$username.':'.$password.'@', $api_url);
|
||||
$rebuild_url = str_replace('https://', 'https://'.$username.':'.$password.'@', $rebuild_url);
|
||||
$rebuild_url = rtrim($rebuild_url, '/');
|
||||
|
||||
$api_url = $rebuild_url.$endpoint;
|
||||
return $api_url;
|
||||
}
|
||||
}
|
||||
BIN
heimdall/config/www/SupportedApps/AdGuardHome/adguardhome.png
Executable file
|
After Width: | Height: | Size: 3.6 KiB |
10
heimdall/config/www/SupportedApps/AdGuardHome/app.json
Executable file
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"appid": "140902edbcc424c09736af28ab2de604c3bde936",
|
||||
"name": "AdGuard Home",
|
||||
"website": "https://github.com/AdguardTeam/AdGuardHome",
|
||||
"license": "GNU General Public License v3.0 only",
|
||||
"description": "AdGuard Home is a network-wide software for blocking ads & tracking. After you set it up, it'll cover ALL your home devices, and you don't need any client-side software for that.\r\n\r\nIt operates as a DNS server that re-routes tracking domains to a \"black hole,\" thus preventing your devices from connecting to those servers. It's based on software we use for our public AdGuard DNS servers -- both share a lot of common code.",
|
||||
"enhanced": true,
|
||||
"tile_background": "light",
|
||||
"icon": "adguardhome.png"
|
||||
}
|
||||
18
heimdall/config/www/SupportedApps/AdGuardHome/config.blade.php
Executable file
@@ -0,0 +1,18 @@
|
||||
<h2>{{ __('app.apps.config') }} ({{ __('app.optional') }}) @include('items.enable')</h2>
|
||||
<div class="items">
|
||||
<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">
|
||||
<label>{{ __('app.apps.username') }}</label>
|
||||
{!! Form::text('config[username]', null, array('placeholder' => __('app.apps.username'), 'data-config' => 'username', 'class' => 'form-control config-item')) !!}
|
||||
</div>
|
||||
<div class="input">
|
||||
<label>{{ __('app.apps.password') }}</label>
|
||||
{!! Form::password('config[password]', array('placeholder' => __('app.apps.password'), 'data-config' => 'password', 'class' => 'form-control config-item')) !!}
|
||||
</div>
|
||||
<div class="input">
|
||||
<button style="margin-top: 32px;" class="btn test" id="test_config">Test</button>
|
||||
</div>
|
||||
</div>
|
||||
10
heimdall/config/www/SupportedApps/AdGuardHome/livestats.blade.php
Executable file
@@ -0,0 +1,10 @@
|
||||
<ul class="livestats">
|
||||
<li>
|
||||
<span class="title">Queries</span>
|
||||
<strong>{!! $dns_queries !!}</strong>
|
||||
</li>
|
||||
<li>
|
||||
<span class="title">Blocked</span>
|
||||
<strong>{!! $blocked_filtering !!}</strong>
|
||||
</li>
|
||||
</ul>
|
||||
5
heimdall/config/www/SupportedApps/Adminer/Adminer.php
Executable file
@@ -0,0 +1,5 @@
|
||||
<?php namespace App\SupportedApps\Adminer;
|
||||
|
||||
class Adminer extends \App\SupportedApps
|
||||
{
|
||||
}
|
||||
BIN
heimdall/config/www/SupportedApps/Adminer/adminer.png
Executable file
|
After Width: | Height: | Size: 14 KiB |
10
heimdall/config/www/SupportedApps/Adminer/app.json
Executable file
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"appid": "653caf8bdf55d6a99d77ceacd79f622353cd821a",
|
||||
"name": "Adminer",
|
||||
"website": "https://www.adminer.org",
|
||||
"license": "Apache License 2.0",
|
||||
"description": "Adminer (formerly phpMinAdmin) is a full-featured database management tool written in PHP. Conversely to phpMyAdmin, it consists of a single file ready to deploy to the target server. Adminer is available for MySQL, MariaDB, PostgreSQL, SQLite, MS SQL, Oracle, Firebird, SimpleDB, Elasticsearch and MongoDB.",
|
||||
"enhanced": false,
|
||||
"tile_background": "light",
|
||||
"icon": "adminer.svg"
|
||||
}
|
||||
5
heimdall/config/www/SupportedApps/Airsonic/Airsonic.php
Executable file
@@ -0,0 +1,5 @@
|
||||
<?php namespace App\SupportedApps\Airsonic;
|
||||
|
||||
class Airsonic extends \App\SupportedApps {
|
||||
|
||||
}
|
||||
BIN
heimdall/config/www/SupportedApps/Airsonic/airsonic.png
Executable file
|
After Width: | Height: | Size: 3.9 KiB |
10
heimdall/config/www/SupportedApps/Airsonic/app.json
Executable file
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"appid": "317f16f137fe0fd9eaf67dd6e203e50c0c1bf319",
|
||||
"name": "Airsonic",
|
||||
"website": "https://airsonic.github.io/",
|
||||
"license": "GNU General Public License v3.0 only",
|
||||
"description": "Airsonic is a free, web-based media streamer, providing ubiquitious access to your music. Use it to share your music with friends, or to listen to your own music while at work.",
|
||||
"enhanced": false,
|
||||
"tile_background": "dark",
|
||||
"icon": "airsonic.png"
|
||||
}
|
||||
54
heimdall/config/www/SupportedApps/AlarmPI/AlarmPI.php
Executable file
@@ -0,0 +1,54 @@
|
||||
<?php namespace App\SupportedApps\AlarmPI;
|
||||
|
||||
class AlarmPI extends \App\SupportedApps implements \App\EnhancedApps {
|
||||
|
||||
public $config;
|
||||
|
||||
//protected $login_first = true; // Uncomment if api requests need to be authed first
|
||||
//protected $method = 'POST'; // Uncomment if requests to the API should be set by POST
|
||||
|
||||
function __construct() {
|
||||
//$this->jar = new \GuzzleHttp\Cookie\CookieJar; // Uncomment if cookies need to be set
|
||||
}
|
||||
|
||||
public function test()
|
||||
{
|
||||
// $test = parent::appTest($this->url('getSensors.json'), $this->attrs);
|
||||
$res = parent::execute($this->url('getSensors.json'), $this->attrs);
|
||||
echo $res->getBody();
|
||||
}
|
||||
|
||||
public function livestats()
|
||||
{
|
||||
$status = 'inactive';
|
||||
|
||||
$res = parent::execute($this->url('getSensors.json'), $this->attrs);
|
||||
$details = json_decode($res->getBody());
|
||||
$activesensors = 0;
|
||||
|
||||
foreach ($details->sensors as $key => $value) {
|
||||
if ($value->enabled && $value->alert){
|
||||
$activesensors += 1;
|
||||
}
|
||||
}
|
||||
|
||||
$data = [];
|
||||
if ($details->triggered){
|
||||
$alarmstatus = 'Intruder';
|
||||
} else if ($details->alarmArmed){
|
||||
$alarmstatus = 'Armed';
|
||||
} else {
|
||||
$alarmstatus = 'Disarmed';
|
||||
}
|
||||
$data['alarm_status'] = $alarmstatus;
|
||||
$data['alarm_sensors'] = $activesensors;
|
||||
return parent::getLiveStats($status, $data);
|
||||
|
||||
}
|
||||
public function url($endpoint)
|
||||
{
|
||||
$this->attrs = ['auth'=> [$this->config->username, $this->config->password, 'Basic']];
|
||||
$api_url = parent::normaliseurl($this->config->url).$endpoint;
|
||||
return $api_url;
|
||||
}
|
||||
}
|
||||
BIN
heimdall/config/www/SupportedApps/AlarmPI/alarmpi.png
Executable file
|
After Width: | Height: | Size: 4.6 KiB |
10
heimdall/config/www/SupportedApps/AlarmPI/app.json
Executable file
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"appid": "4a1349c03398a3e66f6efdf6395fb689d80f83fa",
|
||||
"name": "AlarmPI",
|
||||
"website": "https://github.com/bkbilly/AlarmPI",
|
||||
"license": "MIT License",
|
||||
"description": "AlarmPI is a home security system based on Raspberry PI. It supports wired sensors (PIR, Magnetic etc.) and wireless through MQTT or Hikvision.",
|
||||
"enhanced": true,
|
||||
"tile_background": "dark",
|
||||
"icon": "alarmpi.png"
|
||||
}
|
||||
19
heimdall/config/www/SupportedApps/AlarmPI/config.blade.php
Executable file
@@ -0,0 +1,19 @@
|
||||
<h2>{{ __('app.apps.config') }} ({{ __('app.optional') }}) @include('items.enable')</h2>
|
||||
<div class="items">
|
||||
<div class="input">
|
||||
<label>{{ strtoupper(__('app.url')) }}</label>
|
||||
{!! Form::text('config[override_url]', (isset($item) ? $item->getconfig()->override_url : null), array('placeholder' => __('app.apps.override'), 'id' => 'override_url', 'class' => 'form-control')) !!}
|
||||
</div>
|
||||
<div class="input">
|
||||
<label>{{ __('app.apps.username') }}</label>
|
||||
{!! Form::text('config[username]', (isset($item) ? $item->getconfig()->username : null), array('placeholder' => __('app.apps.username'), 'data-config' => 'username', 'class' => 'form-control config-item')) !!}
|
||||
</div>
|
||||
<div class="input">
|
||||
<label>{{ __('app.apps.password') }}</label>
|
||||
{!! Form::text('config[password]', null, array('placeholder' => __('app.apps.password'), 'data-config' => 'password', 'class' => 'form-control config-item')) !!}
|
||||
</div>
|
||||
<div class="input">
|
||||
<button style="margin-top: 32px;" class="btn test" id="test_config">Test</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
10
heimdall/config/www/SupportedApps/AlarmPI/livestats.blade.php
Executable file
@@ -0,0 +1,10 @@
|
||||
<ul class="livestats">
|
||||
<li>
|
||||
<span class="title">Status</span>
|
||||
<strong>{!! $alarm_status !!}</strong>
|
||||
</li>
|
||||
<li>
|
||||
<span class="title">Sensors</span>
|
||||
<strong>{!! $alarm_sensors !!}</strong>
|
||||
</li>
|
||||
</ul>
|
||||
5
heimdall/config/www/SupportedApps/Alertmanager/Alertmanager.php
Executable file
@@ -0,0 +1,5 @@
|
||||
<?php namespace App\SupportedApps\Alertmanager;
|
||||
|
||||
class Alertmanager extends \App\SupportedApps {
|
||||
|
||||
}
|
||||
BIN
heimdall/config/www/SupportedApps/Alertmanager/alertmanager.png
Executable file
|
After Width: | Height: | Size: 3.4 KiB |
10
heimdall/config/www/SupportedApps/Alertmanager/app.json
Executable file
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"appid": "9fe84adc4eb8248be3322c8754a0cf6219d122d6",
|
||||
"name": "Alertmanager",
|
||||
"website": "https://prometheus.io/docs/alerting/alertmanager/",
|
||||
"license": "Apache License 2.0",
|
||||
"description": "The Alertmanager handles alerts sent by client applications such as the Prometheus server. It takes care of deduplicating, grouping, and routing them to the correct receiver integrations such as email, PagerDuty, or OpsGenie. It also takes care of silencing and inhibition of alerts.",
|
||||
"enhanced": false,
|
||||
"tile_background": "light",
|
||||
"icon": "alertmanager.png"
|
||||
}
|
||||
65
heimdall/config/www/SupportedApps/ArchiSteamFarm/ArchiSteamFarm.php
Executable file
@@ -0,0 +1,65 @@
|
||||
<?php namespace App\SupportedApps\ArchiSteamFarm;
|
||||
|
||||
use Carbon\Carbon;
|
||||
|
||||
class ArchiSteamFarm extends \App\SupportedApps implements \App\EnhancedApps {
|
||||
|
||||
public $config;
|
||||
|
||||
//protected $login_first = true; // Uncomment if api requests need to be authed first
|
||||
//protected $method = 'POST'; // Uncomment if requests to the API should be set by POST
|
||||
|
||||
function __construct() {
|
||||
//$this->jar = new \GuzzleHttp\Cookie\CookieJar; // Uncomment if cookies need to be set
|
||||
}
|
||||
|
||||
public function test()
|
||||
{
|
||||
if(!isset($this->config->password))
|
||||
{
|
||||
echo "Invalid password";
|
||||
return;
|
||||
}
|
||||
|
||||
$test = parent::appTest($this->url('status?password='.$this->config->password));
|
||||
echo $test->status;
|
||||
}
|
||||
|
||||
public function livestats()
|
||||
{
|
||||
if(!isset($this->config->password))
|
||||
return parent::getLiveStats("Inactive", []);
|
||||
$status = 'inactive';
|
||||
$res = parent::execute($this->url('api/bot/asf?password='.$this->config->password));
|
||||
$details = json_decode($res->getBody());
|
||||
|
||||
$totalSecondsLeft = 0;
|
||||
$cardToFarmLeft = 0;
|
||||
foreach ($details->Result as $bot) {
|
||||
foreach ($bot->CardsFarmer->GamesToFarm as $game) {
|
||||
$cardToFarmLeft += $game->CardsRemaining;
|
||||
}
|
||||
if(preg_match("@([0-9].*).([0-9]+):([0-9]+):([0-9]+)@", $bot->CardsFarmer->TimeRemaining, $matches))
|
||||
{
|
||||
$totalSecondsLeft += $matches[1] * 24 * 60 * 60; // Days
|
||||
$totalSecondsLeft += $matches[2] * 60 * 60; // Hours
|
||||
$totalSecondsLeft += $matches[3] * 60; // Minutes
|
||||
$totalSecondsLeft += $matches[4]; // Seconds
|
||||
}
|
||||
}
|
||||
|
||||
$d = Carbon::now();
|
||||
$d->addSeconds($totalSecondsLeft);
|
||||
$data = [
|
||||
"time_left" => $d->diffForHumans(null, true, true, 3),
|
||||
"cards_left" => $cardToFarmLeft,
|
||||
];
|
||||
return parent::getLiveStats($status, $data);
|
||||
|
||||
}
|
||||
public function url($endpoint)
|
||||
{
|
||||
$api_url = parent::normaliseurl($this->config->url).$endpoint;
|
||||
return $api_url;
|
||||
}
|
||||
}
|
||||
10
heimdall/config/www/SupportedApps/ArchiSteamFarm/app.json
Executable file
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"appid": "7779bfb41003301f1b395c0691002423773d68c1",
|
||||
"name": "ArchiSteamFarm",
|
||||
"website": "https://github.com/JustArchiNET/ArchiSteamFarm",
|
||||
"license": "Apache License 2.0",
|
||||
"description": "ASF is a C# application with primary purpose of idling Steam cards from multiple accounts simultaneously. Unlike Idle Master which works only for one account at given time, while requiring Steam client running in the background and launching additional processes imitating \"game playing\" status, ASF doesn't require any Steam client running in the background, doesn't launch any additional processes and is made to handle unlimited Steam accounts at once. In addition to that, it's meant to be run on servers or other desktop-less machines, and features full cross-OS support, which makes it possible to launch on any operating system with .NET Core runtime, such as Windows, Linux and OS X. ASF is possible thanks to gigantic amount of work done in marvelous SteamKit2 library.\r\n\r\nToday, ASF is one of the most versatile Steam power tools, allowing you to make use of many features that were implemented over time. Apart from idling Steam cards, which remains the primary focus, ASF includes bunch of features on its own, such as a possibility to use it as Steam authenticator or chat logger. In addition to that, ASF includes plugin system, thanks to which anybody can further extend it to his/her needs.",
|
||||
"enhanced": true,
|
||||
"tile_background": "dark",
|
||||
"icon": "archisteamfarm.png"
|
||||
}
|
||||
BIN
heimdall/config/www/SupportedApps/ArchiSteamFarm/archisteamfarm.png
Executable file
|
After Width: | Height: | Size: 36 KiB |
15
heimdall/config/www/SupportedApps/ArchiSteamFarm/config.blade.php
Executable file
@@ -0,0 +1,15 @@
|
||||
<h2>{{ __('app.apps.config') }} ({{ __('app.optional') }}) @include('items.enable')</h2>
|
||||
<div class="items">
|
||||
<div class="input">
|
||||
<label>{{ strtoupper(__('app.url')) }}</label>
|
||||
{!! Form::text('config[override_url]', (isset($item) && isset($item->getconfig()->override_url) ? $item->getconfig()->override_url : null), array('placeholder' => __('app.apps.override'), 'id' => 'override_url', 'class' => 'form-control')) !!}
|
||||
</div>
|
||||
<div class="input">
|
||||
<label>{{ __('app.apps.password') }}</label>
|
||||
{!! Form::text('config[password]', (isset($item) && isset($item->getconfig()->password) ? $item->getconfig()->password : null), array('placeholder' => __('app.apps.password'), 'data-config' => 'password', 'class' => 'form-control config-item')) !!}
|
||||
</div>
|
||||
<div class="input">
|
||||
<button style="margin-top: 32px;" class="btn test" id="test_config">Test</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
19
heimdall/config/www/SupportedApps/ArchiSteamFarm/livestats.blade.php
Executable file
@@ -0,0 +1,19 @@
|
||||
<ul class="livestats">
|
||||
@if(isset($time_left))
|
||||
<li>
|
||||
<span class="title">Time</span>
|
||||
<strong>{{ $time_left }}</strong>
|
||||
</li>
|
||||
@else
|
||||
<li>
|
||||
<span class="title">Connection failed</span>
|
||||
<strong></strong>
|
||||
</li>
|
||||
@endif
|
||||
@if(isset($cards_left))
|
||||
<li>
|
||||
<span class="title">Cards</span>
|
||||
<strong>{{ $cards_left }}</strong>
|
||||
</li>
|
||||
@endif
|
||||
</ul>
|
||||
5
heimdall/config/www/SupportedApps/ArchiveBox/ArchiveBox.php
Executable file
@@ -0,0 +1,5 @@
|
||||
<?php namespace App\SupportedApps\ArchiveBox;
|
||||
|
||||
class ArchiveBox extends \App\SupportedApps {
|
||||
|
||||
}
|
||||
10
heimdall/config/www/SupportedApps/ArchiveBox/app.json
Executable file
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"appid": "b74f349cf434a529c0fe8589315b5956a4562097",
|
||||
"name": "ArchiveBox",
|
||||
"website": "https://github.com/pirate/ArchiveBox",
|
||||
"license": "MIT License",
|
||||
"description": "The open-source self-hosted web archive. ArchiveBox takes a list of website URLs you want to archive, and creates a local, static, browsable HTML clone of the content from those websites (it saves HTML, JS, media files, PDFs, images and more).",
|
||||
"enhanced": false,
|
||||
"tile_background": "light",
|
||||
"icon": "archivebox.png"
|
||||
}
|
||||
BIN
heimdall/config/www/SupportedApps/ArchiveBox/archivebox.png
Executable file
|
After Width: | Height: | Size: 22 KiB |
@@ -0,0 +1,5 @@
|
||||
<?php namespace App\SupportedApps\ArchiveTeamWarrior;
|
||||
|
||||
class ArchiveTeamWarrior extends \App\SupportedApps {
|
||||
|
||||
}
|
||||
10
heimdall/config/www/SupportedApps/ArchiveTeamWarrior/app.json
Executable file
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"appid": "5eef559f19eadb9593bafbd3ca6155dc6721a0d7",
|
||||
"name": "ArchiveTeam Warrior",
|
||||
"website": "https://www.archiveteam.org/index.php?title=ArchiveTeam_Warrior",
|
||||
"license": "The Unlicense",
|
||||
"description": "The Archive Team Warrior is a virtual archiving appliance. You can run it to help with the ArchiveTeam archiving efforts. It will download sites and upload them to their archive.",
|
||||
"enhanced": false,
|
||||
"tile_background": "light",
|
||||
"icon": "archiveteamwarrior.png"
|
||||
}
|
||||
BIN
heimdall/config/www/SupportedApps/ArchiveTeamWarrior/archiveteamwarrior.png
Executable file
|
After Width: | Height: | Size: 8.6 KiB |
93
heimdall/config/www/SupportedApps/AriaNg/AriaNg.php
Executable file
@@ -0,0 +1,93 @@
|
||||
<?php namespace App\SupportedApps\AriaNg;
|
||||
|
||||
class AriaNg extends \App\SupportedApps implements \App\EnhancedApps {
|
||||
|
||||
public $config;
|
||||
|
||||
//protected $login_first = true; // Uncomment if api requests need to be authed first
|
||||
protected $method = 'POST'; // Uncomment if requests to the API should be set by POST
|
||||
|
||||
function __construct() {
|
||||
$this->jar = new \GuzzleHttp\Cookie\CookieJar; // Uncomment if cookies need to be set
|
||||
}
|
||||
|
||||
public function test()
|
||||
{
|
||||
$attrs = $this->newRequestAttrs('aria2.getVersion');
|
||||
$test = parent::appTest($this->url('jsonrpc'), $attrs);
|
||||
if ($test->code === 200) {
|
||||
$data = json_decode($test->response);
|
||||
if (isset($data->result) && isset($data->result->version)) {
|
||||
$version = $data->result->version;
|
||||
$test->status = "Connected to Aria2 v$version";
|
||||
}
|
||||
else {
|
||||
$test->status ="Unknown Aria2 version";
|
||||
}
|
||||
}
|
||||
echo $test->status;
|
||||
}
|
||||
|
||||
public function livestats()
|
||||
{
|
||||
$status = 'inactive';
|
||||
$attrs = $this->newRequestAttrs('aria2.getGlobalStat');
|
||||
$res = parent::execute($this->url('jsonrpc'), $attrs);
|
||||
|
||||
if ($res == null) {
|
||||
//Log::debug('Aria2 connection failed');
|
||||
return '';
|
||||
}
|
||||
|
||||
$details = json_decode($res->getBody());
|
||||
if (!isset($details->result)) {
|
||||
//Log::debug('Failed to fetch data from Aria2');
|
||||
return '';
|
||||
}
|
||||
|
||||
$downloadSpeed = $details->result->downloadSpeed;
|
||||
$uploadSpeed = $details->result->uploadSpeed;
|
||||
|
||||
$active = $details->result->numActive;
|
||||
$stopped = $details->result->numStopped;
|
||||
$waiting = $details->result->numWaiting;
|
||||
|
||||
if ($active > 0) {
|
||||
$status = 'active';
|
||||
}
|
||||
|
||||
$data = [];
|
||||
$data['download_rate'] = format_bytes($downloadSpeed, false, ' <span>', '/s</span>');
|
||||
$data['upload_rate'] = format_bytes($uploadSpeed, false, ' <span>', '/s</span>');
|
||||
$data['running_count'] = ($active + $waiting) ?? 0;
|
||||
$data['stopped_count'] = $stopped ?? 0;
|
||||
|
||||
return parent::getLiveStats($status, $data);
|
||||
}
|
||||
|
||||
private function newRequestAttrs($rpcMethod)
|
||||
{
|
||||
$body = [
|
||||
'jsonrpc' => '2.0',
|
||||
'id' => 'qwer',
|
||||
'method' => $rpcMethod
|
||||
];
|
||||
if (isset($this->config->password)) {
|
||||
$body['params'] = ['token:'.$this->config->password];
|
||||
}
|
||||
|
||||
$attrs = [
|
||||
'body' => json_encode($body),
|
||||
'cookies' => $this->jar,
|
||||
'headers' => ['Content-Type' => 'application/json', 'Accept' => 'application/json']
|
||||
];
|
||||
|
||||
return $attrs;
|
||||
}
|
||||
|
||||
public function url($endpoint)
|
||||
{
|
||||
$api_url = parent::normaliseurl($this->config->url).$endpoint;
|
||||
return $api_url;
|
||||
}
|
||||
}
|
||||
10
heimdall/config/www/SupportedApps/AriaNg/app.json
Executable file
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"appid": "a0f88a6334b03ff11dc56d1b627f122ccacb75ce",
|
||||
"name": "AriaNg",
|
||||
"website": "https://github.com/mayswind/AriaNg",
|
||||
"license": "MIT License",
|
||||
"description": "AriaNg is a modern web frontend making aria2 easier to use. AriaNg is written in pure html & javascript, thus it does not need any compilers or runtime environment. You can just put AriaNg in your web server and open it in your browser. AriaNg uses responsive layout, and supports any desktop or mobile devices.",
|
||||
"enhanced": true,
|
||||
"tile_background": "dark",
|
||||
"icon": "ariang.png"
|
||||
}
|
||||
BIN
heimdall/config/www/SupportedApps/AriaNg/ariang.png
Executable file
|
After Width: | Height: | Size: 18 KiB |
14
heimdall/config/www/SupportedApps/AriaNg/config.blade.php
Executable file
@@ -0,0 +1,14 @@
|
||||
<h2>{{ __('app.apps.config') }} ({{ __('app.optional') }}) @include('items.enable')</h2>
|
||||
<div class="items">
|
||||
<div class="input">
|
||||
<label>{{ strtoupper(__('app.url')) }} (http://HOST:PORT)</label>
|
||||
{!! Form::text('config[override_url]', (isset($item) ? $item->getconfig()->override_url : null), array('placeholder' => __('app.apps.override'), 'id' => 'override_url', 'class' => 'form-control')) !!}
|
||||
</div>
|
||||
<div class="input">
|
||||
<label>{{ __('app.apps.password') }} (secret token)</label>
|
||||
{!! Form::password('config[password]', (isset($item) ? $item->getconfig()->password: null), array('placeholder' => __('app.apps.password'), 'data-config' => 'password', 'class' => 'form-control config-item')) !!}
|
||||
</div>
|
||||
<div class="input">
|
||||
<button style="margin-top: 32px;" class="btn test" id="test_config">Test</button>
|
||||
</div>
|
||||
</div>
|
||||
4
heimdall/config/www/SupportedApps/AriaNg/livestats.blade.php
Executable file
@@ -0,0 +1,4 @@
|
||||
<ul class="livestats">
|
||||
<li><span class="title">RUN: {{ $running_count}}</span><strong>{!! $download_rate !!}</strong></li>
|
||||
<li><span class="title">DONE: {{ $stopped_count }}</span><strong>{!! $upload_rate !!}</strong></li>
|
||||
</ul>
|
||||
48
heimdall/config/www/SupportedApps/Artifactory/Artifactory.php
Executable file
@@ -0,0 +1,48 @@
|
||||
<?php namespace App\SupportedApps\Artifactory;
|
||||
|
||||
class Artifactory extends \App\SupportedApps implements \App\EnhancedApps {
|
||||
|
||||
public $config;
|
||||
|
||||
//protected $login_first = true; // Uncomment if api requests need to be authed first
|
||||
//protected $method = 'POST'; // Uncomment if requests to the API should be set by POST
|
||||
|
||||
function __construct() {
|
||||
//$this->jar = new \GuzzleHttp\Cookie\CookieJar; // Uncomment if cookies need to be set
|
||||
}
|
||||
|
||||
public function test()
|
||||
{
|
||||
$attrs = [
|
||||
'headers' => ['X-JFrog-Art-Api' => $this->config->apiKey]
|
||||
];
|
||||
echo $this->config->apiKey;
|
||||
$test = parent::appTest($this->url('api/storageinfo'), $attrs);
|
||||
|
||||
echo $test->status;
|
||||
}
|
||||
|
||||
public function livestats()
|
||||
{
|
||||
$status = 'inactive';
|
||||
$attrs = [
|
||||
'headers' => ['X-JFrog-Art-Api' => $this->config->apiKey]
|
||||
];
|
||||
$res = parent::execute($this->url('api/storageinfo'), $attrs);
|
||||
$details = json_decode($res->getBody());
|
||||
|
||||
$data = [];
|
||||
if($details) {
|
||||
$data['artifacts_size'] = $details->binariesSummary->artifactsSize;
|
||||
$data['artifacts_count'] = $details->binariesSummary->artifactsCount;
|
||||
$status = 'active';
|
||||
}
|
||||
return parent::getLiveStats($status, $data);
|
||||
|
||||
}
|
||||
public function url($endpoint)
|
||||
{
|
||||
$api_url = parent::normaliseurl($this->config->url).$endpoint;
|
||||
return $api_url;
|
||||
}
|
||||
}
|
||||
10
heimdall/config/www/SupportedApps/Artifactory/app.json
Executable file
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"appid": "4950589b19623304e3adb649d9eee6a3bf70c35b",
|
||||
"name": "Artifactory",
|
||||
"website": "https://jfrog.com/open-source/",
|
||||
"license": "MIT License",
|
||||
"description": "Universal Repository Manager, OSS version",
|
||||
"enhanced": true,
|
||||
"tile_background": "light",
|
||||
"icon": "artifactory.png"
|
||||
}
|
||||
BIN
heimdall/config/www/SupportedApps/Artifactory/artifactory.png
Executable file
|
After Width: | Height: | Size: 7.0 KiB |
14
heimdall/config/www/SupportedApps/Artifactory/config.blade.php
Executable file
@@ -0,0 +1,14 @@
|
||||
<h2>{{ __('app.apps.config') }} ({{ __('app.optional') }}) @include('items.enable')</h2>
|
||||
<div class="items">
|
||||
<div class="input">
|
||||
<label>{{ strtoupper(__('app.url')) }}</label>
|
||||
{!! Form::text('config[override_url]', (isset($item) ? $item->getconfig()->override_url : null), array('placeholder' => __('app.apps.override'), 'id' => 'override_url', 'class' => 'form-control')) !!}
|
||||
</div>
|
||||
<div class="input">
|
||||
<label>Api Key</label>
|
||||
{!! Form::input('password', 'config[apiKey]', (isset($item) ? $item->getconfig()->apiKey : null), array('placeholder' => "Api Key", 'data-config' => 'apiKey', 'class' => 'form-control config-item')) !!}
|
||||
</div>
|
||||
<div class="input">
|
||||
<button style="margin-top: 32px;" class="btn test" id="test_config">Test</button>
|
||||
</div>
|
||||
</div>
|
||||
10
heimdall/config/www/SupportedApps/Artifactory/livestats.blade.php
Executable file
@@ -0,0 +1,10 @@
|
||||
<ul class="livestats">
|
||||
<li>
|
||||
<span class="title">Artifacts<br/>Size</span>
|
||||
<strong>{!! $artifacts_size !!}</strong>
|
||||
</li>
|
||||
<li>
|
||||
<span class="title">Artifacts<br/>Count</span>
|
||||
<strong>{!! $artifacts_count !!}</strong>
|
||||
</li>
|
||||
</ul>
|
||||
5
heimdall/config/www/SupportedApps/AsrockRackIPMI/AsrockRackIPMI.php
Executable file
@@ -0,0 +1,5 @@
|
||||
<?php namespace App\SupportedApps\AsrockRackIPMI;
|
||||
|
||||
class AsrockRackIPMI extends \App\SupportedApps {
|
||||
|
||||
}
|
||||
10
heimdall/config/www/SupportedApps/AsrockRackIPMI/app.json
Executable file
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"appid": "fa8a2fb9dfd946ec30d5e6b2ee69e24f8a252c5b",
|
||||
"name": "Asrock Rack IPMI",
|
||||
"website": "https://www.asrockrack.com/support/faq.de.asp?id=28",
|
||||
"license": "Commercial",
|
||||
"description": "Asrock Rack IPMI is an embedded server management technology by Asrock Rack.",
|
||||
"enhanced": false,
|
||||
"tile_background": "light",
|
||||
"icon": "asrockrackipmi.png"
|
||||
}
|
||||
BIN
heimdall/config/www/SupportedApps/AsrockRackIPMI/asrockrackipmi.png
Executable file
|
After Width: | Height: | Size: 4.5 KiB |
5
heimdall/config/www/SupportedApps/Bacula/Bacula.php
Executable file
@@ -0,0 +1,5 @@
|
||||
<?php namespace App\SupportedApps\Bacula;
|
||||
|
||||
class Bacula extends \App\SupportedApps {
|
||||
|
||||
}
|
||||
10
heimdall/config/www/SupportedApps/Bacula/app.json
Executable file
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"appid": "808ff47f28ddce2652860f5da59a4c62a7e285dd",
|
||||
"name": "Bacula",
|
||||
"website": "https://www.bacula.org/",
|
||||
"license": "GNU Affero General Public License v3.0",
|
||||
"description": "Bacula is a set of Open Source, computer programs that permit you (or the system administrator) to manage backup, recovery, and verification of computer data across a network of computers of different kinds.",
|
||||
"enhanced": false,
|
||||
"tile_background": "light",
|
||||
"icon": "bacula.png"
|
||||
}
|
||||
BIN
heimdall/config/www/SupportedApps/Bacula/bacula.png
Executable file
|
After Width: | Height: | Size: 6.4 KiB |
5
heimdall/config/www/SupportedApps/Baikal/Baikal.php
Executable file
@@ -0,0 +1,5 @@
|
||||
<?php namespace App\SupportedApps\Baikal;
|
||||
|
||||
class Baikal extends \App\SupportedApps {
|
||||
|
||||
}
|
||||
10
heimdall/config/www/SupportedApps/Baikal/app.json
Executable file
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"appid": "2577aa56d31c9817a26e412e90d419f70ebc6353",
|
||||
"name": "Baïkal",
|
||||
"website": "https://sabre.io/baikal/",
|
||||
"license": "GNU General Public License v3.0 only",
|
||||
"description": "Baïkal is a lightweight CalDAV+CardDAV server. It offers an extensive web interface with easy management of users, address books and calendars. It is fast and simple to install and only needs a basic php capable server. The data can be stored in a MySQL or a SQLite database.",
|
||||
"enhanced": false,
|
||||
"tile_background": "dark",
|
||||
"icon": "baikal.png"
|
||||
}
|
||||
BIN
heimdall/config/www/SupportedApps/Baikal/baikal.png
Executable file
|
After Width: | Height: | Size: 2.3 KiB |
5
heimdall/config/www/SupportedApps/Bastillion/Bastillion.php
Executable file
@@ -0,0 +1,5 @@
|
||||
<?php namespace App\SupportedApps\Bastillion;
|
||||
|
||||
class Bastillion extends \App\SupportedApps {
|
||||
|
||||
}
|
||||
10
heimdall/config/www/SupportedApps/Bastillion/app.json
Executable file
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"appid": "c07ac2e365e175d304c1cd409bcfc288ff18594f",
|
||||
"name": "Bastillion",
|
||||
"website": "https://www.bastillion.io",
|
||||
"license": "GNU Affero General Public License v3.0 or later",
|
||||
"description": "Bastillion is an open-source web-based SSH console that centrally manages administrative access to systems. A bastion host for administrators with features that promote infrastructure security, including key management and auditing.",
|
||||
"enhanced": false,
|
||||
"tile_background": "dark",
|
||||
"icon": "bastillion.png"
|
||||
}
|
||||
BIN
heimdall/config/www/SupportedApps/Bastillion/bastillion.png
Executable file
|
After Width: | Height: | Size: 4.0 KiB |
50
heimdall/config/www/SupportedApps/Bazarr/Bazarr.php
Executable file
@@ -0,0 +1,50 @@
|
||||
<?php namespace App\SupportedApps\Bazarr;
|
||||
|
||||
class Bazarr extends \App\SupportedApps implements \App\EnhancedApps {
|
||||
|
||||
public $config;
|
||||
|
||||
//protected $login_first = true; // Uncomment if api requests need to be authed first
|
||||
//protected $method = 'POST'; // Uncomment if requests to the API should be set by POST
|
||||
|
||||
function __construct() {
|
||||
//$this->jar = new \GuzzleHttp\Cookie\CookieJar; // Uncomment if cookies need to be set
|
||||
}
|
||||
|
||||
public function test()
|
||||
{
|
||||
$attrs = [
|
||||
'headers' => ['Accept' => 'application/json']
|
||||
];
|
||||
$test = parent::appTest($this->url('systemstatus'), $attrs);
|
||||
echo $test->status;
|
||||
}
|
||||
|
||||
public function livestats()
|
||||
{
|
||||
$status = 'inactive';
|
||||
$data = [];
|
||||
$attrs = [
|
||||
'headers' => ['Accept' => 'application/json']
|
||||
];
|
||||
|
||||
|
||||
$badges = json_decode(parent::execute($this->url('badges'), $attrs)->getBody());
|
||||
|
||||
$data = [];
|
||||
|
||||
if($badges) {
|
||||
$data['movies'] = $badges->movies ?? 0;
|
||||
$data['series'] = $badges->episodes ?? 0;
|
||||
}
|
||||
|
||||
return parent::getLiveStats($status, $data);
|
||||
|
||||
}
|
||||
|
||||
public function url($endpoint)
|
||||
{
|
||||
$api_url = parent::normaliseurl($this->config->url).'api/'.$endpoint.'?apikey='.$this->config->apikey;
|
||||
return $api_url;
|
||||
}
|
||||
}
|
||||
27
heimdall/config/www/SupportedApps/Bazarr/app.json
Executable file
@@ -0,0 +1,27 @@
|
||||
{
|
||||
"appid": "085f0b437f9bf9c98bb68b745c8dcf323a7e0499",
|
||||
"name": "Bazarr",
|
||||
"website": "https://github.com/morpheus65535/bazarr",
|
||||
"license": "GNU General Public License v3.0 only",
|
||||
"description": "Bazarr is a companion application to Sonarr and Radarr. It manage and download subtitles based on your requirements. You defined your preferences by TV show or movies and Bazarr take care of everything for you.",
|
||||
"enhanced": true,
|
||||
"tile_background": "dark",
|
||||
"icon": "bazarr.png",
|
||||
"config": {
|
||||
"type": "apikey",
|
||||
"stat1": {
|
||||
"name": "missing series",
|
||||
"url": ":url:/api/episodes/wanted?apikey=:apikey:",
|
||||
"key": "total",
|
||||
"filter": "none",
|
||||
"updateOnChange": "No"
|
||||
},
|
||||
"stat2": {
|
||||
"name": "missing movies",
|
||||
"url": ":url:/api/movies/wanted?apikey=:apikey:",
|
||||
"key": "total",
|
||||
"filter": "none",
|
||||
"updateOnChange": "No"
|
||||
}
|
||||
}
|
||||
}
|
||||
BIN
heimdall/config/www/SupportedApps/Bazarr/bazarr.png
Executable file
|
After Width: | Height: | Size: 6.3 KiB |
15
heimdall/config/www/SupportedApps/Bazarr/config.blade.php
Executable file
@@ -0,0 +1,15 @@
|
||||
<h2>{{ __('app.apps.config') }} ({{ __('app.optional') }}) @include('items.enable')</h2>
|
||||
<div class="items">
|
||||
<div class="input">
|
||||
<label>{{ strtoupper(__('app.url')) }}</label>
|
||||
{!! Form::text('config[override_url]', (isset($item) && isset($item->getconfig()->override_url) ? $item->getconfig()->override_url : null), array('placeholder' => __('app.apps.override'), 'id' => 'override_url', 'class' => 'form-control')) !!}
|
||||
</div>
|
||||
<div class="input">
|
||||
<label>{{ __('app.apps.apikey') }}</label>
|
||||
{!! Form::text('config[apikey]', (isset($item) && isset($item->getconfig()->apikey) ? $item->getconfig()->apikey : null), array('placeholder' => __('app.apps.apikey'), 'data-config' => 'apikey', 'class' => 'form-control config-item')) !!}
|
||||
</div>
|
||||
<div class="input">
|
||||
<button style="margin-top: 32px;" class="btn test" id="test_config">Test</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
10
heimdall/config/www/SupportedApps/Bazarr/livestats.blade.php
Executable file
@@ -0,0 +1,10 @@
|
||||
<ul class="livestats">
|
||||
<li>
|
||||
<span class="title">Movies</span>
|
||||
<strong>{!! $movies !!}</strong>
|
||||
</li>
|
||||
<li>
|
||||
<span class="title">Episodes</span>
|
||||
<strong>{!! $series !!}</strong>
|
||||
</li>
|
||||
</ul>
|
||||
5
heimdall/config/www/SupportedApps/Bitwarden/Bitwarden.php
Executable file
@@ -0,0 +1,5 @@
|
||||
<?php namespace App\SupportedApps\Bitwarden;
|
||||
|
||||
class Bitwarden extends \App\SupportedApps
|
||||
{
|
||||
}
|
||||
10
heimdall/config/www/SupportedApps/Bitwarden/app.json
Executable file
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"appid": "8a846dca305866d821748c007cf6b64adf00ea22",
|
||||
"name": "Bitwarden",
|
||||
"website": "https://bitwarden.com",
|
||||
"license": "GNU Affero General Public License v3.0",
|
||||
"description": "Open source password management solutions for individuals, teams, and business organizations.",
|
||||
"enhanced": false,
|
||||
"tile_background": "dark",
|
||||
"icon": "bitwarden.svg"
|
||||
}
|
||||
BIN
heimdall/config/www/SupportedApps/Bitwarden/bitwarden.png
Executable file
|
After Width: | Height: | Size: 1.9 KiB |
5
heimdall/config/www/SupportedApps/Booksonic/Booksonic.php
Executable file
@@ -0,0 +1,5 @@
|
||||
<?php namespace App\SupportedApps\Booksonic;
|
||||
|
||||
class Booksonic extends \App\SupportedApps {
|
||||
|
||||
}
|
||||
10
heimdall/config/www/SupportedApps/Booksonic/app.json
Executable file
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"appid": "091d3909d7e0bde850659125a13712c0122a6493",
|
||||
"name": "Booksonic",
|
||||
"website": "http://booksonic.org/",
|
||||
"license": "GPL",
|
||||
"description": "Booksonic is a server and an app for streaming your audiobooks to any pc or android phone. Most of the functionality is also available on other platforms that have apps for subsonic.",
|
||||
"enhanced": false,
|
||||
"tile_background": "dark",
|
||||
"icon": "booksonic.png"
|
||||
}
|
||||
BIN
heimdall/config/www/SupportedApps/Booksonic/booksonic.png
Executable file
|
After Width: | Height: | Size: 39 KiB |
65
heimdall/config/www/SupportedApps/Bookstack/Bookstack.php
Executable file
@@ -0,0 +1,65 @@
|
||||
<?php namespace App\SupportedApps\Bookstack;
|
||||
|
||||
class Bookstack extends \App\SupportedApps implements \App\EnhancedApps {
|
||||
|
||||
public $config;
|
||||
|
||||
//protected $login_first = true; // Uncomment if api requests need to be authed first
|
||||
//protected $method = 'POST'; // Uncomment if requests to the API should be set by POST
|
||||
|
||||
function __construct() {
|
||||
//$this->jar = new \GuzzleHttp\Cookie\CookieJar; // Uncomment if cookies need to be set
|
||||
}
|
||||
|
||||
public function getHeaders()
|
||||
{
|
||||
$api_token = $this->config->api_token.":".$this->config->api_secret;
|
||||
|
||||
$attrs['headers'] = ['Authorization' => 'Token '.$api_token];
|
||||
return $attrs;
|
||||
}
|
||||
|
||||
public function test()
|
||||
{
|
||||
$test = parent::appTest($this->url('/api/shelves?count=0'), $this->getHeaders());
|
||||
echo $test->status;
|
||||
}
|
||||
|
||||
public function livestats()
|
||||
{
|
||||
$status = 'inactive';
|
||||
|
||||
$attrs = $this->getHeaders();
|
||||
|
||||
$data = ['visiblestats' => []];
|
||||
|
||||
foreach($this->config->availablestats as $stat) {
|
||||
if (!isset(self::getAvailableStats()[$stat])) continue;
|
||||
|
||||
$res = parent::execute($this->url('/api/'.$stat.'?count=0'), $attrs);
|
||||
$details = json_decode($res->getBody());
|
||||
|
||||
$newstat = new \stdClass();
|
||||
$newstat->title = self::getAvailableStats()[$stat];
|
||||
$newstat->value = isset($details->total) ? number_format($details->total) : 'N/A';
|
||||
|
||||
$data['visiblestats'][] = $newstat;
|
||||
}
|
||||
|
||||
return parent::getLiveStats($status, $data);
|
||||
}
|
||||
|
||||
public function url($endpoint)
|
||||
{
|
||||
$api_url = parent::normaliseurl($this->config->url).$endpoint;
|
||||
return $api_url;
|
||||
}
|
||||
|
||||
public static function getAvailableStats() {
|
||||
return [
|
||||
'shelves'=>'Shelves',
|
||||
'books'=>'Books',
|
||||
'chapters'=>'Chapters',
|
||||
];
|
||||
}
|
||||
}
|
||||
10
heimdall/config/www/SupportedApps/Bookstack/app.json
Executable file
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"appid": "348c49dd03dddd418929316668d2e67bf2d9ae88",
|
||||
"name": "Bookstack",
|
||||
"website": "https://www.bookstackapp.com/",
|
||||
"license": "MIT License",
|
||||
"description": "BookStack is a simple, self-hosted, easy-to-use platform for organising and storing information.",
|
||||
"enhanced": true,
|
||||
"tile_background": "dark",
|
||||
"icon": "bookstack.png"
|
||||
}
|
||||
BIN
heimdall/config/www/SupportedApps/Bookstack/bookstack.png
Executable file
|
After Width: | Height: | Size: 17 KiB |
23
heimdall/config/www/SupportedApps/Bookstack/config.blade.php
Executable file
@@ -0,0 +1,23 @@
|
||||
<h2>{{ __('app.apps.config') }} ({{ __('app.optional') }}) @include('items.enable')</h2>
|
||||
<div class="items">
|
||||
<div class="input">
|
||||
<label>{{ strtoupper(__('app.url')) }}</label>
|
||||
{!! Form::text('config[override_url]', isset($item) ? ($item->getConfig()->override_url ?? null) : null, array('placeholder' => __('app.apps.override'), 'id' => 'override_url', 'class' => 'form-control')) !!}
|
||||
</div>
|
||||
<div class="input">
|
||||
<label>Token ID</label>
|
||||
{!! Form::text('config[api_token]', null, array('placeholder' => 'Token ID', 'data-config' => 'api_token', 'class' => 'form-control config-item')) !!}
|
||||
</div>
|
||||
<div class="input">
|
||||
<label>Token Secret</label>
|
||||
{!! Form::text('config[api_secret]', null, array('placeholder' => 'Token Secret', 'data-config' => 'api_secret', 'class' => 'form-control config-item')) !!}
|
||||
</div>
|
||||
<div class="input">
|
||||
<label>Stats to show</label>
|
||||
{!! Form::select('config[availablestats][]', App\SupportedApps\Bookstack\Bookstack::getAvailableStats(), isset($item) ? ($item->getConfig()->availablestats ?? null) : null, array('multiple'=>'multiple')) !!}
|
||||
</div>
|
||||
<div class="input">
|
||||
<button style="margin-top: 32px;" class="btn test" id="test_config">Test</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
8
heimdall/config/www/SupportedApps/Bookstack/livestats.blade.php
Executable file
@@ -0,0 +1,8 @@
|
||||
<ul class="livestats">
|
||||
@foreach ($visiblestats as $stat)
|
||||
<li>
|
||||
<span class="title">{!! $stat->title !!}</span>
|
||||
<strong>{!! $stat->value !!}</strong>
|
||||
</li>
|
||||
@endforeach
|
||||
</ul>
|
||||
5
heimdall/config/www/SupportedApps/Box/Box.php
Executable file
@@ -0,0 +1,5 @@
|
||||
<?php namespace App\SupportedApps\Box;
|
||||
|
||||
class Box extends \App\SupportedApps {
|
||||
|
||||
}
|
||||
10
heimdall/config/www/SupportedApps/Box/app.json
Executable file
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"appid": "c7d8a6d722a1ec9a16fae165177c418d4fd63175",
|
||||
"name": "Box",
|
||||
"website": "box.com",
|
||||
"license": "Commercial",
|
||||
"description": "The company focuses on cloud content management and file sharing service for businesses.",
|
||||
"enhanced": false,
|
||||
"tile_background": "dark",
|
||||
"icon": "box.png"
|
||||
}
|
||||
BIN
heimdall/config/www/SupportedApps/Box/box.png
Executable file
|
After Width: | Height: | Size: 106 KiB |
7
heimdall/config/www/SupportedApps/CUPS/CUPS.php
Executable file
@@ -0,0 +1,7 @@
|
||||
<?php
|
||||
|
||||
namespace App\SupportedApps\CUPS;
|
||||
|
||||
class CUPS extends \App\SupportedApps
|
||||
{
|
||||
}
|
||||
10
heimdall/config/www/SupportedApps/CUPS/app.json
Executable file
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"appid": "ba8ed4dc9e438b22c9456a78a2c09652955be42c",
|
||||
"name": "CUPS",
|
||||
"website": "https://www.cups.org",
|
||||
"license": "GNU General Public License v1.0 or later",
|
||||
"description": "The standards-based, open source printing system developed by Apple for iOS®, iPadOS®, and macOS®. CUPS uses IPP Everywhere™ to support printing to local and network printers.",
|
||||
"enhanced": false,
|
||||
"tile_background": "light",
|
||||
"icon": "cups.svg"
|
||||
}
|
||||
60
heimdall/config/www/SupportedApps/Cabot/Cabot.php
Executable file
@@ -0,0 +1,60 @@
|
||||
<?php namespace App\SupportedApps\Cabot;
|
||||
|
||||
class Cabot extends \App\SupportedApps implements \App\EnhancedApps {
|
||||
private const ENDPOINT = 'api/services/?format=json';
|
||||
|
||||
private const STATUS_PASSING = 'Passing';
|
||||
private const STATUS_WARNING = 'Warning';
|
||||
private const STATUS_ERROR = 'Error';
|
||||
private const STATUS_CRITICAL = 'Critical';
|
||||
|
||||
public $config;
|
||||
|
||||
public function test()
|
||||
{
|
||||
$test = parent::appTest($this->url(self::ENDPOINT));
|
||||
echo $test->status;
|
||||
}
|
||||
|
||||
public function livestats()
|
||||
{
|
||||
$result = parent::execute($this->url(self::ENDPOINT));
|
||||
$services = json_decode($result->getBody());
|
||||
|
||||
$results = [
|
||||
self::STATUS_PASSING => 0,
|
||||
self::STATUS_WARNING => 0,
|
||||
self::STATUS_ERROR => 0,
|
||||
self::STATUS_CRITICAL => 0,
|
||||
];
|
||||
|
||||
foreach ($services as $service) {
|
||||
$overallStatus = ucfirst(strtolower($service->overall_status ?? ''));
|
||||
|
||||
if (isset($results[$overallStatus])) {
|
||||
$results[$overallStatus]++;
|
||||
}
|
||||
}
|
||||
|
||||
if ($results[self::STATUS_CRITICAL] > 0) {
|
||||
$status = self::STATUS_CRITICAL;
|
||||
} elseif ($results[self::STATUS_ERROR] > 0) {
|
||||
$status = self::STATUS_ERROR;
|
||||
} elseif ($results[self::STATUS_WARNING] > 0) {
|
||||
$status = self::STATUS_WARNING;
|
||||
} else {
|
||||
$status = self::STATUS_PASSING;
|
||||
}
|
||||
|
||||
$data['status_output'] = $status;
|
||||
$data['count_output'] = $results[$status];
|
||||
|
||||
return parent::getLiveStats('inactive', $data);
|
||||
}
|
||||
|
||||
public function url($endpoint)
|
||||
{
|
||||
$api_url = parent::normaliseurl($this->config->url).$endpoint;
|
||||
return $api_url;
|
||||
}
|
||||
}
|
||||
10
heimdall/config/www/SupportedApps/Cabot/app.json
Executable file
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"appid": "36cf09d76e7173b82ef23504aae37c05784b0215",
|
||||
"name": "Cabot",
|
||||
"website": "https://cabotapp.com",
|
||||
"license": "MIT License",
|
||||
"description": "Self-hosted watchdog for your websites and infrastructure.",
|
||||
"enhanced": true,
|
||||
"tile_background": "light",
|
||||
"icon": "cabot.png"
|
||||
}
|
||||
BIN
heimdall/config/www/SupportedApps/Cabot/cabot.png
Executable file
|
After Width: | Height: | Size: 16 KiB |
10
heimdall/config/www/SupportedApps/Cabot/config.blade.php
Executable file
@@ -0,0 +1,10 @@
|
||||
<h2>{{ __('app.apps.config') }} ({{ __('app.optional') }}) @include('items.enable')</h2>
|
||||
<div class="items">
|
||||
<div class="input">
|
||||
<label>{{ strtoupper(__('app.url')) }}</label>
|
||||
{!! Form::text('config[override_url]', (isset($item) ? $item->getconfig()->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>
|
||||
6
heimdall/config/www/SupportedApps/Cabot/livestats.blade.php
Executable file
@@ -0,0 +1,6 @@
|
||||
<ul class="livestats">
|
||||
<li>
|
||||
<span class="title">Overall Status</span>
|
||||
<strong>{!! $count_output !!} {!! $status_output !!}</strong>
|
||||
</li>
|
||||
</ul>
|
||||
5
heimdall/config/www/SupportedApps/CalibreWeb/CalibreWeb.php
Executable file
@@ -0,0 +1,5 @@
|
||||
<?php namespace App\SupportedApps\CalibreWeb;
|
||||
|
||||
class CalibreWeb extends \App\SupportedApps {
|
||||
|
||||
}
|
||||
10
heimdall/config/www/SupportedApps/CalibreWeb/app.json
Executable file
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"appid": "d0404064982ed19f24e76ca261e1fbb4d821c2a6",
|
||||
"name": "CalibreWeb",
|
||||
"website": "https://github.com/janeczku/calibre-web",
|
||||
"license": "GNU General Public License v3.0",
|
||||
"description": "Calibre-Web is a web app providing a clean interface for browsing, reading and downloading eBooks using an existing Calibre database.",
|
||||
"enhanced": false,
|
||||
"tile_background": "dark",
|
||||
"icon": "calibreweb.png"
|
||||
}
|
||||
BIN
heimdall/config/www/SupportedApps/CalibreWeb/calibreweb.png
Executable file
|
After Width: | Height: | Size: 2.0 KiB |
5
heimdall/config/www/SupportedApps/Cardigann/Cardigann.php
Executable file
@@ -0,0 +1,5 @@
|
||||
<?php namespace App\SupportedApps\Cardigann;
|
||||
|
||||
class Cardigann extends \App\SupportedApps {
|
||||
|
||||
}
|
||||
10
heimdall/config/www/SupportedApps/Cardigann/app.json
Executable file
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"appid": "9f2e2dd8217d1186f9ad484d91e009227efa5897",
|
||||
"name": "Cardigann",
|
||||
"website": "https://github.com/cardigann/cardigann",
|
||||
"license": "MIT License",
|
||||
"description": "A proxy server for adding new indexers to Sonarr, SickRage and other media managers",
|
||||
"enhanced": false,
|
||||
"tile_background": "light",
|
||||
"icon": "cardigann.png"
|
||||
}
|
||||
BIN
heimdall/config/www/SupportedApps/Cardigann/cardigann.png
Executable file
|
After Width: | Height: | Size: 3.0 KiB |
@@ -0,0 +1,5 @@
|
||||
<?php namespace App\SupportedApps\ChangeDetectionio;
|
||||
|
||||
class ChangeDetectionio extends \App\SupportedApps {
|
||||
|
||||
}
|
||||
10
heimdall/config/www/SupportedApps/ChangeDetectionio/app.json
Executable file
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"appid": "86c6a58798da154166de71097263f9c40804d636",
|
||||
"name": "ChangeDetection.io",
|
||||
"website": "https://changedetection.io",
|
||||
"license": "Apache License 2.0",
|
||||
"description": "Self-hosted change monitoring of web pages.\r\n\r\nKnow when web pages change! Stay ontop of new information!\r\n\r\nLive your data-life pro-actively instead of re-actively, do not rely on manipulative social media for consuming important information.",
|
||||
"enhanced": false,
|
||||
"tile_background": "dark",
|
||||
"icon": "changedetectionio.png"
|
||||
}
|
||||
BIN
heimdall/config/www/SupportedApps/ChangeDetectionio/changedetectionio.png
Executable file
|
After Width: | Height: | Size: 3.9 KiB |
5
heimdall/config/www/SupportedApps/CheckMK/CheckMK.php
Executable file
@@ -0,0 +1,5 @@
|
||||
<?php namespace App\SupportedApps\CheckMK;
|
||||
|
||||
class CheckMK extends \App\SupportedApps {
|
||||
|
||||
}
|
||||