From: Harvie Date: Mon, 24 May 2010 02:46:22 +0000 (+0200) Subject: upgraded to version 0.3.5 X-Git-Tag: 0.3.5^0 X-Git-Url: https://git.harvie.cz/?p=mirrors%2FJukeBox.git;a=commitdiff_plain;h=1c6591f392e7ba5450914e37d4cb25eca357a178 upgraded to version 0.3.5 --- diff --git a/example_config.php b/example_config.php new file mode 100755 index 0000000..302d87f --- /dev/null +++ b/example_config.php @@ -0,0 +1,31 @@ + 'http://blog.harvie.cz/?s=' +)); +*/ +//Bonuses +if(isset($bonus_dir) && is_dir($bonus_dir)) { + $css_file = $bonus_dir.'/themes/default/jukebox.css'; //CSS (Design/Theme) +} diff --git a/favicon.png b/favicon.png new file mode 100755 index 0000000..b37b263 Binary files /dev/null and b/favicon.png differ diff --git a/http_auth.php b/http_auth.php index 3a6e120..6a0d892 100755 --- a/http_auth.php +++ b/http_auth.php @@ -1 +1 @@ -harvie.ath.cx'; $banner = "Harvie's PHP HTTP-Auth script (v$ver)"; $hbanner = "
$banner\n-\n$link\n"; $cbanner = "\n"; ///////////////////////////////////////////////////////////////////////////////////////////////////////////////// //MANUAL///////////////////////////////////////////////////////////////////////////////////////////////////////// /* HOWTO * To each file, you want to lock add this line (at begin of first line - Header-safe): * //Password Protection 8') * Protected file have to be php script (if it's html, simply rename it to .php) * Server needs to have PHP as module (not CGI). * You need HTTP Basic auth enabled on server and php. */ ///////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////CODE///////////////////////////////////////////////////////////////////////////////////////////////////////// function send_auth_headers($realm='') { Header('WWW-Authenticate: Basic realm="'.$realm.'"'); Header('HTTP/1.0 401 Unauthorized'); } function check_auth($PHP_AUTH_USER, $PHP_AUTH_PW) { //Check if login is succesfull (U can modify this to use DB, or anything else) return (($PHP_AUTH_USER == $GLOBALS['user']) && ($PHP_AUTH_PW == $GLOBALS['passwd'])); } function unauth() { //Do this when login fails $cbanner = $GLOBALS['cbanner']; $hbanner = $GLOBALS['hbanner']; die("$cbanner401 - Forbidden\n

401 - Forbidden

\nLogin...\n$hbanner"); //Show warning and die die(); //Don't forget!!! } //Back-Compatibility if(isset($_SERVER['PHP_AUTH_USER']) && $_SERVER['PHP_AUTH_PW'] != '') $PHP_AUTH_USER = $_SERVER['PHP_AUTH_USER']; if(isset($_SERVER['PHP_AUTH_PW']) && $_SERVER['PHP_AUTH_PW'] != '') $PHP_AUTH_PW = $_SERVER['PHP_AUTH_PW']; //Logout if(isset($_GET['logout'])) { //script.php?logout if(isset($PHP_AUTH_USER) || isset($PHP_AUTH_PW)) { Header('WWW-Authenticate: Basic realm="'.$realm.'"'); Header('HTTP/1.0 401 Unauthorized'); } else { if($_GET['logout'] != '') $location = $_GET['logout']; if(trim($location) != '401') Header('Location: '.$location); die("$cbanner401 - Log out successfull\n

401 - Log out successfull

