causefx 7 лет назад
Родитель
Сommit
69df5e08c6
4 измененных файлов с 571 добавлено и 581 удалено
  1. 567 579
      api/functions/deluge.class.php
  2. 1 1
      api/functions/homepage-connect-functions.php
  3. 0 0
      css/horizontal.css
  4. 3 1
      js/functions.js

+ 567 - 579
api/functions/deluge.class.php

@@ -2,583 +2,571 @@
 
 class deluge
 {
-    private $ch;
-    private $url;
-    private $request_id;
-
-    public function __construct($host, $password)
-    {
-        $this->url = $host . (substr($host, -1) == "/" ? "" : "/") . "json";
-        $this->request_id = 0;
-        $this->ch = curl_init($this->url);
-        $curl_options = array(
-            CURLOPT_RETURNTRANSFER => true,
-            CURLOPT_HTTPHEADER => array("Accept: application/json", "Content-Type: application/json"),
-            CURLOPT_ENCODING => "",
-            CURLOPT_COOKIEJAR  => "",
-            CURLOPT_CONNECTTIMEOUT => 10,
-            CURLOPT_TIMEOUT => 10,
-            CURLOPT_CAINFO => getCert(),
-            CURLOPT_SSL_VERIFYHOST => localURL($host) ? 0 : 2,
-            CURLOPT_SSL_VERIFYPEER => localURL($host) ? 0 : 2,
-            //CURLOPT_SSL_VERIFYPEER => false, THIS IS INSECURE!! However, deluge appears not to send intermediate certificates, so it can be necessary. Use with caution!
-        );
-        curl_setopt_array($this->ch, $curl_options);
-
-        //Log in and get cookies
-        try {
-            $result = $this->makeRequest("auth.login", array($password));
-            if ($result === false) {
-                throw new Exception("Login failed");
-            }
-        } catch (Exception $e) {
-            throw new Exception("Failed to initiate deluge api", 0, $e);
-        }
-    }
-
-    /////////////////////////////
-    //
-    //webapi functions (https://github.com/idlesign/deluge-webapi)
-    //
-    /////////////////////////////
-
-    //ids is an array of hashes, or null for all
-    //params is an array of params:
-    //active_time, all_time_download, comment, compact, distributed_copies, download_payload_rate, eta, file_priorities, file_progress, files, hash, is_auto_managed, is_finished, is_seed, max_connections, max_download_speed, max_upload_slots, max_upload_speed, message, move_completed, move_completed_path, move_on_completed, move_on_completed_path, name, next_announce, num_files, num_peers, num_pieces, num_seeds, paused, peers, piece_length, prioritize_first_last, private, progress, queue, ratio, remove_at_ratio, save_path, seed_rank, seeding_time, seeds_peers_ratio, state, stop_at_ratio, stop_ratio, time_added, total_done, total_payload_download, total_payload_upload, total_peers, total_seeds, total_size, total_uploaded, total_wanted, tracker, tracker_host, tracker_status, trackers, upload_payload_rate
-    //or an empty array for all (or null, which returns comment, hash, name, save_path)
-    public function getTorrents($ids, $params)
-    {
-        return $this->makeRequest("webapi.get_torrents", array($ids, $params))->torrents;
-    }
-
-    //metainfo is base64 encoded torrent data or a magnet url
-    //returns a torrent hash or null if the torrent wasn't aded
-    //params are torrent addition parameters like download_location?
-    public function addTorrent($metaInfo, $params)
-    {
-        return $this->makeRequest("webapi.add_torrent", array($metaInfo, $params));
-    }
-
-    /*implemented in core
-    public function removeTorrent($hash, $removeData) {
-        return $this->makeRequest("webapi.remove_torrent", array($hash, $removeData));
-    }*/
-
-    public function getWebAPIVersion()
-    {
-        return $this->makeRequest("webapi.get_api_version", array());
-    }
-
-    /////////////////////////////
-    //
-    //core functions
-    //
-    //parsed from https://web.archive.org/web/20150423162855/http://deluge-torrent.org:80/docs/master/core/rpc.html
-    //
-    /////////////////////////////
-
-    //Adds a torrent file to the session.
-    //Parameters:
-    //filename (string) – the filename of the torrent
-    //filedump (string) – a base64 encoded string of the torrent file contents
-    //options (dict) – the options to apply to the torrent on add
-    public function addTorrentFile($filename, $filedump, $options)
-    {
-        return $this->makeRequest("core.add_torrent_file", array($filename, $filedump, $options));
-    }
-
-    //Adds a torrent from a magnet link.
-    //Parameters:
-    //uri (string) – the magnet link
-    //options (dict) – the options to apply to the torrent on add
-    public function addTorrentMagnet($uri, $options)
-    {
-        return $this->makeRequest("core.add_torrent_magnet", array($uri, $options));
-    }
-
-    //Adds a torrent from a url. Deluge will attempt to fetch the torrentfrom url prior to adding it to the session.
-    //Parameters:
-    //url (string) – the url pointing to the torrent file
-    //options (dict) – the options to apply to the torrent on add
-    //headers (dict) – any optional headers to send
-    public function addTorrentUrl($url, $options, $headers)
-    {
-        return $this->makeRequest("core.add_torrent_url", array($url, $options, $headers));
-    }
-
-    public function connectPeer($torrentId, $ip, $port)
-    {
-        return $this->makeRequest("core.connect_peer", array($torrentId, $ip, $port));
-    }
-
-    public function createTorrent($path, $tracker, $pieceLength, $comment, $target, $webseeds, $private, $createdBy, $trackers, $addToSession)
-    {
-        return $this->makeRequest("core.create_torrent", array($path, $tracker, $pieceLength, $comment, $target, $webseeds, $private, $createdBy, $trackers, $addToSession));
-    }
-
-    public function disablePlugin($plugin)
-    {
-        return $this->makeRequest("core.disable_plugin", array($plugin));
-    }
-
-    public function enablePlugin($plugin)
-    {
-        return $this->makeRequest("core.enable_plugin", array($plugin));
-    }
-
-    public function forceReannounce($torrentIds)
-    {
-        return $this->makeRequest("core.force_reannounce", array($torrentIds));
-    }
-
-    //Forces a data recheck on torrent_ids
-    public function forceRecheck($torrentIds)
-    {
-        return $this->makeRequest("core.force_recheck", array($torrentIds));
-    }
-
-    //Returns a list of plugins available in the core
-    public function getAvailablePlugins()
-    {
-        return $this->makeRequest("core.get_available_plugins", array());
-    }
-
-    //Returns a dictionary of the session’s cache status.
-    public function getCacheStatus()
-    {
-        return $this->makeRequest("core.get_cache_status", array());
-    }
-
-    //Get all the preferences as a dictionary
-    public function getConfig()
-    {
-        return $this->makeRequest("core.get_config", array());
-    }
-
-    //Get the config value for key
-    public function getConfigValue($key)
-    {
-        return $this->makeRequest("core.get_config_value", array($key));
-    }
-
-    //Get the config values for the entered keys
-    public function getConfigValues($keys)
-    {
-        return $this->makeRequest("core.get_config_values", array($keys));
-    }
-
-    //Returns a list of enabled plugins in the core
-    public function getEnabledPlugins()
-    {
-        return $this->makeRequest("core.get_enabled_plugins", array());
-    }
-
-    //returns {field: [(value,count)] }for use in sidebar(s)
-    public function getFilterTree($showZeroHits, $hideCat)
-    {
-        return $this->makeRequest("core.get_filter_tree", array($showZeroHits, $hideCat));
-    }
-
-    //Returns the number of free bytes at path
-    public function getFreeSpace($path)
-    {
-        return $this->makeRequest("core.get_free_space", array($path));
-    }
-
-    //Returns the libtorrent version.
-    public function getLibtorrentVersion()
-    {
-        return $this->makeRequest("core.get_libtorrent_version", array());
-    }
-
-    //Returns the active listen port
-    public function getListenPort()
-    {
-        return $this->makeRequest("core.get_listen_port", array());
-    }
-
-    //Returns the current number of connections
-    public function getNumConnections()
-    {
-        return $this->makeRequest("core.get_num_connections", array());
-    }
-
-    public function getPathSize($path)
-    {
-        return $this->makeRequest("core.get_path_size", array($path));
-    }
-
-    //Returns a list of torrent_ids in the session.
-    public function getSessionState()
-    {
-        return $this->makeRequest("core.get_session_state", array());
-    }
-
-    //Gets the session status values for ‘keys’, these keys are takingfrom libtorrent’s session status.
-    public function getSessionStatus($keys)
-    {
-        return $this->makeRequest("core.get_session_status", array($keys));
-    }
-
-    public function getTorrentStatus($torrentId, $keys, $diff)
-    {
-        return $this->makeRequest("core.get_torrent_status", array($torrentId, $keys, $diff));
-    }
-
-    //returns all torrents , optionally filtered by filter_dict.
-    public function getTorrentsStatus($filterDict, $keys, $diff)
-    {
-        return $this->makeRequest("core.get_torrents_status", array($filterDict, $keys, $diff));
-    }
-
-    public function glob($path)
-    {
-        return $this->makeRequest("core.glob", array($path));
-    }
-
-    public function moveStorage($torrentIds, $dest)
-    {
-        return $this->makeRequest("core.move_storage", array($torrentIds, $dest));
-    }
-
-    //Pause all torrents in the session
-    public function pauseAllTorrents()
-    {
-        return $this->makeRequest("core.pause_all_torrents", array());
-    }
-
-    public function pauseTorrent($torrentIds)
-    {
-        return $this->makeRequest("core.pause_torrent", array($torrentIds));
-    }
-
-    public function queueBottom($torrentIds)
-    {
-        return $this->makeRequest("core.queue_bottom", array($torrentIds));
-    }
-
-    public function queueDown($torrentIds)
-    {
-        return $this->makeRequest("core.queue_down", array($torrentIds));
-    }
-
-    public function queueTop($torrentIds)
-    {
-        return $this->makeRequest("core.queue_top", array($torrentIds));
-    }
-
-    public function queueUp($torrentIds)
-    {
-        return $this->makeRequest("core.queue_up", array($torrentIds));
-    }
-
-    //Removes a torrent from the session.
-    //Parameters:
-    //torrentId (string) – the torrentId of the torrent to remove
-    //removeData (boolean) – if True, remove the data associated with this torrent
-    public function removeTorrent($torrentId, $removeData)
-    {
-        return $this->makeRequest("core.remove_torrent", array($torrentId, $removeData));
-    }
-
-    //Rename files in torrent_id.  Since this is an asynchronous operation bylibtorrent, watch for the TorrentFileRenamedEvent to know when thefiles have been renamed.
-    //Parameters:
-    //torrentId (string) – the torrentId to rename files
-    //filenames (((index, filename), ...)) – a list of index, filename pairs
-    public function renameFiles($torrentId, $filenames)
-    {
-        return $this->makeRequest("core.rename_files", array($torrentId, $filenames));
-    }
-
-    //Renames the ‘folder’ to ‘new_folder’ in ‘torrent_id’.  Watch for theTorrentFolderRenamedEvent which is emitted when the folder has beenrenamed successfully.
-    //Parameters:
-    //torrentId (string) – the torrent to rename folder in
-    //folder (string) – the folder to rename
-    //newFolder (string) – the new folder name
-    public function renameFolder($torrentId, $folder, $newFolder)
-    {
-        return $this->makeRequest("core.rename_folder", array($torrentId, $folder, $newFolder));
-    }
-
-    //Rescans the plugin folders for new plugins
-    public function rescanPlugins()
-    {
-        return $this->makeRequest("core.rescan_plugins", array());
-    }
-
-    //Resume all torrents in the session
-    public function resumeAllTorrents()
-    {
-        return $this->makeRequest("core.resume_all_torrents", array());
-    }
-
-    public function resumeTorrent($torrentIds)
-    {
-        return $this->makeRequest("core.resume_torrent", array($torrentIds));
-    }
-
-    //Set the config with values from dictionary
-    public function setConfig($config)
-    {
-        return $this->makeRequest("core.set_config", array($config));
-    }
-
-    //Sets the auto managed flag for queueing purposes
-    public function setTorrentAutoManaged($torrentId, $value)
-    {
-        return $this->makeRequest("core.set_torrent_auto_managed", array($torrentId, $value));
-    }
-
-    //Sets a torrents file priorities
-    public function setTorrentFilePriorities($torrentId, $priorities)
-    {
-        return $this->makeRequest("core.set_torrent_file_priorities", array($torrentId, $priorities));
-    }
-
-    //Sets a torrents max number of connections
-    public function setTorrentMaxConnections($torrentId, $value)
-    {
-        return $this->makeRequest("core.set_torrent_max_connections", array($torrentId, $value));
-    }
-
-    //Sets a torrents max download speed
-    public function setTorrentMaxDownloadSpeed($torrentId, $value)
-    {
-        return $this->makeRequest("core.set_torrent_max_download_speed", array($torrentId, $value));
-    }
-
-    //Sets a torrents max number of upload slots
-    public function setTorrentMaxUploadSlots($torrentId, $value)
-    {
-        return $this->makeRequest("core.set_torrent_max_upload_slots", array($torrentId, $value));
-    }
-
-    //Sets a torrents max upload speed
-    public function setTorrentMaxUploadSpeed($torrentId, $value)
-    {
-        return $this->makeRequest("core.set_torrent_max_upload_speed", array($torrentId, $value));
-    }
-
-    //Sets the torrent to be moved when completed
-    public function setTorrentMoveCompleted($torrentId, $value)
-    {
-        return $this->makeRequest("core.set_torrent_move_completed", array($torrentId, $value));
-    }
-
-    //Sets the path for the torrent to be moved when completed
-    public function setTorrentMoveCompletedPath($torrentId, $value)
-    {
-        return $this->makeRequest("core.set_torrent_move_completed_path", array($torrentId, $value));
-    }
-
-    //Sets the torrent options for torrent_ids
-    public function setTorrentOptions($torrentIds, $options)
-    {
-        return $this->makeRequest("core.set_torrent_options", array($torrentIds, $options));
-    }
-
-    //Sets a higher priority to the first and last pieces
-    public function setTorrentPrioritizeFirstLast($torrentId, $value)
-    {
-        return $this->makeRequest("core.set_torrent_prioritize_first_last", array($torrentId, $value));
-    }
-
-    //Sets the torrent to be removed at ‘stop_ratio’
-    public function setTorrentRemoveAtRatio($torrentId, $value)
-    {
-        return $this->makeRequest("core.set_torrent_remove_at_ratio", array($torrentId, $value));
-    }
-
-    //Sets the torrent to stop at ‘stop_ratio’
-    public function setTorrentStopAtRatio($torrentId, $value)
-    {
-        return $this->makeRequest("core.set_torrent_stop_at_ratio", array($torrentId, $value));
-    }
-
-    //Sets the ratio when to stop a torrent if ‘stop_at_ratio’ is set
-    public function setTorrentStopRatio($torrentId, $value)
-    {
-        return $this->makeRequest("core.set_torrent_stop_ratio", array($torrentId, $value));
-    }
-
-    //Sets a torrents tracker list.  trackers will be [{“url”, “tier”}]
-    public function setTorrentTrackers($torrentId, $trackers)
-    {
-        return $this->makeRequest("core.set_torrent_trackers", array($torrentId, $trackers));
-    }
-
-    //Checks if the active port is open
-    public function testListenPort()
-    {
-        return $this->makeRequest("core.test_listen_port", array());
-    }
-
-    public function uploadPlugin($filename, $filedump)
-    {
-        return $this->makeRequest("core.upload_plugin", array($filename, $filedump));
-    }
-
-    //Returns a list of the exported methods.
-    public function getMethodList()
-    {
-        return $this->makeRequest("daemon.get_method_list", array());
-    }
-
-    //Returns some info from the daemon.
-    public function info()
-    {
-        return $this->makeRequest("daemon.info", array());
-    }
-
-    public function shutdown(...$params)
-    {
-        return $this->makeRequest("daemon.shutdown", $params);
-    }
-
-    /////////////////////////////
-    //
-    //web ui functions
-    //
-    //parsed from https://web.archive.org/web/20150423143401/http://deluge-torrent.org:80/docs/master/modules/ui/web/json_api.html#module-deluge.ui.web.json_api
-    //
-    /////////////////////////////
-
-    //Parameters:
-    //host (string) – the hostname
-    //port (int) – the port
-    //username (string) – the username to login as
-    //password (string) – the password to login with
-    public function addHost($host, $port, $username, $password)
-    {
-        return $this->makeRequest("web.add_host", array($host, $port, $username, $password));
-    }
-
-    //Usage
-    public function addTorrents($torrents)
-    {
-        return $this->makeRequest("web.add_torrents", array($torrents));
-    }
-
-    public function connect($hostId)
-    {
-        return $this->makeRequest("web.connect", array($hostId));
-    }
-
-    public function connected()
-    {
-        return $this->makeRequest("web.connected", array());
-    }
-
-    public function deregisterEventListener($event)
-    {
-        return $this->makeRequest("web.deregister_event_listener", array($event));
-    }
-
-    public function disconnect()
-    {
-        return $this->makeRequest("web.disconnect", array());
-    }
-
-    public function downloadTorrentFromUrl($url, $cookie)
-    {
-        return $this->makeRequest("web.download_torrent_from_url", array($url, $cookie));
-    }
-
-    /* in core
-    public function getConfig() {
-        return $this->makeRequest("web.get_config", array());
-    }*/
-
-    public function getEvents()
-    {
-        return $this->makeRequest("web.get_events", array());
-    }
-
-    public function getHost($hostId)
-    {
-        return $this->makeRequest("web.get_host", array($hostId));
-    }
-
-    public function getHostStatus($hostId)
-    {
-        return $this->makeRequest("web.get_host_status", array($hostId));
-    }
-
-    public function getHosts()
-    {
-        return $this->makeRequest("web.get_hosts", array());
-    }
-
-    public function getTorrentFiles($torrentId)
-    {
-        return $this->makeRequest("web.get_torrent_files", array($torrentId));
-    }
-
-    public function getTorrentInfo($filename)
-    {
-        return $this->makeRequest("web.get_torrent_info", array($filename));
-    }
-
-    public function registerEventListener($event)
-    {
-        return $this->makeRequest("web.register_event_listener", array($event));
-    }
-
-    public function removeHost($connectionId)
-    {
-        return $this->makeRequest("web.remove_host", array($connectionId));
-    }
-
-    /*in core
-    public function setConfig($config) {
-        return $this->makeRequest("web.set_config", array($config));
-    }*/
-
-    public function startDaemon($port)
-    {
-        return $this->makeRequest("web.start_daemon", array($port));
-    }
-
-    public function stopDaemon($hostId)
-    {
-        return $this->makeRequest("web.stop_daemon", array($hostId));
-    }
-
-    //Parameters:
-    //keys (list) – the information about the torrents to gather
-    //filterDict (dictionary) – the filters to apply when selecting torrents.
-    public function updateUi($keys, $filterDict)
-    {
-        return $this->makeRequest("web.update_ui", array($keys, $filterDict));
-    }
-
-    private function makeRequest($method, $params)
-    {
-        $post_data = array("id" => $this->request_id, "method" => $method, "params" => $params);
-        curl_setopt($this->ch, CURLOPT_POSTFIELDS, json_encode($post_data));
-
-        $result = curl_exec($this->ch);
-
-        if ($result === false) {
-            throw new Exception("Could not log in due to curl error (no. " . curl_errno($this->ch) . "): " . curl_error($this->ch));
-        }
-
-        $http_code = curl_getinfo($this->ch, CURLINFO_HTTP_CODE);
-
-        if ($http_code != 200) {
-            throw new Exception("Request for method $method returned http code $http_code");
-        }
-
-        $result = json_decode($result);
-        if (!is_null($result->error)) {
-            throw new Exception("Method request returned an error (no. " . $result->error->code . "): " . $result->error->message);
-        }
-
-        if ($result->id != $this->request_id) {
-            throw new Exception("Response id did not match request id");
-        }
-
-        $this->request_id++;
-        return $result->result;
-    }
+	private $ch;
+	private $url;
+	private $request_id;
+	
+	public function __construct($host, $password)
+	{
+		$this->url = $host . (substr($host, -1) == "/" ? "" : "/") . "json";
+		$this->request_id = 0;
+		$this->ch = curl_init($this->url);
+		$curl_options = array(
+			CURLOPT_RETURNTRANSFER => true,
+			CURLOPT_HTTPHEADER => array("Accept: application/json", "Content-Type: application/json"),
+			CURLOPT_ENCODING => "",
+			CURLOPT_COOKIEJAR => "",
+			CURLOPT_CONNECTTIMEOUT => 10,
+			CURLOPT_TIMEOUT => 10,
+			CURLOPT_CAINFO => getCert(),
+			CURLOPT_SSL_VERIFYHOST => localURL($host) ? 0 : 2,
+			CURLOPT_SSL_VERIFYPEER => localURL($host) ? 0 : 2,
+			//CURLOPT_SSL_VERIFYPEER => false, THIS IS INSECURE!! However, deluge appears not to send intermediate certificates, so it can be necessary. Use with caution!
+		);
+		curl_setopt_array($this->ch, $curl_options);
+		//Log in and get cookies
+		$result = $this->makeRequest("auth.login", array($password));
+		if (gettype($result) == 'boolean' && $result !== true) {
+			throw new Exception("Login failed");
+		} elseif (gettype($result) == 'string') {
+			throw new Exception($result);
+		}
+	}
+	
+	/////////////////////////////
+	//
+	//webapi functions (https://github.com/idlesign/deluge-webapi)
+	//
+	/////////////////////////////
+	//ids is an array of hashes, or null for all
+	//params is an array of params:
+	//active_time, all_time_download, comment, compact, distributed_copies, download_payload_rate, eta, file_priorities, file_progress, files, hash, is_auto_managed, is_finished, is_seed, max_connections, max_download_speed, max_upload_slots, max_upload_speed, message, move_completed, move_completed_path, move_on_completed, move_on_completed_path, name, next_announce, num_files, num_peers, num_pieces, num_seeds, paused, peers, piece_length, prioritize_first_last, private, progress, queue, ratio, remove_at_ratio, save_path, seed_rank, seeding_time, seeds_peers_ratio, state, stop_at_ratio, stop_ratio, time_added, total_done, total_payload_download, total_payload_upload, total_peers, total_seeds, total_size, total_uploaded, total_wanted, tracker, tracker_host, tracker_status, trackers, upload_payload_rate
+	//or an empty array for all (or null, which returns comment, hash, name, save_path)
+	public function getTorrents($ids, $params)
+	{
+		//if (isset($this->makeRequest("webapi.get_torrents", array($ids, $params))->torrents)) {
+		return $this->makeRequest("webapi.get_torrents", array($ids, $params))->torrents;
+		//} else {
+		//throw new Exception("Login failed");
+		//}
+	}
+	
+	//metainfo is base64 encoded torrent data or a magnet url
+	//returns a torrent hash or null if the torrent wasn't aded
+	//params are torrent addition parameters like download_location?
+	public function addTorrent($metaInfo, $params)
+	{
+		return $this->makeRequest("webapi.add_torrent", array($metaInfo, $params));
+	}
+	
+	/*implemented in core
+	public function removeTorrent($hash, $removeData) {
+		return $this->makeRequest("webapi.remove_torrent", array($hash, $removeData));
+	}*/
+	public function getWebAPIVersion()
+	{
+		return $this->makeRequest("webapi.get_api_version", array());
+	}
+	
+	/////////////////////////////
+	//
+	//core functions
+	//
+	//parsed from https://web.archive.org/web/20150423162855/http://deluge-torrent.org:80/docs/master/core/rpc.html
+	//
+	/////////////////////////////
+	//Adds a torrent file to the session.
+	//Parameters:
+	//filename (string) – the filename of the torrent
+	//filedump (string) – a base64 encoded string of the torrent file contents
+	//options (dict) – the options to apply to the torrent on add
+	public function addTorrentFile($filename, $filedump, $options)
+	{
+		return $this->makeRequest("core.add_torrent_file", array($filename, $filedump, $options));
+	}
+	
+	//Adds a torrent from a magnet link.
+	//Parameters:
+	//uri (string) – the magnet link
+	//options (dict) – the options to apply to the torrent on add
+	public function addTorrentMagnet($uri, $options)
+	{
+		return $this->makeRequest("core.add_torrent_magnet", array($uri, $options));
+	}
+	
+	//Adds a torrent from a url. Deluge will attempt to fetch the torrentfrom url prior to adding it to the session.
+	//Parameters:
+	//url (string) – the url pointing to the torrent file
+	//options (dict) – the options to apply to the torrent on add
+	//headers (dict) – any optional headers to send
+	public function addTorrentUrl($url, $options, $headers)
+	{
+		return $this->makeRequest("core.add_torrent_url", array($url, $options, $headers));
+	}
+	
+	public function connectPeer($torrentId, $ip, $port)
+	{
+		return $this->makeRequest("core.connect_peer", array($torrentId, $ip, $port));
+	}
+	
+	public function createTorrent($path, $tracker, $pieceLength, $comment, $target, $webseeds, $private, $createdBy, $trackers, $addToSession)
+	{
+		return $this->makeRequest("core.create_torrent", array($path, $tracker, $pieceLength, $comment, $target, $webseeds, $private, $createdBy, $trackers, $addToSession));
+	}
+	
+	public function disablePlugin($plugin)
+	{
+		return $this->makeRequest("core.disable_plugin", array($plugin));
+	}
+	
+	public function enablePlugin($plugin)
+	{
+		return $this->makeRequest("core.enable_plugin", array($plugin));
+	}
+	
+	public function forceReannounce($torrentIds)
+	{
+		return $this->makeRequest("core.force_reannounce", array($torrentIds));
+	}
+	
+	//Forces a data recheck on torrent_ids
+	public function forceRecheck($torrentIds)
+	{
+		return $this->makeRequest("core.force_recheck", array($torrentIds));
+	}
+	
+	//Returns a list of plugins available in the core
+	public function getAvailablePlugins()
+	{
+		return $this->makeRequest("core.get_available_plugins", array());
+	}
+	
+	//Returns a dictionary of the session’s cache status.
+	public function getCacheStatus()
+	{
+		return $this->makeRequest("core.get_cache_status", array());
+	}
+	
+	//Get all the preferences as a dictionary
+	public function getConfig()
+	{
+		return $this->makeRequest("core.get_config", array());
+	}
+	
+	//Get the config value for key
+	public function getConfigValue($key)
+	{
+		return $this->makeRequest("core.get_config_value", array($key));
+	}
+	
+	//Get the config values for the entered keys
+	public function getConfigValues($keys)
+	{
+		return $this->makeRequest("core.get_config_values", array($keys));
+	}
+	
+	//Returns a list of enabled plugins in the core
+	public function getEnabledPlugins()
+	{
+		return $this->makeRequest("core.get_enabled_plugins", array());
+	}
+	
+	//returns {field: [(value,count)] }for use in sidebar(s)
+	public function getFilterTree($showZeroHits, $hideCat)
+	{
+		return $this->makeRequest("core.get_filter_tree", array($showZeroHits, $hideCat));
+	}
+	
+	//Returns the number of free bytes at path
+	public function getFreeSpace($path)
+	{
+		return $this->makeRequest("core.get_free_space", array($path));
+	}
+	
+	//Returns the libtorrent version.
+	public function getLibtorrentVersion()
+	{
+		return $this->makeRequest("core.get_libtorrent_version", array());
+	}
+	
+	//Returns the active listen port
+	public function getListenPort()
+	{
+		return $this->makeRequest("core.get_listen_port", array());
+	}
+	
+	//Returns the current number of connections
+	public function getNumConnections()
+	{
+		return $this->makeRequest("core.get_num_connections", array());
+	}
+	
+	public function getPathSize($path)
+	{
+		return $this->makeRequest("core.get_path_size", array($path));
+	}
+	
+	//Returns a list of torrent_ids in the session.
+	public function getSessionState()
+	{
+		return $this->makeRequest("core.get_session_state", array());
+	}
+	
+	//Gets the session status values for ‘keys’, these keys are takingfrom libtorrent’s session status.
+	public function getSessionStatus($keys)
+	{
+		return $this->makeRequest("core.get_session_status", array($keys));
+	}
+	
+	public function getTorrentStatus($torrentId, $keys, $diff)
+	{
+		return $this->makeRequest("core.get_torrent_status", array($torrentId, $keys, $diff));
+	}
+	
+	//returns all torrents , optionally filtered by filter_dict.
+	public function getTorrentsStatus($filterDict, $keys, $diff)
+	{
+		return $this->makeRequest("core.get_torrents_status", array($filterDict, $keys, $diff));
+	}
+	
+	public function glob($path)
+	{
+		return $this->makeRequest("core.glob", array($path));
+	}
+	
+	public function moveStorage($torrentIds, $dest)
+	{
+		return $this->makeRequest("core.move_storage", array($torrentIds, $dest));
+	}
+	
+	//Pause all torrents in the session
+	public function pauseAllTorrents()
+	{
+		return $this->makeRequest("core.pause_all_torrents", array());
+	}
+	
+	public function pauseTorrent($torrentIds)
+	{
+		return $this->makeRequest("core.pause_torrent", array($torrentIds));
+	}
+	
+	public function queueBottom($torrentIds)
+	{
+		return $this->makeRequest("core.queue_bottom", array($torrentIds));
+	}
+	
+	public function queueDown($torrentIds)
+	{
+		return $this->makeRequest("core.queue_down", array($torrentIds));
+	}
+	
+	public function queueTop($torrentIds)
+	{
+		return $this->makeRequest("core.queue_top", array($torrentIds));
+	}
+	
+	public function queueUp($torrentIds)
+	{
+		return $this->makeRequest("core.queue_up", array($torrentIds));
+	}
+	
+	//Removes a torrent from the session.
+	//Parameters:
+	//torrentId (string) – the torrentId of the torrent to remove
+	//removeData (boolean) – if True, remove the data associated with this torrent
+	public function removeTorrent($torrentId, $removeData)
+	{
+		return $this->makeRequest("core.remove_torrent", array($torrentId, $removeData));
+	}
+	
+	//Rename files in torrent_id.  Since this is an asynchronous operation bylibtorrent, watch for the TorrentFileRenamedEvent to know when thefiles have been renamed.
+	//Parameters:
+	//torrentId (string) – the torrentId to rename files
+	//filenames (((index, filename), ...)) – a list of index, filename pairs
+	public function renameFiles($torrentId, $filenames)
+	{
+		return $this->makeRequest("core.rename_files", array($torrentId, $filenames));
+	}
+	
+	//Renames the ‘folder’ to ‘new_folder’ in ‘torrent_id’.  Watch for theTorrentFolderRenamedEvent which is emitted when the folder has beenrenamed successfully.
+	//Parameters:
+	//torrentId (string) – the torrent to rename folder in
+	//folder (string) – the folder to rename
+	//newFolder (string) – the new folder name
+	public function renameFolder($torrentId, $folder, $newFolder)
+	{
+		return $this->makeRequest("core.rename_folder", array($torrentId, $folder, $newFolder));
+	}
+	
+	//Rescans the plugin folders for new plugins
+	public function rescanPlugins()
+	{
+		return $this->makeRequest("core.rescan_plugins", array());
+	}
+	
+	//Resume all torrents in the session
+	public function resumeAllTorrents()
+	{
+		return $this->makeRequest("core.resume_all_torrents", array());
+	}
+	
+	public function resumeTorrent($torrentIds)
+	{
+		return $this->makeRequest("core.resume_torrent", array($torrentIds));
+	}
+	
+	//Set the config with values from dictionary
+	public function setConfig($config)
+	{
+		return $this->makeRequest("core.set_config", array($config));
+	}
+	
+	//Sets the auto managed flag for queueing purposes
+	public function setTorrentAutoManaged($torrentId, $value)
+	{
+		return $this->makeRequest("core.set_torrent_auto_managed", array($torrentId, $value));
+	}
+	
+	//Sets a torrents file priorities
+	public function setTorrentFilePriorities($torrentId, $priorities)
+	{
+		return $this->makeRequest("core.set_torrent_file_priorities", array($torrentId, $priorities));
+	}
+	
+	//Sets a torrents max number of connections
+	public function setTorrentMaxConnections($torrentId, $value)
+	{
+		return $this->makeRequest("core.set_torrent_max_connections", array($torrentId, $value));
+	}
+	
+	//Sets a torrents max download speed
+	public function setTorrentMaxDownloadSpeed($torrentId, $value)
+	{
+		return $this->makeRequest("core.set_torrent_max_download_speed", array($torrentId, $value));
+	}
+	
+	//Sets a torrents max number of upload slots
+	public function setTorrentMaxUploadSlots($torrentId, $value)
+	{
+		return $this->makeRequest("core.set_torrent_max_upload_slots", array($torrentId, $value));
+	}
+	
+	//Sets a torrents max upload speed
+	public function setTorrentMaxUploadSpeed($torrentId, $value)
+	{
+		return $this->makeRequest("core.set_torrent_max_upload_speed", array($torrentId, $value));
+	}
+	
+	//Sets the torrent to be moved when completed
+	public function setTorrentMoveCompleted($torrentId, $value)
+	{
+		return $this->makeRequest("core.set_torrent_move_completed", array($torrentId, $value));
+	}
+	
+	//Sets the path for the torrent to be moved when completed
+	public function setTorrentMoveCompletedPath($torrentId, $value)
+	{
+		return $this->makeRequest("core.set_torrent_move_completed_path", array($torrentId, $value));
+	}
+	
+	//Sets the torrent options for torrent_ids
+	public function setTorrentOptions($torrentIds, $options)
+	{
+		return $this->makeRequest("core.set_torrent_options", array($torrentIds, $options));
+	}
+	
+	//Sets a higher priority to the first and last pieces
+	public function setTorrentPrioritizeFirstLast($torrentId, $value)
+	{
+		return $this->makeRequest("core.set_torrent_prioritize_first_last", array($torrentId, $value));
+	}
+	
+	//Sets the torrent to be removed at ‘stop_ratio’
+	public function setTorrentRemoveAtRatio($torrentId, $value)
+	{
+		return $this->makeRequest("core.set_torrent_remove_at_ratio", array($torrentId, $value));
+	}
+	
+	//Sets the torrent to stop at ‘stop_ratio’
+	public function setTorrentStopAtRatio($torrentId, $value)
+	{
+		return $this->makeRequest("core.set_torrent_stop_at_ratio", array($torrentId, $value));
+	}
+	
+	//Sets the ratio when to stop a torrent if ‘stop_at_ratio’ is set
+	public function setTorrentStopRatio($torrentId, $value)
+	{
+		return $this->makeRequest("core.set_torrent_stop_ratio", array($torrentId, $value));
+	}
+	
+	//Sets a torrents tracker list.  trackers will be [{“url”, “tier”}]
+	public function setTorrentTrackers($torrentId, $trackers)
+	{
+		return $this->makeRequest("core.set_torrent_trackers", array($torrentId, $trackers));
+	}
+	
+	//Checks if the active port is open
+	public function testListenPort()
+	{
+		return $this->makeRequest("core.test_listen_port", array());
+	}
+	
+	public function uploadPlugin($filename, $filedump)
+	{
+		return $this->makeRequest("core.upload_plugin", array($filename, $filedump));
+	}
+	
+	//Returns a list of the exported methods.
+	public function getMethodList()
+	{
+		return $this->makeRequest("daemon.get_method_list", array());
+	}
+	
+	//Returns some info from the daemon.
+	public function info()
+	{
+		return $this->makeRequest("daemon.info", array());
+	}
+	
+	public function shutdown(...$params)
+	{
+		return $this->makeRequest("daemon.shutdown", $params);
+	}
+	
+	/////////////////////////////
+	//
+	//web ui functions
+	//
+	//parsed from https://web.archive.org/web/20150423143401/http://deluge-torrent.org:80/docs/master/modules/ui/web/json_api.html#module-deluge.ui.web.json_api
+	//
+	/////////////////////////////
+	//Parameters:
+	//host (string) – the hostname
+	//port (int) – the port
+	//username (string) – the username to login as
+	//password (string) – the password to login with
+	public function addHost($host, $port, $username, $password)
+	{
+		return $this->makeRequest("web.add_host", array($host, $port, $username, $password));
+	}
+	
+	//Usage
+	public function addTorrents($torrents)
+	{
+		return $this->makeRequest("web.add_torrents", array($torrents));
+	}
+	
+	public function connect($hostId)
+	{
+		return $this->makeRequest("web.connect", array($hostId));
+	}
+	
+	public function connected()
+	{
+		return $this->makeRequest("web.connected", array());
+	}
+	
+	public function deregisterEventListener($event)
+	{
+		return $this->makeRequest("web.deregister_event_listener", array($event));
+	}
+	
+	public function disconnect()
+	{
+		return $this->makeRequest("web.disconnect", array());
+	}
+	
+	public function downloadTorrentFromUrl($url, $cookie)
+	{
+		return $this->makeRequest("web.download_torrent_from_url", array($url, $cookie));
+	}
+	
+	/* in core
+	public function getConfig() {
+		return $this->makeRequest("web.get_config", array());
+	}*/
+	public function getEvents()
+	{
+		return $this->makeRequest("web.get_events", array());
+	}
+	
+	public function getHost($hostId)
+	{
+		return $this->makeRequest("web.get_host", array($hostId));
+	}
+	
+	public function getHostStatus($hostId)
+	{
+		return $this->makeRequest("web.get_host_status", array($hostId));
+	}
+	
+	public function getHosts()
+	{
+		return $this->makeRequest("web.get_hosts", array());
+	}
+	
+	public function getTorrentFiles($torrentId)
+	{
+		return $this->makeRequest("web.get_torrent_files", array($torrentId));
+	}
+	
+	public function getTorrentInfo($filename)
+	{
+		return $this->makeRequest("web.get_torrent_info", array($filename));
+	}
+	
+	public function registerEventListener($event)
+	{
+		return $this->makeRequest("web.register_event_listener", array($event));
+	}
+	
+	public function removeHost($connectionId)
+	{
+		return $this->makeRequest("web.remove_host", array($connectionId));
+	}
+	
+	/*in core
+	public function setConfig($config) {
+		return $this->makeRequest("web.set_config", array($config));
+	}*/
+	public function startDaemon($port)
+	{
+		return $this->makeRequest("web.start_daemon", array($port));
+	}
+	
+	public function stopDaemon($hostId)
+	{
+		return $this->makeRequest("web.stop_daemon", array($hostId));
+	}
+	
+	//Parameters:
+	//keys (list) – the information about the torrents to gather
+	//filterDict (dictionary) – the filters to apply when selecting torrents.
+	public function updateUi($keys, $filterDict)
+	{
+		return $this->makeRequest("web.update_ui", array($keys, $filterDict));
+	}
+	
+	private function makeRequest($method, $params)
+	{
+		$post_data = array("id" => $this->request_id, "method" => $method, "params" => $params);
+		curl_setopt($this->ch, CURLOPT_POSTFIELDS, json_encode($post_data));
+		$result = curl_exec($this->ch);
+		if ($result === false) {
+			throw new Exception("Could not log in due to curl error (no. " . curl_errno($this->ch) . "): " . curl_error($this->ch));
+		}
+		$http_code = curl_getinfo($this->ch, CURLINFO_HTTP_CODE);
+		if ($http_code != 200) {
+			throw new Exception("Request for method $method returned http code $http_code");
+		}
+		$result = json_decode($result);
+		if (!is_null($result->error)) {
+			throw new Exception("Method request returned an error (no. " . $result->error->code . "): " . $result->error->message);
+		}
+		if ($result->id != $this->request_id) {
+			throw new Exception("Response id did not match request id");
+		}
+		$this->request_id++;
+		return $result->result;
+	}
 }

+ 1 - 1
api/functions/homepage-connect-functions.php

@@ -1957,7 +1957,7 @@ function testAPIConnection($array)
 					$deluge = new deluge($GLOBALS['delugeURL'], decrypt($GLOBALS['delugePassword']));
 					$torrents = $deluge->getTorrents(null, 'comment, download_payload_rate, eta, hash, is_finished, is_seed, message, name, paused, progress, queue, state, total_size, upload_payload_rate');
 					return true;
-				} catch (\Excecption $e) {
+				} catch (Exception $e) {
 					return $e->getMessage();
 				}
 			} else {

Разница между файлами не показана из-за своего большого размера
+ 0 - 0
css/horizontal.css


+ 3 - 1
js/functions.js

@@ -13,7 +13,9 @@ lang.init({
 });
 var timeouts = {};
 // Start Organizr
-launch();
+$(document).ready(function () {
+    launch();
+});
 /* NORMAL FUNCTIONS */
 function getHiddenProp(){
     var prefixes = ['webkit','moz','ms','o'];

Некоторые файлы не были показаны из-за большого количества измененных файлов