mirror of
				https://gitee.com/ledc/IYUUAutoReseed
				synced 2025-10-31 00:39:50 +00:00 
			
		
		
		
	移除不支持的uTorrent
This commit is contained in:
		| @@ -1,282 +0,0 @@ | ||||
| <?php | ||||
| define("UTORRENT_TORRENT_HASH", 0); | ||||
| define("UTORRENT_TORRENT_STATUS", 1); | ||||
| define("UTORRENT_TORRENT_NAME", 2); | ||||
| define("UTORRENT_TORRENT_SIZE", 3); | ||||
| define("UTORRENT_TORRENT_PROGRESS", 4); | ||||
| define("UTORRENT_TORRENT_DOWNLOADED", 5); | ||||
| define("UTORRENT_TORRENT_UPLOADED", 6); | ||||
| define("UTORRENT_TORRENT_RATIO", 7); | ||||
| define("UTORRENT_TORRENT_UPSPEED", 8); | ||||
| define("UTORRENT_TORRENT_DOWNSPEED", 9); | ||||
| define("UTORRENT_TORRENT_ETA", 10); | ||||
| define("UTORRENT_TORRENT_LABEL", 11); | ||||
| define("UTORRENT_TORRENT_PEERS_CONNECTED", 12); | ||||
| define("UTORRENT_TORRENT_PEERS_SWARM", 13); | ||||
| define("UTORRENT_TORRENT_SEEDS_CONNECTED", 14); | ||||
| define("UTORRENT_TORRENT_SEEDS_SWARM", 15); | ||||
| define("UTORRENT_TORRENT_AVAILABILITY", 16); | ||||
| define("UTORRENT_TORRENT_QUEUE_POSITION", 17); | ||||
| define("UTORRENT_TORRENT_REMAINING", 18); | ||||
| define("UTORRENT_FILEPRIORITY_HIGH", 3); | ||||
| define("UTORRENT_FILEPRIORITY_NORMAL", 2); | ||||
| define("UTORRENT_FILEPRIORITY_LOW", 1); | ||||
| define("UTORRENT_FILEPRIORITY_SKIP", 0); | ||||
| define("UTORRENT_TYPE_INTEGER", 0); | ||||
| define("UTORRENT_TYPE_BOOLEAN", 1); | ||||
| define("UTORRENT_TYPE_STRING", 2); | ||||
| define("UTORRENT_STATUS_STARTED", 1); | ||||
| define("UTORRENT_STATUS_CHECKED", 2); | ||||
| define("UTORRENT_STATUS_START_AFTER_CHECK", 4); | ||||
|  | ||||
| class uTorrent | ||||
| { | ||||
|     // class static variables | ||||
|     private static $base = "%s/gui/%s"; | ||||
|  | ||||
|     // member variables | ||||
|     public $host; | ||||
|     public $user; | ||||
|     public $pass; | ||||
|  | ||||
|     protected $token; | ||||
|     protected $guid; | ||||
|  | ||||
|     // constructor | ||||
|     public function __construct($host = "", $user = "", $pass = "") | ||||
|     { | ||||
|         $this->host = rtrim($host, '/'); | ||||
|         $this->user = $user; | ||||
|         $this->pass = $pass; | ||||
|  | ||||
|         if (!$this->getToken()) { | ||||
|             //handle error here, don't know how to best do this yet | ||||
|             die('could not get token'); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     // performs request | ||||
|     private function makeRequest($request, $decode = true, $options = array()) | ||||
|     { | ||||
|         $request = preg_replace('/^\?/', '?token='.$this->token . '&', $request); | ||||
|  | ||||
|         $ch = curl_init(); | ||||
|         curl_setopt_array($ch, $options); | ||||
|         curl_setopt($ch, CURLOPT_URL, sprintf(self::$base, $this->host, $request)); | ||||
|         curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); | ||||
|         curl_setopt($ch, CURLOPT_USERPWD, $this->user.":".$this->pass); | ||||
|         curl_setopt($ch, CURLOPT_COOKIE, "GUID=".$this->guid); | ||||
|  | ||||
|         $req = curl_exec($ch); | ||||
|         curl_close($ch); | ||||
|  | ||||
|         return ($decode ? json_decode($req, true) : $req); | ||||
|     } | ||||
|  | ||||
|     // implodes given parameter with glue, whether it is an array or not | ||||
|     private function paramImplode($glue, $param) | ||||
|     { | ||||
|         return $glue.implode($glue, is_array($param) ? $param : array($param)); | ||||
|     } | ||||
|  | ||||
|     // gets token, returns true on success | ||||
|     private function getToken() | ||||
|     { | ||||
|         $url = sprintf(self::$base, $this->host, 'token.html'); | ||||
|         $ch = curl_init(); | ||||
|         curl_setopt($ch, CURLOPT_URL, $url); | ||||
|         curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); | ||||
|         curl_setopt($ch, CURLOPT_USERPWD, $this->user.":".$this->pass); | ||||
|         curl_setopt($ch, CURLOPT_HEADER, true); | ||||
|         $output = curl_exec($ch); | ||||
|         $info = curl_getinfo($ch); | ||||
|         curl_close($ch); | ||||
|  | ||||
|         $headers = substr($output, 0, $info['header_size']); | ||||
|  | ||||
|         if (preg_match("@Set-Cookie: GUID=([^;]+);@i", $headers, $matches)) { | ||||
|             $this->guid = $matches[1]; | ||||
|         } | ||||
|  | ||||
|         if (preg_match('/<div id=\'token\'.+>(.*)<\/div>/', $output, $m)) { | ||||
|             $this->token = $m[1]; | ||||
|             return true; | ||||
|         } | ||||
|         return false; | ||||
|     } | ||||
|  | ||||
|     // returns the uTorrent build number | ||||
|     public function getBuild() | ||||
|     { | ||||
|         $json = $this->makeRequest("?"); | ||||
|         return $json['build']; | ||||
|     } | ||||
|  | ||||
|     // returns an array of files for the specified torrent hash | ||||
|     // TODO: | ||||
|     //  - (when implemented in API) allow multiple hashes to be specified | ||||
|     public function getFiles($hash) | ||||
|     { | ||||
|         $json = $this->makeRequest("?action=getfiles&hash=".$hash); | ||||
|         return $json['files']; | ||||
|     } | ||||
|  | ||||
|     // returns an array of all labels | ||||
|     public function getLabels() | ||||
|     { | ||||
|         $json = $this->makeRequest("?list=1"); | ||||
|         return $json['label']; | ||||
|     } | ||||
|  | ||||
|     // returns an array of the properties for the specified torrent hash | ||||
|     // TODO: | ||||
|     //  - (when implemented in API) allow multiple hashes to be specified | ||||
|     public function getProperties($hash) | ||||
|     { | ||||
|         $json = $this->makeRequest("?action=getprops&hash=".$hash); | ||||
|         return $json['props']; | ||||
|     } | ||||
|  | ||||
|     // returns an array of all settings | ||||
|     public function getSettings() | ||||
|     { | ||||
|         $json = $this->makeRequest("?action=getsettings"); | ||||
|         return $json['settings']; | ||||
|     } | ||||
|  | ||||
|     // returns an array of all torrent jobs and related information | ||||
|     public function getTorrents() | ||||
|     { | ||||
|         $json = $this->makeRequest("?list=1"); | ||||
|         return $json['torrents']; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Get all the RSS favourites/filters | ||||
|      * @return model\Filter[] | ||||
|      */ | ||||
|     public function getRSSFilters() | ||||
|     { | ||||
|         $json = $this->makeRequest("?list=1"); | ||||
|         $filters = array(); | ||||
|         foreach ($json['rssfilters'] as $filter) { | ||||
|             $filters[] = model\Filter::fromData($filter); | ||||
|         } | ||||
|         return $filters; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Update an RSS filter as retrieved from getRSSFilters | ||||
|      * @param \uTorrent\model\Filter $filter | ||||
|      */ | ||||
|     public function setRSSFilter(model\Filter $filter) | ||||
|     { | ||||
|         $request = array_merge(array('action' => 'filter-update'), $filter->toParams()); | ||||
|         return $this->makeRequest('?'.http_build_query($request)); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Add a new RSS filter | ||||
|      * Requires a utorrent > 2.2.1 (not sure which version exactly) | ||||
|      * @param \uTorrent\model\Filter $filter | ||||
|      * @return int ID of the new filter | ||||
|      */ | ||||
|     public function addRSSFilter(model\Filter $filter) | ||||
|     { | ||||
|         $filter->filterId = -1; | ||||
|         $resp = $this->setRSSFilter($filter); | ||||
|         if (!empty($resp['filter_ident'])) { | ||||
|             return $resp['filter_ident']; | ||||
|         } else { | ||||
|             return 0; | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     // returns true if WebUI server is online and enabled, false otherwise | ||||
|     public function is_online() | ||||
|     { | ||||
|         return is_array($this->makeRequest("?")); | ||||
|     } | ||||
|  | ||||
|     // sets the properties for the specified torrent hash | ||||
|     // TODO: | ||||
|     //  - allow multiple hashes, properties, and values to be set simultaneously | ||||
|     public function setProperties($hash, $property, $value) | ||||
|     { | ||||
|         $this->makeRequest("?action=setprops&hash=".$hash."&s=".$property."&v=".$value, false); | ||||
|     } | ||||
|  | ||||
|     // sets the priorities for the specified files in the specified torrent hash | ||||
|     public function setPriority($hash, $files, $priority) | ||||
|     { | ||||
|         $this->makeRequest("?action=setprio&hash=".$hash."&p=".$priority.$this->paramImplode("&f=", $files), false); | ||||
|     } | ||||
|  | ||||
|     // sets the settings | ||||
|     // TODO: | ||||
|     //  - allow multiple settings and values to be set simultaneously | ||||
|     public function setSetting($setting, $value) | ||||
|     { | ||||
|         $this->makeRequest("?action=setsetting&s=".$setting."&v=".$value, false); | ||||
|     } | ||||
|  | ||||
|     // add a file to the list | ||||
|     public function torrentAdd($filename, &$estring = false) | ||||
|     { | ||||
|         $split = explode(":", $filename, 2); | ||||
|         if (count($split) > 1 && (stristr("|http|https|file|magnet|", "|".$split[0]."|") !== false)) { | ||||
|             $this->makeRequest("?action=add-url&s=".urlencode($filename), false); | ||||
|         } elseif (file_exists($filename)) { | ||||
|             $json = $this->makeRequest("?action=add-file", true, array(CURLOPT_POSTFIELDS => array("torrent_file" => "@".realpath($filename)))); | ||||
|  | ||||
|             if (isset($json['error'])) { | ||||
|                 if ($estring !== false) { | ||||
|                     $estring = $json['error']; | ||||
|                 } | ||||
|                 return false; | ||||
|             } | ||||
|             return true; | ||||
|         } else { | ||||
|             if ($estring !== false) { | ||||
|                 $estring = "File doesn't exist!"; | ||||
|             } | ||||
|             return false; | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     // force start the specified torrent hashes | ||||
|     public function torrentForceStart($hash) | ||||
|     { | ||||
|         $this->makeRequest("?action=forcestart".$this->paramImplode("&hash=", $hash), false); | ||||
|     } | ||||
|  | ||||
|     // pause the specified torrent hashes | ||||
|     public function torrentPause($hash) | ||||
|     { | ||||
|         $this->makeRequest("?action=pause".$this->paramImplode("&hash=", $hash), false); | ||||
|     } | ||||
|  | ||||
|     // recheck the specified torrent hashes | ||||
|     public function torrentRecheck($hash) | ||||
|     { | ||||
|         $this->makeRequest("?action=recheck".$this->paramImplode("&hash=", $hash), false); | ||||
|     } | ||||
|  | ||||
|     // start the specified torrent hashes | ||||
|     public function torrentStart($hash) | ||||
|     { | ||||
|         $this->makeRequest("?action=start".$this->paramImplode("&hash=", $hash), false); | ||||
|     } | ||||
|  | ||||
|     // stop the specified torrent hashes | ||||
|     public function torrentStop($hash) | ||||
|     { | ||||
|         $this->makeRequest("?action=stop".$this->paramImplode("&hash=", $hash), false); | ||||
|     } | ||||
|  | ||||
|     // remove the specified torrent hashes (and data, if $data is set to true) | ||||
|     public function torrentRemove($hash, $data = false) | ||||
|     { | ||||
|         $this->makeRequest("?action=".($data ? "removedata" : "remove").$this->paramImplode("&hash=", $hash), false); | ||||
|     } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user