From 144a4d925b000dfdeb26c756d184eb55331c60fb Mon Sep 17 00:00:00 2001 From: Maurice Hendrix Date: Fri, 14 Mar 2025 10:16:47 +0100 Subject: [PATCH 1/5] moved to using and passing kwargs dict to connection, and also added option for adding a bearer token authorisation, independant of whether or not the server certificate is checked --- .../Initial/WindowsCommandPrompt.pkgx | Bin 0 -> 2089 bytes src/s2python/s2_connection.py | 21 ++++++++++++------ 2 files changed, 14 insertions(+), 7 deletions(-) create mode 100644 %LOCALAPPDATA%/Microsoft/UEV/%COMPUTERNAME%/WindowsCommandPrompt/Initial/WindowsCommandPrompt.pkgx diff --git a/%LOCALAPPDATA%/Microsoft/UEV/%COMPUTERNAME%/WindowsCommandPrompt/Initial/WindowsCommandPrompt.pkgx b/%LOCALAPPDATA%/Microsoft/UEV/%COMPUTERNAME%/WindowsCommandPrompt/Initial/WindowsCommandPrompt.pkgx new file mode 100644 index 0000000000000000000000000000000000000000..8c2b54125f9a781a24a2c8e26e0899c578af3d08 GIT binary patch literal 2089 zcmah~2{;?r7LHg#sVc8%ifL-RS5=ZORI7MJjHTMd5-MT|p(zq1mQ+h)O@-z$Q+s)} z)e>o@&%OlVX|<|Gm1cyR&{R=cOO2vNhRo}GGxNQ3zwg|0?>YCs_nh;6|3%nKO6db+ zw?_X3f;->~k>9et!f-((sDVi17*BR_VM_2=o!+qvRX>+h(BsBY)1WTnvU7_ERjfA0 zm|cRfhLwWOnzgKG+TV2QI_xi3f~6>$tf2#PZ+?P}v~vP4E+HCEM%ARlbD}a~LXAio z^P8}gDy5#RN!1Le#{3>{=T9t!pITV1*)jWJxRi4`mY0CXUwiO9FicQri=DClTKFrd z5n8F!WT0^P(j8zjnney#FEVH<%bA9aJ)LF#Q(=I8WiDK1u0@3LIjVHo8Oj z+Ng)bdQv5z0?Rox$-R}OXHDO~HB-aYz8 zYABVMPj0gDu|p`o=^V6)4mtVU_KaOXg-RQ88U!wtJ^Fk?mJ_;=ZasPyomN~_#D&a( zi>?=H2w0`H3|HeW%r|K(<|bX3i$oM5f)))Ob>D1<%*kBc=&uL}`YMgVFzIS7bgcN! zk`J01@2}D38+v=K4COST;w|&CLuk#JoRe#s0#@<8rALsttDiPDZd&rA@mH>-G|t;L z_yU`~=_719VAyB$LMv0-_8hpK2;4{vg*v&=PVaWmR(6P?QiAZ{8<@D;e%KRfjE=Kk z`+St^HN7Z|@HiF6+s&QGQywEwYkA}06ZIgZR=csSgR%Sojt^0!OSmN+otMAI?L_u3 zRyOD(f6!x-jGQ$(ANAJvPS^YT^-6_i!MuF@1>rX{7lDD_m*QkI&#V#rHjiEF%(gYx zH@G`~%c?_%8onMWZOs8krZ^VvV>DYNb~G3=a#2*xy1U(-IThNOVD<26ZhD@fnT8hU zNKg6Qsmia-G=U~Q_Q-5XxLcvjz%Cs*t-Pw@2cFplSBF^n}^TJk#3gFAAFZD~ZA$PbTMf+SvY(azGQ5&m)i#lI@k9)B7+8dMxKDz(ql zc!}9so;lbSJXv|U!|T*{T};{X)b&uUw|r_oH|X%pY1Acn3;W$eUR!f&4{HH$#FJzX zDZRCrY)}gT3-Sug`(E%THE+MSmKwsx*Go4JCXbq8?netBtxA!q<_yuHsuSydOJKQA zI@wOjLL;gn&)ZCL2)05I77)5OlM9>D`n7SR}jd@a*~BM}`l!Ga;#< zx3WU)l+MZAzb?B#^G<*JAuoF+H=*9i+Y{Ylos`_*dMjkTvnb%H)%v}J&G>dt-uNp; zVlv!|pFEo;u))^p1#lEM;I0=^l|8-!!4s!&%X?pzlqW?v8TMgS3)t^RHC{A+_MQ1r z=;dd2s(*5rI7`aWTa2kY#(3rnj7C|QJ-Y^7!Uo6*K0{LLdlC4q@jSoLhteO5O0e(e zo4weL>z@#f=;Sv74=%CWEHXK`|?d2LSX5LA?-;DZU(6bfMk%p*2!S~d=|zgJ#B zjqNu_a}X;`-kGpXAj@kty2Jh9S_WW@F8T8Gv>FnMax0`4t2w?^VK z>a7jphmY9Gvj%;h=Wo}S_S5%qSFkhxc3wS;hJI8NkyEwDiD0zUHYv&I{XcS2*$O~g z5(#7+f$Zf>3Bi#t22sI5*BMU~<3yBPno~_JlJ`|$Br>4wd&+SM-N%D}w0l3V|IY)y z9({b$8^47svxW!yDY)_*;kgo)8D+>p)sTv3J&Kjb?-#0?(hsi!o0Mh?NKlj6#EWV0 zl%A&zo(aZHnP|v-5uDTWKtC%9=xDFHYZ zuKxXLmJa2>z{~vouXJZz_X4_OkFZictDC{i%-uNvQPx@#fO}#}R{f2VC4l;X|9n9r z+TPp|d4R@tX@1qB%`ZMA34l64% None: self.url = url self.reconnect = reconnect @@ -229,6 +231,7 @@ def __init__( # pylint: disable=too-many-arguments self._handlers.register_handler(SelectControlType, self.handle_select_control_type_as_rm) self._handlers.register_handler(Handshake, self.handle_handshake) self._handlers.register_handler(HandshakeResponse, self.handle_handshake_response_as_rm) + self._bearer_token = bearer_token def start_as_rm(self) -> None: self._run_eventloop(self._run_as_rm()) @@ -323,13 +326,17 @@ async def wait_till_connection_restart() -> None: async def _connect_ws(self) -> None: try: + # set up connection arguments for SSL and bearer token, if required + connection_kwargs: Dict[str, Any] = {} if self.url.startswith("wss://") and not self._verify_certificate: - ssl_context = ssl.SSLContext(ssl.PROTOCOL_TLS_CLIENT) - ssl_context.check_hostname = False - ssl_context.verify_mode = ssl.CERT_NONE - self.ws = await ws_connect(uri=self.url, ssl=ssl_context) - else: - self.ws = await ws_connect(uri=self.url) + connection_kwargs['ssl'] = ssl.SSLContext(ssl.PROTOCOL_TLS_CLIENT) + connection_kwargs['ssl'].check_hostname = False + connection_kwargs['ssl'].verify_mode = ssl.CERT_NONE + + if self._bearer_token: + connection_kwargs['additional_headers'] = {"Authorization": f"Bearer {token}"} + + self.ws = await ws_connect(uri=self.url, **connection_kwargs) except (EOFError, OSError) as e: logger.info("Could not connect due to: %s", str(e)) From 45f6d842d5ce1716e04740dfc39212d8f5197a19 Mon Sep 17 00:00:00 2001 From: Maurice Hendrix Date: Fri, 14 Mar 2025 10:21:50 +0100 Subject: [PATCH 2/5] fix linting errors --- src/s2python/s2_connection.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/s2python/s2_connection.py b/src/s2python/s2_connection.py index 4ed0c85..9fa933a 100644 --- a/src/s2python/s2_connection.py +++ b/src/s2python/s2_connection.py @@ -332,10 +332,10 @@ async def _connect_ws(self) -> None: connection_kwargs['ssl'] = ssl.SSLContext(ssl.PROTOCOL_TLS_CLIENT) connection_kwargs['ssl'].check_hostname = False connection_kwargs['ssl'].verify_mode = ssl.CERT_NONE - + if self._bearer_token: - connection_kwargs['additional_headers'] = {"Authorization": f"Bearer {token}"} - + connection_kwargs['additional_headers'] = {"Authorization": f"Bearer {self._bearer_token}"} + self.ws = await ws_connect(uri=self.url, **connection_kwargs) except (EOFError, OSError) as e: logger.info("Could not connect due to: %s", str(e)) From 7879ed835a2155491e7fe4dd574df68ec7be9df5 Mon Sep 17 00:00:00 2001 From: Maurice Hendrix Date: Fri, 14 Mar 2025 10:33:50 +0100 Subject: [PATCH 3/5] use optional instead o union --- src/s2python/s2_connection.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/s2python/s2_connection.py b/src/s2python/s2_connection.py index 9fa933a..1518083 100644 --- a/src/s2python/s2_connection.py +++ b/src/s2python/s2_connection.py @@ -200,7 +200,7 @@ class S2Connection: # pylint: disable=too-many-instance-attributes _stop_event: asyncio.Event _restart_connection_event: asyncio.Event _verify_certificate: bool - _bearer_token: Union[bool, None] + _bearer_token: Optional[str] def __init__( # pylint: disable=too-many-arguments self, @@ -210,7 +210,7 @@ def __init__( # pylint: disable=too-many-arguments asset_details: AssetDetails, reconnect: bool = False, verify_certificate: bool = True, - bearer_token: Union[bool, None] = None + bearer_token: Optional[str] = None ) -> None: self.url = url self.reconnect = reconnect From bf117dc594515c20b70673f3db3204a0ae39822a Mon Sep 17 00:00:00 2001 From: Maurice Hendrix Date: Fri, 14 Mar 2025 10:39:50 +0100 Subject: [PATCH 4/5] added C:\Users\hendrixm\AppData\Local to gitignore --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 8a082ed..5baf340 100644 --- a/.gitignore +++ b/.gitignore @@ -12,3 +12,4 @@ venv .tox/ dist/ build/ +%LOCALAPPDATA% From 23576d6148d9303b3f5f5f467134d840fc6db412 Mon Sep 17 00:00:00 2001 From: Dr Maurice Hendrix Date: Fri, 14 Mar 2025 10:43:10 +0100 Subject: [PATCH 5/5] Delete %LOCALAPPDATA%/Microsoft/UEV/%COMPUTERNAME%/WindowsCommandPrompt/Initial directory --- .../Initial/WindowsCommandPrompt.pkgx | Bin 2089 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 %LOCALAPPDATA%/Microsoft/UEV/%COMPUTERNAME%/WindowsCommandPrompt/Initial/WindowsCommandPrompt.pkgx diff --git a/%LOCALAPPDATA%/Microsoft/UEV/%COMPUTERNAME%/WindowsCommandPrompt/Initial/WindowsCommandPrompt.pkgx b/%LOCALAPPDATA%/Microsoft/UEV/%COMPUTERNAME%/WindowsCommandPrompt/Initial/WindowsCommandPrompt.pkgx deleted file mode 100644 index 8c2b54125f9a781a24a2c8e26e0899c578af3d08..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2089 zcmah~2{;?r7LHg#sVc8%ifL-RS5=ZORI7MJjHTMd5-MT|p(zq1mQ+h)O@-z$Q+s)} z)e>o@&%OlVX|<|Gm1cyR&{R=cOO2vNhRo}GGxNQ3zwg|0?>YCs_nh;6|3%nKO6db+ zw?_X3f;->~k>9et!f-((sDVi17*BR_VM_2=o!+qvRX>+h(BsBY)1WTnvU7_ERjfA0 zm|cRfhLwWOnzgKG+TV2QI_xi3f~6>$tf2#PZ+?P}v~vP4E+HCEM%ARlbD}a~LXAio z^P8}gDy5#RN!1Le#{3>{=T9t!pITV1*)jWJxRi4`mY0CXUwiO9FicQri=DClTKFrd z5n8F!WT0^P(j8zjnney#FEVH<%bA9aJ)LF#Q(=I8WiDK1u0@3LIjVHo8Oj z+Ng)bdQv5z0?Rox$-R}OXHDO~HB-aYz8 zYABVMPj0gDu|p`o=^V6)4mtVU_KaOXg-RQ88U!wtJ^Fk?mJ_;=ZasPyomN~_#D&a( zi>?=H2w0`H3|HeW%r|K(<|bX3i$oM5f)))Ob>D1<%*kBc=&uL}`YMgVFzIS7bgcN! zk`J01@2}D38+v=K4COST;w|&CLuk#JoRe#s0#@<8rALsttDiPDZd&rA@mH>-G|t;L z_yU`~=_719VAyB$LMv0-_8hpK2;4{vg*v&=PVaWmR(6P?QiAZ{8<@D;e%KRfjE=Kk z`+St^HN7Z|@HiF6+s&QGQywEwYkA}06ZIgZR=csSgR%Sojt^0!OSmN+otMAI?L_u3 zRyOD(f6!x-jGQ$(ANAJvPS^YT^-6_i!MuF@1>rX{7lDD_m*QkI&#V#rHjiEF%(gYx zH@G`~%c?_%8onMWZOs8krZ^VvV>DYNb~G3=a#2*xy1U(-IThNOVD<26ZhD@fnT8hU zNKg6Qsmia-G=U~Q_Q-5XxLcvjz%Cs*t-Pw@2cFplSBF^n}^TJk#3gFAAFZD~ZA$PbTMf+SvY(azGQ5&m)i#lI@k9)B7+8dMxKDz(ql zc!}9so;lbSJXv|U!|T*{T};{X)b&uUw|r_oH|X%pY1Acn3;W$eUR!f&4{HH$#FJzX zDZRCrY)}gT3-Sug`(E%THE+MSmKwsx*Go4JCXbq8?netBtxA!q<_yuHsuSydOJKQA zI@wOjLL;gn&)ZCL2)05I77)5OlM9>D`n7SR}jd@a*~BM}`l!Ga;#< zx3WU)l+MZAzb?B#^G<*JAuoF+H=*9i+Y{Ylos`_*dMjkTvnb%H)%v}J&G>dt-uNp; zVlv!|pFEo;u))^p1#lEM;I0=^l|8-!!4s!&%X?pzlqW?v8TMgS3)t^RHC{A+_MQ1r z=;dd2s(*5rI7`aWTa2kY#(3rnj7C|QJ-Y^7!Uo6*K0{LLdlC4q@jSoLhteO5O0e(e zo4weL>z@#f=;Sv74=%CWEHXK`|?d2LSX5LA?-;DZU(6bfMk%p*2!S~d=|zgJ#B zjqNu_a}X;`-kGpXAj@kty2Jh9S_WW@F8T8Gv>FnMax0`4t2w?^VK z>a7jphmY9Gvj%;h=Wo}S_S5%qSFkhxc3wS;hJI8NkyEwDiD0zUHYv&I{XcS2*$O~g z5(#7+f$Zf>3Bi#t22sI5*BMU~<3yBPno~_JlJ`|$Br>4wd&+SM-N%D}w0l3V|IY)y z9({b$8^47svxW!yDY)_*;kgo)8D+>p)sTv3J&Kjb?-#0?(hsi!o0Mh?NKlj6#EWV0 zl%A&zo(aZHnP|v-5uDTWKtC%9=xDFHYZ zuKxXLmJa2>z{~vouXJZz_X4_OkFZictDC{i%-uNvQPx@#fO}#}R{f2VC4l;X|9n9r z+TPp|d4R@tX@1qB%`ZMA34l64%