summaryrefslogtreecommitdiffstats
path: root/plugins/webinterface/www/coldmilk/rest.php
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/webinterface/www/coldmilk/rest.php')
-rw-r--r--plugins/webinterface/www/coldmilk/rest.php265
1 files changed, 0 insertions, 265 deletions
diff --git a/plugins/webinterface/www/coldmilk/rest.php b/plugins/webinterface/www/coldmilk/rest.php
deleted file mode 100644
index bab7e68..0000000
--- a/plugins/webinterface/www/coldmilk/rest.php
+++ /dev/null
@@ -1,265 +0,0 @@
-<?php
-
- /***************************************************************************
- * Copyright (C) 2007 by Dagur Valberg Johannsson *
- * *
- * This program is free software; you can redistribute it and/or modify *
- * it under the terms of the GNU General Public License as published by *
- * the Free Software Foundation; either version 2 of the License, or *
- * (at your option) any later version. *
- * *
- * This program is distributed in the hope that it will be useful, *
- * but WITHOUT ANY WARRANTY; without even the implied warranty of *
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
- * GNU General Public License for more details. *
- * *
- * You should have received a copy of the GNU General Public License *
- * along with this program; if not, write to the *
- * Free Software Foundation, Inc., *
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
- ***************************************************************************/
-
-/**
- * Simple REST interface.
- */
-
-$rest_commands = array(
- "global_status",
- "download_status",
- "torrents_details"
-);
-
-if (!array_keys($_REQUEST)) {
- header("Content-Type: text/html");
- print "<html><body>
- Usage: rest.php?command<br />
- Available commands: ";
- foreach ($rest_commands as $command)
- print "$command ";
-
- print "</body></html>";
-}
-
-else {
- header("Content-Type: text/xml");
- $rest = new RestInterface();
- foreach($_REQUEST as $command=>$arg)
- {
- if (in_array($command, $rest_commands))
- print $rest->$command($arg);
- else
- print "Unknown command " . htmlentities($command) . "<br />";
-
- }
-}
-
-// classes
-
-class RestInterface {
- public function global_status() {
- $info = globalinfo();
- $common = new Common();
-
- $down_speed = $info['download_speed'];
- $up_speed = $info['upload_speed'];
-
- $down_total
- = $common->bytes_to_readable($info['bytes_downloaded']);
- $up_total
- = $common->bytes_to_readable($info['bytes_uploaded']);
-
- $dht = $info['dht_support'] ? "on" : "off";
- $encryption = $info['use_encryption'] ? "on" : "off";
-
- $xml = new KTorrentXML('status_bar');
-
- $elements = array(
- $xml->new_element('download_speed' , $down_speed),
- $xml->new_element('upload_speed' , $up_speed),
- $xml->new_element('downloaded_total', $down_total),
- $xml->new_element('uploaded_total', $up_total),
-
- $xml->new_element('dht', null, array('status' => $dht)),
- $xml->new_element('encryption', null, array('status' => $encryption)),
- );
-
- foreach($elements as $element) {
- $xml->append_to_root($element);
- }
-
- return $xml->saveXML();
-
- }
-
- public function download_status() {
- $download_status = downloadstatus();
- $xml = new KTorrentXML('download_status');
- foreach($download_status as $torrent) {
- $torrent_xml = $xml->new_element('torrent');
- $xml->append_to_root($torrent_xml);
-
-// foreach(array_keys($torrent) as $key) {
-// $torrent_xml->appendChild(
-// $xml->new_element("raw_$key", $torrent[$key]));
-// }
-
- $status = $torrent['status'];
- $done = $torrent['bytes_downloaded'];
- $total_bytes = $torrent['total_bytes_to_download'];
- $bytes_left = $torrent['bytes_left_to_download'];
- $elements = array(
-
- $xml->new_element('name',
- $this->_clean_name($torrent['torrent_name'])),
-
- $xml->new_element('status',
- $this->_torrent_status($status), array('id' => $status)),
-
- $xml->new_element('running', $torrent['running']),
- $xml->new_element('download_rate', $torrent['download_rate']." down"),
- $xml->new_element('upload_rate', $torrent['upload_rate']." up"),
- $xml->new_element('size', $torrent['total_bytes']),
- $xml->new_element('peers', $torrent['num_peers']),
- $xml->new_element('uploaded', $torrent['bytes_uploaded']." uploaded"),
-
-
- $xml->new_element('downloaded',
- "$done downloaded",
- array('percent' => $this->_get_percent_done($total_bytes, $bytes_left))),
- );
-
- foreach($elements as $element) {
- $torrent_xml->appendChild($element);
- }
- }
-
- return $xml->saveXML();
-
- }
-
- public function torrents_details($torrent_id) {
- $xml = new KTorrentXML('torrents_details', null, array('id'=>$torrent_id));
- $download_status = downloadstatus();
- if (isset($download_status[$torrent_id]))
- foreach($download_status[$torrent_id]['files'] as $id=>$info)
- {
- $file_xml = $xml->new_element('file', '', array('id'=>$id));
- $xml->append_to_root($file_xml);
- foreach($info as $key=>$val)
- $file_xml->appendChild($xml->new_element($key, $val));
- }
- return $xml->saveXML();
- }
-
- // Helper function for download_status
- private function _torrent_status($status_id) {
- $status = array(
- 0 => "Not started",
- 1 => "Seeding Complete",
- 2 => "Download Complete",
- 3 => "Seeding",
- 4 => "Downloading",
- 5 => "Stalled",
- 6 => "Stopped",
- 7 => "Allocating Diskspace",
- 8 => "Error",
- 9 => "Queued",
- 10 => "Checking Data"
- );
-
- return $status[$status_id];
- }
-
-
- // Truncate long torrent name, and HTML escape it.
- // This is a helper function for download_status.
- private function _clean_name($name) {
- $name = str_replace("'", "\'", $name);
- if (strlen($name) > 30) {
- $name = substr($name, 0, 27);
- $name .= "...";
- }
- $name = htmlspecialchars($name);
- return $name;
- }
-
- // Calculate percent done.
- // Helper function for download_status
- private function _get_percent_done($bytes_total, $bytes_left) {
- if($bytes_total) {
- $perc_done = round(100.0 - ($bytes_left / $bytes_total) * 100);
- return $perc_done;
- }
- else {
- return 0;
- }
- }
-}
-
-
-/**
- * Class to build a xml tree
- */
-class KTorrentXML extends DomDocument {
- private $root_element;
- public function __construct($root, $value = null, $attributes = null) {
- parent::__construct('1.0');
- $this->root_element = $this->createElement($root);
- $this->appendChild($this->root_element);
- $this->formatOutput = true;
-
- if ($attributes)
- foreach($attributes as $key=>$val)
- $this->root_element->setAttribute($key, $val);
- }
-
- // Creates an element, and returns it.
- public function new_element($name, $value = null, $attributes = null) {
- $element = $this->createElement($name);
- if ($value) {
- $element->appendChild($this->createTextNode($value));
- }
- if ($attributes) {
- foreach(array_keys($attributes) as $key) {
- $element->setAttribute($key, $attributes[$key]);
- }
- }
- return $element;
- }
-
- // Append a given element to the root element of the xml file.
- public function append_to_root($element) {
- $this->root_element->appendChild($element);
- }
-
-}
-
-/**
- * Generic functions
- */
-class Common {
- function bytes_to_readable($bytes) {
- if ($bytes < 1024) {
- return round($bytes, 2) . " bytes";
- }
-
- else if (($kb = ($bytes / 1024)) < 1024) {
- return round($kb, 2) . " KB";
- }
-
- else if (($mb = ($kb / 1024)) < 1024) {
- return round($mb, 2) . " MB";
- }
-
- else {
- $gb = round($mb / 1024, 2);
- return "$gb GB";
- }
- }
-
- function kb_to_readable($kbytes) {
- return Common::bytes_to_readable($kbytes * 1024);
- }
-}
-
-?> \ No newline at end of file