Advertisement
Guest User

Untitled

a guest
Jan 23rd, 2018
50
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.95 KB | None | 0 0
  1. #!/usr/bin/env python
  2.  
  3. # -*- coding: utf-8 -*-
  4.  
  5. from BaseHTTPServer import HTTPServer
  6. from BaseHTTPServer import BaseHTTPRequestHandler
  7. import cgi
  8. import json
  9. import urllib2
  10. import requests
  11. import time
  12. import xml.etree.ElementTree
  13. import base64
  14. import os
  15.  
  16. from urlparse import urlparse, parse_qs
  17.  
  18. serverURL = "https://demo.audimex.com/cgi-bin/demo_12_1_trade_mobile__7034/wal.fcgi?"
  19.  
  20. class AMRequestHandler (BaseHTTPRequestHandler):
  21.  
  22. def do_GET(self):
  23.  
  24. print("GET")
  25. print(self.path)
  26.  
  27. self.callProxyGet()
  28.  
  29. def do_POST(self):
  30.  
  31. print("POST")
  32. print(serverURL)
  33. self.callProxyPost()
  34.  
  35. def callProxyGet(self):
  36.  
  37. url = serverURL + self.path[2:]
  38.  
  39. form = cgi.FieldStorage()
  40.  
  41. response = urllib2.urlopen(url).read()
  42.  
  43. self.send_response(200)
  44. self.send_header('Content-type','text/html')
  45. self.end_headers()
  46.  
  47. self.wfile.write(response)
  48.  
  49. queryComponents = parse_qs(urlparse(self.path).query)
  50. interface = queryComponents["interface"][0][len("audimex::mobile::"):]
  51.  
  52. date = str(int(time.time()))
  53.  
  54. # Output
  55.  
  56. filename = "CLIENT_" + interface + "_" + date + "_GET.txt"
  57. filePath = os.path.join("logs", filename)
  58.  
  59. self.createDirectory("logs")
  60.  
  61. outputFile = open(filePath,"w")
  62. outputFile.write(str(queryComponents))
  63. outputFile.close()
  64.  
  65. # Input
  66.  
  67. filename = "SERVER_" + interface + "_" + date + "_GET.txt"
  68. filePath = os.path.join("logs",filename)
  69.  
  70. xmlResponse = xml.etree.ElementTree.fromstring(unicode(response))
  71. responseDataEncoded = xmlResponse[1].text
  72.  
  73. responseDataDecoded = base64.decodestring(responseDataEncoded)
  74.  
  75. jsonDictionary = json.loads(responseDataDecoded)
  76. prettyJSON = json.dumps(jsonDictionary, indent=4)
  77.  
  78. self.createDirectory("logs")
  79.  
  80. outputFile = open(filePath,"w")
  81. outputFile.write(prettyJSON)
  82. outputFile.close()
  83.  
  84. def callProxyPost(self):
  85.  
  86. url = serverURL
  87.  
  88. ctype, parseDictionary = cgi.parse_header(self.headers.getheader('content-type'))
  89. postData = cgi.parse_multipart(self.rfile, parseDictionary)
  90.  
  91. response = requests.post(url, data=postData, verify=False)
  92.  
  93. self.send_response(200)
  94. self.send_header('Content-type','text/html')
  95. self.end_headers()
  96.  
  97. self.wfile.write(response.text)
  98.  
  99. date = str(int(time.time()))
  100.  
  101. # Output
  102.  
  103. outputDataDecoded = base64.decodestring(unicode(postData["data"]))
  104.  
  105. interface = postData["interface"][0][len("audimex::mobile::"):]
  106. filename = "CLIENT_" + interface + "_" + date + "_POST.txt"
  107. filePath = os.path.join("logs", filename)
  108.  
  109. self.createDirectory("logs")
  110.  
  111. jsonDictionary = json.loads(outputDataDecoded)
  112. prettyJSON = json.dumps(jsonDictionary, indent=4)
  113.  
  114. outputFile = open(filePath,"w")
  115. outputFile.write(prettyJSON)
  116. outputFile.close()
  117.  
  118. # Input
  119.  
  120. filename = "SERVER_" + interface + "_" + date + "_POST.txt"
  121. filePath = os.path.join("logs",filename)
  122.  
  123. self.createDirectory("logs")
  124.  
  125. outputFile = open(filePath,"w")
  126. outputFile.write(response.text)
  127. outputFile.close()
  128.  
  129. def createDirectory(self, path):
  130.  
  131. if not os.path.exists(path):
  132. os.makedirs(path)
  133.  
  134. server = HTTPServer(("yushkova.haulmont.com", 80), AMRequestHandler)
  135. server.serve_forever()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement