Script repository

Présentez ici vos projets hébergés sur LegTux.
Répondre
kallimero
Messages : 63
Enregistré le : 03 oct. 2010 12:17

Script repository

Message par kallimero »

Bonjour à tous !

Je vous présente un petit script (pour l'instant en version béta), qui va permettre d'améliorer la beauté de votre repository.
C'est l'idéal pour faire un site de ressource très simple.

Features :

- Cré le menu a partir des dossiers présentes dans le repertoire courant
- Fonction download et view details
- Force le dl des fichiers autre que txt, php, perl, html, htm...
- Tiens sur une seul page

je suis a la recherche d'éventuelles failles de sécurité ou bugs, si vous en trouvez, merci de me contacter par mp. Je vous en serai très reconnaissant :)

Fonctions prochainement incorporées : Colorateur syntaxique, plus de détails, meilleurs style.

Démo online : http://pc-master.net/repo

Code source :

Code : Tout sélectionner

<?php
//Fonction dl

function forcerTelechargement($nom, $situation, $poids)
{
header('Content-Type: application/octet-stream');
header('Content-Length: '. $poids);
header('Content-disposition: attachment; filename="'.$nom.'"');
header('Pragma: no-cache');
header('Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0');
header('Expires: 0');
readfile($situation);
exit();
}

//pour éviter des bug de la fonction date
date_default_timezone_set("Europe/Paris");

//On regarde si le dossier demandé est bien dans le repertoire courant
$dir = $_GET['d'];

$is_in = false;

$handle = opendir(getcwd());
while (false !== ($file = readdir($handle))) {
  if(substr(strrchr($file, '.') ,1)) { 
       
  } else { 

	if($file != ".." && $file !="."){
		
        	if($file == $dir){
		$is_in = true;
		}
	}
   }
}


closedir($handle); 



//Si le dossier est bien dans le repertoire courant : 
if($is_in){


//On regarde s'il veux voir un fichier 

	if(isset($_GET['s'])){

		//Si le fichier existe bien
		if(file_exists($_GET['d'].'/'.urldecode($_GET['s']))){
				//On force le téléchargement


				//Si c'est un code, on l'affiche direct dans le browser
			$extension=strrchr($_GET['s'],'.');
 			$extension=substr($extension,1);
 

			$ext = array("php", "html", "txt", "htm");
			
			
			
			if(in_array($extension, $ext)){
				
		

				echo '<script type="text/javascript">window.open("'.$_GET['d'].'/'.urldecode($_GET['s']).'");</script>'; 
			}else{
				$Fichier_a_telecharger = $_GET['d'].'/'.urldecode($_GET['s']);
				forcerTelechargement(urldecode($_GET['s']), './'.$_GET['d'].'/'.urldecode($_GET['s']), filesize($Fichier_a_telecharger));
			}
		}

	}
}



?>


<html>
<head>

<style type="text/css">

body{
	background: black;
	color: white;
}

#conteneur{
	margin: auto;
	width: 800px;
	border: 1px solid green;
}

pre{
	color: green;
}

hr{
	color: green;
}

li{
	list-style: none;
	display : inline;
	padding : 0 0.5em; 
}

a{
	text-decoration: none;
	color: green;
}

</style>

</head>
<body>

