sonarrradarrplexorganizrnginxdashboardlandingpagestartpagelandinghtpcserverhomepagesabnzbdheimdallembycouchpotatonzbgetbookmarkapplication-dashboardmuximux
		
		
		
		
			You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							109 lines
						
					
					
						
							3.9 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							109 lines
						
					
					
						
							3.9 KiB
						
					
					
				
								<?php namespace App\SupportedApps;
							 | 
						|
								use GuzzleHttp\Exception\GuzzleException;
							 | 
						|
								use GuzzleHttp\Client;
							 | 
						|
								class Deluge implements Contracts\Applications, Contracts\Livestats {
							 | 
						|
								    public function defaultColour()
							 | 
						|
								    {
							 | 
						|
								        return '#357';
							 | 
						|
								    }
							 | 
						|
								    public function icon()
							 | 
						|
								    {
							 | 
						|
								        return 'supportedapps/deluge.png';
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    public function configDetails()
							 | 
						|
								    {
							 | 
						|
								        return 'deluge';
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    public function testConfig()
							 | 
						|
								    {
							 | 
						|
								        $res = $this->login()[0];
							 | 
						|
								        switch($res->getStatusCode()) {
							 | 
						|
								            case 200:
							 | 
						|
								                $data = json_decode($res->getBody());
							 | 
						|
								                if(!isset($data->result) || is_null($data->result) || $data->result == false) {
							 | 
						|
								                    echo 'Failed: Invalid Credentials';
							 | 
						|
								                } else {
							 | 
						|
								                    echo 'Successfully connected to the API';
							 | 
						|
								                }
							 | 
						|
								                break;
							 | 
						|
								            case 401:
							 | 
						|
								                echo 'Failed: Invalid credentials';
							 | 
						|
								                break;
							 | 
						|
								            case 404:
							 | 
						|
								                echo 'Failed: Please make sure your URL is correct and that there is a trailing slash';
							 | 
						|
								                break;
							 | 
						|
								            default:
							 | 
						|
								                echo 'Something went wrong... Code: '.$res->getStatusCode();
							 | 
						|
								                break;
							 | 
						|
								        }
							 | 
						|
								    }
							 | 
						|
								    public function executeConfig()
							 | 
						|
								    {
							 | 
						|
								        $html = '';
							 | 
						|
								        $active = 'active';
							 | 
						|
								        $jar = $this->login()[1];
							 | 
						|
								        $res = $this->getDetails($jar);
							 | 
						|
								        $data = json_decode($res->getBody());
							 | 
						|
								        $download_rate = $data->result->stats->download_rate;
							 | 
						|
								        $upload_rate = $data->result->stats->upload_rate;
							 | 
						|
								        $seed_count = $data->result->filters->state[2];
							 | 
						|
								        $leech_count = $data->result->filters->state[1];
							 | 
						|
								        $html = '
							 | 
						|
								        <ul class="livestats">
							 | 
						|
								            <li><span class="title"><i class="fas fa-arrow-down"></i> '.$this->formatBytes($download_rate).'</span></li>
							 | 
						|
								            <li><span class="title"><i class="fas fa-arrow-up"></i> '.$this->formatBytes($upload_rate).'</span></li>
							 | 
						|
								        </ul>
							 | 
						|
								        <ul class="livestats">
							 | 
						|
								            <li><span class="title">Leech: '.$leech_count[1].'</span></li>
							 | 
						|
								            <li><span class="title">Seed: '.$seed_count[1].'</span></li>
							 | 
						|
								        </ul>
							 | 
						|
								        ';
							 | 
						|
								        return json_encode(['status' => $active, 'html' => $html]);
							 | 
						|
								    }
							 | 
						|
								    public function getDetails($jar)
							 | 
						|
								    {
							 | 
						|
								        $config = $this->config;
							 | 
						|
								        $url = $config->url;
							 | 
						|
								        $url = rtrim($url, '/');
							 | 
						|
								        $api_url = $url.'/json';
							 | 
						|
								        $client = new Client(['http_errors' => false, 'timeout' => 15, 'connect_timeout' => 15]);
							 | 
						|
								        $res = $client->request('POST', $api_url, [
							 | 
						|
								            'body' => '{"method": "web.update_ui", "params": [["none"], {}], "id": 1}',
							 | 
						|
								            'cookies' => $jar,
							 | 
						|
								            'headers'  => ['content-type' => 'application/json', 'Accept' => 'application/json']
							 | 
						|
								        ]);
							 | 
						|
								        return $res;
							 | 
						|
								    }
							 | 
						|
								    public function login()
							 | 
						|
								    {
							 | 
						|
								        $config = $this->config;
							 | 
						|
								        $url = $config->url;
							 | 
						|
								        $password = $config->password;
							 | 
						|
								        $url = rtrim($url, '/');
							 | 
						|
								        $api_url = $url.'/json';
							 | 
						|
								        $jar = new \GuzzleHttp\Cookie\CookieJar();
							 | 
						|
								        $client = new Client(['http_errors' => false, 'timeout' => 15, 'connect_timeout' => 15]);
							 | 
						|
								        $res = $client->request('POST', $api_url, [
							 | 
						|
								            'body' => '{"method": "auth.login", "params": ["'.$password.'"], "id": 1}',
							 | 
						|
								            'cookies' => $jar,
							 | 
						|
								            'headers'  => ['content-type' => 'application/json', 'Accept' => 'application/json']
							 | 
						|
								        ]);
							 | 
						|
								        return array($res,$jar);
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    function formatBytes($bytes, $precision = 2) { 
							 | 
						|
								        $units = array('B', 'KB', 'MB', 'GB', 'TB'); 
							 | 
						|
								
							 | 
						|
								        $bytes = max($bytes, 0); 
							 | 
						|
								        $pow = floor(($bytes ? log($bytes) : 0) / log(1024)); 
							 | 
						|
								        $pow = min($pow, count($units) - 1); 
							 | 
						|
								
							 | 
						|
								        // Uncomment one of the following alternatives
							 | 
						|
								        $bytes /= pow(1024, $pow);
							 | 
						|
								        // $bytes /= (1 << (10 * $pow)); 
							 | 
						|
								
							 | 
						|
								        return round($bytes, $precision) . ' ' . $units[$pow] . 'ps'; 
							 | 
						|
								    }
							 | 
						|
								}
							 | 
						|
								
							 |