Und noch ein kleiner Lacher zum Feierabend:
Der Xtreamer hat ein Webinterface, von welchem aus man die eingebundenen Datenträger browsen kann und z.B. auch das Abspielen eines Mediafiles starten kann.
Der geneigte Programmierer denkt nun natürlich das der als deamon laufende „Dvdplayer“ über ein Socket oder wie auch immer ansprechbare API gesteuert wird.
Aber nein: Es wird eine Datei „/tmp/webrun“ erstellt, mit z.B. folgendem Inhalt:
Video C:/Videos/SD/NameDerDatei.avi
(„C:\“ – WTF ????)
und dann das Zeichen „%“ in die Datei (RemoteControl Socket) „/tmp/ir“ geschrieben.
Nun kann man beobachten wie der Xtreamer zum Homescreen zurückkehrt und zur entsprechenden Datei navigiert und letztendlich „Play“ drückt.
Ich glaube eine Art API hat der Dvdplayer, welcher auch die TV-GUI bereitstellt, nicht. Weder das Abspielen eines Mediafiles starten, noch eine Abfrage was gerade abgespielt ist möglich.
Auch das reinschauen in die PHP Sourcen des Webinterfaces ernüchtert:
<?php
session_start();
error_reporting(0);
$_SESSION['redirect'] = $_SERVER['REQUEST_URI'];
include "chooselang.php";
include '/tmp/lang.php';
//$root = "/tmp/hdd/volumes";
$root = "/tmp/usbmounts";
$filetypes = array (
'zip' => 'archive.png',
'rar' => 'archive.png',
'tar' => 'archive.png',
'exe' => 'exe.gif',
'setup' => 'setup.gif',
'txt' => 'text.png',
'htm' => 'html.gif',
'html' => 'html.gif',
'fla' => 'fla.gif',
'bin' => 'binary.png',
'xls' => 'xls.gif',
'doc' => 'doc.gif',
'ppt' => 'ppt.gif',
'sig' => 'sig.gif',
'pdf' => 'pdf.gif',
'psd' => 'psd.gif',
'gz' => 'archive.png',
'asc' => 'sig.gif',
);
if ((substr($_GET['dir'],0,2) != '/.') and (substr($_GET['dir'],0,1) != '.') and ($_GET['dir'] != '')) {
$mydir = $root . $_GET['dir'];
$mediapath = stripslashes($_GET['dir']); }
else {
$mydir = $root;
}
$uplink = substr_replace($_GET['dir'],'',strlen($_GET['dir'])-strlen(strrchr( $_GET['dir'],'/')));
$files = myscan($mydir);
sort($files);
function myscan($dir) {
$arrfiles = array();
$arrfiles = opendir(stripslashes($dir));
while (false !== ($filename = readdir($arrfiles))) {
$files[] = $filename;
}
return $files;
}
$HDDInfo = shell_exec("df -h|grep /dev/scsi/host0/bus0/target0/lun0/part1");
sscanf($HDDInfo,"%s %s %s %s", $aaa,$HDDTotal, $HDDUsed, $HDDFree);
?>
<HTML>
<head>
<style type="text/css">
ol.decimal {list-style-type: decimal}
</style>
<script language=javascript>
function goto(form){
var index=form.File_Manager.selectedIndex
if (form.File_Manager.options[index].value != "") {
if (form.File_Manager.options[index].value == "creatfolder.php?dir=<?echo $mediapath;?>") {
[...]
Und nicht zu vergessen in welchem Ordner die Sourcen des Webinterfaces liegen: „/sbin/www“
Zumindest gehören Sie nicht root. 😉
Das nächste Problem wird das Abspielen einer Mediendatei zu starten, welche auf einem Webserver liegt.
Also: http://www.domain.tld/moviename.avi
Und was wenn diese über htaccess geschützt ist ? Wird http://username:pass@www.domain.tld/moviename.avi funktionieren ?
Morgen mal hier weiterlesen…
ds.