Artículo
· 12 sep, 2024 Lectura de 3 min

Crear, Listar, Subir y Descargar archivos y carpetas de red usando el protocolo SMB y la interoperabilidad de IRIS

Samba es el estándar para la interoperabilidad de servicios de archivos entre Linux, Unix, DOS, Windows, OS/2 y otros sistemas operativos. Desde 1992, Samba ha proporcionado servicios de archivos seguros, estables y rápidos para todos los clientes (sistemas operativos y programas) utilizando el protocolo SMB/CIFS. Los administradores de red han utilizado SAMBA para crear carpetas de red compartidas que permiten a los empleados de la empresa crear, editar y visualizar archivos corporativos como si estuvieran en sus ordenadores localmente, aunque estos archivos se encuentren físicamente en un servidor de archivos en red. Es posible crear una carpeta de red en Linux y verla como una carpeta compartida en Windows, por ejemplo.

Actualmente, los conectores de IRIS no soportan el acceso ni la escritura de archivos y carpetas remotas usando el protocolo SMB, por lo que es necesario usar FTP. Sin embargo, ahora contamos con Python, que dispone de la librería "smbprotocol" (https://pypi.org/project/smbprotocol). Basado en esta librería, se ha creado una aplicación de interoperabilidad (producción) para listar, grabar y eliminar archivos y carpetas utilizando el protocolo SMB. Ahora, vuestras aplicaciones IRIS pueden escribir o acceder fácilmente a archivos de red. La aplicación se llama "samba-iris-adapter" (https://openexchange.intersystems.com/package/samba-iris-adapter).

 

Instalación de la aplicación

Instalación: ZPM

1. Abrir un Namespace de IRIS con la interoperabilidad habilitada. Abrir la Terminal y ejecutar:

USER>zpm "install samba-iris-adapter"

Instalación: Docker

1. Clonad/haced git pull del repositorio en cualquier directorio local.

$ git clone https://github.com/yurimarx/samba-iris-adapter.git

2. Abrid la terminal en este directorio y ejecutad:

$ docker-compose build

3. Ejecutad el contenedor de IRIS con vuestro proyecto:

$ docker-compose up -d

Cómo iniciar la aplicación

1. Id a Interoperabilidad > Configurar > Credenciales:

2. Estableced las credenciales y guardad con estos valores:

ID: SambaCredentials
User name: bob
Password: bobspasswd 
Credentials

3. Abrid la producción http://localhost:52795/csp/user/EnsPortal.ProductionConfig.zen?PRODUCTION=dc.samba.SambaProduction e iniciarla.

4. Id a vuestra aplicación cliente REST y utilizad estas operaciones REST (con autenticación básica y credenciales _SYSTEM/SYS):

5. Cread una nueva Carpeta Remota: POST http://localhost:52795/csp/samba/CreateFolder con el cuerpo JSON: {"Folder":"samplefolder"}

6. Para enviar un archivo a una Carpeta Remota: POST http://localhost:52795/csp/samba/CreateFile/samplefolder con form-data seleccionado para enviar un archivo multipart. El nombre del archivo multipart es "file" y en el valor seleccionad cualquier archivo de vuestro ordenador. Consultad esta imagen con un ejemplo usando Postman:

7. Listad los archivos dentro de una Carpeta Remota: GET http://localhost:52795/csp/samba/ListFilesIntoFolder/samplefolder:

8. Descargad el archivo: POST http://localhost:52795/csp/samba/DownloadFile con el cuerpo JSON: {"Folder":"samplefolder", "Filename":"cat.jpg"}

9. Ved los mensajes de las producciones en http://localhost:52795/csp/user/EnsPortal.ProductionConfig.zen?$NAMESPACE=USER&$NAMESPACE=USER& > Pestaña Mensajes > haced clic en la Sesión:

10. Comprobad la nueva carpeta y archivo dentro de la carpeta /mnt2 en la instancia Docker de Samba:

¡Disfrutadlo!

Comentarios (0)1
Inicie sesión o regístrese para continuar