httpQ

raspi 26.05.02 20:58

Kontrolloi winamppia netistä. (v1.1)

 Tekstiversio  Arvo: 4 (8 ääntä)  Äänestä: +  -
%%%%%%%%%%%%% httpqs.php:

<?php
// salasana
$passu = "salis";
// portti
$portti = 4800;
// kone, jolla httpQ pyörii
$osote = "127.0.0.1";
// näytetäänkö playlist?
$show_pl = 1;
// näytetäänkö login?
$show_li = 1;
?>

%%%%%%%%%%%%% httpq.php:

<?php
/*
httpQ PHP 1.1
Kontrolloi winamppia netistä

1.1 paranneltu värejä yms.
1.0 ensimmäinen julkaisu.

Vaatimukset:
winamp : http://www.winamp.com/
httpQ: http://www.csc.uvic.ca/~karvanit/winamp/
php: http://www.php.net/
apache: http://httpd.apache.org/
shoutcast: http://www.shoutcast.com/

raspi 2002
http://bittivuoto.org/~raspi/
*/

if(isset($_GET["ss"]) && $_GET["ss"] == 1) {die(show_source($_SERVER["PHP_SELF"]));}
require_once("httpqs.php"); // asetukset

if(isset($_POST["enc"]) && $_POST["enc"] != "") {
  $encpass = asc2bin($_POST["enc"]);
  if($_POST["enc"] == $passu) {
    Header("Location: http://{$_SERVER["HTTP_HOST"]}{$_SERVER["PHP_SELF"]}?p=$encpass\n");
  } else {
    Header("Location: http://{$_SERVER["HTTP_HOST"]}{$_SERVER["PHP_SELF"]}\n");
  }
}

if(isset($_GET["act"]) && $_GET["act"] != "" && $_GET["p"] == asc2bin($passu)) {
  if(substr($_GET["act"], 0, 1) == "P") {
    httpq($passu, "SetPlayListPos", substr($_GET["act"], 1, strlen($_GET["act"])) -1);
    httpq($passu, "Play", '');
  }
  if($_GET["act"] == "shoutcast") {httpq($passu, "ShoutCast_Connect", '');}
  if($_GET["act"] == "next") {httpq($passu, "Next", '');}
  if($_GET["act"] == "prev") {httpq($passu, "Prev", '');}
  if($_GET["act"] == "pause") {httpq($passu, "Pause", '');}
  if($_GET["act"] == "play") {httpq($passu, "Play", '');}
  if($_GET["act"] == "stop") {httpq($passu, "Stop", '');}
  if($_GET["act"] == "restart") {httpq($passu, "Restart", '');}
  if($_GET["act"] == "clear") {
    httpq($passu, "Stop", '');
    httpq($passu, "Delete", '');
  }

  if($_GET["act"] == "shuffle") {
    if (httpq($passu, "Shuffle_Status", '')) {
      httpq($passu, "Shuffle", "0");
    } else {
      httpq($passu, "Shuffle", "1");
    }
  }

  if($_GET["act"] == "repeat") {
    if (httpq($passu, "Repeat_Status", '')) {
      httpq($passu, "Repeat", "0");
    } else {
      httpq($passu, "Repeat", "1");
    }
  }

  Header("Location: http://{$_SERVER["HTTP_HOST"]}{$_SERVER["PHP_SELF"]}?p=" . asc2bin($passu) . "\n");
}

