From 9ce23e7708a7ba7bbade0f5261314febc6ff623c Mon Sep 17 00:00:00 2001 From: Wim Fournier Date: Tue, 18 Dec 2018 19:30:00 +0100 Subject: [PATCH] Switch to ssl for websocket, and support setting a token in the config file --- samsungctl/__main__.py | 1 + samsungctl/remote_websocket.py | 11 ++++++++--- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/samsungctl/__main__.py b/samsungctl/__main__.py index a85d194..5ccc578 100644 --- a/samsungctl/__main__.py +++ b/samsungctl/__main__.py @@ -20,6 +20,7 @@ def _read_config(): "id": "", "method": "legacy", "timeout": 0, + "token": "", }) file_loaded = False diff --git a/samsungctl/remote_websocket.py b/samsungctl/remote_websocket.py index f3062d9..9ddbcb1 100644 --- a/samsungctl/remote_websocket.py +++ b/samsungctl/remote_websocket.py @@ -3,17 +3,18 @@ import logging import socket import time +import ssl from . import exceptions - -URL_FORMAT = "ws://{}:{}/api/v2/channels/samsung.remote.control?name={}" +URL_FORMAT = "wss://{}:{}/api/v2/channels/samsung.remote.control?name={}" class RemoteWebsocket(): """Object for remote control connection.""" def __init__(self, config): + self.token = "" import websocket if not config["port"]: @@ -24,8 +25,10 @@ def __init__(self, config): url = URL_FORMAT.format(config["host"], config["port"], self._serialize_string(config["name"])) + if config["token"]: + url += "&token=" + config["token"] - self.connection = websocket.create_connection(url, config["timeout"]) + self.connection = websocket.create_connection(url, ssl_handshake_timeout=config["timeout"], sslopt={"cert_reqs": ssl.CERT_NONE}) self._read_response() @@ -72,6 +75,8 @@ def _read_response(self): raise exceptions.UnhandledResponse(response) logging.debug("Access granted.") + if response.get("token", False): + logging.info("Token: {}".format(response["token"])) @staticmethod def _serialize_string(string):