Нет описания

proxy_server.py 1.8KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. #
  2. # curl -H "Org-id: Shuffle" --proxy "http://192.168.86.45:8081" http://192.168.86.45:5001/api/v1/workflows/queue
  3. import SocketServer
  4. import SimpleHTTPServer
  5. import requests
  6. import json
  7. PORT = 8082
  8. class MyProxy(SimpleHTTPServer.SimpleHTTPRequestHandler):
  9. def do_GET(self):
  10. url=self.path[:]
  11. allheaders = {}
  12. for item in ("%s" % self.headers).split("\n"):
  13. headersplit = item.split(":")
  14. if len(headersplit) == 2:
  15. allheaders[headersplit[0]] = (headersplit[1][:-1]).strip()
  16. ret = requests.get(url, headers=allheaders)
  17. print("RESP (%s) - %d - %s" % (url, ret.status_code, ret.text))
  18. self.send_response(ret.status_code)
  19. self.end_headers()
  20. self.wfile.write(ret.text)
  21. def do_POST(self):
  22. url=self.path[:]
  23. allheaders = {}
  24. for item in ("%s" % self.headers).split("\n"):
  25. headersplit = item.split(":")
  26. if len(headersplit) == 2:
  27. allheaders[headersplit[0]] = (headersplit[1][:-1]).strip()
  28. length = int(self.headers.getheader('content-length'))
  29. try:
  30. message = json.loads(self.rfile.read(length))
  31. print("Got message: %s" % message)
  32. ret = requests.post(url, headers=allheaders, json=message)
  33. except:
  34. message = self.rfile.read(length)
  35. print("Got message: %s" % message)
  36. ret = requests.post(url, headers=allheaders, data=message)
  37. print("RESP (%s) - %d - %s" % (url, ret.status_code, ret.text))
  38. self.send_response(ret.status_code)
  39. self.end_headers()
  40. self.wfile.write(ret.text)
  41. httpd = SocketServer.ForkingTCPServer(('', PORT), MyProxy)
  42. print("Now serving at %d" % PORT)
  43. httpd.serve_forever()