if(isset($_GET["vol"]) && $_GET["vol"] != "" && is_numeric($_GET["vol"]) && $_GET["vol"] >= 0 && $_GET["vol"] <= 255 && $_GET["vol"] && $_GET["p"] == asc2bin($passu)) {
  httpq($passu, "SetVolume", "{$_GET["vol"]}");
  Header("Location: http://{$_SERVER["HTTP_HOST"]}{$_SERVER["PHP_SELF"]}?p=" . asc2bin($passu) . "\n");
}
/* ---------------------------------------------------------------------------------------------------- */
function httpq ($salasana, $komento, $a) {
  global $osote, $portti;
  $fp = fsockopen($osote, $portti);
  if (is_resource($fp)) {
    $q = "GET /{$komento}?";
    if (isset($salasana) && $salasana != "") {$q .= "p={$salasana}";}
    if (isset($a) && $a != "") {
      if(isset($salasana) && $salasana != "") {$q .= "&";}
      $q .= "a={$a}";
    }
    $q .= " HTTP/1.0\r\n";
    fputs($fp, $q);
    $o = '';
    while (!feof($fp)) {$o .= fgets($fp, 1024);}
    fclose($fp);
    $o = preg_replace("/(\015\012)|(\015)|(\012)/", "\n", $o);
    $d = explode("\n\n", $o);
    unset($o);
    unset($d[0]);
    reset($d);
    $d = array_shift($d);
    return $d;
  } else {
    return -10; // socket error
  }
}

function asc2bin ($data) {
  $o = '';
  for($i = 0; $i < strlen($data); $i++) {
    $o .= substr("00000000" . decbin(ord(substr("$data", $i, 1))), -8);
  }
  return $o;
}
/* ---------------------------------------------------------------------------------------------------- */
Header("Pragma: no-cache\n");
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15">
  <title>httpQ+winamp+PHP - (c) raspi 2002</title>
  <style type="text/css">
