From fdfaacbd4e477e09e7c907e9f3071e6ecf89160f Mon Sep 17 00:00:00 2001 From: marco <10120390+mac12m99@users.noreply.github.com> Date: Mon, 10 Oct 2022 20:05:36 +0200 Subject: [PATCH] Migliorie --- core/app.py | 43 +++++++++++++++++++++++++++++-------------- 1 file changed, 29 insertions(+), 14 deletions(-) diff --git a/core/app.py b/core/app.py index 5466f6a6..759312d6 100644 --- a/core/app.py +++ b/core/app.py @@ -1,11 +1,13 @@ import base64 +import socket from http.server import BaseHTTPRequestHandler, HTTPServer -import xbmc +import xbmc, random from core import jsontools, httptools from platformcode import logger + hostName = xbmc.getIPAddress() -serverPort = 8080 -ret = None +serverPort = random.randint(49152, 65535) +ret = [] call = 'kodapp://app.kod/open?s={}&ua={}&cb=http://{}:{}/' @@ -17,18 +19,31 @@ class MyServer(BaseHTTPRequestHandler): ret = jsontools.load(postvars) logger.info(ret) self.send_response(200) + self.send_header("Content-type", "text/plain") + self.end_headers() + self.wfile.write(b"OK") def call_url(url): - global cookie_ricevuto - webServer = HTTPServer((hostName, serverPort), MyServer) - logger.info("Server started http://%s:%s" % (hostName, serverPort)) - s = base64.b64encode(jsontools.dump({'url': url}).encode()).decode() - ua = base64.b64encode(httptools.get_user_agent().encode()).decode() - activity = 'StartAndroidActivity("com.kodapp","android.intent.action.VIEW","",{})'.format(call.format(s, ua, hostName, serverPort)) - logger.info(activity) - xbmc.executebuiltin(activity) - while not ret: - webServer.handle_request() - logger.info("Server stopped.") + global serverPort + webServer = None + for t in range(10): # try up to 10 port if already in use + try: + webServer = HTTPServer((hostName, serverPort), MyServer) + break + except socket.error: + serverPort += 1 + if webServer: + logger.info("Server started http://%s:%s" % (hostName, serverPort)) + s = base64.b64encode(jsontools.dump({'url': url}).encode()).decode() + ua = base64.b64encode(httptools.get_user_agent().encode()).decode() + uri = call.format(s, ua, hostName, serverPort) + if logger.DEBUG_ENABLED: + uri += '&l=1' + activity = 'StartAndroidActivity("com.kodapp","android.intent.action.VIEW","",{})'.format(uri) + logger.info(activity) + xbmc.executebuiltin(activity) + while not ret: + webServer.handle_request() + logger.info("Server stopped.") return ret