\nContinue...\n$hbanner"); } } if($require_login) { if(!isset($PHP_AUTH_USER)) { //Storno or first visit of page send_auth_headers($realm); unauth(); } else { //Login sent if (check_auth($PHP_AUTH_USER, $PHP_AUTH_PW)) { //Login succesfull - probably do nothing } else { //Bad login send_auth_headers($realm); unauth(); } } } //Rest of file will be displayed only if login is correct +Harvie.cz'; $banner = "Harvie's PHP HTTP-Auth script (v$ver)"; $hbanner = "
$banner\n-\n$link\n"; $cbanner = "\n"; //Config file @include('./_config.php'); ///////////////////////////////////////////////////////////////////////////////////////////////////////////////// //MANUAL///////////////////////////////////////////////////////////////////////////////////////////////////////// /* HOWTO * To each file, you want to lock add this line (at begin of first line - Header-safe): * //Password Protection 8') * Protected file have to be php script (if it's html, simply rename it to .php) * Server needs to have PHP as module (not CGI). * You need HTTP Basic auth enabled on server and php. */ ///////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////CODE///////////////////////////////////////////////////////////////////////////////////////////////////////// function send_auth_headers($realm='') { Header('WWW-Authenticate: Basic realm="'.$realm.'"'); Header('HTTP/1.0 401 Unauthorized'); } function check_auth($PHP_AUTH_USER, $PHP_AUTH_PW) { //Check if login is succesfull (U can modify this to use DB, or anything else) return (($PHP_AUTH_USER == $GLOBALS['user']) && ($PHP_AUTH_PW == $GLOBALS['passwd'])); } function unauth() { //Do this when login fails $cbanner = $GLOBALS['cbanner']; $hbanner = $GLOBALS['hbanner']; die("$cbanner401 - Forbidden\n

401 - Forbidden

\nLogin...\n$hbanner"); //Show warning and die die(); //Don't forget!!! } //Back-Compatibility if(isset($_SERVER['PHP_AUTH_USER']) && $_SERVER['PHP_AUTH_PW'] != '') $PHP_AUTH_USER = $_SERVER['PHP_AUTH_USER']; if(isset($_SERVER['PHP_AUTH_PW']) && $_SERVER['PHP_AUTH_PW'] != '') $PHP_AUTH_PW = $_SERVER['PHP_AUTH_PW']; //Logout if(isset($_GET['logout'])) { //script.php?logout if(isset($PHP_AUTH_USER) || isset($PHP_AUTH_PW)) { Header('WWW-Authenticate: Basic realm="'.$realm.'"'); Header('HTTP/1.0 401 Unauthorized'); } else { if($_GET['logout'] != '') $location = $_GET['logout']; if(trim($location) != '401') Header('Location: '.$location); die("$cbanner401 - Log out successfull\n

401 - Log out successfull