<!--
body {background-color: #e0e8f0; color: #000000;}
a {color: #0000f0; text-decoration: none;}
table.percent {background-color: #d0d8e0; width: 400px; border: solid #000000 1px;}
table.progress {background-color: #c0c8d0; border-right: solid #000000 1px;}
td.a {background-color: #e0e0e0;}
td.b {background-color: #d2d2d2;}
td.np {color: #202020; background-color: #d0f0d0; font-weight: bold; border-top: 1px solid #000000; border-bottom: 1px solid #000000;}
td.pl {border: 1px solid #000000;}
-->
  </style>
</head>
<body>
<?php
$q_salasana = httpq('', "Validate_Password", $passu);

if ($q_salasana == 1) {

  $q_status = httpq($passu, "IsPlaying", '');

  if ($q_status == 1) {$out = "Playing";}
  elseif ($q_status == 3) {$out = "Paused";}
  elseif ($q_status == 0) {$out = "Stopped";}

  if($q_status == 1 || $q_status == 3 || $q_status == 0) {
    $q_len = httpq($passu, "GetOutputTime", "1");
    $q_pos = round(httpq($passu, "GetOutputTime", "0") / 1000);

    if ($q_len >= 3600) {
      $q_lenh = date("H:i:s", mktime(0, 0, $q_len));
      $q_posh = date("H:i:s", mktime(0, 0, $q_pos));
    } else {
      $q_lenh = date("i:s", mktime(0, 0, $q_len));
      $q_posh = date("i:s", mktime(0, 0, $q_pos));
    }

    if ($q_len > 0) {
      $q_pros = round(($q_pos / $q_len) * 100);
    } else {$q_pros = 0;}

    $q_samplerate = httpq($passu, "GetInfo", "0");
    $q_bitrate = httpq($passu, "GetInfo", "1");
    $q_chans = httpq($passu, "GetInfo", "2");
    if ($q_chans == 1) {$q_chans = "Mono";} elseif ($q_chans == 2) {$q_chans = "Stereo";} else {$q_chans .= " channels";}
    $q_playlist = httpq($passu, "GetPlayListTitle", '');
    $q_playlista = split('<br>', $q_playlist);
    $q_listlen = httpq($passu, "GetListLength", '');
    $q_num = httpq($passu, "GetListPos", '');

    echo "<table cellspacing=\"0\" cellpadding=\"0\" border=\"0\" width=\"100%\">\n";
    echo "  <tr>\n";
    echo "    <td>\n";
    echo "      <a href=\"http://www.winamp.com/\">Winamp</a> & <a href=\"http://www.csc.uvic.ca/~karvanit/winamp/\">httpQ</a> <b>::</b> ";
    echo "      (Shuffle: <b>";
    if (httpq($passu, "Shuffle_Status", '')) {echo "On";} else {echo "Off";}
    echo "</b> Repeat: <b>";
    if (httpq($passu, "Repeat_Status", '')) {echo "On";} else {echo "Off";}
    echo "</b> Shoutcast: <b>";
    if (httpq($passu, "ShoutCast_Status", '') != 0) {echo "On";} else {echo "Off";}
    echo "</b>)\n";
    echo "    </td>\n";
    echo "  </tr>\n";
    echo "  <tr>\n";
    echo "    <td>\n";
    echo "      <b>$out</b>: " . $q_playlista[$q_num] . " <small>[{$q_samplerate}kHz {$q_bitrate}kbps ($q_chans)]</small>\n";
    echo "    </td>\n";
    echo "  </tr>\n";
    echo "  <tr>\n";
    echo "    <td>\n";
    echo "      <table cellspacing=\"0\" cellpadding=\"0\" border=\"0\" class=\"percent\">\n";
    echo "        <tr>\n";
    echo "          <td>\n";
    echo "            <table cellspacing=\"0\" cellpadding=\"0\" border=\"0\" style=\"width: " . ($q_pros*4) . "px;\" class=\"progress\">\n";
    echo "              <tr>\n";
    echo "                <td> </td>\n";
    echo "              </tr>\n";
    echo "            </table>\n";
    echo "          </td>\n";
    echo "        </tr>\n";
    echo "      </table>\n";
    echo "    </td>\n";
    echo "  </tr>\n";
    echo "  <tr>\n";
    echo "    <td><small>($q_pros%) $q_posh / $q_lenh</small></td>\n";
    echo "  </tr>\n";

    // login
    if ($show_li == 1 && !isset($_GET["p"])) {
      echo "  <tr>\n";
      echo "    <td><hr></td>\n";
      echo "  </tr>\n";
      echo "  <tr>\n";
      echo "    <td>\n";
      echo "      <!-- LOGIN -->\n";
      echo "      <form method=\"POST\" action=\"{$_SERVER["PHP_SELF"]}\">\n";
      echo "        <input type=\"password\" name=\"enc\" size=\"12\">\n";
      echo "        <input type=\"submit\" value=\" Login \">\n";
      echo "      </form>\n";
      echo "    </td>\n";
      echo "  </tr>\n";
    }
    // /login

    if(isset($_GET["p"]) && $_GET["p"] == asc2bin($passu)) {
      echo "  <tr>\n";
      echo "    <td><hr></td>\n";
      echo "  </tr>\n";
      echo "  <tr>\n";
      echo "    <td>\n";
      echo "      <b>C o n t r o l</b> :\n";
      // volume
      echo "      <form method=\"GET\" action=\"{$_SERVER["PHP_SELF"]}\">\n";
      echo "        <input type=\"hidden\" name=\"p\" value=\"{$_GET["p"]}\">\n";
      echo "        Volume: <input type=\"text\" name=\"vol\" size=\"3\"value=\"\"> (0-255)\n";
      echo "        <input type=\"submit\" value=\" ok \">\n";
      echo "      </form>\n";
      // /volume

      echo "      [<a href=\"{$_SERVER["PHP_SELF"]}\">Logout</a>]\n";
      echo "      [<a href=\"{$_SERVER["PHP_SELF"]}?p={$_GET["p"]}&act=prev\">Prev</a>]\n";
      echo "      [<a href=\"{$_SERVER["PHP_SELF"]}?p={$_GET["p"]}&act=next\">Next</a>]\n";
      echo "      [<a href=\"{$_SERVER["PHP_SELF"]}?p={$_GET["p"]}&act=play\">Play</a>]\n";
      echo "      [<a href=\"{$_SERVER["PHP_SELF"]}?p={$_GET["p"]}&act=pause\">Pause</a>]\n";
      echo "      [<a href=\"{$_SERVER["PHP_SELF"]}?p={$_GET["p"]}&act=stop\">Stop</a>]\n";
      echo "      [<a href=\"{$_SERVER["PHP_SELF"]}?p={$_GET["p"]}&act=repeat\">Repeat</a>]\n";
      echo "      [<a href=\"{$_SERVER["PHP_SELF"]}?p={$_GET["p"]}&act=shuffle\">Shuffle</a>]\n";
      echo "      [<a href=\"{$_SERVER["PHP_SELF"]}?p={$_GET["p"]}&act=shoutcast\">Start Shoutcast</a>]\n";
      if(httpq($passu, "GetAutoService", '')) {
        echo "      [<a href=\"{$_SERVER["PHP_SELF"]}?p={$_GET["p"]}&act=restart\">Restart</a>]\n";
      }
      echo "    </td>\n";
      echo "  </tr>\n";
    }

    // playlist
    if (($q_listlen > 0 && $show_pl == 1) || ($show_li == 1 && isset($_GET["p"]) && $_GET["p"] == asc2bin($passu))) {
      echo "  <!-- PLAYLIST -->\n";
      echo "  <tr>\n";
      echo "    <td><hr></td>\n";
      echo "  </tr>\n";
      echo "  <tr>\n";
      echo "    <td>\n";
      echo "      <b>P l a y l i s t</b> :\n";

      if(isset($_GET["p"]) && $_GET["p"] == asc2bin($passu)) {
        echo "(<a href=\"{$_SERVER["PHP_SELF"]}?p={$_GET["p"]}&act=clear\">Clear</a>)";
      }

      echo "    </td>\n";
      echo "  </tr>\n";
      echo "  <tr>\n";
      echo "    <td class=\"pl\">\n";
      echo "      <table cellspacing=\"0\" cellpadding=\"0\" border=\"0\" width=\"100%\">\n";

      for ($i = 0; $i < $q_listlen; $i++) {

        if ($i & 1) {$kolor = "a";} else {$kolor = "b";}
        if ($i == $q_num) {$kolor = "np";}

        echo "        <tr>\n";
        echo "          <td align=\"right\" valign=\"top\" class=\"$kolor\">\n ";
        echo $i+1 . ".";

        if(isset($_GET["p"]) && $_GET["p"] == asc2bin($passu)) {
          echo "(<a href=\"{$_SERVER["PHP_SELF"]}?p={$_GET["p"]}&act=P" . ($i+1) . "\">P</a>)";
        }

        echo \n          </td>\n";
        echo "          <td align=\"left\" valign=\"top\" width=\"100%\" class=\"$kolor\">\n";
        echo "            $q_playlista[$i]\n";
        echo "          </td>\n";
        echo "        </tr>\n";
      }
      echo "      </table>\n";
    }
  // /playlist

    echo "    </td>\n";
    echo "  </tr>\n";
    echo "  <tr>\n";
    echo "    <td><br><hr></td>\n";
    echo "  </tr>\n";
    echo "</table>\n";
  } else {
    echo "music not playing<br>\n";
  }
/* ---------------------------------------------------------------------------------------------------- */
} elseif ($q_salasana == 0) {
  echo "ERHE: salasana on vaeaerin!<br>\n";
} else {
  echo "ERHE: socketissa häikkää tai winamp ei oo pyörimässä<br>\n";
}
?>
<br>
<small>© raspi 2002</small><br>
<a href="<?php echo "{$_SERVER["PHP_SELF"]}?ss=1";?>">source</a><br>
</body>
</html>

empty 00:29 21.3.03 
Aika jees. Itseasiassa todella jees.
molliolli 17:57 11.9.03 
toi httpQ: http://www.csc.uvic.ca/~karvanit/winamp/ osote ei toimi ja mä en saanu tota toimii tulee Warning: Cannot modify header information - headers already sent by (output started at D:\meitsin\httpqs.php:13) in D:\meitsin\httpq.php on line 107
ERHE: salasana on vaeaerin!

© raspi 2002
source
janitam 09:14 25.11.03 
samaa sanoo mulla :) .. mitä mahtokaan jäädä huomioimatta
eis 16:16 12.5.05