#!/usr/bin/env python3 from http.server import BaseHTTPRequestHandler, HTTPServer from base64 import b64decode import socket import json def generatePlist(data: dict) -> str: return f''' itemsassets kindsoftware-package url{data.get('u')} kinddisplay-image needs-shine url{data.get('i')} metadata bundle-identifier{data.get('b')} bundle-version{data.get('v')} kindsoftware title{data.get('n')} ''' # noqa: E501 class PlistServer(BaseHTTPRequestHandler): def do_GET(self): try: b64 = self.path.split('?d=')[-1] + '==' print(b64decode(b64)) data = json.loads(b64decode(b64)) # type: dict rv = generatePlist(data) except Exception as e: print(e) rv = '' self.send_response(200) self.send_header('Access-Control-Allow-Origin', '*') if rv: self.send_header('Content-type', 'application/xml') self.end_headers() self.wfile.write(bytes(rv, 'utf-8') if rv else b'Parsing error') def getLocalIp(): s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) s.connect(('10.255.255.255', 80)) ip = s.getsockname()[0] s.close() return ip if __name__ == '__main__': webServer = HTTPServer(('0.0.0.0', 8026), PlistServer) print('Server started http://%s:%s' % (getLocalIp(), 8026)) try: webServer.serve_forever() except KeyboardInterrupt: pass webServer.server_close()