\nContinue...\n$hbanner"); } } if($require_login) { if(!isset($PHP_AUTH_USER)) { //Storno or first visit of page send_auth_headers($realm); unauth(); } else { //Login sent if (check_auth($PHP_AUTH_USER, $PHP_AUTH_PW)) { //Login succesfull - probably do nothing } else { //Bad login send_auth_headers($realm); unauth(); } } } //Rest of file will be displayed only if login is correct \ No newline at end of file diff --git a/index.php b/index.php index 2e1b5b1..f8edbdb 100755 --- a/index.php +++ b/index.php @@ -1,23 +1,31 @@ - 'http://google.com/search?q=', + 'Images' => 'http://google.com/images?q=', + 'Karaoke-Lyrics.net' => 'http://www.karaoke-lyrics.net/index.php?page=find&q=', + 'Jyxo.cz multimedia' => 'http://jyxo.cz/s?d=mm&q=', + 'Centrum.cz mp3' => 'http://search.centrum.cz/index.php?sec=mp3&q=', + 'YOUTube.com' => 'http://youtube.com/results?search_query=' +); + +//Flash MusicPlayer (info about settings: http://wpaudioplayer.com/standalone) +$flash_player_swf = $bonus_dir.'/player.swf'; //path to musicplayer +$flash_player_frame = 'playframe-show'; //FlashPlayer Target (playframe-show|playframe-hide) - usefull for compatibility with old music player +$flash_player_options = '?bg=000099&loader=000000&tracker=AAAAFF&skip=FFFFFF' //.'&leftbg=000077&rightbg=000077&righticon=999999' + .'&autostart=yes&initialvolume=100&soundFile='; //& arguments (urlencoded song url will be added) + //Security -error_reporting(0); +error_reporting(0); //This will disable error reporting, wich can pass sensitive data to users + +//External configuration file (overrides index.php configuration) +@include('./_config.php'); + +////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //Init srand(time()); +@ini_set('magic_quotes_gpc' , 'off'); +if(get_magic_quotes_gpc()) die("Error: magic_quotes_gpc needs to be disabled!\n"); + +//Enable flash? +$useflash = is_file($flash_player_swf); + +//Little magic with directories ;o) $current_dir = ereg_replace('/+', '/', '/'.$_GET['dir'].'/'); +if(eregi('(/|\\\\)\\.\\.(/|\\\\)', $current_dir)) { //check for directory traversal ;) + header('Location: ?'); + die('Error - directory not found!'); +} $dir = $music_dir.$current_dir; $url = $music_dir_url.$current_dir; $parent_dir = dirname($current_dir); @@ -57,26 +98,54 @@ function serve_download($filename) { header('X-PHP-Application: Harvie\'s JuKe!Box'); } -function generate_m3u($dir, $prefix='', $recursive=0) { +$nchars_f = array('Á','Ä','Č','Ç','Ď','É','Ě','Ë','Í','Ň','Ó','Ö','Ř','Š','Ť','Ú','Ů','Ü','Ý','Ž','á','ä','č','ç','ď','é','ě','ë','í','ň','ó','ö','ř','š','ť','ú','ů','ü','ý','ž'); +$nchars_t = array('A','A','C','C','D','E','E','E','I','N','O','O','R','S','T','U','U','U','Y','Z','a','a','c','c','d','e','e','e','i','n','o','o','r','s','t','u','u','u','y','z'); + +function unational($text) { + if(!$GLOBALS['national_characters']) return $text; + return(str_replace($GLOBALS['nchars_f'], $GLOBALS['nchars_t'], $text)); +} + +function generate_m3u($dir, $prefix='', $recursive=0, $nl="\r\n", $doubleenc=0) { $dir = $dir . '/'; - $dd = opendir($dir); - while(($item = readdir($dd)) != false) { - if($item == '.' || $item == '..') continue; - if( is_file($dir.$item) && eregi(('\.('.$GLOBALS['m3u_exts'].')$'), $item) ) { - if($GLOBALS['sort'] > 0) { - $temp[] = $item; - } else { - echo($prefix.'/'.str_replace('%2F', '/', (rawurlencode($dir.$item)))."\r\n"); + if(isset($_GET['newline'])) $nl = $_GET['newline']; + if(!isset($_GET['search'])) { + $dd = opendir($dir); + while(($item = readdir($dd)) != false) { + if($item == '.' || $item == '..') continue; + if( is_file($dir.$item) && eregi(('\.('.$GLOBALS['m3u_exts'].')$'), $item) ) { + if($GLOBALS['sort'] > 0) { + $temp[] = $item; + } else { + $item=($prefix.'/'.str_replace('%2F', '/', (rawurlencode($dir.$item))).$nl); + if($doubleenc) $item = rawurlencode($item); + echo($item); + } + } + if($recursive && is_dir($dir.$item)) { + generate_m3u($dir.$item, $prefix, $recursive, $nl, $doubleenc); + } + } + } else { + if(!($searchfp = fopen($GLOBALS['search_cache'], 'r'))) + die("Cannot read cache from $outfile
Refresh cache or set permissions properly!
\n"); + while(!feof($searchfp)) { + $line = trim(fgets($searchfp)); + if(@eregi(str_replace(' ', '(.*)', unational($_GET['search'])), unational($line))) { + $line=(dirname($GLOBALS['music_dir_url']).'/'.str_replace('%2F', '/', (rawurlencode($line))).$nl); + if($doubleenc) $line = rawurlencode($line); + echo($line); } } - if($recursive && is_dir($dir.$item)) { - generate_m3u($dir.$item, $prefix); - } } + if($GLOBALS['sort'] > 0) { @sort($temp); - foreach($temp as $item) - echo($prefix.'/'.str_replace('%2F', '/', (rawurlencode($dir.$item)))."\r\n"); + foreach($temp as $item) { + $temp=($prefix.'/'.str_replace('%2F', '/', (rawurlencode($dir.$item))).$nl); + if($doubleenc) $temp = rawurlencode($temp); + echo($temp); + } } } @@ -117,35 +186,108 @@ function generate_search_cache($dir, $outfile) { } function render_file_line($dir, $item, $dir_url, $index, $filesize, $parent = false) { - $parclass=($index%2?"even":"odd"); $parcolor=($index%2?"lightblue":"white"); + $parclass=($index%2?'even':'odd'); $parcolor=($index%2?'lightblue':'white'); $temp=str_replace('&', '%26', dirname($dir_url)).'/'.str_replace('%2F', '/', (rawurlencode($dir.$item))); if(is_numeric($filesize)) $filesize = round($filesize/(1024*1024), 2); - echo("".''.$index.''); - echo('P'); + echo("".''.$index.''); + echo('P'); if($parent) { echo('/D'); + '" class="icon ifolder">D'); } - if(is_file($GLOBALS['flash_player']) && eregi(('\.('.$GLOBALS['m3u_exts'].')$'), $item)) { - /*echo('/');*/ - echo('/F/'. - 'S'); + if($GLOBALS['useflash'] && eregi(('\.('.$GLOBALS['m3u_exts'].')$'), $item)) { + echo('/F/'. + 'S'); } - echo(' '.str_replace('_', ' ', $item).''.$filesize." MiB \n"); + echo(' '.unxss(str_replace('_', ' ', $item)).''.$filesize." MiB \n"); +} + +function render_tr_playframe_show() { + if($GLOBALS['flash_player_frame'] == 'playframe-show' && $GLOBALS['useflash']) { ?> + +S + + + Harvie free of charge! Of course...', + 'Don\'t be looser, use GNU/Linux! ;P', + 'Make love and not war!', + 'Take your chance! Prove yourself!', + 'This software is free of charge. If you wan\'t to donate, please send some money to children in Africa/etc...' + ); + + echo(''.$quotes[rand(0,sizeof($quotes)-1)]."\n"); + echo('Page was generated in '.(round(microtime(true), 3) - $GLOBALS['exec_time']).' +seconds'); + @readfile($GLOBALS['footer_file']); + echo(''); } function unxss($string) { - return str_replace( - array('&', '"', '\'', '<', '>'), - array('&', '"', ''', '<', '>'), - $string); + return htmlspecialchars($string); +} + +function explode_path($dir) { + $dir = substr($dir, strlen($GLOBALS['music_dir'])+1); + $temp = split('/', ereg_replace('/+', '/', $dir)); + $out = ''; + for($j=sizeof($temp)-1;$j>0;$j--) { + $dir = ''; + for($i=0;$i<(sizeof($temp)-$j);$i++) { + $dir.=$temp[$i].'/'; + } + $out.=''.unxss($temp[$i-1]).'/'; + } + return('./'.$out); +} + +function flash_mp3_player() { + ?> +<?=$GLOBALS['title']?>: Flash Music Player Plugin + + + You need Adobe Flash enabled browser to play records directly in website. + +Refresh cache or set permissions properly!
\n"); - while(!feof($searchfp)) { - $line = trim(fgets($searchfp)); - if(@eregi(str_replace(' ', '(.*)', $_GET['search']), $line)) - echo(dirname($music_dir_url).'/'.str_replace('%2F', '/', (rawurlencode($line)))."\r\n"); - } - } - die("\n"); + generate_m3u($dir, dirname($music_dir_url), isset($_GET['recursive'])); + die(); } if(isset($_GET['random'])) { @@ -177,16 +309,34 @@ if(isset($_GET['random'])) { for($j=0; $j + +
Music player (click 'F' link next to the song name to start, 'S' to stop...)
+ - + + + + + + + +
- - < BACK | HOME () | ABOUT/HELP | LOGOUT + + + < BACK + | HOME () + | ABOUT/HELP + | LOGOUT
'.$title.': '.$dir.''); - echo('

'.$title.'

Index of: '.$dir.'

'); + echo(''.$title.': '.unxss($dir).''); + echo('

'.$title.'

Index of: '.explode_path($dir).'

'); } else { echo(''.$title.': '.unxss($_GET['search']).''); - echo('

'.$title.'

Searching for: '.unxss($_GET['search']).'

'); -} + echo('

'.$title.'

Searching for: '.unxss($_GET['search']).'

'); ?> -
+ +
@@ -219,56 +373,57 @@ if(!isset($_GET['search'])) { />
-

'); +} else { -?>
-
- - -
-
- - -
-
- - - -
-
- - -
-

-
+?> +
+  
-
\n"); + +
+
+ $search_link) { + if(!$search_prefix) { + echo(unxss($_GET['search'])." @\n"); + $search_prefix = 1; + } + echo(''.$search_desc.";\n"); + } +?> +

+Search DB size: '.(filesize($search_cache)/1024)." kB
\n"); if(!($searchfp = fopen($search_cache, 'r'))) die("Cannot read cache from $outfile
Refresh cache or set permissions properly!
\n"); $i = 0; echo(''); -echo(''); +render_tr_playframe_show(); +echo(''); + while(!feof($searchfp)) { $line = trim(fgets($searchfp)); - $parclass=($i%2?"even":"odd"); $parcolor=($i%2?"lightblue":"white"); - if(@eregi(str_replace(' ', '(.*)', $_GET['search']), $line)) { + $parclass=($i%2?'even':'odd'); $parcolor=($i%2?'lightblue':'white'); + if(@eregi(str_replace(' ', '(.*)', unational($_GET['search'])), unational($line))) { $i++; - echo(""); $filesize = 0; if($i <= $access_limit) $filesize = filesize($line); else $filesize = 'n/a'; render_file_line('', $line, $music_dir_url, $i, $filesize, true); - echo("\n"); } } -echo("
SPSearch: '.unxss($_GET['search']).'
SP'); +if($GLOBALS['useflash']) echo('/F'); +echo('Search: '.unxss($_GET['search']).'
Total: $i results...
"); -die(); +echo('Total: '.$i.' results...'); +render_footer(); die(); } @readfile($header_file); @@ -276,11 +431,15 @@ foreach($indexlist as $index) @readfile($dir.$index); ?>
- - - - + + + + + + 1) { $i--; @@ -300,10 +459,11 @@ for($s=2;$s;$s--) { while(($item = readdir($dd)) != false) { } if(is_dir($dir.$item)) { $temp=str_replace('%2F', '/', rawurlencode($current_dir)).rawurlencode($item); - echo("". - ''. - '\n"); + echo("". + '\n"); } } rewinddir($dd); } if($sort > 1) { @@ -317,18 +477,4 @@ if($sort > 1) { ?>
>P/R
^ [DIR] .. ()
>P/RF'); ?> +
^ [DIR] .. ()
'.$i.'P/'. - 'R[DIR] '.str_replace('_', ' ', $item)."
'.$i.'P/'. + 'R'); + if($GLOBALS['useflash']) echo('/F'); + echo('[DIR] '.unxss(str_replace('_', ' ', $item))."
Harvie free of charge! Of course...', - 'Don\'t be looser, use GNU/Linux! ;P', - 'Make love and not war!', - 'Take your chance! Prove yourself!', - 'This software is free of charge. If you wan\'t to donate, please send some money to children in Africa/etc...' -); - -echo(''.$quotes[rand(0,sizeof($quotes)-1)]."\n"); -@readfile($footer_file); +render_footer(); diff --git a/jukebox-bonus/.htaccess b/jbx/.htaccess similarity index 100% rename from jukebox-bonus/.htaccess rename to jbx/.htaccess diff --git a/jukebox-bonus/copying b/jbx/COPYING similarity index 51% rename from jukebox-bonus/copying rename to jbx/COPYING index 30baeb6..a0321ec 100755 --- a/jukebox-bonus/copying +++ b/jbx/COPYING @@ -1,3 +1,18 @@ +License for WP Audio Player (http://wpaudioplayer.com/) + +Audio Player is released under the Open Source MIT license, which gives you the possibility to use it and modify it in every circumstance. +Player was downloaded from http://wpaudioplayer.com/download + +Copyright (c) 2008 Martin Laine + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +----------------------------------------------License for OBSOLETE player (not needed in newer versions)------------------------- + License for musicplayer (you can get source codes @ http://musicplayer.sourceforge.net/) Copyright (c) 2005, Fabricio Zuardi diff --git a/jukebox-bonus/autoplay.png b/jbx/autoplay.png similarity index 100% rename from jukebox-bonus/autoplay.png rename to jbx/autoplay.png diff --git a/jukebox-bonus/cache.db b/jbx/cache.db similarity index 92% rename from jukebox-bonus/cache.db rename to jbx/cache.db index 42a8a57..3a5211d 100755 --- a/jukebox-bonus/cache.db +++ b/jbx/cache.db @@ -16,3 +16,6 @@ ./music/František Ringo Čech/Češi a jejich samičky/05 - František Ringo Čech - Češi a jejich samičky - Ne, pití ne, to patří mému miláčkovi.mp3 ./music/František Ringo Čech/Češi a jejich samičky/06 - František Ringo Čech - Češi a jejich samičky - Čestné neférovosti a svaté lži.mp3 ./music/František Ringo Čech/Češi a jejich samičky/07 - František Ringo Čech - Češi a jejich samičky - Já, nebohé kachňátko.mp3 +./music/lol