Un par de veces me han cogido de primo para montar un servidor de archivos compartidos. Lo elegido era samba, porque eran redes heterogéneas con máquinas linux y máquinas W... Cuando estaba todo montado y parecía que funcionaba me puse a escuchar a ver que decía la gente.
- "Oye pepito cómo se llamaba el archivo donde estaban los contactos que hice y dónde estaba"
- "No me acuerdo, mira a ver por ahí"
Entonces probé a usar el buscador de archivos de gnome contra el directorio samba montado, y eso no iba bien, no sé por qué, lentitud, demasiados archivos... Lo común en ambos casos era un directorio compartido con unos 60-200 GB con total acceso para todos...
Y bueno, el caso es que hice una especie de buscador samba en php que se ejecutaba en el servidor y por lo tanto cualquier máquina de la red tenía acceso a la aplicación para buscar y abrir los archivos encontrados.

¿Cómo cojones se monta esta mierda que no interesa a nadie?
En principio, supongamos que el directorio compartido es /home/servidor/compartida y samba está ya configurado.
Tenemos instalado apache y php en el servidor.
# cd /var/www # mkdir buscador # cd buscador
Dentro del directorio buscador crearemos index.php
<html>
<head>
<title>
BUSCADOR DE ARCHIVOS SAMBA
</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<script type="text/javascript">
function cargar(){
document.buscador.abuscar.focus();
}
</script>
<style type="text/css">
body {
margin:50px 0px;
padding:0px;
text-align:center;
}
a {
color:#000000;
}
#Content {
width:510px;
margin:0px auto;
padding:15px;
text-align:left;
border:1px dashed #5b197b;
background-color:#ddc9ec;
}
#encuentros {
text-align:left;
}
</style>
</head>
<body onload="cargar()">
<img src="logo.png">
<div id="content">
<form name="buscador" action="<?php echo $_SERVER['PHP_SELF'] ?>" method="POST">
<input type="text" size="50" name="abuscar" value="<?php echo $_POST['abuscar'] ?>">
<input type="submit" value="BUSCAR" name="boton">
</form>
</div>
<?php
#si ha pulsado el botón buscar, buscamos
if (isset($_POST['boton'])) {
$abuscar = $_POST['abuscar'];
if ($abuscar==NULL) {
echo "Por favor introduzca algo que buscar";
}
else {
#COMIENZA LA BÚSQUEDA
$comando="find /home/servidor/compartida -iname '*". $abuscar ."*'";
$salida=shell_exec($comando);
if ($salida==NULL) {
#no se han encontrado resultados
echo "No se han encontrado resultados coincidentes a su búsqueda, Inténtelo de nuevo o salga a tomar el aire";
}
else{
#pasar archivos encontrados a array
#tabla bicolor por múltiplos de 2
#enlace a cada archivo encontrado
$encontradosarray = explode("\n", $salida);
#eliminamos último array que se devuelve en blanco
$ultimo=count($encontradosarray);
unset($encontradosarray['$ultimo']);
echo "<div id=\"encuentros\"><pre>";
echo "<table align=\"center\">";
$i=1;
foreach($encontradosarray as $valor) {
if($valor!=NULL) {
if ($i % 2 == 0){
echo "<tr>";
}
else{
echo "<tr bgcolor=\"#efefef\">";
}
echo "<td>";
echo $i;
echo "</td>";
$valori = substr($valor,26);
$valori1 = str_ireplace($abuscar,"<b>".$abuscar."</b>",$valori);
echo "<td>";
echo "<a href=\"samba/".$valori."\">".$valori1."</a><br>";
echo "</td>";
#Cerramos fila
echo "</tr>";
$i++;
}
}
echo "</pre></div>";
echo "</table>";
}
}
}
?>
</body>
</html>
Una vez tenemos ya preparado nuestro buscador nos queda un último detalle, hacer accesibles los archivos encontrados desde el navegador.
# cd /var/www/buscador # mkdir samba # chmod 777 samba # chown -R www-data:www-data /var/www/buscador
Y agregamos a /etc/fstab la siguiente línea
/home/servidor/compartida /var/www/buscador/samba none bind 0 0
Reiniciamos y buscador funcionando.
eo explicate vien como Y agregamos a /etc/fstab la siguiente línea
ResponderEliminarque tan dificil es que alguién tipee «algo' & rm -rf /home/ & echo '»?
ResponderEliminarPor lo menos hazle un regex para que solo pongan letras y numeros, que simplemente poniendo una comilla se rompe tu programa.