mfernandez

HTTP Server example 3 (Python3)

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