Advertisement
AntonioVillanueva

Untitled

Jan 24th, 2019
337
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 2.99 KB | None | 0 0
  1. #!/usr/bin/env pytho
  2.  
  3. from http.server import BaseHTTPRequestHandler
  4. from urllib import parse
  5.  
  6. class Parser():
  7.     def __init__(self,texto):
  8.         self.texto=texto
  9.        
  10.     def analisis(self):
  11.         #Crea una lista [] entre basada en '&'
  12.         lista=(self.texto).split("&")
  13.  
  14.         #Crear un diccionario desde la lista mira el simbolo '='
  15.         diccionario = {}
  16.         for item in lista:
  17.             diccionario[item.split('=')[0]] = item.split('=')[1]  
  18.            
  19.         #ver diccionario
  20.         print ("--------------------------------------")
  21.         for clave, item in diccionario.items():
  22.             print (clave, ":", item)
  23.         print ("--------------------------------------")
  24.        
  25.        
  26.        
  27. class GetHandler(BaseHTTPRequestHandler):
  28.  
  29.     def do_GET(self):
  30.         parsed_path = parse.urlparse(self.path)
  31.      
  32.         message_parts = [
  33.             'CLIENT VALUES:',
  34.             'client_address={} ({})'.format(
  35.                 self.client_address,
  36.                 self.address_string()),
  37.             'command={}'.format(self.command), #Contiene el comando por ejemplo GET
  38.             'requestline={}'.format(self.requestline),
  39.             'path={}'.format(self.path), #Contiene la ruta de solicitud
  40.             'real path={}'.format(parsed_path.path),
  41.             'query={}'.format(parsed_path.query),
  42.             'request_version={}'.format(self.request_version),# Contiene version de respuesta p.e HTTP/1.0
  43.             '',
  44.             'SERVER VALUES:',
  45.             'server_version={}'.format(self.server_version),#Especifica la version del servidor p.e Python/1.4
  46.             'sys_version={}'.format(self.sys_version),
  47.             'protocol_version={}'.format(self.protocol_version),
  48.             '',
  49.             'HEADERS RECEIVED:',
  50.         ]
  51.        
  52.         #Aqui obtengo la peticion GET de Vauban
  53.         #print ("\nRequest line = \n"+str ((self.requestline).split())+"\n \n")
  54.         """
  55.        Request line =
  56. GET /?EventDate=2019-01-24T14:25:27&UserName=SCOTH&UserFirstName=BON&Identifier=49493&ReaderName=Porte%20badge&EventType=Utilisateur%20interdit&EventColor=0&EventTypeNumber=12&PlaqueLPR=&EventId=371 HTTP/1.1
  57.        """
  58.         #Analisis de la request utiliza la clase Parser crea un diccionario de claves y valores
  59.         p=Parser(str(self.requestline))
  60.         p.analisis()
  61.    
  62.        
  63.         for name, value in sorted(self.headers.items()):
  64.             message_parts.append(
  65.                 '{}={}'.format(name, value.rstrip())
  66.             )
  67.  
  68.            
  69.         message_parts.append('')
  70.         message = '\r\n'.join(message_parts)
  71.         #self.send_response(200)
  72.         self.send_header('Content-Type',
  73.                          'text/plain; charset=utf-8')
  74.         self.end_headers()
  75.         #The message text is assembled and then written to wfile
  76.         self.wfile.write(message.encode('utf-8'))
  77.        
  78.  
  79.  
  80. if __name__ == '__main__':
  81.     from http.server import HTTPServer
  82.     server = HTTPServer(('192.168.6.150', 8888), GetHandler)
  83.     print('Starting server, use <Ctrl-C> to stop')
  84.     server.serve_forever()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement