E' un Rubberwall 1.0 di www.explodingpanda.com, ma pesantemente modificato (l'originale non funzionava )
Ghghgh avro' fatto qualche idiozia annidata in una miniriga ghghgh
Codice PHP:
$allowed = 0;
include('myleecherconf.php'); //qui ci sono i parametri di path: li includo qui sotto
$path = "/membri/pietrovischia/cartella/";
$webaddress = "http://nomeutente:password@www.pietrovischia.altervista.org/cartella/";
// fine parametri di path
// qui si fanno dei confronti con un array di domini consentiti per la richiesta. Se non c'e' stringa referer, si assume sia consentito.
if($allowblank > 0) { if($_SERVER['HTTP_REFERER']=="") { $allowed = 1; }}
$domains = count($alloweddomains);
for($y=0;$y<$domains+1;$y++) {
if((stristr($_SERVER['HTTP_REFERER'], $alloweddomains[$y]))) { $allowed = 1;}
}
if($allowed > 0) {
// leggo un file in cui sono immagazzinati i nomi e i codici numerici dei files, nel formato numero:nomefile
$namenumberarray = file($path."immagini.dat");
$numberoffiles = count($namenumberarray);
$filenames = array();
for($x=0;$x<$numberoffiles+1;$x++) {
$temporary = explode(":",$namenumberarray[$x]);
$tempname = explode("\n",$temporary[1]);
$filenames[$temporary[0]] = $tempname[0];
}
// questo è perché lo script viene chiamato per esempio come getimage.php?dld=3
if(!isset($filenames[$_GET['dld']])) {
if($logging > 0){
$status = "ReqNF";
include('logreg.php');
}
echo('That number wasnt found!');
exit;
}
$wantedfilename = $filenames[$_GET['dld']];
$extension = explode(".", $wantedfilename);
$numberinarray = count($extension);
$lcext = strtolower($extension[$numberinarray-1]);
//BEGIN CONTENT TYPES BLOCK. ADD OR REMOVE FILE TYPES HERE, AS SHOWN //
//DON'T EDIT THIS UNLESS YOU KNOW WHAT YOU ARE DOING!//
//MOST COMMON FILE TYPES ARE ALREADY INCLUDED//
// qui l'originale aveva uno switch/case che non funzionava --> ora funziona con if elseif
if (stristr($lcext, "swf")){
$commonname="flash";
$ct = "Content-type: application/x-shockwave-flash";
}
elseif (stristr($lcext, "wmv")){
$commonname="wmv";
$ct = "Content-type: video/x-ms-wmv";
}
elseif (stristr($lcext, "mov")){
$commonname="quicktime movie";
$ct = "Content-type: video/quicktime";
}
elseif (stristr($lcext, "avi")){
$commonname="avi video";
$ct = "Content-type: video/avi";
}
elseif (stristr($lcext, "bmp")){
$commonname="bitmap";
$ct = "Content-type: image/bmp";
}
elseif (stristr($lcext, "gif")){
$commonname="gif";
$ct = "Content-type: image/gif";
}
elseif (stristr($lcext, "jpeg") || stristr($lcext, "jpg") || stristr($lcext, "jpe")){
$commonname="jpeg";
$ct = "Content-type: image/jpeg";
}
elseif (stristr($lcext, "mpeg") || stristr($lcext, "mpg") || stristr($lcext, "mpe")){
$commonname="mpeg";
$ct = "Content-type: video/mpeg";
}
elseif (stristr($lcext, "png")){
$commonname="png";
$ct = "Content-type: image/png";
}
else{
$commonname="Generic Filetype";
$ct = "Content-type: application/octet-stream";
if($logging > 0){
$status = "Generic_Filetype";
include('logreg.php');
}
}
$handle = fopen($path.$wantedfilename, "rb") or die ("Unable");
//$handle = fopen("/membri/pietrovischia/cartella/file.jpg", "rb") or die("Unable"); funziona, benché poi dia "errore di immagine"
header("Cache-Control: "); //keeps ie happy
header("Pragma: "); //keeps ie happy essenzialmente disabilitano la Cache. Ho provato a toglierli, ma non cambia un tubo
header($ct); //content type as set above from explode();
//questo mini-if l'ho messo e tolto,non cambia, semplicemente obbliga il browser ad aprire la mascherina "salva file" invece di visualizzarlo inline
if(!stristr($lcext, "swf")){//flash plays, it isnt downloaded as an actual file.
header("Content-Disposition: attachment; filename=\"".$wantedfilename."\"");
}
header("Content-Length: ".filesize($path.$wantedfilename));
echo "Errore: ".$php_errormsg; //questo non da nulla
if (file_exists( $path.$wantedfilename)){
echo "Esiste";
} // mai una volta che dica che esiste
if(is_readable($path.$wantedfilename)) {
echo "E leggibile";
} //mai una volta che dica che è leggibile
echo "Filename: ".$path.$wantedfilename;
echo " Webfilename: ".$webaddress.$wantedfilename; //entrambi corretti
echo " Contenttype: ".$ct; //corretto
echo " lcext: ".$lcext; //corretto (è l'estensione del file)
echo "filesize: ".filesize($path.$wantedfilename); // zero...
fpassthru($handle); //fornisce il flusso
//logs
if($logging > 0){
$status = "Granted";
include('logreg.php');
}
exit;
}
else {
if($logging > 0){
$status = "Denied";
include('logreg.php');
}
exit;
//quiet leech kill
}
?>