From ca88871f4c51e904ec23305abf2fd1aa17226103 Mon Sep 17 00:00:00 2001 From: Harvie Date: Mon, 24 May 2010 04:22:47 +0200 Subject: [PATCH] initial commit - version 2.0 + README added --- README | 9 + http_auth.php | 1 + index.php | 334 +++++++++++++++++++++++ jukebox-bonus/.htaccess | 3 + jukebox-bonus/acorner.gif | Bin 0 -> 33060 bytes jukebox-bonus/autoplay.png | Bin 0 -> 13525 bytes jukebox-bonus/cache.db | 18 ++ jukebox-bonus/copying | 12 + jukebox-bonus/corner.gif | Bin 0 -> 13907 bytes jukebox-bonus/footer.html | 2 + jukebox-bonus/header.html | 2 + jukebox-bonus/help.html | 70 +++++ jukebox-bonus/jukebox.css | 60 ++++ jukebox-bonus/musicplayer.swf | Bin 0 -> 6134 bytes music/PUT-YOUR-MUSIC-HERE | 0 music/example-of-subdirectory/index.html | 1 + music/index.html | 1 + 17 files changed, 513 insertions(+) create mode 100644 README create mode 100755 http_auth.php create mode 100755 index.php create mode 100755 jukebox-bonus/.htaccess create mode 100755 jukebox-bonus/acorner.gif create mode 100755 jukebox-bonus/autoplay.png create mode 100755 jukebox-bonus/cache.db create mode 100755 jukebox-bonus/copying create mode 100755 jukebox-bonus/corner.gif create mode 100755 jukebox-bonus/footer.html create mode 100755 jukebox-bonus/header.html create mode 100755 jukebox-bonus/help.html create mode 100755 jukebox-bonus/jukebox.css create mode 100755 jukebox-bonus/musicplayer.swf create mode 100755 music/PUT-YOUR-MUSIC-HERE create mode 100755 music/example-of-subdirectory/index.html create mode 100755 music/index.html diff --git a/README b/README new file mode 100644 index 0000000..0134329 --- /dev/null +++ b/README @@ -0,0 +1,9 @@ +This web application allows you to browse, share, download and stream music using webserver with PHP and flashplayer or external audio player (WMP, Audacious, Winamp, Totem, etc...). + +Tato webová aplikace vám umožní procházet, sdílet, stahovat a streamovat hudbu pomocí webserveru s podporou PHP a flashplayeru, nebo externího přehrávače (WMP, Audacious, Winamp, Totem, apod...). + +Basicaly it's easy to use, easy to install, fully configurable and it looks like this: + +Zjednodušeně je aplikace lehce použitelná, lehce se instaluje, vše se dá nastavit a vypadá takto: + +http://img218.imageshack.us/img218/2669/jukeboxscreen3.png diff --git a/http_auth.php b/http_auth.php new file mode 100755 index 0000000..3a6e120 --- /dev/null +++ b/http_auth.php @@ -0,0 +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 diff --git a/index.php b/index.php new file mode 100755 index 0000000..2e1b5b1 --- /dev/null +++ b/index.php @@ -0,0 +1,334 @@ + + 0) { + $temp[] = $item; + } else { + echo($prefix.'/'.str_replace('%2F', '/', (rawurlencode($dir.$item)))."\r\n"); + } + } + 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"); + } +} + +function write_search_cache($dir, $outfp) { + $dir = $dir . '/'; + $dd = opendir($dir); + while($item = readdir($dd)) { + if($item == '.' || $item == '..') continue; + if( is_file($dir.$item) && eregi(('\.('.$GLOBALS['m3u_exts'].')$'), $item) ) { + fwrite($outfp, $dir.$item."\n"); + } + if(is_dir($dir.$item)) { + write_search_cache($dir.$item, $outfp); + } + } +} + +function generate_search_cache($dir, $outfile) { + echo("Generating search cache. Please wait...
\n"); flush(); + @chmod($outfile, 0755); //At least i tryed ;D + if(!($outfp = fopen($outfile, 'w'))) + die("Cannot write cache to $outfile
You probably haven't set the permissions properly!
\n"); + write_search_cache($dir, $outfp); + fclose($outfp); + $osize = filesize($outfile); clearstatcache(); + if($GLOBALS['sort'] > 2) { + echo("Sorting search cache. Please wait...
\n"); flush(); + + $items = file($outfile); @sort($items); + $total = ' ('.sizeof($items).' files)'; + file_put_contents($outfile, @implode('', $items)); + unset($items); + if(abs(filesize($outfile)-$osize) > 2) + die('ERROR! Please disable sorting of search cache ($sort < 3)
'."\nSorted only ". + filesize($outfile).' of '.$osize.' bytes!!!\n'); + } + echo('Total: '.filesize($outfile).' of '.$osize.' bytes'.$total.' DONE!'.'
'."\n"); +} + +function render_file_line($dir, $item, $dir_url, $index, $filesize, $parent = false) { + $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'); + if($parent) { + echo('/D'); + } + if(is_file($GLOBALS['flash_player']) && eregi(('\.('.$GLOBALS['m3u_exts'].')$'), $item)) { + /*echo('/');*/ + echo('/F/'. + 'S'); + } + echo(' '.str_replace('_', ' ', $item).''.$filesize." MiB \n"); +} + +function unxss($string) { + return str_replace( + array('&', '"', '\'', '<', '>'), + array('&', '"', ''', '<', '>'), + $string); +} + +//GET +if(isset($_GET['download'])) serve_download($playlist_name); +if(isset($_GET['song'])) die($_GET['song']."\r\n"); + +if($_POST['cache-refresh'] == $cache_passwd) { + generate_search_cache($music_dir, $search_cache); + die("\n"); +} + +if(isset($_GET['playlist'])) { + if(!isset($_GET['search'])) { + generate_m3u($dir, dirname($music_dir_url), isset($_GET['recursive'])); + } else { + if(!($searchfp = fopen($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(' ', '(.*)', $_GET['search']), $line)) + echo(dirname($music_dir_url).'/'.str_replace('%2F', '/', (rawurlencode($line)))."\r\n"); + } + } + die("\n"); +} + +if(isset($_GET['random'])) { + $flen = 0; + if(!($searchfp = fopen($search_cache, 'r'))) + die("Cannot read cache from $outfile
Refresh cache or set permissions properly!
\n"); + while(!feof($searchfp)) { fgets($searchfp); $flen++; } + for($i=0; $i<$_GET['random']; $i++) { + rewind($searchfp); + for($j=0; $j + + + +
+ + < BACK | HOME () | ABOUT/HELP | LOGOUT +
+ +

About/Help

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

'.$title.'

Index of: '.$dir.'

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

'.$title.'

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

'); +} + +?> + +
+
+ + + +
+
+ + +
+

+
+ + +
+
+ + +
+
+ + + +
+
+ + +
+

+
+
+ + +
+
\n"); + +if(!($searchfp = fopen($search_cache, 'r'))) + die("Cannot read cache from $outfile
Refresh cache or set permissions properly!
\n"); + +$i = 0; +echo(''); +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)) { + $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']).'
Total: $i results...
"); +die(); + +} +@readfile($header_file); +foreach($indexlist as $index) @readfile($dir.$index); +?> +
+ + + + + + 1) { + $i--; + $items[] = $item; + } else { + render_file_line($dir, $item, $music_dir_url, $i, filesize($dir.$item)); + } + } + if(is_dir($dir.$item)) { + $temp=str_replace('%2F', '/', rawurlencode($current_dir)).rawurlencode($item); + echo("". + ''. + '\n"); + } +} rewinddir($dd); } +if($sort > 1) { + @sort($items); + foreach($items as $item) { + $i++; + render_file_line($dir, $item, $music_dir_url, $i, filesize($dir.$item)); + } +} + +?>
>P/R
^ [DIR] .. ()
'.$i.'P/'. + 'R[DIR] '.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); diff --git a/jukebox-bonus/.htaccess b/jukebox-bonus/.htaccess new file mode 100755 index 0000000..6cde0e5 --- /dev/null +++ b/jukebox-bonus/.htaccess @@ -0,0 +1,3 @@ + + Deny from all + diff --git a/jukebox-bonus/acorner.gif b/jukebox-bonus/acorner.gif new file mode 100755 index 0000000000000000000000000000000000000000..33970cb2b762a96511a5cda2b8734868bc998eeb GIT binary patch literal 33060 zcma%?=Tj5^1Fbhbgakql)c~Ql(2IhhccgbP^j-x86%CMtt^on53W!LP4kATEl_mlL z(gg&?`bBKm@bbI&AGkZuoOxdEo6pYfnX{(mCR*A)@*sK8n=iosy+8l}1^@^EItB`W zU;qdXfDix}4uFpn34mDuFbV*(0uUAef&w7Nf(9TM0Kx`9(Et?Z&gJisCfphN)F2>^u$P{%F?pu_+}Q08IeU5&-&GqyV%ufR+I;QUFF8z#NM#fRO_*@&KDGz$OQ<9g70MrU3}BB%6~L+iSapCy72r?Pv77?9bOA0sfcq4{tqX7;%V~g{1aRvEJf{I362NmT1^|yCz+(jP z8UVb80PnFF1H2{xuPMN14Dgu%e8*x2@Rq9p1P~7e z#KQpba6mi)ARH435TXD=G$3(I3?LB;NW=k>=K#s$j0Yso15(Fa0HhKCsYF2fn2Uh) zB|zpfAd>{hTmfXR02NXR2#mqke0R!Bc(e_Pno47>gy zY&ei+Z!A~T7P8LFJ$dh%SI@bf!I09?Dc2USPV#*fp8DrCmNx_x>^stPpPFc$)5sid zzjx+#4o<;6ZjT{qm;#1@q3O?V-Mjc{zRoahT1YEuqdVrgiM4=Q@N}87s!2AVl2=dk za_mUvs;pxLDe=I6oKwOg4<}<#{U1a0^kw9y*;K@JLCx@`^Z^{*52xhaQq)& zJ3%D3kdss1pg4t!A}cO_123^+muyIsAOCGYj?#n79`z+Ae%^fOcTZ8c=iKXw94GO9jI9ap-F$^=%K%hm$Z|jk zITJ5g{Pp5~Npah($!bY>&vIZ?zZ1TN$@wSnO?iUIgSA_iH4y7@*c15R^Yqx8(g`^l zvRDm99^W$^NWbCqT7?u#jyUJ2+5eA|22wlUlFp)R&AL@`w*-z>_kq-rHtkDNCU|g2CBaFg{n; z&V@E-+9fBmS5l7cE8vUra+xc3KaG$g}+X*4N4{`2d-5;Om| z#(q@1NLfqFxXcsJp(|k2=V7WqW^Gkg;8d{bo0dB>iBfkE_Tx9|pWEo{rhma`ZZK|4 zpWLIK!%&8xkSQhTyVxv+jz;?lsUoYvbkVe#VKbXk>b_$q5~pTI`F-PBjoZ&iw^F&{ zbV0`4j<$9qzwL*kjCsDCi5cPbq-+`Ee9QFV0wHF(f^A@gmSccy{8*~6nNiif4?aQe z=0p7Rqg`EQK8hDA3mKP5MZ@x=%1X6U8%s{$3ppfj|98x7ffq{S{VX=InU!UGMnhXd z^5D`Thc~>7#58>=ogMIxD%V8O-kS!v$%;|VJ9gP#OfiGXBCNEYov4jxFjo;J z<2%rbI5jnZ2_dGsP6NDTZ588}To7Cfo+h1tCRKNH5fi#!6r;=n&&klo1ly)Yt7j-% zSp>-PoJ$oJq9cqsv)Nm|@jZ5BMP3HYd1o^xy$|e_Vs4a@yB8Ej)J7u}yQem+7!sV^ zk?I-mN#Vp6kh=A>rh11c+vkp!XW!mxSFz5=r>6^N34cCm?kEgQ73FN)H5A7GgfEWH zikxFW0{D+O(o{q3GQCI;p?MNqDQ@7Ddv_ym&*2DhX)MblA%drlF=IsbVf98saGeRp zGCIm~mD1aWG$e<^(LMt44wNDbeo1Ji-1(~QV`^pglCy&6ejn1@z7LbDNp@h*UNTWsVKCA`yx6UyyFMfjna#` zzuu=B|FuU>aF>QY!k!!1s?jX}Qii|QURLAas51fq0Hde4xqXvQUHUlzNC@APT6j`d zOir+TDsGqrSG}gsYO4n3Zb6Ptl%$#3CVX$dYc?WFuFON&Ar14876b-7(>_~+r*i3N zn83@CuDfr=*1e8$S=s0DDc)iY(l6vKS%3zQL?DHBKx~YBhbV16^JyneDe*f~(-rYh znK;a=(4pq##_?VT>wgj7B{r7BDUcjPE(G~p^Y;xojX6i9lKMKywLe+0Mb9PQ^!;oh zaeTIYV-z&{YemHy2NAfY&Y~FDigH==#XTd#RWfHyJjMn?9<+!{i-C|PC1kek_sJQ6n2K|v$}T= za@Sx_3ytrx=v0Nkf2Mefeby*U)QQq;;_I+FCWAa)f?U{aXFW zcq}v5M zJVZBNq7r#u)^V1F?O7!oEgdQ)X0dHH)s3a#>mWZ!a}_+>*sP_DYz#+w-s@!9Sl3hm zrV8AoX#f*vwkc9(k1#3`MSFG|@KkIl7TOj&uaK(6_+PJxOsSk{7@i8$;8Cw< z`GH^(KE)b7_g+o%WQ~7bsx|v?T63+vPmuHQ6u2%@X{g=Q}ObN3^6 zfi$i80k%ZEov_WYhZB>9&{pni(d%FMgJEOK$I0DiD3p`*KlKY9t%Cx&NWS z4)*NQS*2MP``W5)#fMZvjp>*HagZ}fik78xYsFZ|nBzqjm4L2H(=5}!>}v)Q{!T^? zz6Y^|nL+qXu74q7wH0drGr$e*)0Dqnlph5TG&c`}DG)lhWoX$E| zpr=_Ly6Sn#TGDwk^zQ2my~UEJe7Yw;Xtnn4|5|Dmx}tQ%7bW~|{Mqj&xwT!kXoDBJ z@fX-B8!ukIF#Ax%Rn%hi3Zp+(9-)WLN;kr*4~z0624yag5f>^DmjGm^IwBYgcV~t> zwZOb>;gKYss0uNqHduQQ?6ZUUdxuN0TbB+Xmm@2at)nmXaTAi2am7?f%RFR$k&k2# zy=Vs|5j8Wm2=aIXva^J1inDEeydjU07)8rHNHS3JJaH%RoQc$MOi*BuP|!`OiPrO* zYFBm~m1|S4ydA#c?ix)YBaL#o#SM5Ou^0XKVF4BJXfi^phMTg9ka9wtBPIt!c!6s8 z<3jjZqTU$>)Q|zS#KN3gV7|6+?s*N31L%=W%O!J{6s00dQVO)c_-g~Ws$mOFrh>_~zD7c701d2%RPynSG|-}c`X=xb?7jFTGT-5RLRSzwKs(fM zIb99t6KqoLX>^t7OP#b)Btpp);X1&R@m0)gM#F^(^C81SHsLTTPfsCS-kvwiFWHqL z@6~eJha6{S3e^KF4Q-(o`%sFOcmXwCBOqhBO2OFv`gfeA-ae$GT46mFqKbzAiB@?r zsfDeIMYB!?17M|n+%2TR#JyBMlR$&R%>QVT?|8kJU9|uEP92}MwqH6w%VA?c2)^s5 z>{4`Pv?$MipGV<9jNHO2T683?ECEYig57^}F)*3eivf#JJsq=k$6mmJ9X)CH@w# zR1_T$&h}ykjzRom4;YYfr+~Mbr;0KgkdijW0>K#)SGbbITAU4Csqu-{D+r=FE-L1( z;o<9>SGDv0X;+?DgAx*>jBlEaC{lb6|&7@bCPag71Gg6)7oz~758ho=#GgSIvuk^|! za%fzFGejw5uIxfx?rfcQ(2Lwt1lkM!;24*@xF_Y(EVmR_T>fK;aMURHJ7&>BfWAeh z?(;`1i9v<@1JbuFUIa$OzXHoLt)`8@5-k;OoeZz>g7eP=Db_uL* z7Ihidu8KmBs5-b8=W*npgo^nL&$st(CRdAB2#8~yoIAlN?Lyc){@EuIuLC2=+o0XT zO2c@AgV@NXZmqYYWs1X+^Kl@?keA5Cn_Og2@tvTMn^C8~N>R-70L^T9_j~6B8Ub6J zX;sG7Hi7M}6DtdZB9QqPS%}HF3{B*JkXWbL%`ZVna(^OlPZ?aXRS{9_yuFy2{>pnt zN74(G#VeE5Zk8qRGZ5^c%>zh%)oCE+YqPw{)gxSq7RZ+Esd|iR9Mow6X6}J4yyUQf zmhN?OEseL*8_)YGo^`5NTf97ZkKc{6u3^CYy>ZPelQPQ{O&85dZk-xWsk5zSf(Iks zG1^CGzwH{VJPGVd4_c)fp4m&fl`3R!Mq6QN8BVwW73_GgS>f+g@hr%|;upV6Gy`MV z0eh%erhnJ=ZpD+gRx{NGo5q6vsQMGcG8dQn=;gK$d+RtE@1}S448ybjg4)v=HEZ{@ z!!9=b>}u{$2YObTkKB#)Jc>r7JFZM#u?=%B$t)uqlv(stSiY|)jX6FzPM%`*^!MGl z?vk4Yf?djj!o8iMw)Jj51nS(o-Ur_Nv?6#xyXRSPO{Y#dHacq4^nqALd9qA)>_yu7 zn?_eJ^^Vr22Gv!1Wj2|p*O|XB&5?UpZ4v38CqP0{-7iR*bPEP&f!yB<_*FISjd<}N z{VZE5rK+nD2WR`OaS!hIMmS^P||Fa!^>&htdH> z3xUIv{VjX(&B;wCJo?JQ>P4*jrL!bIE;#=MmoKX|=W{VzFW!XQux6cNmftwP6;{RZ zr>FIIbE5IR^|}Egp~jzbT|Ru?kg|u39AFzE>$4?;LM>hMMrXGI`a8z@15FJ-*C*9B z)Uezb(rG*&iLz;C&F))ie@%U~{^c z%CfZm+pV>#bg~=zad|RU|BO*3C)?LXBf}?G{*1DqA3P}|#&_jzWDjZg4V~+q zh?*FC*EhXf_n_6PcPYGg_0+SkXyA$b=&f_pm*=d@A+*cmJ^pKk8QH+|&r)#Vr@bYk zEq}()>%#j&&k|goaq7-qy!R}itbt-Mg8=fLt`Ske#dfsY% z{z2Bft?+_MuRxfk6T!wPOKdj_~uO% z#uvr&hK0|b&(IZ6kAae=oi)WPMS?BQe%Wr{DRPdja$(qu zXO;Cw!Q!3_*s1ZA`w`~08W~J(g68g>@c`U2RJ@x^yw5kr>D^V1UlF@qk9i(8g&0<9^JEvs*GmI!L!JY z`rXE&sUjS-wswBUHwuzO?524*ktF)y!B!0 zY}uO6T1^w{g+z}5zA5PuTebs${rUk0Jj?d6l1)~T{S$-jHIZ$P^!77(H{9#h0^Wop z5Zy;&RUg_Y-)FgHyi-A8$!$T>$R3dtxGzKgGy?udJT8;K3qa)~_Th2+suWu!gOBAp zk)@ErQp{v2-(;y^m{yTcRe)$A2BpNy)pdlB5JNm{vL~ABIeh0E-__^z_DZqT+H`K? zuJbB4JZC5ql2m z>gT_aJ#M0>QE;zq2clJSeZEj(iSuhm{+*s6Jyl~qLFDO3A6P@uX_YqKzFWNaT>K|q z7wyOp)Lc`?1SD>@c2^GczNu;YE2rHrIz5`*9zL;FIkcDZw&8TC(UR@wEizlvIoWNj zY)RApYg?5A5Qe7`^LifxGWKC&(F1t&XbXClgqddAPTk>biDoVNhMp#(yDRLN0SDmlR~X@2MXN6tkgU`Q#tx)ZxT`_R<3%(Ldfc zJSsatFX7qtmDx7Qn6Nku-x;>hB#gf!X1N93S)tZRK|gPCYauPywS<&@M*+%{i;A8d z7Pa`ak&Hu!LkbkVJLFZ?sN?tzZlwVQB@?O^!ZmDP zu4rt}9n3DQ88VkIV@RLEDf{##Y^7u=!27mQa*efBDA_8?Us-zy-XQW@NCXU^^o|ce4R1XA`(`q^n0PtOZT1$Q@;k9Oh6KimIlh2w#OBm<~&h z&87%*JXbc8U@ry6MWtNjCq~4`Q>{<%SypZ1(!Ey6P|lg`_Gc(u#T3XwTtR&vu!R+R zq}aX2`CNH;WXzjo;5Jf7&g6jOyd#Tud7K<$V1;g;ZwZ{F1LAO=Ewq2H-vnp3gEdqf z`HD3W$nfV(WBTnd4s<5`spot-Ub#k zO7m^E^^sYm?^0s)1D`>Zl7Hqfk8^rxJ-2h8tVhIyT@5+DUX)eKK&V>y6A>wri-nA! z#{=aHcj7d?6NSS*SX^q&&ITp@SdX=wknKe$E2)YXwLcw&TC0Jljh?HiJ9#LGxx(8d zY@IBA`g2)ouo&|s2j}kcP`S6MH*83vce!l@e)_Sg?H#7(S{iH(=b4~E!{UtniaUfn zv!e;a>!$&hYV5&IZ|XINRkK&we~;dak^YTpK`F3^)BV%%myn{= z;PZnbi=$g^td(A&b=ccg=ViHDMna)jZ_lvCM^8|!`yEpg75jr>+_7fy_u_tRz(uZ> zomKd`@Z;=cZwDHbqRIY+Og-&Tv_(I0B|-hU%PUtgYWI8S4RZmG&Rk19W#fX6-0zJ1 z%mua_IV}}icNn@mTB%veD@+L1MA8Quq`OC2$k8Zzq;&f4bge*++I;X3rl4s0Otxax z=pYHke|cL{vVtO}FV{4alJ&Wjgw2%7To_+|5V84^-mS}>n^B`q3N;^bUz7!P9rbl; zGO1xib^_l+Ha>lnJ<-gjjnpd;B!M)#cD4|L0~^(9PxD(@-L`by6OaVvazDi>c|Ii& zKWErpt`e;nTo&1HNi&d-(k)wp?vo^BNq;JX>9$mpgH8Ij@fONU%UhUUlcqDDhCaJ* zFb}2D4tT~$2pudhyaV<#=Q``IA@xRHS0lJe&ow7rr-CE$`>Z2(@b$n8;4t39~N z48y^b$gJgVbC)FfgL#UX5#R1AMS*T^s#So7-1g1P3|u7DGxX8U%p12HUHU#0G_%K! ztCYPLLOHnB@aQzsu&F-s>Jl02w0i78E9C1ugRZ%h%uaP3uI4@Rkul&_W{;;p>Nk$d zp0ACWew!&g6(o6SS07d%=~O{?6*%BiiF#yzrzPA#-WM||nQ$5WyMm&p%WD}dHw>TRx^y_v5TuA_6+z`g|jumW)s{{^F<4SCUxg)3M1V4}x{Ox-Qg{6n8h zcz#L24HMz2j!)5EEe6(^`;Ze@eHI(aAWz^5O~Er+@@>PNrBP>%CKOHD-+{L+lT6iA zi8nZvQ20+x?ZG{CEJYs2fmU&R#(Mu7?72z>xbxsh?2*b>xm39c_V2h-rieM{|7UY!RkBF`dC7o{C-EUU&d)I{5xMY5Wubz$o#ySTn zFsl5HBWIl%x2v4&yn8b1C)uj^&hI0a1wbzsQwkAXHzD*((mpqb$F1o0`PVCjkiAg1 z>jG80m?@)917uuYikiX0xhBrVB z6q8x(8D2bIyA`?F90-)d08;TS5mzStiu2?|w$AtbTwT#YX}L`h-_lf#+)Q#Xm?qiL zo}=wkA9Z8KXI65r^ikVOt*l*>fSCPXmxN;Ef@p>ZFvHW`!f9-?Jq_CSLi=CSTh zG88zV6gY!Gt#Sn)Ip@dS%xjUn6D}NI?^bMt;y3-FvqPT6H*6+i3%X8C*k4>$fxK^i zGg>`3>-Bx=vEKTNwLcYQ^6wkX#-;9L?Bh$(4XzPJ;5LE3+nsN}ga^IX_qr`s0JSlO z+2l408LXl`zNr%OO? zl-XU5qE?@oUfJyI>b!Zl`f%Ecm+3G0c6j7bNk@MXqQ_~%9ysL2&f;e^_Y&AkoIbYy z$NV(k`98;(TkPRR!K%cV1;H|@fHUD_A8qZ^JuaQ7#~Qa3B3ZsUFADDdU@Kg(FtESY zSf<5_?2Cat;~R|X{{}HT>e^yEyG60oIp1n|^J+|KDXafW@X7=Hb9wRropb#$|Bpl1 z?q~x@&YBr2VH>r{neBRNrts#CihZO}^NjJwgi9{B<*&%~%$_)mvh?P>!C5XX-Fd1x zQ%~}1*M`o}nG*ueHQwJE)BdsE*?qMs*dqHzH}=9~xeboDUf)xvnz%zA80%EjF?pM8 z)!CSofo{#$mmZ25c8>cg)reCu6pR8c9(rM?&T(xm zET=B}`cOrPEtpwu z$fWD&$le%ydS{R|_K1@+zmv;IKZmnlQD1@&t@nGS`UdTXUE7roe)nBWrevu+{xhM&2_CZfqhpIURwayt zskN8&j(lJphKIA>TpjwlV#3m)*E*w@Zje0^lP9Q*W}6y`H8&bj9+mG?8X4r2pRFAa zmj6399L%kH=7=y9iar@mFw3wsW(ilS9-<7s9qlx$rCG4n{ARLMGe1HGgffN`e6mf$ z^9Wm~SeXU~?WU=dwG%%2l*GnszXs=2MZLI&l*3P_%eALekGG!8$}DR$^fwjQB9Y}y zWB6~%uAVA4GEK}^zcg=lo?k1)PrmW};H-E*Eo}VX!Ei|2WB$hR#_ZEImrSQTo}6yX zWxf1F20dV`X35o&*YLbnzST5)F7L*$(ETin!W|>-`UytWs9NIb`#Y0iR8zS=gU=r5 zGlLbf@|M<|-FJ;fN1**li4&7r=G|7^wPhAg7tI0H8-@97YQQ(oXMEMuy=&IC!!|EFoXTCR1Ol6NB5@x`EpF&4w&;h!jUE3c741Ij6zIuj3ScY}P0%JVOJu=FnKFb?F z%jz_XE13P5pC-^bD-fS1xG*c+Z+8JegqhI;C^<1^X&1U@FSw?ilSafG!ow+ae=Oar z_K22h26J+yIVI5KX*7ibn&QVfH{dyu$3aQrxq|w0`KR_SuCP^pm>m*kyHBOJP|c&M zCb$}XB$Na|b!Sp@_hjA;h#ZYoeHLXvv`@g3!Mc|;7|%1>?F9YXd#_F~&>0>7hSVUa z!QZP{C*uYy#Z8+&JWAkxe9>s&9##H%>cA{x9N3(7j$d%0ISJDc7lPB`ZPVhk(#{dn zVsVJ*O?X5%JTx61M5g;|!F{oG@*ymxh2{?MyJGoQm1*{PnkMZUzT~+nnQF@q)kjiK z@28#&uG5|oP+z*cuzmg6oS4E4_={Wnsg;(XER8JHhTMje9hdt5v2ZLO4K;!L9>+Z& zFcr|bIH~v1!L0o2qXmL>w(OZ}_T!FV;dze**PMkoGeq2&la~U*n+FktL_{CbqxR{M zoAihocz7*5Bmo|n&ZTF!=ruzNOj-=KrmZGEKSM_1^R8(ZKzFe0#@+cIa}L)I)BWrP z9F<=zs6bQ?QbT% zM>Ncy;b2+hu%8ayDayaynQwqy5u4-Bm1enXp0QUf@|($ibW}@JnB!4!CBhBoPxZ3+ zWpwf0V6+)(RF7$O&M9+#Ze709Z_sm^!0KvS`oK~ANgGAyuu7$QSY-rfGe!aKRa?K! zUYg;ke-&Fx&K;O_4n;k_@%F}j50=i`U2pY z3tIw7hzl)e9i7w8?QJCx(-`0Axx4hdet003?m>Y$5NWbrFqZ^cDw1Z+pc*sSf4M4r z)K}2l7tt<)+^B_|8j~Rrp(g22OD6R_o+gV4{MJwNT7r3R(!2rq*~6DQU6nsbRQ)9f z|2DDDb@fpew|zre+pDB%j-oTcRVasS<8~*XHtb|;pTC@kk$kn$h>F(12ZOf}&w7(2 zK18I6Tv>=aqzgps#uC%cxgtbt5MoF07&Aly1rcZK8H{%hAkqD#;rIx zs#tRkpK@LI?sZj45G>|4B)0{`!uSkIC058NYo)4?6bjN)b&vvjn~*B)Dnk<0m_&`B zK{qm}rVOYli7GU4_ol_>zfCa2jUg2czBqmRPVMno$JS~Q%FgAs!z^TsT={sdho{;` z{6_=hMjKa$*XFI$u1Lh=eB&9xiP338U1#HG=uzou=cUu4k;_p)S}X|>mmVIKo)dOR zk7YW=bkmRgHerDU%We!#B-RU?u5y$`t~CZSTLefoKq4y!A=dlRP2UE$bsHhbPN+ zJ;ajcyplASdwzK7ERN(y9J6JnqmI)x`KwBk>Oi^ocMqqz$`2YFtHL&jSl8WzZm09M zX%SlVC^P%B>+~=tJUlo&X3r_ImL6ma_eIhJTIkcfX(2?qmliUld@(f1!IrsP!oQi5 za7%MfB=Gw!O$H?B%4>)Xq_`&~iql_wPn@$o*({)`JxlTOJFOEJn*75G%aIKl7a7|c zN0DTZa(rlt)LE(MK~-HHFzI>5zKJ5+t<#(BkH5sWB^&FdelzqX=+{^cB%yJ^)gHee zO|cX_`>;kI;6a=lo4r6ApB}R@v z4o+U8WhUP6Pp5|;cc4s|Yw-259JaT>t?`e`Cbm>?4f|@OLX{qIj~=ON=AyI&ma72E zo_Sxrf1Ca1WBoi`{e#w*tMNyEC%qAxY#GT$tNo`9ly_qlcP5f^Z}fH~pFcsCtwKhj zW@FiYwkp1KY&^^&zIaqd_>x+u5=E^le!nW@ zajX7x(6l93@$a{8cV@#H4J1%BZ(gn}eCPC+`b_JB5n@!cVRcV@WoM2+zrdp?&Ffl$ z6nN+iJ*NAE#5z1UfgUyH(qYazu^80 z8v^y^j#vmB8$o8%Lt~|no@5bHgw@C7I@y6Iub=bY{`aCB@ykT7qKH+ccYMA-p^e#M zmQB4m+M&*g3TU|eWmm4&Al*D0^>O?L;*78k>dn+~Et(^!89G<3 ze{OUNr{vkA5>Xg(}wX)F97mg>Fgi&TPppvWYZZ+&g;rtsxC7s&{$cR%6(f!)v^XM~*jq zk6k(P z5PO12CR!oWKZL8+zTQ50kYH|Cp&N%c34cx(<5%$;P5-$)V#%lI+2#4r_im=Cq-X|~ zU#uEorMf^)MXRIDZX~mewvbcQw{}ucvinppi$2E5*~Qhm00hS^eXC64i_@y|B3zNK z%D~gLeA6WA$F|es2DHR;q;Dngc^@U3x7_i*WIW??_Np?rh)mQh`n6w>M#s1l5p4@f+tzy~3K zi|5Wdznkz8x*S@n09*0?9dT_n^CalHwzF+A?9H~*z_mB^lZw|ro6LxxC4psj7%3PN z++(CrA&zOGvAlD1!_NJCrhG4U2(8)_|IB_vfXVS`<8dI+|7!uR8B9sWayIkw;w0iPfqzmFnxO6TxTL4L>REdOzJ*pn_P_8 zYM)UwzMsJzcQUdsnN?5gx*q(K_;&hgZ+HKp%0A^$F5h@FIPEWMi?4-_$^H#nfowO~ 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

Pr&#Jvd_Q+5nRZp{}^oWKLH^WfWY4ptkA*( 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 literal 0 HcmV?d00001 diff --git a/jukebox-bonus/cache.db b/jukebox-bonus/cache.db new file mode 100755 index 0000000..42a8a57 --- /dev/null +++ b/jukebox-bonus/cache.db @@ -0,0 +1,18 @@ +./music/Audio Books - Self Help Meditation Self Hypnosis - 'Assertiveness' (very good).mp3 +./music/Drum & Bass MC Skibadee - Deep inside.mp3 +./music/Drum and Bass - One nation.mp3 +./music/Drum n base-Prodigy Medley - DJ Marky Mark - Rare tracks - Drum 'n' bass - Exclusivo Megamix do DJ marky Mark para os hits do grupo Prodigy para a boite Toco - 1996 - Paradoxx.mp3 +./music/Emine??ěščřžýáíém - Stan.mp3 +./music/Expedance - Intrance.mp3 +./music/František Ringo Čech/1-04 Give Me Fierce - UDG.mp3 +./music/František Ringo Čech/10 - Christina Aguilera vs Freestylers - Aint No Other Man vs Push Up.mp3 +./music/František Ringo Čech/10 - Thievery Corporation - The Heart's A Lonely Hunter (Feat David Byrne) - www.torrentazos.com.mp3 +./music/František Ringo Čech/12_To_jsme_my,_borci_ze_statlu.mp3 +./music/František Ringo Čech/17_-_Uspesne_zapojeni.mp3 +./music/František Ringo Čech/Češi a jejich samičky/01 - František Ringo Čech - Češi a jejich samičky - Bezpečný sex se ženami.mp3 +./music/František Ringo Čech/Češi a jejich samičky/02 - František Ringo Čech - Češi a jejich samičky - Kup jí kožich, bude pokoj.mp3 +./music/František Ringo Čech/Češi a jejich samičky/03 - František Ringo Čech - Češi a jejich samičky - Pomsta je sladká, když si počkáš 30 let.mp3 +./music/František Ringo Čech/Češi a jejich samičky/04 - František Ringo Čech - Češi a jejich samičky - Jak se kapelník H. přišukal do rodiny.mp3 +./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 diff --git a/jukebox-bonus/copying b/jukebox-bonus/copying new file mode 100755 index 0000000..30baeb6 --- /dev/null +++ b/jukebox-bonus/copying @@ -0,0 +1,12 @@ +License for musicplayer (you can get source codes @ http://musicplayer.sourceforge.net/) + +Copyright (c) 2005, Fabricio Zuardi +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. + * Neither the name of the author nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/jukebox-bonus/corner.gif b/jukebox-bonus/corner.gif new file mode 100755 index 0000000000000000000000000000000000000000..3bdb05ab9b9bc6ff005ba080a2261c26ac33a414 GIT binary patch literal 13907 zcma)?1y_`f_qFdy8isC|p}RYW&Y_0x4hd;#>5idO7&-)`1w^GAr4b1!5wSo8!Ql6Q z-f!@pwZFmM>#TLIeRTA+<>XyvfmvWW1OPz)2?_>aPyh}<-~f~W1g3z22>=)o1d0IQ z2mnS0g;4?o%wPg~fRGtNNDm@r0f>6_Aef97AQys?3IXKe0EG}h zAps*71}J0!gd~8F11Kc{N_l`v3ZPU0s1yJyRe)Lnphg2UiU5roh(;ZtRRieM!L;fC zoeqRf1463@(CY&9dH{nylujQ;uL&?3!08PDMpJ;v5MVL`n2iV+3;|{=z-&&$fB{%6 zh#8Fl7CV5&9>i)1u-SuI9RT+Kzz!?B=`4AyJ z0nYmXS0KP0M27MPaYul8f&tzL2u~!y7YXAH0r;cfyiovu0w9nG2qqEnMFT>~Bz!S| zPzoTF4G5+1X2O9{Qn=JZlNGz;2|Ic{5Sv46EwkH zd{APdXHueXYO1fVrvui;(8Siu)AN3@tAjPx1f!{{s-P$@EiK>N(yaKn{c(e|q?nkj zP`?mAKi}{(K2DC8FImS~*jT1n=;r3>XlP&2Qms%?tZ!^?AhzF@nj+f9^GZ44sgE@RkcO>GTu9x za5pzN>0)U|J`h2LHW|%12g44#stvkE(VHEoRD%Z2qrT6m0tlUTr`zs^D$sg?5eWd4CtU}ytLplHYZx`1q_WwT@KytLrp;mK;;6q5++FqC-S zH7w1jBN22)I=T}lTB97Z|1Mt~lIAoz61Yiv7p*PEByph{je_Wq7W2_!{?`>DZ>dMi z)rUY5^MoPC4Ok3;94QJYHwLEgg(e3x$0au=PRDX=3upGjsSz-9q?1a>@bfK6QM}ot z!5$=sSXf!9HPeRrS@4!vdz)^(3i}bdWofUH>h;>o6?f^#<2`x@vUYYq;MHPuM8c;i z_4p`Zv}R(aloV(dN=jG8F+@_C_=xjrIr#3VR$OWix`W~VN&}Ma-{aZEirN-$R>!Ek zx5MrsEh^1)8zY#_o+<-snPft5mulvvXLc1oIG4V*zXgETHbJ0KC^eS!6sBnsQ47;B zvnDd7kUTr^prUtZf{?OaEpsF2$4n;31^aMdU1gS)3G$~uzk>`o2n!Pk*}{=);sF&5 zG^S+cA?A>wm4VT^-0)-9to-@GjcOO}(qhmD{8aOxbN=J63a-VCUzI*H96VC`l}Nuu zp)ZEgqNasKLtXV))HHQyt`Hh}l9K`kPrL_^JZ@rl?FZ_5&jC(#ecnf!;|ZdNCp^iB zbDCN|N~rXD)lM9i#md5;c0`_@X6+GdJjvb2Inam3PagDxmFSQ%D%` z=vt>46iT76DCS8~&KP96AsM>FK*FAdS0|Ac+BML3y^m`rL;=*!gzQ`k351gUkz?X4 zBPSK&@_SGWgm&4JrZ)Gy1hYVKbLtv=EHcCL>`W!DK4c4%`3-pcZ*bH0{+P$>HJxbk zleLCIBf%;0pZd-uf{OxKLX@R_p8I}J=#C7+w*1EoJ3IoPrf_LcyCkU%@uQML&rc=r z;=fugETp1obAQ_G-E7ExYWP8(`yq5c_xWArH3Jt8RurJ}(JO9w{4EP1r@9`hfku62 zoPke$7iFxwm=^73k^mbI!THfNAiZ`qnUqk(nW5OqI&%XseAh-$$R}S*e6GHwq4HF6*>hI(B zG1NHz;5<7$qD;ce5P_(AALWJd%?&dAL447Ti*N96rNZg7P-2K!C917(uw|pbw$1MS8IJmEfOc5loQVHL-j>( zVr-LB!DDcApou1mO^SmrflH-3LDL41w&kHccq38z4(HBU8?soUrIqA!30F?TN`^)@ z8s{_954oE^pHE5C@kwqvZ7J9GEfK9m#M;VkWiZpl9y1LJHP8tE=A+dAE@ln3UasBbd>?h2Ns*EVpUGB~io*b* z-1A7&fID;ZRwaFbTP`22{19d4k8?pW#4Tv2-@T!s%lMMt^VXqIiZ3I_!iSXxA4k`) z1GXhOd1h@{9E|d3EU%33Z(wU~_?1Ouu&hE3xec@5S$cFS6t}i1CDmHUjS7ktT~kPm z*ohV96^fpgl8G>9aL#p9XgqoF#nIr8xk*(=iH-vGf`Rdk1>RIgL_X2;b+9enOo>Gd z-naIC2mkK(yS`|f=i6bI8NCRJT>OsR{bxs%({EN~S+o0mR6bj@R=E;4U-9ip^9w38 zm;V~|vk(azA0)pUENdJ9O?@Nk_fqb9MWVQw^DTUo-sZK#E8(^FQw<_}=QNI+NdoON zzgRjOqJ;+oS?{?RWeM!QjI6(45fO{GBOU%udGi#m-Hl5VDqZYoRFL%de&6)0UO(e? z^w7UoXNj6e)wuz))~|y3>lc?}_Kp?R)$5xk?cTFP7zb^QdMmaR0EyDurTZ$9kz0lz z6euD^BVLd={T(Y!M2;ijdJvY?u5|ru0u_&0s76;jw*Xp`$gxh>GtN1gHQg01kq#qq zj_y@R!SMYq^CVf1^M!Y z;Q=#p-ReoRcQYhpfC3%ln{?EOI%5PpSw{^^*T1L3*pG3fntiFJW8mV{7Abk%$ zg+th#*fLON6W;~nH+NUnZke5Sv*>36TvVxD79VOO@mC)cp+Q*c{cHkXq(TdC%=+}B zkw)5wD&IQnP3e_0=IoD7_}|4aHQ8rHbABMhe7v>gv#mMh&JG!u(y>;5BcGp~h;kuP zI_MjXSnjvpJqVL%8S`LplitX24x^HUD31E@A;4S*+AlPy{i%fS+$4^rge|4Cb`c5U zU}bI#5$g>WU0KezYIIaQ4(AB0ZIDByCgKpbTPR%AfBX@H}wI9R$sK_T%kBx6?U zbm)(GVl~iO(EGYv%$dAu{6`W416GVD%odGmuNtk7o$Z)PIPd<^vZ>aozkzw)Pxth5 zkN@<8guPHhzzaF5qsrGT+gba-pM#76nXQBp&eBnurYGAs7bd|AC#;*7w-|luW^Gk}FiVUQKb@4Pk|CS$j34ZcS!}lwjnGWF=ShUmi0V@lgj#WM9o9btnz~ z_d|zRlP1mGl(d27ySDC7GEH4SuXrytwhG`bwKD zJ#WPo)x0kIbsz%qGh44)Q!QVKQqFf#BVvElH26yRSwn0jcZr;y$$X=ltDLe%xybD( zCw+$eyI!o?TIN_kwMmP_`gb&>L4x-PqqC0rJ7^@Ycc-S`z?}IbWTLx_wb;=94fEe{ zNn?vxyY4cr8D3|Y`cSbRbGYcHR9K+3V-HGBq?Kc*4!uibWaX{Zk1}`ik<^ea=})HJ zMw^X`TkzAC$jO_0?y<-Zc4v#wJ36qw)na|*mM;)dbR2aeHk{U3Y#Fk5K2+o3i6vo zld?6=n*w=~C^`d9#{h3vBPM%|r!4Z|#G3R*r!yAdmn0iQV!wsmo`$8DW`ofKy6;Ej z!yBm;R20S&4Vbr0ygce_)ba}r%1g3zt}S%sk`6SRhFWk|2@ihHWGr!8okwW?=zIM5 zX;dd*JnBKiiH20e4HDjuWPe!>G=~3a|5F ziY$P@84ZuK^tLS}vK50_JNw_<^RMYf)QH2bhhe~{$m(B+nmVX~NfPxK$i`btWEa&^^`bW!#>J?8tx=a zAWXz_rCM?&t~@a}fgwy`X5XXypFU(wV=4*~=UE{^JWKj@EJTx~C{-IE7oJz!p! zch!eEI3?6?=XK?y<5lGs*-3<+Zr`NSn;(-h(b zX-r>^e}`Q1@?3Dnu-|H|EF&qoA~LD0QWz`IjFL_X7Wq`wMH1@TlJbY%fydSZFfqjG z;}>^0xN{f$;hia$9+=&EnN8=&uZH6#yi!c^0?aAiS7b_+<4rmd0isQ$rjI6Nz{?_6 zg;?t^U zVlRaLcgAlkeocwf4hSa0SQ3MkcyG0DVcFtw^(h zp2`(UfhU(v$YtC&%Z>}-c-3Omf0E%SC@=Ef_CkWs(-5};%qqbx@8h>n6uuvEMUlX`p{xqKW^C!=qBn5iPu7BKd#`xosO_M6BjstGzOlgOQ<(9BJ zj)$933zi=~!%Z`Ix>9ih-NL{qRNvM>@Ik7t z^+JTM)LfFn2=n4KaG5zt$(QlkGuXh$$GPpZ8j^5_g4KQnCKor9`j*xJAQOjJ35%!< zZ{daI(NVILf)x=ytcSs3U6juk8CsLXsp_mejdx za)xlbw_2DlEI+`B3(2%;VIqANt=p2UZffoE`t41`TvtL&fE!dP9(wm3A+aU|(fo0{%OALK5vT9>Uq#_`9p_SvD)V(HM@+SHb~ zlx9VphdZaI+^cNbFl&qle1P3`DTpPXaV<6pBqa1=87#g`c_b6ehd_cP7{$dFN9bc@ zexY89sS00!hHt3kR{|h3==wR#{DSb#Q#twa*qe1SJFbnOw`ygDjm~Y#cT*05M6QHS z>zcDY$IOz%g-N=-DBnEVtP2zuN&ve%KzLkoFMp^6t?f%aNY>wFin!}V$$S8%?drb* zv^Mm+C>$(IHE7lOE5WO~+6a93pgDT>Jr$*YqwJ*fDSlNvn|&|522x-haKs|H5iu?B3S1;8A?r= zS+BStXZK#Te8Q5Xh{+hoQzE*eKWg7-vHD&Pt1!C;h0+?DFqNzG?a<_B0BH_6DSOwR z+#Xd*_h6W~m>~A`_Og$OM_nP5-W9kDdxa(IJZ;OQmFe&Q`lT+CL%Ph!;+zGJY4Y zs~1*7cuUg=3uJ7W+HOqv)xW!IzmvOt%s0h=BW>i`nY$yktlH-%QoI)I z%(K6)qRWla%~K{N)o4?+-mLD#AMw$g@y=M-R)4;>w|Dsg-o~U=$JAu)Q^b`%4%>`cV) zVh4U==r8tSd-i)Hk1(uDOJqnDBgX)8obJsH(Y-lG7gLZtq24XO^$OZ&Xn5Os&IiPU zX*Hqzk&;Qx4y|g3ixA7vD<~C?&s91<`DTJ%V ztdSs>1#>U?_5Mp(Nt6mwtIN45zJh~rL&}t+!=)E@OQq0N3Ua_Cv93oLmUXp1FHpB@ zS{jwg=Q3!b@u6Z_=ofTZt-5ulX*T()B8}jxT{AY))XUHG#kHB#jfM*QX>}hQCY42i z7N!i&H(Z`J$OwibzV|=rs=F(eB4J{A+jnofLgZJ;S4VuMSY%!0uXhmB%HLD8{pR!* z3FM|^(CM~MW*wH09fi&yi5_1f(gU!aM5$~*@e>`U%v7w1TNwoW=cIKarg za)`Seh>v-{6z<~xnYIL>)^<~1>QaVA8)A*Pr%AN*xMgg#Ks>){w2;zg_ToqkeTDa0 zqoxb)$a|d48D)00V_g1Md&l)z#tn@`zgS~s=JW>rc9ytf%7PZT2(`1+*ZdQF2&uy0 zqde6To(9~>oW#4BXLq2f3VzdZMpxk$Z;yA?c{b8EmR+H9q~fk&VcQZCJXq(PW$&5e zqzzo}k~exFgC7_(rSnjS#SUi*8h+GU2ow$bX2*T%Q77y0OgETIm-)axAk%llzC#k!c zbyn|rKMLRad$ujNPbTQn{XO%?XV+Cn?rgP{uk^wtF`FDM=1)g>tFk0zeh7=e5+iLI z^VE|Zh80TqOJuwYAfnwr0zUhVi3ccV_aYs4ieFB;d}2#@#wWQXhTRy%XwCacK29Xl zUJGs{vHXnmxjTYZUg|JYIJ^?YUY3?;J)^Na$Lc-H&c-ivw}1C|jn*y?As1;osK;Fk zlqzMn?1Fkuj!oLA~BiT9fwS-X0@zQ6f@q8IjpKuDLQ~NuTf9WV-6}d8AHy zN+-PLKq_0id$)UDP3?&Se4U}NSN5MIpRlzYPi~#uY%eK1OuGEk<*O8Z_0>%I>|wLh zl0c_I=9K+8-GpJt?PhksaCv?}{neZ8!3DXuK8gXc|4zkpe8m<6lghsjQ3Pxhu z%Tt2I4S_L;>^;O2x!N!fzZeBg7M~_B^{MBd($L9By4Pi`0WFV{DMKCTw;M`8Kzuf_ z6erWS*?}pHX_Qw8l6Ap)3VsxX!~Hq_X+$-J?#aMqyVr8C>%G+0H!BEeap&H0p3|R3 z6_y%8m|rZzL~&!JKIut}2LOQtu9gHF52mgTgmSQ`5$fC|AaIBU&a>dsVM8!w9MR&P z)17mf(y|(PXjc-`u5-DN_bHKySR!RQ8p;l+5hxsh$i1xR7d{~MMF<-W9*sFa zDx~l^QfdNh!1k2I78VUA|NFSOFgl&%^vEAm^|_g6uL~~Ma9Gfy^qy%J2baK0kioRx zGm-yJl`Tsk^*}%v<_}W%OqsjYUA98uxMC(a1%`e6X=0&ais?vSjd752>O3 z+V$?_gy*g}s7Es%0D-A}~9 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 of93UViU0rr literal 0 HcmV?d00001 diff --git a/jukebox-bonus/footer.html b/jukebox-bonus/footer.html new file mode 100755 index 0000000..2953b62 --- /dev/null +++ b/jukebox-bonus/footer.html @@ -0,0 +1,2 @@ + + diff --git a/jukebox-bonus/header.html b/jukebox-bonus/header.html new file mode 100755 index 0000000..4d54b3a --- /dev/null +++ b/jukebox-bonus/header.html @@ -0,0 +1,2 @@ + + diff --git a/jukebox-bonus/help.html b/jukebox-bonus/help.html new file mode 100755 index 0000000..509417e --- /dev/null +++ b/jukebox-bonus/help.html @@ -0,0 +1,70 @@ +Harvie's JuKe!Box Help +

Autorská práva

+Autorem této aplikace je <~~Harvie (2oo8), který se zříká autorských práv (CopyLefted) a zároveň také zodpovědnosti. +Licence pro software z třetí strany (musicplayer,...) najdete v souboru COPYING. +Pokud je pomocí tohoto webu zpřístupněn materiál, jehož stažením se vy nebo poskytovatel dopouštíte porušení autorských práv, tento obsah nestahujete! +Instalací nebo používáním aplikace potvrzujete, že jste s právy srozuměni a že je akceptujete. V opačném případě aplikaci nepoužívejte ani neinstalujte. + +

Základy Ovládání

+Na úvodní stránce vidíte výpis souborů a adresářů (označeny [DIR]). +Kliknutím na jméno souboru zahájíte stahování. +Kliknutím na jméno adresáře vstoupíte do adresáře. +Pokud zobrazený adresář obsahuje soubor index.html nebo index.txt, bude tento zobrazen nad výpisem. +Vedle každého adresáře nebo hudebního souboru najdete písmenka, pomocí kterých můžete spustit příslušnou akci. + +Tady je krátký přehled významu jednotlivých písmenek: +P - Přehrát (je nutné stáhnout playlist.m3u a otevřít v přehrávači hudby - např. Winamp, to se dá po nastavení prohlížeče dělat automaticky...) + - U složek tato volba přehraje všechny zvukové soubory, které složka obsahuje +R - To samé jako P, ale přehraje se i hudba v podsložkách (POZOR! raději nepoštět na velké adresáře!!!) +D - Otevře nadřazenou složku pro daný soubor (pouze u vyhledávání) +F - Spustí přehrávání v prohlížeči (vyžaduje flash), otevřete odkaz v novém okně, pokud si chcete dál prohlížet knihovnu... +S - Zastaví přehrávání v prohlížeči + +

Vyhledávání

+Před prvním vyhledáváním je potřeba vytvořit cache a nastavit ji práva pr zápis. +Potom je soubor s cache třeba obnovovat (na stránce vyhledávání se zadá heslo pro obnovení/vytvoření db a stiskne se "refresh cache"). +Na Linuxu se může dát obnovování cache do cronu jako skript používající příkaz find, databáze tak bude udržována stále aktuální. +Při vyhledávání je možné použít regulární výrazy (mezery budou nahrazeny řetězcem '(.*)' !!!). +Kromě vyhledávání hudby v lokálním archivu skript také umožňuje vyhledávání hudby a textů písní na www. +Je limitován počet souborů, u kterých se při vyhledávání zobrazuje velikost. (To by vylučovalo funkci cache - cachovat velikost se mi ale nechce). +Kromě vyhledávání lze z databáze také vygenerovat (pseudo)náhodný playlist. + +

Přihlašování

+Pokud je povolen přihašovací modul, budete při prvním otevření stránky vyzváni k zadání příslušných údajů. +Odhlášení provedete kliknutím na odkaz "LOGOUT" v horním menu. + +

Instalace

+Instalace se provádí nakopírováním souborů do adresáře přístupného webovému servru, +upravením nastavení ve zdrojovém souboru a přihlašovacím modulu (http_auth.php). +Pro zakázání přihlašovacího modulu smažte první řádek kódu (obsahuje http_auth.php). +a správným nastavením přístupových práv daným souborům. +Také doporučuji nastavit php open base dir pro pojisteni pred directory traversingem do nadrazenych adresaru... + +Přehled vlastností v hlavním souboru: +$title = Nadpis stránky +$music_dir = Relativní cesta k adresáři s hudbout +$music_dir_url = URL pro přístup k hudbě z venku +$cache_passwd = Heslo pro obnovení vyhledávací cache +$access_limit = Maximální počet souborů zpracovaných bez použití cache (při vyhledávání) +$default_random_count = Výchozí počet v náhodném playlistu +$sort = Povolit abecedni razeni? 0=ne, 1=jen playlisty, 2=playlisty i listingy, 3=vse i vyhledavani + - Razeni je potreba pouzivat s rozvahou s ohledem na zatez CPU a RAM (coz muze byt omezeno nastavenim serveru/php) + - Razeni vyhledavaci databaze muze byt narocnejsi zvlaste u rozsahlejsich hudebnich knihoven + - V takovem pripade je vhodne ho zakazat, nebo pouzit k razeni shellove skripty + +$playlist_name = Jméno generovaného playlistu +$m3u_exts = Přípony souborů, které se zobrazí v playlistu a ve vyhledávání + +$indexlist = Pole se jmény souborů, které se mají případně zobrazit před výpisem složky +$bonus_dir = Adresář s pomocnými soubory +$search_cache = Cesta k vyhledávací cache +$flash_player = Cesta k swf souboru webového přehrávače +$css_file = Cesta k CSS stylu + + +

Nefunguje

+Skript - potřebujete webserver s podporou PHP +Vyhledávání - skript nemá práva pro zápis/čtení databáze, nebo databáze ještě nebyla vytvořená... +Přehrávání v prohlížeči - není přítomný swf soubor přehrávače, prohlížeč nepodporuje flash, nebo inline framy... +Něco jiného - UTFS && UTFG... +
diff --git a/jukebox-bonus/jukebox.css b/jukebox-bonus/jukebox.css new file mode 100755 index 0000000..eec9990 --- /dev/null +++ b/jukebox-bonus/jukebox.css @@ -0,0 +1,60 @@ +/* + * Example CSS for Harvie's JuKe!Box + */ + +body { + background-color: black; + color: lightblue; + font-family: monospace; + margin: 5px; + background-image: url(corner.gif); + background-repeat: no-repeat; +} + +a { + color: white; +} + +h1 { + color: white; + margin: 25px 0px 0px 25px; +} + +a h1 { + text-decoration: underline; +} + +input { + border: 1px solid lightblue; +} + +table * { + background-color: darkblue; + color: white; +} + +table { + border: 0px solid blue; + background-color: black; +} + +td { + border: 0px solid blue; + margin: 0px; +} + +.odd * { + background-color: darkblue; +} + +.even * { + background-color: #000044; +} + +*.red { + color: red; +} + +*.yellow { + color: yellow; +} diff --git a/jukebox-bonus/musicplayer.swf b/jukebox-bonus/musicplayer.swf new file mode 100755 index 0000000000000000000000000000000000000000..39c8d5398aa25ece769fdac328caa62370b4f24a GIT binary patch literal 6134 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 I1za3t@9`?^Z~y=R literal 0 HcmV?d00001 diff --git a/music/PUT-YOUR-MUSIC-HERE b/music/PUT-YOUR-MUSIC-HERE new file mode 100755 index 0000000..e69de29 diff --git a/music/example-of-subdirectory/index.html b/music/example-of-subdirectory/index.html new file mode 100755 index 0000000..2267c5a --- /dev/null +++ b/music/example-of-subdirectory/index.html @@ -0,0 +1 @@ +Here you can write comments for each directory... diff --git a/music/index.html b/music/index.html new file mode 100755 index 0000000..5de2b21 --- /dev/null +++ b/music/index.html @@ -0,0 +1 @@ +Here you can write diferrent comments for each directory... -- 2.30.2