Listar archivos de directorio remoto en WordPress con Linux
Cuando sea necesario listar contenidos de carpetas compartidas en una intranet con WordPress, hay algunas posibilidades. Una de ellas es cargar el recurso compartido con enlaces con un aspecto similar a éste -> file://FileServer/Public
El problema de cargar el directorio remoto con el protocolo file:// es que para muchos navegadores son necesarios instalar plugins en cada uno de ellos. Es una solución válida, pero requiere instalar los plugins en cada navegador de los ordenadores que utilicen la intranet, lo que podría ser un dolor en redes de gran tamaño.
Otra opción es montar el directorio remoto con cifs en un punto de montaje del host virtual dónde está la instalación del WordPress. De ese modo, WordPress podrá acceder a los archivos remotos a través de los enlaces en la máquina local como si estuvieran físicamente en ésta.
Para mostrar el contenido de un directorio local como contenido de un post o página existe el plugin m1DownloadList.
Preparativos
Si no tenemos cifs, lo instalamos:
$ sudo apt install cifs-utils
Tenemos en una máquina remota una carpeta compartida SMB con permisos de solo lectura llamada \\SRVFILE\Public con credenciales para el usuario gato con el password Pajaro
Vayamos primero a instalar los paquetes necesarios en el servidor Linux. Este post está escrito pensando en Debian y derivadas, pero en otras distribuciones será muy, muy parecido.
Supongamos que tenemos el host virtual en la ruta:
/srv/wordpress/intranet
Entonces, creamos un directorio dentro de esa ruta:
$ sudo mkdir /srv/wordpress/intranet/srvfile
Credenciales
Creamos en el servidor donde está alojado el WordPress un archivo con las credenciales cifs, llamado /etc/smbcredentials, con el suguiente contenido:
username=gato password=Pajaro
Interesa que el contenido de este archivo sea leído por el mínimo número de usuarios posible, lo ideal sería que sólo lo lea root en los sitemas Debian o el usuario con permisos de administración de distribuciones Ubuntu. Como regla general, sería de ayuda establecer estos permisos:
$ sudo chmod 500 /etc/smbcredentials
Montaje automático al arranque
En el archivo /etc/fstab están definidas las particiones que se montarán en el sistema de archivos al inicio del sistema, además de comparticiones remotas. Las particiones y las shares «se montan» (en el argot linuxero) en cualquier punto del árbol de directorios, lo que equivaldría a decir que las carpetas compartidas pueden mapearse hacia cualquier lugar. Es en la ruta /srv/wordpress/intranet/srvfile donde montaremos el recurso compartido.
Editamos el archivo /etc/fstab con permisos de escritura:
$ sudo vi /etc/fstab
Calma: si no te gusta Vi, puedes usar Emacs, Nano o aquel con el que te sientas mas cómodo 😉
y añadimos la siguiente línea:
//SRVFILE/Public /srv/wordpress/intranet/srvfile cifs credentials=/etc/smbpasswords 0 0
Hay mas opciones, claro; para ello te dejo que consultes las páginas man y lo tunees al pelo según tus necesidades 🙂
Para comprobar que esté todo bien, no es imprescindible reiniciar. Podemos montar la carpeta compartida con el comando:
$ sudo mount -a
Lo que montará toda la tabla de sistemas de archivos del /etc/fstab
Si todo ha ido bien, veremos los archivos compartidos con el comando:
$ ls /srv/wordpress/intranet/srvfile
Plugin de WordPress M1 Download List
Se trata de un plugin para listar directorios locales sin subirlos con la interfaz de WordPress.
Su uso es muy sencillo; tras activar el plugin, basta crear una página o artículo con un shortcode definiendo en él la ruta local a partir del directorio raíz del host virtual.
Como indican las instrucciones del plugin, para visualizar el recurso compartido anteriormente es suficiente con introducir este shortcode:
[m1dll path="srvfile/"]
Y saldrá algo como esto:
Es posible que tengas que configurar el juego de caracteres para que se visualicen los acentos y eñes, pero eso vendrá más adelante.