Coder Social home page Coder Social logo

heimdall-apps's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

heimdall-apps's Issues

FreshRSS app can't be edited

Steps to reproduce:

  1. Add a new FreshRSS widget. Input local address (i.e. 192.168.X.Y) (don't think this is necessary but this is my case). I would like to point that despite seemingly being made an enhanced app in #229 , app creating form doesn't provide any special options? I think this may be related.
  2. Go to Application list and press the Edit.
  3. Error appears:

heimdall_freshrss_error

ErrorException (E_ERROR)
Undefined property: stdClass::$override_url (View: /config/www/SupportedApps/FreshRSS/config.blade.php) (View: /config/www/SupportedApps/FreshRSS/config.blade.php) (View: /config/www/SupportedApps/FreshRSS/config.blade.php)
Previous exceptions
Undefined property: stdClass::$override_url (View: /config/www/SupportedApps/FreshRSS/config.blade.php) (View: /config/www/SupportedApps/FreshRSS/config.blade.php) (0)
Undefined property: stdClass::$override_url (View: /config/www/SupportedApps/FreshRSS/config.blade.php) (0)
Undefined property: stdClass::$override_url (0)

And then the code:
/var/www/localhost/heimdall/storage/framework/views/b6a959ada2fd2d558e1ac447a23fdcea43a76cd6.php

<h2><?php echo e(__('app.apps.config')); ?> (<?php echo e(__('app.optional')); ?>) <?php echo $__env->make('items.enable', \Illuminate\Support\Arr::except(get_defined_vars(), array('__data', '__path')))->render(); ?></h2>
<div class="items">
    <div class="input">
        <label><?php echo e(strtoupper(__('app.url'))); ?></label>
        <?php echo 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><?php echo e(__('app.apps.username')); ?></label>
        <?php echo Form::text('config[username]', $item->getconfig()->username ?? null, array('placeholder' => __('app.apps.username'), 'data-config' => 'username', 'class' => 'form-control config-item')); ?>
 
    </div>
    <div class="input">
        <label><?php echo e(__('app.apps.apikey')); ?></label>
        <?php echo Form::text('config[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>
Arguments
"Undefined property: stdClass::$override_url (View: /config/www/SupportedApps/FreshRSS/config.blade.php) (View: /config/www/SupportedApps/FreshRSS/config.blade.php) (View: /config/www/SupportedApps/FreshRSS/config.blade.php) โ—€"

I am running Heimdall in a container, if it matters.

ruTorrent internal 500 error

Hi,

When I add rutorrent and set the config options with the url, username and password and click test it says 'connection successful', I am using feralhosting and I have managed to get it working with Transdrone app. However after I have saved it, i get the following error.

{
    "message": "Trying to get property 'value' of non-object",
    "exception": "ErrorException",
    "file": "/opt/heimdall/app/SupportedApps/ruTorrent/ruTorrent.php",
    "line": 34,
    "trace": [
        {
            "file": "/opt/heimdall/app/SupportedApps/ruTorrent/ruTorrent.php",
            "line": 34,
            "function": "handleError",
            "class": "Illuminate\\Foundation\\Bootstrap\\HandleExceptions",
            "type": "->"
        },
        {
            "file": "/opt/heimdall/app/Http/Controllers/ItemController.php",
            "line": 366,
            "function": "livestats",
            "class": "App\\SupportedApps\\ruTorrent\\ruTorrent",
            "type": "->"
        },
        {
            "function": "getStats",
            "class": "App\\Http\\Controllers\\ItemController",
            "type": "->"
        },
        {
            "file": "/opt/heimdall/vendor/laravel/framework/src/Illuminate/Routing/Controller.php",
            "line": 54,
            "function": "call_user_func_array"
        },
        {
            "file": "/opt/heimdall/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php",
            "line": 45,
            "function": "callAction",
            "class": "Illuminate\\Routing\\Controller",
            "type": "->"
        },
        {
            "file": "/opt/heimdall/vendor/laravel/framework/src/Illuminate/Routing/Route.php",
            "line": 219,
            "function": "dispatch",
            "class": "Illuminate\\Routing\\ControllerDispatcher",
            "type": "->"
        },
        {
            "file": "/opt/heimdall/vendor/laravel/framework/src/Illuminate/Routing/Route.php",
            "line": 176,
            "function": "runController",
            "class": "Illuminate\\Routing\\Route",
            "type": "->"
        },
        {
            "file": "/opt/heimdall/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
            "line": 682,
            "function": "run",
            "class": "Illuminate\\Routing\\Route",
            "type": "->"
        },
        {
            "file": "/opt/heimdall/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php",
            "line": 30,
            "function": "Illuminate\\Routing\\{closure}",
            "class": "Illuminate\\Routing\\Router",
            "type": "->"
        },
        {
            "file": "/opt/heimdall/app/Http/Middleware/CheckAllowed.php",
            "line": 37,
            "function": "Illuminate\\Routing\\{closure}",
            "class": "Illuminate\\Routing\\Pipeline",
            "type": "->"
        },
        {
            "file": "/opt/heimdall/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 163,
            "function": "handle",
            "class": "App\\Http\\Middleware\\CheckAllowed",
            "type": "->"
        },
        {
            "file": "/opt/heimdall/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php",
            "line": 53,
            "function": "Illuminate\\Pipeline\\{closure}",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/opt/heimdall/vendor/laravel/framework/src/Illuminate/Routing/Middleware/SubstituteBindings.php",
            "line": 41,
            "function": "Illuminate\\Routing\\{closure}",
            "class": "Illuminate\\Routing\\Pipeline",
            "type": "->"
        },
        {
            "file": "/opt/heimdall/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 163,
            "function": "handle",
            "class": "Illuminate\\Routing\\Middleware\\SubstituteBindings",
            "type": "->"
        },
        {
            "file": "/opt/heimdall/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php",
            "line": 53,
            "function": "Illuminate\\Pipeline\\{closure}",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/opt/heimdall/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/VerifyCsrfToken.php",
            "line": 75,
            "function": "Illuminate\\Routing\\{closure}",
            "class": "Illuminate\\Routing\\Pipeline",
            "type": "->"
        },
        {
            "file": "/opt/heimdall/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 163,
            "function": "handle",
            "class": "Illuminate\\Foundation\\Http\\Middleware\\VerifyCsrfToken",
            "type": "->"
        },
        {
            "file": "/opt/heimdall/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php",
            "line": 53,
            "function": "Illuminate\\Pipeline\\{closure}",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/opt/heimdall/vendor/laravel/framework/src/Illuminate/View/Middleware/ShareErrorsFromSession.php",
            "line": 49,
            "function": "Illuminate\\Routing\\{closure}",
            "class": "Illuminate\\Routing\\Pipeline",
            "type": "->"
        },
        {
            "file": "/opt/heimdall/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 163,
            "function": "handle",
            "class": "Illuminate\\View\\Middleware\\ShareErrorsFromSession",
            "type": "->"
        },
        {
            "file": "/opt/heimdall/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php",
            "line": 53,
            "function": "Illuminate\\Pipeline\\{closure}",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/opt/heimdall/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php",
            "line": 63,
            "function": "Illuminate\\Routing\\{closure}",
            "class": "Illuminate\\Routing\\Pipeline",
            "type": "->"
        },
        {
            "file": "/opt/heimdall/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 163,
            "function": "handle",
            "class": "Illuminate\\Session\\Middleware\\StartSession",
            "type": "->"
        },
        {
            "file": "/opt/heimdall/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php",
            "line": 53,
            "function": "Illuminate\\Pipeline\\{closure}",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/opt/heimdall/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/AddQueuedCookiesToResponse.php",
            "line": 37,
            "function": "Illuminate\\Routing\\{closure}",
            "class": "Illuminate\\Routing\\Pipeline",
            "type": "->"
        },
        {
            "file": "/opt/heimdall/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 163,
            "function": "handle",
            "class": "Illuminate\\Cookie\\Middleware\\AddQueuedCookiesToResponse",
            "type": "->"
        },
        {
            "file": "/opt/heimdall/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php",
            "line": 53,
            "function": "Illuminate\\Pipeline\\{closure}",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/opt/heimdall/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/EncryptCookies.php",
            "line": 66,
            "function": "Illuminate\\Routing\\{closure}",
            "class": "Illuminate\\Routing\\Pipeline",
            "type": "->"
        },
        {
            "file": "/opt/heimdall/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 163,
            "function": "handle",
            "class": "Illuminate\\Cookie\\Middleware\\EncryptCookies",
            "type": "->"
        },
        {
            "file": "/opt/heimdall/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php",
            "line": 53,
            "function": "Illuminate\\Pipeline\\{closure}",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/opt/heimdall/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 104,
            "function": "Illuminate\\Routing\\{closure}",
            "class": "Illuminate\\Routing\\Pipeline",
            "type": "->"
        },
        {
            "file": "/opt/heimdall/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
            "line": 684,
            "function": "then",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/opt/heimdall/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
            "line": 659,
            "function": "runRouteWithinStack",
            "class": "Illuminate\\Routing\\Router",
            "type": "->"
        },
        {
            "file": "/opt/heimdall/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
            "line": 625,
            "function": "runRoute",
            "class": "Illuminate\\Routing\\Router",
            "type": "->"
        },
        {
            "file": "/opt/heimdall/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
            "line": 614,
            "function": "dispatchToRoute",
            "class": "Illuminate\\Routing\\Router",
            "type": "->"
        },
        {
            "file": "/opt/heimdall/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php",
            "line": 176,
            "function": "dispatch",
            "class": "Illuminate\\Routing\\Router",
            "type": "->"
        },
        {
            "file": "/opt/heimdall/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php",
            "line": 30,
            "function": "Illuminate\\Foundation\\Http\\{closure}",
            "class": "Illuminate\\Foundation\\Http\\Kernel",
            "type": "->"
        },
        {
            "file": "/opt/heimdall/vendor/fideloper/proxy/src/TrustProxies.php",
            "line": 57,
            "function": "Illuminate\\Routing\\{closure}",
            "class": "Illuminate\\Routing\\Pipeline",
            "type": "->"
        },
        {
            "file": "/opt/heimdall/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 163,
            "function": "handle",
            "class": "Fideloper\\Proxy\\TrustProxies",
            "type": "->"
        },
        {
            "file": "/opt/heimdall/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php",
            "line": 53,
            "function": "Illuminate\\Pipeline\\{closure}",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/opt/heimdall/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php",
            "line": 31,
            "function": "Illuminate\\Routing\\{closure}",
            "class": "Illuminate\\Routing\\Pipeline",
            "type": "->"
        },
        {
            "file": "/opt/heimdall/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 163,
            "function": "handle",
            "class": "Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest",
            "type": "->"
        },
        {
            "file": "/opt/heimdall/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php",
            "line": 53,
            "function": "Illuminate\\Pipeline\\{closure}",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/opt/heimdall/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php",
            "line": 31,
            "function": "Illuminate\\Routing\\{closure}",
            "class": "Illuminate\\Routing\\Pipeline",
            "type": "->"
        },
        {
            "file": "/opt/heimdall/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 163,
            "function": "handle",
            "class": "Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest",
            "type": "->"
        },
        {
            "file": "/opt/heimdall/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php",
            "line": 53,
            "function": "Illuminate\\Pipeline\\{closure}",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/opt/heimdall/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ValidatePostSize.php",
            "line": 27,
            "function": "Illuminate\\Routing\\{closure}",
            "class": "Illuminate\\Routing\\Pipeline",
            "type": "->"
        },
        {
            "file": "/opt/heimdall/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 163,
            "function": "handle",
            "class": "Illuminate\\Foundation\\Http\\Middleware\\ValidatePostSize",
            "type": "->"
        },
        {
            "file": "/opt/heimdall/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php",
            "line": 53,
            "function": "Illuminate\\Pipeline\\{closure}",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/opt/heimdall/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/CheckForMaintenanceMode.php",
            "line": 62,
            "function": "Illuminate\\Routing\\{closure}",
            "class": "Illuminate\\Routing\\Pipeline",
            "type": "->"
        },
        {
            "file": "/opt/heimdall/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 163,
            "function": "handle",
            "class": "Illuminate\\Foundation\\Http\\Middleware\\CheckForMaintenanceMode",
            "type": "->"
        },
        {
            "file": "/opt/heimdall/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php",
            "line": 53,
            "function": "Illuminate\\Pipeline\\{closure}",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/opt/heimdall/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 104,
            "function": "Illuminate\\Routing\\{closure}",
            "class": "Illuminate\\Routing\\Pipeline",
            "type": "->"
        },
        {
            "file": "/opt/heimdall/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php",
            "line": 151,
            "function": "then",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/opt/heimdall/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php",
            "line": 116,
            "function": "sendRequestThroughRouter",
            "class": "Illuminate\\Foundation\\Http\\Kernel",
            "type": "->"
        },
        {
            "file": "/opt/heimdall/public/index.php",
            "line": 55,
            "function": "handle",
            "class": "Illuminate\\Foundation\\Http\\Kernel",
            "type": "->"
        }
    ]
}

htmlspecialchars() expects parameter 1 to be string

When editing AdGuardHome I get the following:

"htmlspecialchars() expects parameter 1 to be string, array given (View: /config/www/SupportedApps/AdGuardHome/config.blade.php) (View: /config/www/SupportedApps[ โ–ถ]()"

I'm not sure if this is an issue in the apps files or the main app itself, but since the file that is causing the error is in this repo, I figured this is the best place to raise it.

Running Heimdall 2.4.11

500 Server Error when saving Private Apps

I'm getting 500 Server Error when saving trying to save Private Apps using Heimdall version 2.4.15 (even if it says 2.4.13).

Testapp was made by duplicating Pihole App and changing:

  • Pihole.php -> Testapp.php (also changed Pihole to Testapp in two plaeces in this file)
  • app.json (changed appid, name)

I've ran commands as per wiki for private apps. App is being listed in Application Type at the bottom of the list. Noticed that description is missing. Unable to save and getting 500 server error.

ruTorrent - /RPC2 not found

Hello,

When connecting to the ruTorrent Advanced Plugin, you will get an error 404 that http(s)://YOURRUTORRENTURL/RPC2 isn't found. Please change the /RPC2 in the SupportedApps/ruTorrent/ruTorrent.php to /plugins/rpc/rpc.php and the script will connect succesfully.

Jellyfin 10.7.0 API changed, no more datas displayed in Heimdall

Hello,
just updated from Jellyfin 10.6.4 stable to 10.7.0 stable today and, while it's API seems still able to communicate with Heimdall ("Successfully communicated with the API" message when tested), chosen datas are not displayed anymore. I did not try previous Jellyfin 10.7.0 RC, only the stable released today.
Many thanks to the Heimdall team.

Creating Private Apps

Wiki says:
Go to https://apps.heimdall.site, depending if the app you are creating is a foundation or enhanced app, go to the relevant section and download the Zip for any application (More actions).

I cant find neither Zip nor More actions.

Add default setting for hex color

In the settings, create an option for a user selectable default hex color to be used when you select Application None. Then if they user wants to change it for a specific button, they can override that on the Add Application page.

X Callback URL Support

Is there a way to put in a URL in Heimdall where when I click on it, it does not prepend with http? I am wanting to do some x-callback urls... like things:// for example

provide GIF examples for enhanced apps

in order to let users know right away what is actually enhanced about the enhanced apps, all the logos in the enhanced app list page should be dynamic, like previews.

for example, the small GIF for NZBGet in the main page is incredibly useful to understand its functionality:

ideally, this should be done for all the enhanced apps.

Add automated tests for enhanced apps

@KodeStar: @keriati talking of tests, if you get it figured out, it might be worth seeing if you can come up with something for https://github.com/linuxserver/Heimdall-Apps/ it would be really nice if we could have some tests run just to make sure its ready to be merged so someone just has to cast a quick glance over it. Something like:

Foundation app

  • does it have an image that meets the min requirement
  • Is it in the correct directory (not all PRs have been and I didn't notice and it messed things up)
  • Does it exist on apps.heimdall.site

Enhanced app

  • All of the above
  • Is it actually an enhanced app (does $data actually contain information - we have had a lot of PRs where people have downloaded the enhanced zip and submitted it as is, without actually doing the work to make it an enhanced app)
  • Does it work (not sure on the feasibility of this one, so not a requirement, but would be nice to try and automate testing it as I don't run a lot of the apps so tend to just take it on faith that they actually work)

Add Proxmox Enhanced App

after logging in

folder view -> datacenter -> summary

you get nice stats and overview

  • heath
  • nodes online/offline
  • guests (vm running/stop + lxc running/stoped)
  • resources (cpu/memory/storage)

Plex enhanced app no longer works after SSL Verify Toggle was added

For some background, I have only been using this app for about a week and have no history with or understanding of PHP.

That said, my Plex integration is not working. Other users have reported this in a discussion topic as well as on Reddit:

All of my other integrations work just fine, and I am running Plex through a docker container with 'host' networking.

Reverting these commits fixes the issue:

Issue with custom JavaScript

I am attempting to add plausible analytics to my website via the custom JavaScript.
But it seems that it's both stripping the script block closing and not running the script at all.

Pi-Hole Live-Stats broken after updating AdminLTE

After Update Pi-Hole admin web interface the live-stats gone missing.

In this Update Pihole added authentication to more endpoints.

https://pi-hole.net/blog/2022/11/17/upcoming-changes-authentication-for-more-api-endpoints-required/

It seems that the pi-hole part is just calling the api.php endpoint without any queries.

https://github.com/linuxserver/Heimdall-Apps/blob/master/Pihole/Pihole.php

To get it running again the endpoint should be called with the empty query summaryRaw and the api token in the query param auth. So the config-ui should also ask for the api key. In my setup I have following results:

HTTP 200 OK https://host/admin/api.php

[]

The correct endpoint should be.

https://host/admin/api.php?summaryRaw&auth=654065165cd1sa56d106c5115cd10as651d0652013rdc2dcas

HTTP 200 OK {"domains_being_blocked":50123,"dns_queries_today":100123,"ads_blocked_today":80123,"ads_percentage_today":38.890179,"unique_domains":2123,"queries_forwarded":20123,"queries_cached":10123,"clients_ever_seen":20,"unique_clients":12,"dns_queries_all_types":100123,"reply_UNKNOWN":555,"reply_NODATA":5555,"reply_NXDOMAIN":999,"reply_CNAME":10123,"reply_IP":12312,"reply_DOMAIN":123,"reply_RRNAME":0,"reply_SERVFAIL":15,"reply_REFUSED":0,"reply_NOTIMP":0,"reply_OTHER":0,"reply_DNSSEC":0,"reply_NONE":0,"reply_BLOB":775,"dns_queries_all_replies":158602,"privacy_level":0,"status":"enabled","gravity_last_updated":{"file_exists":true,"absolute":1671730768,"relative":{"days":1,"hours":3,"minutes":35}}}

I pseudomized the numbers :)

Request: Gitlab enhancement should offer different url for health-checks

Similar to apps like proxmox or portainer, there should be an override URL to use the health check and api read.

My personal use case:
The URLs I use in the top configuration are proxied with cloudflare access, so typically would have to login with my authentication provider before getting access to the application(s). This means that heimdall (currently) is unable to reach my gitlab instance through the url. But, since my heimdall is hosted in the same network as my other applications, the override url is simply the private IP and 'works'.

Possible Fix:
Add a URL field (similar to proxmox / portainer since I am familiar with them) which can override the application link at the top and use this url instead for the enhacement features.

Even cooler but harder fix (and probably not needed):
Add settings to give heimdall a cloudflare access token, and add those headers to all of its enhancement http requests.

Ip public address review

Hello every one,

I would like to generate a APPS who return a public ip address.
For exemple to retrun "docker exec -it transmission curl ifconfig.io" in the Apps Transmission.
Do you have any idea ?

Thank's ๐Ÿ‘

Density of apps

Hi,
I'm wondering if there is a way to change the density of apps - I'd rather sacrifice font size in favor of say 5 across, or even just the icons. Is this possible? I think I've read through all the available docs, but did not find an answer. Thank you!

Firefly III

Firefly III icon and description not being shown while adding.

Screenshot from 2022-03-24 00-30-56

Issue with Dash. integration

Hello! I have created an integration to my project dash., which has been merged. Unfortunately, users reported that it did not work.

I have copied the output and created a PR according to your guidelines. As I can find not information on how to set up a local development environment to test the integration, I don't know how I could debug the problem. The only thing I can provide is that I tried it locally, and I get a 500 Internal Server Error when selecting Dash., but not when selecting any other application.

image

One thing I think that could be the problem is the mismatch between the name and the folder path (Dash. Vs Dashdot). The actual name of the project is Dash. though.

High CPU usage

Whenever APIs are being used and depending on how many are used on the dashboard, the CPU usage can jump above 50% usage when the dashboard is displayed. From my understanding this is happening because there is a constant pulling of information from all the APIs.

I have tried to find a global refresh setting or per app refresh setting but there doesn't seem to be any.

In order to help diminish the CPU usage, perhaps it would be a good idea to introduce a global refresh setting and one per application that overrides the global setting so that we can configure how often the data is being pulled in milliseconds or seconds.

Synology

The png file of synology isn't transparant on the corners.
synology exemple

Portainer should support "Skip TLS verification"

Out of the box Portainer now uses a self-signed certificate on port 9443 and considers port 9000 (HTTP) to be "legacy" (see docs).

To avoid using the legacy mechanism, and work with a self-signed certificate, the portainer app in Heimdall should have the option to disable TLS check.

This is similar to the behaviour within plex:
https://github.com/linuxserver/Heimdall-Apps/blob/master/Plex/Plex.php#L87-L97
https://github.com/linuxserver/Heimdall-Apps/blob/master/Plex/config.blade.php#L12-L27

ErrorException thrown after trying to set username and password in Transmission 'config' section

When editing Transmission app line/details after trying to save config parameters, the app crashes and I get a string of php exceptions:

ErrorException thrown with message "Illegal string offset 'name' (View: /config/www/SupportedApps/Transmission/config.blade.php) (View: /config/www/SupportedApps/Transmission/config.blade.php) (View: /config/www/SupportedApps/Transmission/config.blade.php)"

Stacktrace:
#77 ErrorException in /var/www/localhost/heimdall/vendor/laravelcollective/html/src/FormBuilder.php:290
#76 ErrorException in /var/www/localhost/heimdall/vendor/laravelcollective/html/src/FormBuilder.php:290
#75 ErrorException in /var/www/localhost/heimdall/vendor/laravelcollective/html/src/FormBuilder.php:290
#74 ErrorException in /var/www/localhost/heimdall/vendor/laravelcollective/html/src/FormBuilder.php:290
#73 Illuminate\Foundation\Bootstrap\HandleExceptions:handleError in /var/www/localhost/heimdall/vendor/laravelcollective/html/src/FormBuilder.php:290
#72 Collective\Html\FormBuilder:input in /var/www/localhost/heimdall/vendor/laravelcollective/html/src/FormBuilder.php:336
#71 Collective\Html\FormBuilder:password in /var/www/localhost/heimdall/vendor/laravel/framework/src/Illuminate/Support/Facades/Facade.php:237
#70 Illuminate\Support\Facades\Facade:__callStatic in /var/www/localhost/heimdall/storage/framework/views/1aa81e8ade83ecb87129a71111a26c66a7624114.php:15
#69 include in /var/www/localhost/heimdall/vendor/laravel/framework/src/Illuminate/View/Engines/PhpEngine.php:43
#68 Illuminate\View\Engines\PhpEngine:evaluatePath in /var/www/localhost/heimdall/vendor/laravel/framework/src/Illuminate/View/Engines/CompilerEngine.php:59
#67 Illuminate\View\Engines\CompilerEngine:get in /var/www/localhost/heimdall/vendor/laravel/framework/src/Illuminate/View/View.php:142
#66 Illuminate\View\View:getContents in /var/www/localhost/heimdall/vendor/laravel/framework/src/Illuminate/View/View.php:125
#65 Illuminate\View\View:renderContents in /var/www/localhost/heimdall/vendor/laravel/framework/src/Illuminate/View/View.php:90
#64 Illuminate\View\View:render in /var/www/localhost/heimdall/storage/framework/views/0400c13837702c90caf43da85ae3675fbff580e3.php:95
#63 include in /var/www/localhost/heimdall/vendor/laravel/framework/src/Illuminate/View/Engines/PhpEngine.php:43
#62 Illuminate\View\Engines\PhpEngine:evaluatePath in /var/www/localhost/heimdall/vendor/laravel/framework/src/Illuminate/View/Engines/CompilerEngine.php:59
#61 Illuminate\View\Engines\CompilerEngine:get in /var/www/localhost/heimdall/vendor/laravel/framework/src/Illuminate/View/View.php:142
#60 Illuminate\View\View:getContents in /var/www/localhost/heimdall/vendor/laravel/framework/src/Illuminate/View/View.php:125
#59 Illuminate\View\View:renderContents in /var/www/localhost/heimdall/vendor/laravel/framework/src/Illuminate/View/View.php:90
#58 Illuminate\View\View:render in /var/www/localhost/heimdall/storage/framework/views/8d91c3cd0f3a13839dbe5eac67e46f31e58dc512.php:5
#57 include in /var/www/localhost/heimdall/vendor/laravel/framework/src/Illuminate/View/Engines/PhpEngine.php:43
#56 Illuminate\View\Engines\PhpEngine:evaluatePath in /var/www/localhost/heimdall/vendor/laravel/framework/src/Illuminate/View/Engines/CompilerEngine.php:59
#55 Illuminate\View\Engines\CompilerEngine:get in /var/www/localhost/heimdall/vendor/laravel/framework/src/Illuminate/View/View.php:142
#54 Illuminate\View\View:getContents in /var/www/localhost/heimdall/vendor/laravel/framework/src/Illuminate/View/View.php:125
#53 Illuminate\View\View:renderContents in /var/www/localhost/heimdall/vendor/laravel/framework/src/Illuminate/View/View.php:90
#52 Illuminate\View\View:render in /var/www/localhost/heimdall/vendor/laravel/framework/src/Illuminate/Http/Response.php:42
#51 Illuminate\Http\Response:setContent in /var/www/localhost/heimdall/vendor/symfony/http-foundation/Response.php:202
#50 Symfony\Component\HttpFoundation\Response:__construct in /var/www/localhost/heimdall/vendor/laravel/framework/src/Illuminate/Routing/Router.php:750
#49 Illuminate\Routing\Router:toResponse in /var/www/localhost/heimdall/vendor/laravel/framework/src/Illuminate/Routing/Router.php:722
#48 Illuminate\Routing\Router:prepareResponse in /var/www/localhost/heimdall/vendor/laravel/framework/src/Illuminate/Routing/Router.php:682
#47 Illuminate\Routing\Router:Illuminate\Routing\{closure} in /var/www/localhost/heimdall/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php:30
#46 Illuminate\Routing\Pipeline:Illuminate\Routing\{closure} in /var/www/localhost/heimdall/app/Http/Middleware/CheckAllowed.php:37
#45 App\Http\Middleware\CheckAllowed:handle in /var/www/localhost/heimdall/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:163
#44 Illuminate\Pipeline\Pipeline:Illuminate\Pipeline\{closure} in /var/www/localhost/heimdall/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php:53
#43 Illuminate\Routing\Pipeline:Illuminate\Routing\{closure} in /var/www/localhost/heimdall/vendor/laravel/framework/src/Illuminate/Routing/Middleware/SubstituteBindings.php:41
#42 Illuminate\Routing\Middleware\SubstituteBindings:handle in /var/www/localhost/heimdall/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:163
#41 Illuminate\Pipeline\Pipeline:Illuminate\Pipeline\{closure} in /var/www/localhost/heimdall/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php:53
#40 Illuminate\Routing\Pipeline:Illuminate\Routing\{closure} in /var/www/localhost/heimdall/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/VerifyCsrfToken.php:75
#39 Illuminate\Foundation\Http\Middleware\VerifyCsrfToken:handle in /var/www/localhost/heimdall/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:163
#38 Illuminate\Pipeline\Pipeline:Illuminate\Pipeline\{closure} in /var/www/localhost/heimdall/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php:53
#37 Illuminate\Routing\Pipeline:Illuminate\Routing\{closure} in /var/www/localhost/heimdall/vendor/laravel/framework/src/Illuminate/View/Middleware/ShareErrorsFromSession.php:49
#36 Illuminate\View\Middleware\ShareErrorsFromSession:handle in /var/www/localhost/heimdall/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:163
#35 Illuminate\Pipeline\Pipeline:Illuminate\Pipeline\{closure} in /var/www/localhost/heimdall/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php:53
#34 Illuminate\Routing\Pipeline:Illuminate\Routing\{closure} in /var/www/localhost/heimdall/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php:63
#33 Illuminate\Session\Middleware\StartSession:handle in /var/www/localhost/heimdall/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:163
#32 Illuminate\Pipeline\Pipeline:Illuminate\Pipeline\{closure} in /var/www/localhost/heimdall/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php:53
#31 Illuminate\Routing\Pipeline:Illuminate\Routing\{closure} in /var/www/localhost/heimdall/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/AddQueuedCookiesToResponse.php:37
#30 Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse:handle in /var/www/localhost/heimdall/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:163
#29 Illuminate\Pipeline\Pipeline:Illuminate\Pipeline\{closure} in /var/www/localhost/heimdall/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php:53
#28 Illuminate\Routing\Pipeline:Illuminate\Routing\{closure} in /var/www/localhost/heimdall/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/EncryptCookies.php:66
#27 Illuminate\Cookie\Middleware\EncryptCookies:handle in /var/www/localhost/heimdall/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:163
#26 Illuminate\Pipeline\Pipeline:Illuminate\Pipeline\{closure} in /var/www/localhost/heimdall/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php:53
#25 Illuminate\Routing\Pipeline:Illuminate\Routing\{closure} in /var/www/localhost/heimdall/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:104
#24 Illuminate\Pipeline\Pipeline:then in /var/www/localhost/heimdall/vendor/laravel/framework/src/Illuminate/Routing/Router.php:684
#23 Illuminate\Routing\Router:runRouteWithinStack in /var/www/localhost/heimdall/vendor/laravel/framework/src/Illuminate/Routing/Router.php:659
#22 Illuminate\Routing\Router:runRoute in /var/www/localhost/heimdall/vendor/laravel/framework/src/Illuminate/Routing/Router.php:625
#21 Illuminate\Routing\Router:dispatchToRoute in /var/www/localhost/heimdall/vendor/laravel/framework/src/Illuminate/Routing/Router.php:614
#20 Illuminate\Routing\Router:dispatch in /var/www/localhost/heimdall/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php:176
#19 Illuminate\Foundation\Http\Kernel:Illuminate\Foundation\Http\{closure} in /var/www/localhost/heimdall/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php:30
#18 Illuminate\Routing\Pipeline:Illuminate\Routing\{closure} in /var/www/localhost/heimdall/vendor/fideloper/proxy/src/TrustProxies.php:57
#17 Fideloper\Proxy\TrustProxies:handle in /var/www/localhost/heimdall/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:163
#16 Illuminate\Pipeline\Pipeline:Illuminate\Pipeline\{closure} in /var/www/localhost/heimdall/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php:53
#15 Illuminate\Routing\Pipeline:Illuminate\Routing\{closure} in /var/www/localhost/heimdall/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php:31
#14 Illuminate\Foundation\Http\Middleware\TransformsRequest:handle in /var/www/localhost/heimdall/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:163
#13 Illuminate\Pipeline\Pipeline:Illuminate\Pipeline\{closure} in /var/www/localhost/heimdall/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php:53
#12 Illuminate\Routing\Pipeline:Illuminate\Routing\{closure} in /var/www/localhost/heimdall/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php:31
#11 Illuminate\Foundation\Http\Middleware\TransformsRequest:handle in /var/www/localhost/heimdall/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:163
#10 Illuminate\Pipeline\Pipeline:Illuminate\Pipeline\{closure} in /var/www/localhost/heimdall/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php:53
#9 Illuminate\Routing\Pipeline:Illuminate\Routing\{closure} in /var/www/localhost/heimdall/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ValidatePostSize.php:27
#8 Illuminate\Foundation\Http\Middleware\ValidatePostSize:handle in /var/www/localhost/heimdall/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:163
#7 Illuminate\Pipeline\Pipeline:Illuminate\Pipeline\{closure} in /var/www/localhost/heimdall/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php:53
#6 Illuminate\Routing\Pipeline:Illuminate\Routing\{closure} in /var/www/localhost/heimdall/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/CheckForMaintenanceMode.php:62
#5 Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode:handle in /var/www/localhost/heimdall/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:163
#4 Illuminate\Pipeline\Pipeline:Illuminate\Pipeline\{closure} in /var/www/localhost/heimdall/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php:53
#3 Illuminate\Routing\Pipeline:Illuminate\Routing\{closure} in /var/www/localhost/heimdall/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:104
#2 Illuminate\Pipeline\Pipeline:then in /var/www/localhost/heimdall/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php:151
#1 Illuminate\Foundation\Http\Kernel:sendRequestThroughRouter in /var/www/localhost/heimdall/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php:116
#0 Illuminate\Foundation\Http\Kernel:handle in /var/www/localhost/heimdall/public/index.php:55

Composer install Concourse not found

Install heimdall via composer error not found Concourse

Generating optimized autoload files
Carbon 1 is deprecated, see how to migrate to Carbon 2.
https://carbon.nesbot.com/docs/#api-carbon-2
    You can run './vendor/bin/upgrade-carbon' to get help in updating carbon and other frameworks and libraries that depend on it.
> Illuminate\Foundation\ComposerScripts::postAutoloadDump
> @php artisan package:discover

In SupportedApps.php line 164:
                                                            
  Class '\App\SupportedApps\Concourse\Concourse' not found  
                                                            

Script @php artisan package:discover handling the post-autoload-dump event returned with error code 1

Incorrect live stats for Deluge

Just noticed that the live stats for Deluge are incorrect.

With 0 downloads and 5 files seeding (2 actively):
Screenshot from 2021-03-12 11-39-05

This is what I see from Heimdall:
Screenshot from 2021-03-12 11-38-38
Leech should be 0, and seed should be either 2 or 5 (depending if we're considering all seeds or just actively seeding)

Looking at the code and the API response from Deluge, this seems like a simple fix. I'll do a PR later tonight.

Syncthing app doesn't show any folder data

I set up the syncthing enhanced app, put in the api key, and it all tested successfully. But it shows 0 needed files/bytes at all times and doesn't indicate that there's 2 folders being synchronized.

Bazarr Enhanced App stdClass::$override_url

update to latest and when try to edit Bazarr setting i get

ERROR

ErrorException (E_ERROR)
Undefined property: stdClass::$override_url (View: /var/www/html/app/SupportedApps/Bazarr/config.blade.php) (View: /var/www/html/app/SupportedApps/Bazarr/config.blade.php) (View: /var/www/html/app/SupportedApps/Bazarr/config.blade.php)

ERROR LINE: <?php echo Form::text('config[override_url]', (isset($item) ? $item->getconfig()->override_url : null), array('placeholder' => __('app.apps.override'), 'id' => 'override_url', 'class' => 'form-control')); ?>

FILE:

<h2><?php echo e(__('app.apps.config')); ?> (<?php echo e(__('app.optional')); ?>) <?php echo $__env->make('items.enable', \Illuminate\Support\Arr::except(get_defined_vars(), array('__data', '__path')))->render(); ?></h2>
<div class="items">
    <div class="input">
        <label><?php echo e(strtoupper(__('app.url'))); ?></label>
        <?php echo 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><?php echo e(__('app.apps.apikey')); ?></label>
        <?php echo Form::text('config[apikey]', (isset($item) ? $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>

[Bug, Feedback] Creating an Private App seems not to function.

Hello,

I followed the instruction from wiki/Creating-Private-Apps. But nothing happens on my Heimdall installation. I can't add my private app on the items/create page. The app is neither available in the Application Type drop down nor on the text field stating Application Name.

I'm running Heimdall with the official linuxserver Docker image. The reason for trying out these instructions is, that i wolud like to add apps to Heimdall.

Feedback:

It took me some time to get an working App, because there is one step missing in the wiki.
It's mandatory to edit the appname.php too, and replace the previous appname by the new one, otherwise you will get this error.

root@7d75a4538329:/var/www/localhost/heimdall# php artisan register:app Foo

In SupportedApps.php line 165:
                                                
  Class '\App\SupportedApps\Foo\Foo' not found  

After dealing with this it runs ok:

root@7d75a4538329:/var/www/localhost/heimdall# php artisan register:app Foo
Application Added - Foo - 201a6b3053cc1422d2c3670b62616221d2290929

Maybe you should state this in the wiki, or even better provide some templates inside the wiki.

I would have created a pull request but it's not possible for wikis.

After some further investigations, and looking into the sqlite db. I found out that my app was added to the applications table but without a SHA value. Nothing was inside in the items and item_tag tables. After adding the appropriate values to that tables I finally managed to add an private application. But I think that's not the way how it should work.

kind regards
Frank

Photoprism

Hi - I just have an issue with the livestats on the Photoprism tile.
In fact I need an authentification for the api (I tried to access too over the browser) but there is no such option that I could configure.

Isn't that supported yet?

Thanks

Portainer only showing local containers

I have Portainer setup as an enhanced app, but it only shows the running/stopped containers from the 'local' instance, and ignoring any containers running from agents.

I don't really know what else to provide with this issue, but I c an answer any questions you have.

FreshRSS Undefined variable: unread

When setting up FreshRSS im getting this error when trying to use the enhanced functionality. Im running version 2.4.13 of Heimdall and also already tryed updating app list but no go also tryed using the internal ip/name and external url(domain name), on a side note dont no if this has anything to do with it, but when clicking on the test button for FreshRSS, a popup shows with nothing in it.

conf
errormsg
blank

qBittorrent improperly calls parent execute() method

Description

When attempting to login(), the parent method execute(...) is called improperly (passing a boolean as 3rd param, where a array|null is expected) according to the parent classes signature, causing a failure both when testing the enhanced application functionality, as well as when viewing the configured application on the dashboard.

The Fix

Simply change the method to pass null, as the third argument, instead of false

Read-only share

I would like to provide my users with a "desktop with links to websites" on the web for reading only without the possibility of editing the content.
If it is possible?

No APP ID for - HTML

I'm attempting to use the HTML package with a local instance, but I keep running into the issue above.

Trying to get in touch regarding a security issue

Hey there!

I'd like to report a security issue but cannot find contact instructions on your repository.

If not a hassle, might you kindly add a SECURITY.md file with an email, or another contact method? GitHub recommends this best practice to ensure security issues are responsibly disclosed, and it would serve as a simple instruction for security researchers in the future.

Thank you for your consideration, and I look forward to hearing from you!

(cc @huntr-helper)

Traefik v2

Just as a heads up, Traefik v2 removes the /health endpoint. They do still have a number of different metric providers. I believe all but the Prometheus one are push though. So if Traefik is to continue being an enhanced application it will probably need to support getting information from the Prometheus /metrics endpoint in Traefik.

Octoprint offline 500 Internal Server error

If the octoprint server is offline getstats returns a 500 internal server error.

Need to check null before accessing the body.

Before:

$status = 'inactive';
$attrs['headers'] = ['X-Api-Key' => $this->config->apikey];
$res = parent::execute($this->url('api/job'), $attrs);
$details = json_decode($res->getBody());

After:

$status = 'inactive';
$attrs['headers'] = ['X-Api-Key' => $this->config->apikey];
$res = parent::execute($this->url('api/job'), $attrs);
if($res == null) return "";
$details = json_decode($res->getBody());

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.