<?php $delay=2; function allowed_dir($dir) { if ($dir=="") $dir="."; $handle = fopen("allowed_dirs.xxc", "r"); $ok = 0; while (!feof($handle)) { $dira = str_replace("\n",'',fgets($handle)); if ($dira==$dir) return 1; } return 0; } function _get($nazwa) { return isset($_GET[$nazwa]) ? $_GET[$nazwa] : ""; } $sciagaj=_get('plik'); // if ($sciagaj!="") // $dir = substr(strstr($_SERVER['HTTP_REFERER'], "?dir="), 5); // else $dir = _get('dir'); if ($dir=="") $dir="."; if (!allowed_dir($dir)) { echo "Katalog niedostepny $dir\n"; die; } function licz($plik, $show) { $plik .= ".licz"; if (file_exists($plik)){ $handle = fopen($plik, "r"); $lx = fscanf($handle, "%d"); fclose($handle); list ($licznik) = $lx; $licznik = $licznik+1; if ($show==1) echo "<p>Licznik: $licznik</p>"; if ($show==2) echo " (licznik: $licznik)"; $tmp = tempnam("", "licznik"); $handle = fopen($tmp, "w"); fwrite($handle, $licznik); fclose($handle); rename($tmp, $plik); } } $lang=_get('lang'); $lang = ($lang=="pl") ? "_pl" : ""; //////// SCIAGAJ PO NAZWIE if ($sciagaj!="") { $plik = $dir."/".$sciagaj; if (preg_match("%/%", $sciagaj) || !file_exists($plik)) { echo "ERROR!!!"; die; } header("Location: $plik"); if (is_file($plik)) licz("$plik", false); die; } /////////////////////////////////////////////// $nrf = _get('file'); if ($nrf!="") { $filename = "$dir/FILES.xxc"; if (file_exists($filename)){ $handle = fopen($filename, "r"); $nr = 0; while (!feof($handle)) { list ($plik, $size, $date, $time, $remote) = fscanf($handle, "%s %d %s %s %s "); if ($plik=="") continue; if ($nr==$nrf) { if (strlen($remote)<=1) $remote="$dir/"; header("Location: $remote"."$plik"); licz("$dir/$plik", false); die; } $nr = $nr+1; } } echo "ERROR!!!\n"; die; } /////////////////////////////////////////////// $tytul = htmlentities($dir); if (file_exists("$dir/TITLE$lang.xx")) { $handle = fopen("$dir/TITLE$lang.xx", "r"); $tytul = fread($handle, filesize("$dir/TITLE$lang.xx")); fclose($handle); } function is_utf($dir) { return file_exists("$dir/UTF-8.xx"); } function start_page($tytul, $dir) { if (is_utf($dir)) header("Content-Type: text/html; charset=utf-8"); else header("Content-Type: text/html; charset=iso-8859-2"); echo "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\">\n<HTML>\n<HEAD>\n"; global $css; if (file_exists("$dir/style.css")) { echo "<LINK REL=\"stylesheet\" HREF=\"$dir/style.css\">\n"; $css = 1; } else $css = 0; if (is_utf($dir)) echo "<meta http-equiv=\"Content-type\" content=\"text/html; charset=UTF-8\">\n"; else echo "<meta http-equiv=\"Content-type\" content=\"text/html; charset=ISO-8859-2\">\n"; echo "<TITLE>" . htmlspecialchars($tytul, ENT_QUOTES | ENT_SUBSTITUTE | ENT_HTML401, is_utf($dir) ? null : 'ISO-8859-1') . "</TITLE>\n</HEAD>\n<BODY"; if (file_exists("$dir/MAPS.xx")) { echo " onload=\"load()\" onunload=\"GUnload()\""; } echo ">\n"; } function stop_page() { echo "<p>\n<a href=\"http://validator.w3.org/check?uri=referer\" onclick=\"this.href='http://validator.w3.org/check?uri=' + document.URL\">" . "<img border=\"0\"\nsrc=\"http://www.w3.org/Icons/valid-html40\"" . "\nalt=\"Valid HTML 4.0!\" height=\"31\" width=\"88\"></a>\n"; global $css; if ($css) echo "<a href=\"https://jigsaw.w3.org/css-validator/check/referer\">\n" . "<img style=\"border:0;width:88px;height:31px\" src=\"https://jigsaw.w3.org/css-validator/images/vcss\" alt=\"Valid CSS!\">\n</a>\n"; echo "</p>\n</BODY>\n</HTML>\n"; } function show_desc($przed, $plik, $po) { $filename = "$plik.desc"; if (file_exists($filename)) { $handle2 = fopen($filename, "r"); $contents = fread($handle2, filesize($filename)); fclose($handle2); echo $przed . htmlspecialchars($contents) . $po; } } /////////////////////////////////////////////// function daj_url($cel) { global $dir; return "?dir=".$dir."&plik=".$cel; } function a_href($opis) { global $cel; echo "<a href=\"".daj_url($cel)."\">" . $opis . "</a>"; } function last_mod() { global $dir, $cel; date_default_timezone_set('Europe/Warsaw'); echo date("d.m.Y H:i", filemtime($dir . "/" . $cel)); } function forma($ile, $jeden, $dwa, $piec) { if ($ile==1) return $ile ." ".$jeden; if ($ile%10>=2 && $ile%10<=4 && ($ile%100<10 || $ile%100>20)) return $ile ." ".$dwa; return $ile ." ".$piec; } function ile_zdjec() { global $dir, $cel; $filename = "$dir/$cel/PICTURES.xxc"; $ile = 0; if (file_exists($filename)) { $fd = fopen ($filename, "r"); while (!feof ($fd)) { list ($plik, $size, $date, $time, $remote, $a, $b, $c) = fscanf($fd, "%s %d %s %s %s %s %s %s "); if ($plik=="") continue; $ile = $ile + 1; } fclose ($fd); } return forma($ile, "zdjęcie", "zdjęcia", "zdjęć"); } function ile_stacji() { global $dir, $cel; $filename = "$dir/$cel/PICTURES.xxc"; $ile = 0; if (file_exists($filename)) { $fd = fopen ($filename, "r"); while (!feof ($fd)) { list ($plik, $size, $date, $time, $remote, $a, $b, $c) = fscanf($fd, "%s %d %s %s %s %s %s %s "); if ($plik=="") continue; $plik = preg_replace("/\d/", "", $plik); $tab[$plik] = 1; } $ile = sizeof($tab); fclose ($fd); } return forma($ile, "stacja", "stacje", "stacji"); } /////////////////////////////////////////////// $nrf = _get('picture'); if ($nrf!="") { $filename = "$dir/PICTURES.xxc"; if (file_exists($filename)) { $handle = fopen($filename, "r"); $nr = 0; while (!feof($handle)) { list ($plik, $size, $date, $time, $remote, $a, $b, $c) = fscanf($handle, "%s %d %s %s %s %s %s %s "); if ($plik=="") continue; if ($nr==$nrf) { list ($test) = fscanf($handle, "%s "); //echo "AAAAA $test AAA"; $is_next = $test!=""; $is_prev = $nr>0; if (strlen($remote)<=1) $remote="$dir/"; if (strlen(_get('play'))>0 && $is_next) header("Refresh: ". $delay . "; url=?dir=" . urlencode($dir) . "&picture=" . ($nr+1) . "&play=1"); start_page("$tytul - zdjęcie $nrf", $dir); echo "<TABLE width=\"100%\"><TR><TD>\n"; if (strlen($date)>1){ echo htmlspecialchars("$date $time");} show_desc(strlen($date)>1 ? ", " : "", "$dir/$plik", ""); licz("$dir/$plik", 2); echo "</TD><TD align=right><FONT SIZE=\"+1\">"; echo $is_prev ? "<a href=\"?dir=" . urlencode($dir) . "&picture=" . ($nr-1) . "\"><<</a>" : "<<"; echo "\n  \n<a href=\"?dir=" . urlencode($dir) . "\">^^</a>\n  \n"; echo $is_next ? "<a href=\"?dir=" . urlencode($dir) . "&picture=" . ($nr+1) . "\">>></a>" : ">>"; echo "\n  \n"; echo $is_next ? "<a href=\"?dir=" . urlencode($dir) . "&picture=" . ($nr+1) . "&play=1\">|></a>" : "|>"; echo "</FONT></TD></TR></TABLE>"; echo "<IMG SRC=\"" . htmlentities($remote . $plik) . "\">\n"; echo "</BODY>\n</HTML>"; die; } $nr = $nr+1; } } echo "ERROR!!!\n"; die; } start_page($tytul, $dir); echo "<H1>". htmlspecialchars($tytul, ENT_QUOTES | ENT_SUBSTITUTE | ENT_HTML401, is_utf($dir) ? null : 'ISO-8859-1') . "</H1>"; $dir2 = $dir; while ($dir2!="" && $dir2!='.') { $path=explode("/", $dir2); $dir2 = ""; for ($i = 0; $i<count($path)-1; $i++) { if ($i) $dir2 .= "/"; $dir2 .= $path[$i]; } if ($dir2=='') $dir2="."; if (allowed_dir($dir2)) { echo "<div align=\"right\"><a href=\"?dir=" . $dir2 . "\">[up]</a></div>\n"; break; } } $filename = "$dir/README$lang.xx"; if (file_exists($filename)) { $handle = fopen($filename, "r"); $contents = fread($handle, filesize($filename)); fclose($handle); echo "<PRE>"; echo htmlspecialchars($contents); echo "\n</PRE>"; } $filename = "$dir/main$lang.html"; if (file_exists($filename)) { include($filename); //$handle = fopen($filename, "r"); //$contents = fread($handle, filesize($filename)); //fclose($handle); //echo $contents; } $filename = "$dir/PICTURES.xxc"; if (file_exists($filename) && filesize($filename)>3) { $handle = fopen($filename, "r"); echo "<TABLE>\n"; echo "<col width=\"33%\"><col width=\"33%\"><col>\n"; $nr = 0; while (!feof($handle)) { list ($plik, $size, $date, $time, $remote, $xs, $ys, $remotem) = fscanf($handle, "%s %d %s %s %s %s %s %s "); if ($plik=="") continue; $plikm = (strlen($remotem)>1 ? $remotem : "$dir/") . "$plik.m"; if ($nr%3==0) echo "<tr>\n"; echo "<td><a href=\"?dir=" . urlencode($dir) . "&picture=$nr\"><img alt=\"\" src=\"". htmlentities("$plikm") . "\"></a><br>\n"; if ($size>0) echo intval($size/1024) . " kB"; if (strlen($date)>1) { $date = "$date $time"; if ($size>0) echo ", "; echo htmlspecialchars($date); } show_desc("<br>\n", "$dir/$plik", "\n"); echo "\n</td>\n"; $nr = $nr+1; if ($nr%3==0) echo "</tr>\n"; } if ($nr%3!=0) echo "</tr>\n"; echo "</TABLE>\n"; } $filename = "$dir/FILES.xxc"; if (file_exists($filename) && filesize($filename)>3) { $handle = fopen($filename, "r"); echo "<TABLE>\n"; echo "<tr><td>Filename</td><td>Size</td><td>Date</td>" . "<td>Description</td></tr>\n"; $nr = 0; while (!feof($handle)) { list ($plik, $size, $date, $time, $remote) = fscanf($handle, "%s %d %s %s %s "); if ($plik=="") continue; $date = "$date $time"; echo "<tr><td><a href=\"?dir=" . urlencode($dir) . "&file=$nr\"><tt>" . htmlentities($plik) . "</tt></a></td>\n" . "<td><tt>".intval($size/1024)." kB</tt></td>\n" . "<td><tt>".$date."</tt></td>\n"; show_desc("<TD><PRE>", "$dir/$plik", "\n</PRE></TD>\n"); echo "</tr>\n"; $nr=$nr+1; } echo "</TABLE>\n"; } licz("$dir/index", 1); stop_page(); ?>