From 50bdd02a7248b0478cda35e828e00dcef25fe78a Mon Sep 17 00:00:00 2001 From: John Alberts Date: Thu, 1 Mar 2018 20:41:28 -0800 Subject: [PATCH 1/2] Add Enhanced App Transmission --- app/Item.php | 1 + app/SupportedApps/Transmission.php | 167 ++++++++++++++++++ readme.md | 1 + .../supportedapps/transmission.blade.php | 16 ++ storage/app/public/backgrounds | 1 + storage/app/public/icons | 1 + .../app/public/supportedapps/transmission.png | Bin 0 -> 38605 bytes vendor/composer/autoload_classmap.php | 1 + vendor/composer/autoload_static.php | 1 + 9 files changed, 189 insertions(+) create mode 100644 app/SupportedApps/Transmission.php create mode 100644 resources/views/supportedapps/transmission.blade.php create mode 120000 storage/app/public/backgrounds create mode 120000 storage/app/public/icons create mode 100644 storage/app/public/supportedapps/transmission.png diff --git a/app/Item.php b/app/Item.php index 288f9b53..12808938 100644 --- a/app/Item.php +++ b/app/Item.php @@ -56,6 +56,7 @@ class Item extends Model 'Sabnzbd' => \App\SupportedApps\Sabnzbd::class, 'Sickrage' => \App\SupportedApps\Sickrage::class, 'Sonarr' => \App\SupportedApps\Sonarr::class, + 'Transmission' => \App\SupportedApps\Transmission::class, 'Traefik' => \App\SupportedApps\Traefik::class, 'Ttrss' => \App\SupportedApps\Ttrss::class, 'UniFi' => \App\SupportedApps\Unifi::class, diff --git a/app/SupportedApps/Transmission.php b/app/SupportedApps/Transmission.php new file mode 100644 index 00000000..e3db19f4 --- /dev/null +++ b/app/SupportedApps/Transmission.php @@ -0,0 +1,167 @@ + ["percentDone","status","rateDownload","rateUpload"]); + $this->_client = new Client( + ['http_errors' => false, + 'timeout' => 10, + 'body' => json_encode($body)] + ); + } + + public function defaultColour() + { + return '#950003'; + } + public function icon() + { + return 'supportedapps/Transmission.png'; + } + public function configDetails() + { + return 'transmission'; + } + public function testConfig() + { + $res = $this->sendRequest(); + if ($res == null) { + echo 'Transmission connection failed'; + return; + } + switch($res->getStatusCode()) { + case 200: + $data = json_decode($res->getBody()); + echo "Successfully connected with status: ".$data->result."\n"; + break; + case 401: + echo 'Failed: Invalid credentials'; + break; + case 404: + echo 'Failed: Please make sure your URL is correct and includes the port'; + break; + case 409: + echo 'Failed: Incorrect session id'; + break; + default: + echo 'Something went wrong... Code: '.$res->getStatusCode(); + break; + } + } + + public function executeConfig() + { + $html = ''; + $active = 'active'; + $res = $this->sendRequest(); + if ($res == null) { + Log::debug('Transmission connection failed'); + return ''; + } + $data = json_decode($res->getBody()); + if (! isset($data->arguments)) { + Log::debug('Failed to fetch data from Transmission'); + return ''; + } + $torrents = $data->arguments->torrents; + $torrentCount = count($torrents); + $rateDownload = $rateUpload = $completedTorrents = 0; + foreach ($torrents as $thisTorrent) { + $rateDownload += $thisTorrent->rateDownload; + $rateUpload += $thisTorrent->rateUpload; + if ($thisTorrent->percentDone == 1) { + $completedTorrents += 1; + } + } + if ($torrentCount - $completedTorrents == 0) { + // Don't poll as frequently if we don't have any active torrents + $active = 'inactive'; + } + + $html = ' + + '; + return json_encode(['status' => $active, 'html' => $html]);; + } + + private function sendRequest() + { + $optionsSet = $this->setClientOptions(); + if (! $optionsSet) { + // Pass the failed response back up the chain + return null; + } + $res = $this->torrentGet(); + if ($res->getStatusCode() == 409) { + $this->setClientOptions(); + $res = $this->torrentGet(); + } + return $res; + } + + private function torrentGet() + { + $res = null; + try{ + $res = $this->_client->request( + 'POST', + $this->getApiUrl(), + $this->_clientOptions + ); + }catch(\GuzzleHttp\Exception\BadResponseException $e){ + Log::error("Connection to {$e->getRequest()->getUrl()} failed"); + Log::debug($e->getMessage()); + $res = $e->getRequest(); + }catch(\GuzzleHttp\Exception\ConnectException $e) { + Log::error("Transmission connection refused"); + Log::debug($e->getMessage()); + } + + return $res; + } + + private function setClientOptions() + { + if ($this->config->username != '' || $this->config->password != '') { + $this->_clientOptions = ['auth'=> [$this->config->username, $this->config->password, 'Basic']]; + } + try{ + $res = $this->_client->request('HEAD', $this->getApiUrl(), $this->_clientOptions); + $xtId = $res->getHeaderLine('X-Transmission-Session-Id'); + if ($xtId != null) { + $this->_clientOptions['headers'] = ['X-Transmission-Session-Id' => $xtId]; + } else { + Log::error("Unable to get Transmission session information"); + Log::debug("Status Code: ".$res->getStatusCode()); + } + }catch(\GuzzleHttp\Exception\ConnectException $e){ + Log::error("Failed connection to Transmission"); + return false; + } + return true; + } + + private function getApiUrl() + { + $url = $this->config->url; + $url = rtrim($url, '/'); + $apiUrl = $url.'/transmission/rpc'; + return $apiUrl; + } +} diff --git a/readme.md b/readme.md index 5b489b14..8b3a55d7 100644 --- a/readme.md +++ b/readme.md @@ -31,6 +31,7 @@ You can use the app to link to any site or application, but Foundation apps will - NZBGet - Pihole - Sabnzbd +- Transmission **Foundation** - Deluge diff --git a/resources/views/supportedapps/transmission.blade.php b/resources/views/supportedapps/transmission.blade.php new file mode 100644 index 00000000..be547b54 --- /dev/null +++ b/resources/views/supportedapps/transmission.blade.php @@ -0,0 +1,16 @@ +

{{ __('app.apps.config') }} ({{ __('app.optional') }})

+
+ + +
+ + {!! Form::text('config[username]', null, array('placeholder' => __('app.apps.username'), 'data-config' => 'username', 'class' => 'form-control config-item')) !!} +
+
+ + {!! Form::text('config[password]', null, array('placeholder' => __('app.apps.password'), 'data-config' => 'password', 'class' => 'form-control config-item')) !!} +
+
+ +
+
diff --git a/storage/app/public/backgrounds b/storage/app/public/backgrounds new file mode 120000 index 00000000..78712072 --- /dev/null +++ b/storage/app/public/backgrounds @@ -0,0 +1 @@ +/config/www/backgrounds \ No newline at end of file diff --git a/storage/app/public/icons b/storage/app/public/icons new file mode 120000 index 00000000..d187baa1 --- /dev/null +++ b/storage/app/public/icons @@ -0,0 +1 @@ +/config/www/icons \ No newline at end of file diff --git a/storage/app/public/supportedapps/transmission.png b/storage/app/public/supportedapps/transmission.png new file mode 100644 index 0000000000000000000000000000000000000000..8b55fd4a65052cf099a83fafedef60a8f5401291 GIT binary patch literal 38605 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�$J5K1Vt{yWQm3&@08*qEE!@YAFh7hZ_?Dd@+( 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�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 $baseDir . '/app/SupportedApps/Sabnzbd.php', 'App\\SupportedApps\\Sonarr' => $baseDir . '/app/SupportedApps/Sonarr.php', 'App\\SupportedApps\\Traefik' => $baseDir . '/app/SupportedApps/Traefik.php', + 'App\\SupportedApps\\Transmission' => $baseDir . '/app/SupportedApps/Transmission.php', 'App\\SupportedApps\\Ttrss' => $baseDir . '/app/SupportedApps/Ttrss.php', 'App\\SupportedApps\\Unifi' => $baseDir . '/app/SupportedApps/Unifi.php', 'App\\SupportedApps\\ruTorrent' => $baseDir . '/app/SupportedApps/ruTorrent.php', diff --git a/vendor/composer/autoload_static.php b/vendor/composer/autoload_static.php index 98e17593..be408257 100644 --- a/vendor/composer/autoload_static.php +++ b/vendor/composer/autoload_static.php @@ -396,6 +396,7 @@ class ComposerStaticInit4b6fb9210a1ea37c2db27b8ff53a1ecf 'App\\SupportedApps\\Sabnzbd' => __DIR__ . '/../..' . '/app/SupportedApps/Sabnzbd.php', 'App\\SupportedApps\\Sonarr' => __DIR__ . '/../..' . '/app/SupportedApps/Sonarr.php', 'App\\SupportedApps\\Traefik' => __DIR__ . '/../..' . '/app/SupportedApps/Traefik.php', + 'App\\SupportedApps\\Transmission' => __DIR__ . '/../..' . '/app/SupportedApps/Transmission.php', 'App\\SupportedApps\\Ttrss' => __DIR__ . '/../..' . '/app/SupportedApps/Ttrss.php', 'App\\SupportedApps\\Unifi' => __DIR__ . '/../..' . '/app/SupportedApps/Unifi.php', 'App\\SupportedApps\\ruTorrent' => __DIR__ . '/../..' . '/app/SupportedApps/ruTorrent.php', From 5f278cce3ed21e9845a10a17b682cec244612337 Mon Sep 17 00:00:00 2001 From: John Alberts Date: Fri, 9 Mar 2018 07:55:48 -0800 Subject: [PATCH 2/2] cleanup a couple symlinks I didn't intend to commit and some errant whitespace --- app/SupportedApps/Transmission.php | 1 - storage/app/public/backgrounds | 1 - storage/app/public/icons | 1 - 3 files changed, 3 deletions(-) delete mode 120000 storage/app/public/backgrounds delete mode 120000 storage/app/public/icons diff --git a/app/SupportedApps/Transmission.php b/app/SupportedApps/Transmission.php index e3db19f4..6dfd7077 100644 --- a/app/SupportedApps/Transmission.php +++ b/app/SupportedApps/Transmission.php @@ -132,7 +132,6 @@ class Transmission implements Contracts\Applications, Contracts\Livestats Log::error("Transmission connection refused"); Log::debug($e->getMessage()); } - return $res; } diff --git a/storage/app/public/backgrounds b/storage/app/public/backgrounds deleted file mode 120000 index 78712072..00000000 --- a/storage/app/public/backgrounds +++ /dev/null @@ -1 +0,0 @@ -/config/www/backgrounds \ No newline at end of file diff --git a/storage/app/public/icons b/storage/app/public/icons deleted file mode 120000 index d187baa1..00000000 --- a/storage/app/public/icons +++ /dev/null @@ -1 +0,0 @@ -/config/www/icons \ No newline at end of file