httpsweet: una alternativa a python http.server

httpsweet es un servidor HTTP para descargar y subir archivos fácilmente que nos ofrece algunas opciones más interesantes.

Instalación

Desde paquetes de python

$ pip3 install httpsweet

Desde el repo 

$ git clone https://gitlab.com/Zer1t0/httpsweet
$ cd httpsweet/
$ python3 setup.py install

Y lanzamos el servidor:

$ httpsweet 
Serving HTTP on 0.0.0.0 port 8000 (http://0.0.0.0:8000/) ...

Fue creado teniendo en cuenta la flexibilidad, lo que permite su uso en muchas situaciones e implementar la misma operación de muchas formas diferentes.

Descargar un fichero:

curl 127.0.0.1:8000/test
curl 127.0.0.1:8000/?path=test
curl 127.0.0.1:8000/ -d 'action=download&path=test'

Descargar parte de un fichero:

curl '127.0.0.1:8000/test?offset=10&size=20'
curl '127.0.0.1:8000/?offset=10&size=20&path=test'
curl 127.0.0.1:8000/ -d 'action=download&offset=10&size=20&path=test'

Subir un fichero:

curl 127.0.0.1:8000/test_up -H "Content-Type: application/octet-stream" --data 'thedata' 
curl localhost:8000/test_up -H "Content-Type: application/octet-stream" --data-binary "@/etc/hosts"
curl '127.0.0.1:8000/test_up?action=upload_file&data=thedata'

Subir un fichero adjuntando:

curl 127.0.0.1:8000/test_app?append=t -H "Content-type: application/octet-stream" --data "thedata"
curl '127.0.0.1:8000/test_app?action=upload_file&data=thedata&append=t'

Subir encodeado en base64:

curl 127.0.0.1:8000/test_64?encoding=64 -H 'Content-type: application/octet-stream' --data 'dGhlZGF0YQo=' 
curl '127.0.0.1:8000/?action=upload_file&path=test_64&data=dGhlZGF0YQo&encoding=64'

Además también es compatible con HTTPS, para el cual debe proporcionar un certificado con una clave privada, utilizando los parámetros --cert y --key. En caso de generar un certificado que también incluya la clave privada, solo se debe utilizar el parámetro --cert.

Para generar un autocertificado automático, podemos usar los siguientes comandos:

Por defecto el listado de directorios está desactivado, en caso de que queramos activarlos hay que pasarle el parámetro --dir-list.

$ httpsweet --cert cert.pem --dir-list
Enter PEM pass phrase:
Serving HTTPS on 0.0.0.0 port 8000 (https://0.0.0.0:8000/) ...

Proyecto: https://github.com/eloypgz/httpsweet

Comentarios