#!/usr/bin/env python
# -*- coding: utf-8 -*-

from __future__ import print_function
import os
import socket
import sys

# Compatibilidad con Python 3
if sys.version_info[0] < 3:
    from BaseHTTPServer import HTTPServer
    from CGIHTTPServer import CGIHTTPRequestHandler
else:
    from http.server import CGIHTTPRequestHandler, HTTPServer

#
# Configuración del servidor web
#

# Dirección IP en el que esperar conexiones. Por defecto espera en todas
# las direcciones del equipo.
SERVER_ADDRESS = '0.0.0.0'
# Puerto en el que esperar conexiones
SERVER_PORT = 8080
# Usar el directorio del programa como raíz
ROOT_DIRECTORY = os.path.dirname(os.path.realpath(__file__))
# URL relativa del directorio CGI con los programas respecto a la raíz
CGI_DIRECTORY_URL = '/cgi-bin'

#
# Servidor HTTP
#

# El directorio raíz del servidor HTTPServer es el directorio de trabajo
# del proceso. Cambiar el directorio de trabajo al especificado.
os.chdir(ROOT_DIRECTORY)

# Instanciar el servidor
handler = CGIHTTPRequestHandler
handler.cgi_directories = [CGI_DIRECTORY_URL]
server = HTTPServer((SERVER_ADDRESS, SERVER_PORT), handler)

print('Servidor web iniciado en %s:%s...' % (SERVER_ADDRESS, SERVER_PORT))
msgTemplate = '\thttp://%s:%s/'
if SERVER_ADDRESS in ('', '0.0.0.0'):
    print('Por ejemplo:\n')
    print(msgTemplate % ('127.0.0.1', SERVER_PORT))
    print(msgTemplate % ('localhost', SERVER_PORT))
    print(msgTemplate % (socket.gethostname(), SERVER_PORT))
else:
    print()
    print(msgTemplate % (SERVER_ADDRESS, SERVER_PORT))

print()

# Activar el servidor hasta que el programa sea interrumpido con Ctrl+C
server.serve_forever()