Example #1
0
def http_parse_query(meg):
    http=BinMap();
    regex = re.compile("(GET|POST)\s+(.+?)\s+(.+?)\r\n", re.IGNORECASE)
    out=regex.findall(meg)
    if len(out)>0:
        http.setvalue("HTTP_METHOD", out[0][0])
        http.setvalue("HTTP_QUERY_STRING", out[0][1])
        http.setvalue("HTTP_PROTOCOL", out[0][2])
    else:
        http.setvalue("HTTP_METHOD", "")
        http.setvalue("HTTP_QUERY_STRING", "")
        http.setvalue("HTTP_PROTOCOL", "")
    http_parse_query_item(meg,"Accept:\s+(.+?)\r\n",http,"HTTP_ACCEPT")
    http_parse_query_item(meg,"Accept-Language:\s+(.+?)\r\n",http,"HTTP_ACCEPT_LANGUAGE")
    http_parse_query_item(meg,"User-Agent:\s+(.+?)\r\n",http,"HTTP_USER_AGENT")
    http_parse_query_item(meg,"Content-Type:\s+(.+?)\r\n",http,"HTTP_CONTENT_TYPE")
    http_parse_query_item(meg,"Accept-Encoding:\s+(.+?)\r\n",http,"HTTP_ACCEPT_ENCODING")
    http_parse_query_item(meg,"Host:\s+(.+?)\r\n",http,"HTTP_HOST")
    http_parse_query_item(meg,"Connection:\s+(.+?)\r\n",http,"HTTP_CONNECTION")
    http_parse_query_item(meg,"Content-Length:\s+(.+?)\r\n",http,"HTTP_CONNECTION_LENGTH")
    http_parse_query_item(meg,"Cache-Control:\s+(.+?)\r\n",http,"HTTP_CACHE_CONTROL")
    regex = re.compile("\r\n\r\n(.+)", re.IGNORECASE)
    out=regex.findall(meg)
    if len(out)>0:
        http.setvalue("HTTP_POST_VARS", out[0])
    else:
        http.setvalue("HTTP_POST_VARS", "")
    return http