<!-- Div principale (pas de super design a base d'header ^^ ) -->

<div id="conteneur">
<center>
<pre>
 ad88888ba   88                                               88b           d88   ad88888ba   
d8"     "8b  88                                               888b         d888  d8"     "8b  
Y8,          88                                               88`8b       d8'88  Y8,          
`Y8aaaaa,    88,dPPYba,   ,adPPYYba,  8b,dPPYba,   ,adPPYba,  88 `8b     d8' 88  `Y8aaaaa,    
  `"""""8b,  88P'    "8a  ""     `Y8  88P'   "Y8  a8P_____88  88  `8b   d8'  88    `"""""8b,  
        `8b  88       88  ,adPPPPP88  88          8PP"""""""  88   `8b d8'   88          `8b  
Y8a     a8P  88       88  88,    ,88  88          "8b,   ,aa  88    `888'    88  Y8a     a8P  
 "Y88888P"   88       88  `"8bbdP"Y8  88           `"Ybbd8"'  88     `8'     88   "Y88888P"   
</pre>
</center>
<hr />


<!-- Le menu -->

<center>
<?php
$handle = opendir(getcwd());
// On initialise les variables.

$dossiers = '';
while (false !== ($file = readdir($handle))) {
  if(substr(strrchr($file, '.') ,1)) { 
       
  } else { 

	if($file != ".." && $file !="."){
        	$dossiers .= '<li id="'.$file.'"><a href="?d='.$file.'">'.$file.'</a></li>';
	}
   }
}
echo $dossiers;

closedir($handle); 

?>
</center>
<hr />

<!-- Page d'accueil par défault -->
<?php 
if(!isset($_GET['d'])){

?>
<center><h1>Accueil</h1></center>
<br />
<br />

<p>Bienvenue sur mon site de partage, ici vous retrouverez pleins de ressources. J'esp&egrave;res qu'elles vous plairons :)
<br />
Vous pouvez vous d&eacute;placer dans les cath&eacute;gories gr&acirc;ce au menu. Pour t&eacute;l&eacute;charger les fichiers, cliquez simplement dessus.
</p>


<!-- Fin page d'accueil par défault -->
<?php
}else{









//-----------------------------------

if($is_in){
$handle = opendir('./'.$_GET['d']);
$fichiers = '';

echo '<br /><br />
<table border="1" width="100%">
	<tr>
		<td><center>Action</center></td>
	
		<td><center>Name</center></td>

	</tr>';

while (false !== ($file = readdir($handle))) {
        if(substr(strrchr($file, '.') ,1)) {
                $extension = substr(strrchr($file, '.') ,1);


                $fichiers .=  '<tr><td><a href="?d='.$_GET['d'].'&s='.urlencode($file).'">Download</a> - 
			       <a href="javascript:alert(\'Nom du fichier : '.$file.'\nTaille : '.filesize($_GET['d'].'/'.$file).'\n Date : '.date('d/m/Y', filemtime($_GET['d'].'/'.$file)).' \');">Details</a></td>
			       
			       <td><a href="?d='.$_GET['d'].'&s='.urlencode($file).'">'.htmlentities($file).'</a></td></tr>';
        } 
}
echo $fichiers;
echo '</table>';
closedir($handle); 

}else{
echo'<br /><p> Vous ne pouvez ouvrir que les dossier pr&eacute;sents dans le repertoire courant ;)</p>';
}







}
?>

</div>


</body>
</html>

oubliez pas que c'est une version béta, donc plus du bricolage qu'autre chose ^^


Toute remarque est la beinvenue :)
remysimpson
Messages : 104
Enregistré le : 01 nov. 2010 12:13
Compte LegTux : remysimpson

Re: Script repository

Message par remysimpson »

ton site me fait panser a un site ou on peut télécharger des virus
Luzark
Messages : 132
Enregistré le : 12 nov. 2010 21:24
Compte LegTux : luzark
Contact :

Re: Script repository

Message par Luzark »

Par-ce que c'est vert ? :D
Avatar du membre
radek411
Messages : 492
Enregistré le : 20 oct. 2010 23:12
Compte LegTux : radek
Localisation : Dijon
Contact :

Re: Script repository

Message par radek411 »

Moi aussi j'aime les pansements.
http://www.radek411.org
"Une manière de contrepoint au surréalisme latent de cette métaphore sous-jacente..." - Arthur Dent
remysimpson
Messages : 104
Enregistré le : 01 nov. 2010 12:13
Compte LegTux : remysimpson

Re: Script repository

Message par remysimpson »

Luzark a écrit :Par-ce que c'est vert ? :D
ouai
Répondre