Commit 9f6cd545 by Luciano Barletta

Add readme.md

1 parent 6f033ba4
Showing 1 changed file with 43 additions and 0 deletions
# Multimensajería
Este repositorio es un servicio web de Flask en Python3 cuyo propósito es mandar mensajes de todo tipo de formatos a todo tipo de plataformas que tengan una API para ese propósito.
Implementa una base de datos de mensajes a enviar, usa la MAC address del host que pide mandar mensajes para diferenciar las consultas y permitir la posibilidad de que el mensaje venga encriptado.
## Instalación
Los requerimientos del programa son tener Python3 y pip3, para luego instalar los módulos de Flask, sqlite3 y python-arptable. Si no quiere hacerlo manualmente hay un archivo [install.sh](/install.sh).
## Uso
Para enviar mensajes se puede usar dos formas, la forma encriptada o la forma sin encripción, ambas son similares.
### myserver.com/init
Llame a este siempre que quiera mandar mensajes, una vez llamado puede mandar tantos como quiera siempre y cuando no cambie su MAC address, este link siempre devolverá una llave pública nueva, pero el uso de la misma es opcional.
### myserver.com/data
Este link es usado para subir los datos a enviar, por ahora solo se puede mandar texto plano, pero obligatoriamente debe estar en formato de archivo. Opcionalmente puede estar encriptado, en cuyo caso debe mandar una llave en formato de archivo, los detalles son los siguientes:
- Crear una llave simétrica (por ejemplo con AES)
- Encriptar el archivo con la llave simétrica
- Encriptar la llave simétrica con la llave pública dada por el servidor
- Enviar el archivo encriptado con el nombre 'data' y la llave encriptada en formato de archivo con el nombre 'key' (data=@data.file, key=@key.file)
Si no se envía una llave se presume que el archivo no está encriptado.
Aclaración: el Content-Type debe ser multipart/form-data
### myserver.com/msg
Llamando a este link se envían los parámetros de envío del mensaje pasado en data, y se procede a poner en la cola el mensaje. (GET o POST)
- Bajo 'serv' se envía el servicio a usar, por ahora solo hay 'wpp1' correspondiente a WhatsApp
- Bajo 'dest' se envía el número de destino, el formato puede variar dependiendo del servicio y dicho formato será documentado, el de 'wpp1' es el formato internacional sin el '+' y sin espacios ni guiones
- Bajo 'type' se envía el tipo de dato a enviar, por ahora solo se permite 'text', los nombres serán documentados.
En caso de que no exista el servicio o este no admita el tipo, se devolverá un mensaje de error con esa información. Caso contrario, se devolverá el id del mensaje para futura consulta.
### myserver.com/cons
Por este link se consulta el estado de los mensajes que se quieren enviar, mandando el id bajo 'id' (GET o POST). Se devuelve 'queued' o 'delivered'. Si fue enviado el mensaje se archiva y no puede ser consultado nuevamente.
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!