WEBDAV como FILE MANAGER
Mi proposito es poder visualizar a traves del navegador de un PC, tablet, videoconsola o TV el contenido de unas carpetas compartidas por el servidor miniDLNA que hay en OpenWrt.
Despues de poder visualizar las carpetas, lo siguiente seria poder mover, borrar, copiar, descargar o subir los archivos a traves del propio navegador.
De estas tareas, la mas importante seria la de "borrar", para evitar los problemas de "disco duro lleno", habituales cuando se utilizan memorias USB.
Hasta ahora estoy usando conexiones a traves de consola o programas como el WinSCP para el manejo de los ficheros, pero necesito reemplazar esto para un usuario "inexperto" en informatica, que lo ha visto y me ha pedido uno.
Este usuario tiene conocimientos basicos de windows, y ningun conocimiento de linux, asi que me costaria mas enseñarle a manejar WinSCP o un terminal que buscar una aplicacion que funcionase a traves de un navegador web.
Hay numerosos dispositivos con capacidad de reproducir en streaming archivos contenidos en servidores DLNA y muchos de ellos tienen tambien algun navegador web.
Como ejemplo pondre la PS3, pero hay mas, como Android TV, Smart TV, PCs y MACs con XBMC, etc.
Debido al tamaño y a la lentitud de programas hechos en PHP no se pueden usar Ajaxplorer, PHP File Manager, etc.
Como solucion he encontrado WebDAV.
El protocolo WebDAV se utiliza en dos softwares:
- Servidor WebDAV
- Cliente WebDAV
En una prueba rapida he instalado el "Servidor WebDAV" en una Raspberry Pi y me ha funcionado correctamente.
Como cliente he usado el propio "Explorador de Windows" del XP para realizar las conexiones y montar las carpetas de red.
He podido mover dentro del mismo equipo remoto archivos de varios GB de una carpeta a otra de forma inmediata.
El usar conexiones remotas de red todavia seria complicado para este usuario "inexperto", asi que estoy buscado soluciones que permitan utilizar los navegadores como medio de uso de "cliente WebDAV", dicho cliente estaria localizado tambien en el propio OpenWrt.
No me valdrian clientes WebDAV externos, ya que en determinadas ocasiones no se podrian instalar o utilizar.
Ejemplo: Smart TV
He encontrado 2 posibles aplicaciones:
1- Escrita en Perl: WebDAV CGI
http://webdavcgi.sourceforge.net/ (http://webdavcgi.sourceforge.net/)
2.- Escrita en C: Alaya
https://sites.google.com/site/columscode/home/Alaya (https://sites.google.com/site/columscode/home/Alaya)
Pero aun no las he probado, y no se si funcionarian o no, o si tendrian problemas de tamaño o velocidad.
¿Hay alguien que haya manejado clientes WebDAV a traves de navegadores y pueda recomendarme alguno o darme algun consejo?
Saludos
espeltron
Nginx tiene un módulo para WebDAV y la instalación no es compleja, sólo hay que habilitarlo en el make menuconfig.
La pega es que por lo visto no tiene todos los comandos disponibles, pero a lo mejor te puede servir para lo básico.
La instalación de nginx escuchando por otro puerto para acceder a él es fácil, así como la habilitación del módulo WebDAV (no he conseguido sustituir por completo uhttpd porque no he conseguido todavía que nginx me ejecute luci).
Lo que no es tan fácil es hacer el cliente WebDAV completo. Para eso he encontrado este repositorio en el que se implementan los comandos WebDAV que le faltan al módulo de nginx: https://github.com/arut/nginx-dav-ext-module
No te puedo decir cómo compilarlo en openwrt porque no lo he hecho, pero a lo mejor te sirve de ayuda si tú tienes esos conocimientos. Información para hacerlo hay por internet también.
También he visto en algún sitio que nginx-extras por lo visto ya viene con nginx-dav-ext-module, pero no sé a partir de qué versión ni si está incorporado a openwrt.
Y un cliente FTP 'sencillo' no te valdría ?jar229, esto es para una persona mayor, que quiere usar el Smart TV de su Samsung.
Enviado desde mi CUBOT GT99
Vive a 200Km, y no puedo configurarle el PC, a menos que le envie "Single Click - UltraVNC".
Y a saber como lo tiene, creo que es un Pentium III, con poca RAM, cache de disco, un disco duro lento, antivirus Panda, virus, basura, etc.
Aun no se como le voy a explicar "como se abren los puertos de los routers", ya que le parecera que le hablo en "chino".
Saludos
espeltron
Vive a 200Km, y no puedo configurarle el PC, a menos que le envie "Single Click - UltraVNC".
Y a saber como lo tiene, creo que es un Pentium III, con poca RAM, cache de disco, un disco duro lento, antivirus Panda, virus, basura, etc.
Aun no se como le voy a explicar "como se abren los puertos de los routers", ya que le parecera que le hablo en "chino".
Saludos
espeltron
Si quieres olvidarte del tema de puertos, puedes usar Team Viewer 9: gratis y muy fácil de usar.
He separado el tema en uno nuevo. Me parece que puede ser interesante y en el otro hilo se quedará 'perdido' ;)
Vive a 200Km, y no puedo configurarle el PC, a menos que le envie "Single Click - UltraVNC".
Y a saber como lo tiene, creo que es un Pentium III, con poca RAM, cache de disco, un disco duro lento, antivirus Panda, virus, basura, etc.
Aun no se como le voy a explicar "como se abren los puertos de los routers", ya que le parecera que le hablo en "chino".
Saludos
espeltron
Si quieres olvidarte del tema de puertos, puedes usar Team Viewer 9: gratis y muy fácil de usar.
He separado el tema en uno nuevo. Me parece que puede ser interesante y en el otro hilo se quedará 'perdido' ;)
Aunque sea un poco offtopic, pero tiene que ver con el post:
Teamviewer 9 consume un güebo de recursos y va a pedales. Te lo digo yo que lo he estado usando en los últimos meses (y no por que yo quisiera ni lo aconsejara). Teamviewer utiliza las tecnología RDP para conectarse, amén de que manda datos a servidores externos que no nos incumben.
UltraVNC va a consumir menos recursos seguro y en el router se puede instalar VNCRepeater para hacer de proxy entre el router y el equipo al que accedamos. Si se puede configurar el router para que al equipo PC le de siempre la misma IP se puede hacer un acceso remoto sin problemas (esa configuración ya la he realizado con bastante éxito anteriormente). La seguridad se acentúa ya que necesitamos saber la IP externa del router, la IP interna del PC y además la contraseña para acceder a UltraVNC (y si cambiamos los puertos por defecto, todavía más).
Para saber la IP externa del router podemos hacer un script como el que hice en el hilo: https://foro.seguridadwireless.net/openwrt/(tutorial)-adsl-portatil-para-openwrt/ en el apartado "Enviar email cuando nos cambia la IP del ADSL" (evidentemente adaptándolo).
Si a alguien le interesa tengo alguna que otra instalación de UltraVNC completamente desatendida (aunque sean versiones antiguas sirven para acceso remoto)
Entonces, si por un lado tenemos la instalación fácil de UltraVNC, y por otro el router que le vas a regalar ya tiene la configuración adecuada, el acceso al ordenador lo tienes ganado.
Oye que a mi no tienes que convencerme, yo estoy encantando, desde hace años con UltraVNC ;D
./configure
make
sudo make install
Port=8080
HttpMethods=GET,PUT,DELETE,PROPFIND
DirListType=Full
sudo alaya -d -O
sudo alaya -user add test testing123 -h /home/test -e sha1 SSLClientCertificate=required
sudo alaya -user list
sudo alaya -user del test
1.- Es muy pequeño.
2.- Se compila muy facilmente, esta escrito en C.
3.- No tiene dependencias de otros programas o librerias.
4.- Tiene el servidor web integrado, no dependiendo del que tengamos instalado.
5.- Permite la coexistencia con otros servidores web.
6.- Utiliza codigo HTML, nada de javascript, flash, java o cualquier otra cosa que lo hiciera incompatible con la mayoria de navegadores.
vncviewer -bgr233 -compresslevel 8 -listen
x11vnc -connect 188.87.129.221
y ya estáAl parecer no conoceis UltraVNC Single Click:
http://www.uvnc.com/products/uvnc-sc.html (http://www.uvnc.com/products/uvnc-sc.html)
Agrego esto al hilo:Yo he montado una carpeta de red WebDAV directamente desde Windows XP Home Edition, sin necesidad de instalarle nada, ni si quiera una version reciente del Internet Explorer.
Según parece ser, Windows Explorer ya tiene un cliente WebDAV integrado, así que si en nginx conseguimos el servidor WebDAV y Windows XP ya nos da el cliente WebDAV (que creo que en XP se llama WebFolders), ya lo tendríamos configurado, ¿no?
Windows 7, 8, Vista:
http://www.webdavsystem.com/server/access/windows
XP
http://www.webdavsystem.com/server/access/windows/windows
Mapping Network Drive on Windows 7, Vista, Windows XP and Windows Server 2003
http://www.webdavsystem.com/server/access/windows/map_drive
Mapear una unidad con WebDAV en XP parece un poco caprichoso, pero se puede hacer...
Edito: Web Folders ya venía con Windows 98, por si el P3 es demasiado antiguo para un XP...
#!/bin/sh
# Coloca en la línea siguiente la ruta al directorio que quieres visualizar
directorio=/mnt/hdd/dlna/video
echo -e "Content-type:text/html\n\n"
cd $directorio
x=*
echo "<meta charset='UTF-8'>"
for line in $x
do
echo "$line<br>"
done
Añadiendo un poco más de código también podrías borrar ficheros.
Creo que "un poco más" es relativo, sobre todo si quieres procesar las respuestas en POST o GET, o algo de Javascript y poner algo similar a "Está Ud. seguro de que quiere borrar el fichero?"Eso es así. El código, el mercado y los gases tienden a ocupar todo el espacio disponible.
<html>
<head>
<meta charset="utf-8">
<title>Borrado de archivos</title>
</head>
<body>
<?php $directorio = "/root/pruebas"; if ( isset($_POST['listado']) && $_POST['ok'] == "borrar" ) { shell_exec("rm '".$directorio."/".$_POST['listado']."'"); }; echo "<b>Contenido de la carpeta $directorio</b><br>"; $v = scandir("$directorio",0); unset ($v[0]); unset ($v[1]); echo "<form action='' method='POST'>"; foreach ($v as $indice=>$contenido) echo "<input type='radio' name='listado' value='$contenido'>$contenido<br>";?>
<input type='submit' name='ok' value='borrar'
onClick="return confirm('¿Está Ud. seguro de que quiere borrar el fichero?');"><br>
</form>
</body>
</html>
Gracias raphikCreo que "un poco más" es relativo, sobre todo si quieres procesar las respuestas en POST o GET, o algo de Javascript y poner algo similar a "Está Ud. seguro de que quiere borrar el fichero?"Eso es así. El código, el mercado y los gases tienden a ocupar todo el espacio disponible.
Éste código está en php5. Muestra en el navegador el cotenido del una carpeta del router (/root/pruebas, se puede cambiar) y permite borrar ficheros previo mensaje de confirmación.Código: [Seleccionar]<html>
<head>
<meta charset="utf-8">
<title>Borrado de archivos</title>
</head>
<body><?php $directorio = "/root/pruebas"; if ( isset($_POST['listado']) && $_POST['ok'] == "borrar" ) { shell_exec("rm '".$directorio."/".$_POST['listado']."'"); }; echo "<b>Contenido de la carpeta $directorio</b><br>"; $v = scandir("$directorio",0); unset ($v[0]); unset ($v[1]); echo "<form action='' method='POST'>"; foreach ($v as $indice=>$contenido) echo "<input type='radio' name='listado' value='$contenido'>$contenido<br>";?>
<input type='submit' name='ok' value='borrar'
onClick="return confirm('¿Está Ud. seguro de que quiere borrar el fichero?');"><br>
</form>
</body>
</html>
Para instalar y configurar php5, desde una consola:
opkg update
opkg install php5 php5-cgi
uci set uhttpd.main.interpreter=.php=/usr/bin/php-cgi
uci commit uhttpd
/etc/init.d/uhttpd restart
Saludos
- Indicar el tamaño de cada fichero y su fecha, para saber la antiguedad del archivo y cuanto espacio se esta liberando.
- El espacio disponible en la unidad, para saber cuanto espacio necesitamos liberar.
- Usar checkbox en vez de radio, para seleccionar varios ficheros a la vez.
- Y hasta se podria proteger con contraseña el acceso web a esta carpeta.
<html>
<head>
<meta charset="utf-8">
<title>Borrado de archivos</title>
</head>
<body>
<?php $directorio = "/tmp/pruebas"; if ( isset($_POST['listado']) && $_POST['ok'] == "borrar" ) { shell_exec("rm '".$directorio."/".$_POST['listado']."'"); }; echo "<b>Contenido de la carpeta $directorio</b><br>"; $espacioLibre = disk_free_space($directorio); echo "(Espacio disponible $espacioLibre Bytes)<br>"; $v = scandir("$directorio",0); unset ($v[0]); unset ($v[1]); echo "<form action='' method='POST'>"; foreach ($v as $indice=>$contenido) { $tamaño = filesize($directorio."/".$contenido) ; $fecha = date("d/m/Y",filemtime($directorio."/".$contenido)) ; echo "<input type='radio' name='listado' value='$contenido'>$contenido $tamaño Bytes $fecha <br>" ; }?>
<input type='submit' name='ok' value='borrar'
onClick="return confirm('¿Está Ud. seguro de que quiere borrar el fichero?');"><br>
</form>
</body>
</html>
Un screenshot del aspecto:- Indicar el tamaño de cada fichero y su fecha, para saber la antiguedad del archivo y cuanto espacio se esta liberando.
- El espacio disponible en la unidad, para saber cuanto espacio necesitamos liberar.
- Usar checkbox en vez de radio, para seleccionar varios ficheros a la vez.
- Y hasta se podria proteger con contraseña el acceso web a esta carpeta.
¡Oído cocina!
Ya se visualiza el espacio libre de la unidad, así como el tamaño y la fecha de cada fichero. La presentación en pantalla sigue siendo un asco. Lo del checkbox también está pendiente. A ver si me pongo y lo dejo más presentable.Código: [Seleccionar]<html>
<head>
<meta charset="utf-8">
<title>Borrado de archivos</title>
</head>
<body><?php $directorio = "/tmp/pruebas"; if ( isset($_POST['listado']) && $_POST['ok'] == "borrar" ) { shell_exec("rm '".$directorio."/".$_POST['listado']."'"); }; echo "<b>Contenido de la carpeta $directorio</b><br>"; $espacioLibre = disk_free_space($directorio); echo "(Espacio disponible $espacioLibre Bytes)<br>"; $v = scandir("$directorio",0); unset ($v[0]); unset ($v[1]); echo "<form action='' method='POST'>"; foreach ($v as $indice=>$contenido) { $tamaño = filesize($directorio."/".$contenido) ; $fecha = date("d/m/Y",filemtime($directorio."/".$contenido)) ; echo "<input type='radio' name='listado' value='$contenido'>$contenido $tamaño Bytes $fecha <br>" ; }?>
<input type='submit' name='ok' value='borrar'
onClick="return confirm('¿Está Ud. seguro de que quiere borrar el fichero?');"><br>
</form>
</body>
</html>
Saludos.
Este script (http://www44.zippyshare.com/d/9346919/50163/prueba.sh) corre sobre Busybox. No usa php. He intentado colocarlo directamente en este foro, pero lo descuadraba totalmente y al final lo he subido a zippyshare.
Saludos.
Hola buenas.
Después de 2 horas comiendome el coco para conseguir instalar el eXtplorer, decidí ir por otro camino...
phpFileManager
No sabría deciros cuantos paquetes he instalado en total, pero tengo corriendo el lighttpd con el phpFileManager y todo funciona perfecto. :D
A primera vista, veo que maneja lso archivos (y sus permisos), comprime, crea archivos y directorios y por último, te da una shell ;D ;D ;D
Salu2
He hecho una rueba metiéndolo en www/cgi-bin y ejecutando, pero me da un error en la línea 46 :??? En cuanto pueda le echo un vistazo.
/www/cgi-bin/prueba.sh: line 46: arithmetic syntax error
Si se comenta, funciona. Supongo que es una división por 0.
De momento no se puede navegar por los directorios.Las "especificaciones" que enunció espeltron en el primer post son, básicamente:
Hay que tener en cuenta que es arriesgado dejar que un usuario inexperto navegue por todo el sistema de archivos.
* * * * * mv /mnt/c/descargas/* /mnt/c/video/.Esto se realizaria cada minuto.
* * * * * mv /mnt/c/descargas/*.avi /mnt/c/video/.
* * * * * mv /mnt/c/descargas/*.mp4 /mnt/c/video/.
* * * * * mv /mnt/c/descargas/*.mpg /mnt/c/video/.
* * * * * mv /mnt/c/descargas/*.mpeg /mnt/c/video/.
* * * * * mv /mnt/c/descargas/*.mkv /mnt/c/video/.
* * * * * mv /mnt/c/descargas/*.flv /mnt/c/video/.
* * * * * mv /mnt/c/descargas/*.3gp /mnt/c/video/.
* * * * * mv /mnt/c/descargas/*.mp3 /mnt/c/audio/.
* * * * * mv /mnt/c/descargas/*.ogg /mnt/c/audio/.
* * * * * mv /mnt/c/descargas/*.flac /mnt/c/audio/.
* * * * * mv /mnt/c/descargas/*.wav /mnt/c/audio/.
* * * * * mv /mnt/c/descargas/*.jpg /mnt/c/foto/.
* * * * * mv /mnt/c/descargas/*.jpeg /mnt/c/foto/.
* * * * * mv /mnt/c/descargas/*.tif /mnt/c/foto/.
* * * * * mv /mnt/c/descargas/*.png /mnt/c/foto/.