Ayer identifique por Twitter esta herramienta, utilidad, funcionalidad, como lo desees llamar que fue creada por Henry Prince a.k.a sc0tfree UpDog llegando a ser un reemplazo para SimpleHTTPServer que es utilizado de manera regular por Python.
La diferencia entre este y SimpleHTTPServer es que permite la carga y descarga de archivos,iniciar el servicio bajo HTTPS configurando el certificado digital y lo principal en este upgrade es el uso de credenciales por medio de una autenticación básica port HTTP.
Instalación
La forma mas rápida de realizar la instalación es con pip vale aclarar que debe de ser la versión 3 porque la herramienta se encuentra desarrollada bajo Python 3.
$ pip3 install updog
Collecting updog
Downloading updog-1.4.tar.gz (2.5 MB)
|████████████████████████████████| 2.5 MB 209 kB/s
Requirement already satisfied: colorama in /usr/local/lib/python3.6/dist-packages (from updog) (0.3.9)
Requirement already satisfied: flask in /usr/local/lib/python3.6/dist-packages (from updog) (1.1.1)
Collecting flask_httpauth
Downloading Flask_HTTPAuth-3.3.0-py2.py3-none-any.whl (5.0 kB)
Requirement already satisfied: pyopenssl in /usr/local/lib/python3.6/dist-packages (from updog) (19.1.0)
Requirement already satisfied: werkzeug in /usr/local/lib/python3.6/dist-packages (from updog) (0.16.1)
Requirement already satisfied: Jinja2>=2.10.1 in /usr/local/lib/python3.6/dist-packages (from flask->updog) (2.11.1)
Requirement already satisfied: itsdangerous>=0.24 in /usr/local/lib/python3.6/dist-packages (from flask->updog) (1.1.0)
Requirement already satisfied: click>=5.1 in /usr/local/lib/python3.6/dist-packages (from flask->updog) (7.0)
Requirement already satisfied: six>=1.5.2 in /home/snifer/.local/lib/python3.6/site-packages (from pyopenssl->updog) (1.13.0)
Requirement already satisfied: cryptography>=2.8 in /usr/local/lib/python3.6/dist-packages (from pyopenssl->updog) (2.8)
Collecting MarkupSafe>=0.23
Downloading MarkupSafe-1.1.1-cp36-cp36m-manylinux1_x86_64.whl (27 kB)
Requirement already satisfied: cffi!=1.11.3,>=1.8 in /usr/local/lib/python3.6/dist-packages (from cryptography>=2.8->pyopenssl->updog) (1.14.0)
Requirement already satisfied: pycparser in /usr/local/lib/python3.6/dist-packages (from cffi!=1.11.3,>=1.8->cryptography>=2.8->pyopenssl->updog) (2.19)
Building wheels for collected packages: updog
Building wheel for updog (setup.py) ... done
Created wheel for updog: filename=updog-1.4-py3-none-any.whl size=2448078 sha256=71f3957b683f0412fd25861033cb9a6fbe2a822baee7d1c379ee6aa10c3f1a94
Stored in directory: /tmp/pip-ephem-wheel-cache-x6_767dy/wheels/28/44/90/a0f0062acb127b1cf856ef3c07e0436588eb1524f67728007f
Successfully built updog
Installing collected packages: flask-httpauth, updog, MarkupSafe
Successfully installed MarkupSafe-1.1.1 flask-httpauth-3.3.0 updog-1.4
Como todas las herramienta con el comando -h tenemos las opciones.
updog -h
usage: updog [-h] [-d DIRECTORY] [-p PORT] [--password PASSWORD] [--ssl]
[--version]
optional arguments:
-h, --help show this help message and exit
-d DIRECTORY, --directory DIRECTORY
Root directory [Default=.]
-p PORT, --port PORT Port to serve [Default=9090]
--password PASSWORD Use a password to access the page. (No username)
--ssl Use an encrypted connection
--version show program's version number and exit
```En esta prueba que realice con las flags se adiciona la contrasenia y el directorio a utilizar
[![](https://1.bp.blogspot.com/-GLvKkMJzdc8/Xk0_JQS174I/AAAAAAAAKLw/QF0O-vVWsKYZNPgs0wLrOJ1QZpydDW6GQCLcBGAsYHQ/s640/Flags_updog-sniferl4bs.png)](https://1.bp.blogspot.com/-GLvKkMJzdc8/Xk0_JQS174I/AAAAAAAAKLw/QF0O-vVWsKYZNPgs0wLrOJ1QZpydDW6GQCLcBGAsYHQ/s1600/Flags_updog-sniferl4bs.png)
Al momento de autenticarnos solo ingresamos la contrasena previamente seteada accediendo al file server que estamos exponiendo.
[![](https://1.bp.blogspot.com/-HGkvv0DuPto/Xk0_JtKdenI/AAAAAAAAKL0/gZby8K3-8DULoBui2nDcJKd0SmnRttlFACLcBGAsYHQ/s640/UpDog-webServerHTTPS.png)](https://1.bp.blogspot.com/-HGkvv0DuPto/Xk0_JtKdenI/AAAAAAAAKL0/gZby8K3-8DULoBui2nDcJKd0SmnRttlFACLcBGAsYHQ/s1600/UpDog-webServerHTTPS.png)
El principal uso que se puede dar a esta herramienta, es para compartir informacion entre equipos, extraer datos a partir de un smbserver o por un servicio HTTP, en el blog vimos anteriormente diferentes métodos para generar un web server.
* **[Servidor HTTP con Python2, Python3, Ruby y PHP](https://www.sniferl4bs.com/2017/05/servidor-http-con-python2-python3-ruby.html)**
"Si queremos que todo siga como está, es necesario que todo cambie." - Giuseppe Tomasi di Lampedusa
**Regards,**
**Snifer**