Pandora: Documentation es: Tentacle es: Protocol

From Pandora FMS Wiki
Jump to: navigation, search

Índice de la documentación de Tentacle

1 Definición del protocolo de Tentacle

El protocolo Tentacle en sí mismo es muy simple y directo. Algunas características de diseño importantes son:

  • La comunicación la establece siempre el cliente.
  • Los comandos siempre terminan con un carácter de fin de linea.
  • Los siguientes caracteres no pueden formar parte de un nombre de archivo: '?[]/\=+<>:;',*~'

Los diagramas de secuencia ASCII se usarán para ilustrar los posibles casos. Los comandos se muestran en comillas simples.

1.1 Enviar fichero(s)

Se muestra primero una transferencia de ficheros correcta

+-----------------+                     +-----------------+
| Tentacle client |                     | Tentacle server |
+-----------------+                     +-----------------+
         |                                       |
         +-------'SEND <file> SIZE size\n'---->>>+
         |                                       |
         +<<<-----------'SEND OK\n'--------------+
         |                                       |
         +-----------------data--------------->>>+
         |                                       |
         +-----------------data--------------->>>+
         |                                       |
         +-----------------data--------------->>>+
         |                                       |
         +<<<-----------'SEND OK\n'--------------+
         |                                       |
         +---------------'QUIT\n'------------->>>+
         |                                       |
         .                                       .

Para permitir multiples transferencias de archivos dentro de la misma sesion, un nuevo comando "SEND" debe ser enviado, después de una transferencia exitosa, y antes de un comando QUIT.

Si el servidor rechaza aceptar un fichero, un mensaje genérico de error es enviado de vuelta al cliente. Por razones de seguridad, no se muestran detalles de porque falla el comando. Esto ocurre cuando:

  • El fichero tiene un nombre de archivo no válido, o se especifica un path.
  • Está vacío o excede el tamaño máximo especificado por el servidor.
  • Ya existe en el servidor y la sobre-escritura de archivos no está activada.
+-----------------+                     +-----------------+
| Tentacle client |                     | Tentacle server |
+-----------------+                     +-----------------+
         |                                       |
         +-------'SEND <file> SIZE size\n'---->>>+
         |                                       |
         +<<<-----------'SEND ERR\n'-------------+
         |                                       |
         .                                       .

1.2 Recepción de ficheros

Tentacle soporta también la petición de ficheros desde el servidor.

+-----------------+                     +-----------------+
| Tentacle client |                     | Tentacle server |
+-----------------+                     +-----------------+
         |                                       |
         +------------'RECV <file>\n'--------->>>+
         |                                       |
         +<<<--------'RECV SIZE size\n'----------+
         |                                       |
         +--------------'RECV OK\n'----------->>>+
         |                                       |
         +<<<--------------data------------------+
         |                                       |
         +<<<--------------data------------------+
         |                                       |
         +<<<--------------data------------------+
         |                                       |
         +---------------'QUIT\n'------------->>>+
         |                                       |
         .                                       .

El cliente tiene oportunidad de rechazar el fichero después de que el servidor informe acerca de su tamaño.

Igual que con el comando 'SEND'. un nuevo comando 'RECV' puede ser enviado después de una transferencia exitosa (incluso si el fichero ha sido rechazado por el cliente) y siempre antes del comando 'QUIT'. Un error genérico será enviado si el servidor rechaza enviar el fichero. Eso último puede ocurrir cuando

  • Tiene un nombre de fichero inválido, o se ha especificado un path.
  • No existe en el servidor.
+-----------------+                     +-----------------+
| Tentacle client |                     | Tentacle server |
+-----------------+                     +-----------------+
         |                                       |
         +------------'RECV <file>\n'--------->>>+
         |                                       |
         +<<<-----------'RECV ERR\n'-------------+
         |                                       |
         .                                       .

1.3 Autenticación mediante Password

Si el servidor requiere un password, el cliente debe autenticarse antes de enviar cualquier otro comando.

+-----------------+                     +-----------------+
| Tentacle client |                     | Tentacle server |
+-----------------+                     +-----------------+
         |                                       |
         +----------'PASS pwd_digest\n'------->>>+
         |                                       |
         +<<<-----------'PASS OK\n'--------------+
         |                                       |
         .                                       .

Un dobe MD5 del password será enviado para ofuscar el password. Hay que tener en cuenta que esto NO es implementa seguridad añadida si está trabajando sobre una conexion no cifrada. Si necesita seguridad _real_ utilice conexiones cifradas con SSL.

1.4 Gestión de errores

Ante cualquier error, el servidor cerrará la conexion sin dar explicaciones. Esto puede ser a causa de un comando incorrecto, una password errónea, más datos enviados de los que se supone que se iban a enviar, o cualquier otra razón que hace que la operativa del servidor se salga de lo establecido o considerado "normal".

+-----------------+                     +-----------------+
| Tentacle client |                     | Tentacle server |
+-----------------+                     +-----------------+
         |                                       |
         +-------------'[email protected]#$%&/()=?¿'--------->>>+
         |                                       |
         .                                       .
+-----------------+                     +-----------------+
| Tentacle client |                     | Tentacle server |
+-----------------+                     +-----------------+
         |                                       |
         +---------'PASS bad_pwd_digest'------>>>+
         |                                       |
         .                                       .