From fe0542eedee09a2902c45034adec8ad223010b22 Mon Sep 17 00:00:00 2001 From: lovetox Date: Sat, 30 May 2020 11:47:17 +0200 Subject: Client: Expose local address --- nbxmpp/client.py | 8 +++++++- nbxmpp/connection.py | 5 +++++ nbxmpp/tcp.py | 2 ++ 3 files changed, 14 insertions(+), 1 deletion(-) diff --git a/nbxmpp/client.py b/nbxmpp/client.py index ec52363..5012676 100644 --- a/nbxmpp/client.py +++ b/nbxmpp/client.py @@ -112,6 +112,7 @@ class Client(Observable): self._peer_certificate_errors = None self._con = None + self._local_address = None self._mode = Mode.CLIENT self._ping_source_id = None @@ -237,6 +238,10 @@ class Client(Observable): self.state = state self._xmpp_state_machine() + @property + def local_address(self): + return self._local_address + @property def connection_types(self): return list(self._allowed_con_types or [ConnectionType.DIRECT_TLS, @@ -411,8 +416,9 @@ class Client(Observable): # Alias for backwards compat return self.send_stanza(stanza) - def _on_connected(self, _connection, _signal_name): + def _on_connected(self, connection, _signal_name): self.set_state(StreamState.CONNECTED) + self._local_address = connection.local_address def _on_disconnected(self, _connection, _signal_name): self.state = StreamState.DISCONNECTED diff --git a/nbxmpp/connection.py b/nbxmpp/connection.py index 6fc06b6..a58bc2f 100644 --- a/nbxmpp/connection.py +++ b/nbxmpp/connection.py @@ -53,6 +53,7 @@ class Connection(Observable): self._client_cert = client_cert self._address = address + self._local_address = None self._state = None self._state = TCPState.DISCONNECTED @@ -63,6 +64,10 @@ class Connection(Observable): self._ignore_tls_errors = ignore_tls_errors self._ignored_tls_errors = ignored_tls_errors + @property + def local_address(self): + return self._local_address + @property def peer_certificate(self): return (self._peer_certificate, self._peer_certificate_errors) diff --git a/nbxmpp/tcp.py b/nbxmpp/tcp.py index bdaa074..361dacd 100644 --- a/nbxmpp/tcp.py +++ b/nbxmpp/tcp.py @@ -127,6 +127,8 @@ class TCPConnection(Connection): self._con.set_graceful_disconnect(True) self._con.get_socket().set_keepalive(True) + self._local_address = self._con.get_local_address() + self.state = TCPState.CONNECTED use_proxy = self._address.proxy is not None -- cgit v1.2.3