mfernandez

HTTP Server example 3 (Python2)

May 2nd, 2014
315
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.54 KB | None | 0 0
  1. # coding: utf-8
  2.  
  3. import BaseHTTPServer
  4.  
  5. HOST_NAME = 'localhost'
  6. PORT = 8000
  7.  
  8. def detectar_so(user_agent):
  9.     # Ver listados en http://www.useragentstring.com/pages/useragentstring.php
  10.     if 'Linux' in user_agent:
  11.         return 'Veo que Ud. esta usando Linux como S.O.'
  12.     elif 'Windows' in user_agent:
  13.         return 'Veo que Ud. esta usando Windows como S.O.'
  14.     else:
  15.         return 'No conozco su S.O.'
  16.  
  17. def get_pagina_ok():
  18.     """ Función que dvuelve la página de exito de ejemplo """
  19.     # Como alternativa podría abrirse un archivo del disco, leerlo y devolverlo
  20.     # como cadena de texto.
  21.     return ('<html><head><title>Pagina HTML de ejemplo</title>'
  22.            '</head><body><p>Esta es una prueba, con texto en <b>negrita</b>,'
  23.            '<i>cursiva</i> e incluso una imagen externa:</p>'
  24.            '<img src="http://www.labredes.unlu.edu.ar/themes/glossyblue/images'
  25.            '/header-bg.jpg" />')
  26.  
  27. class Handler(BaseHTTPServer.BaseHTTPRequestHandler):
  28.  
  29.     def do_GET(server):
  30.         """Respondo a una petición de tipo GET"""
  31.         # Imprimo los encabezados por consola
  32.         print '-' * 80
  33.         print server.command, server.path, server.request_version
  34.         print server.headers
  35.         # Devuelvo la respuesta
  36.         if server.path.startswith('/ir_a/'):
  37.             ir_a = server.path.split('/')[-1]
  38.             server.send_response(302)
  39.             server.send_header('Location', 'http://' + ir_a)
  40.             server.end_headers()
  41.         elif server.path.startswith('/no_existe'):
  42.             server.send_response(404)
  43.             server.send_header('Content-Type', 'text/plain')
  44.             server.end_headers()
  45.             server.wfile.write('Pagina no encontrada')
  46.         else:
  47.             server.send_response(200)
  48.             server.send_header('Content-Type', 'text/html')
  49.             server.end_headers()
  50.             server.wfile.write(get_pagina_ok())
  51.             server.wfile.write('<p>' + detectar_so(server.headers['User-Agent']))
  52.             server.wfile.write('</p></body></html>')
  53.  
  54.     def log_message(*args):
  55.         """ Deshabilito la salida por defecto del servidor """
  56.         pass
  57.  
  58.  
  59. if __name__ == '__main__':
  60.     http_server = BaseHTTPServer.HTTPServer((HOST_NAME, PORT), Handler)
  61.     print 'Ejecutando Server HTTP - %s:%s' % (HOST_NAME, PORT)
  62.     print 'Presione Ctrl+C para detener...'
  63.     try:
  64.         http_server.serve_forever()
  65.     except KeyboardInterrupt:
  66.         pass
  67.     http_server.server_close()
  68.     print 'Deteniendo Server HTTP - %s:%s' % (HOST_NAME, PORT)
Advertisement
Add Comment
Please, Sign In to add comment