Untitled

 avatar
unknown
plain_text
a year ago
2.9 kB
6
Indexable
from http.server import HTTPServer, SimpleHTTPRequestHandler
from http.client import HTTPSConnection
import io
import sys
import base64
import json


class CORSRequestHandler(SimpleHTTPRequestHandler):
    def log_message(self, format, *args):
        if "log" in self.path:
            return
        SimpleHTTPRequestHandler.log_message(self, format, *args)

    def do_POST(self):           
        content_length = int(self.headers['Content-Length'])
        body = self.rfile.read(content_length)         
        if "log" in self.path:
            CRED = '\033[92m'
            CEND = '\033[0m'
            msg = "".join([str(v) for k,v in json.loads(body).items()])
            print(f"{CRED}{msg}{CEND}")
            self.send_response(200)
            SimpleHTTPRequestHandler.end_headers(self)
            return

        connection = HTTPSConnection('music.amazon.com')        
        headers = {
            "x-amz-requestid": self.headers["x-amz-requestid"],
            "x-amz-target": self.headers["x-amz-target"],
            "x-amz-access-token": self.headers["x-amz-access-token"],
            "content-encoding": self.headers["content-encoding"],
            "content-type": self.headers["content-type"],
            #"accept-language": self.headers["accept-language"],
            #"accept": self.headers["accept"],
        }
        connection.request("POST", self.path, body, headers)  
        response = connection.getresponse() 
        self.send_response(response.status)
        SimpleHTTPRequestHandler.end_headers(self)
        self.wfile.write(response.read())

    def do_GET(self): 
        print(f"path {self.path}")
        self.send_response(200)
        self.send_header('Access-Control-Allow-Credentials', 'true')
        self.send_header('Access-Control-Allow-Origin', self.headers['origin'])
        self.send_header('Access-Control-Allow-Methods', 'GET, POST, OPTIONS')  
        connection = HTTPSConnection('z.tryandrew.shop')
        connection.request("GET", self.path)  
        response = connection.getresponse() 
        for key in response.headers:
            self.send_header(key, response.headers[key])            
        SimpleHTTPRequestHandler.end_headers(self)
        self.send_response(response.status)
        self.wfile.write(response.read())
    
    def do_OPTIONS(self):
        print(f"OPTIONS")
        self.send_response(200)
        self.send_header('Access-Control-Allow-Credentials', 'true')
        self.send_header('Access-Control-Allow-Origin', self.headers['origin'])
        self.send_header('Access-Control-Allow-Methods', 'GET, POST, OPTIONS')        
        self.send_header('Access-Control-Allow-Headers', 'Allow, Content-Encoding, x-amz-target, Content-type')     
        SimpleHTTPRequestHandler.end_headers(self)



httpd = HTTPServer(('192.168.68.109', int(sys.argv[1])), CORSRequestHandler)
httpd.serve_forever()
Editor is loading...
Leave a Comment