From 0aca0ae50a7336c705a92f2444d6fcd1b3e283e9 Mon Sep 17 00:00:00 2001 From: Stavros Korokithakis Date: Fri, 7 Dec 2018 18:17:52 +0200 Subject: Support TCP sockets --- README.md | 22 ++++++++++++++++++++++ signald/main.py | 7 ++++++- 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 925fc63..7a75823 100644 --- a/README.md +++ b/README.md @@ -38,3 +38,25 @@ s.send_message("+1098765432", "Hello there!") for message in s.receive_messages(): print(message) ``` + + +Various +------- + +pysignald also supports different socket paths: + +```python +s = Signal("+1234567890", socket_path="/var/some/other/socket.sock") +``` + +It supports TCP sockets too, if you run a proxy. For example, you can proxy signald's UNIX socket over TCP with socat: + +```bash +$ socat -d -d TCP4-LISTEN:15432,fork UNIX-CONNECT:/var/run/signald/signald.sock +``` + +Then in pysignald: + +```python +s = Signal("+1234567890", socket_path=("your.serveri.ip", 15432)) +``` diff --git a/signald/main.py b/signald/main.py index 2c12322..cfad0e8 100644 --- a/signald/main.py +++ b/signald/main.py @@ -32,7 +32,12 @@ class Signal: def _get_socket(self) -> socket.socket: "Create a socket, connect to the server and return it." - s = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM) + + # Support TCP sockets on the sly. + if isinstance(self.socket_path, tuple): + s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + else: + s = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM) s.connect(self.socket_path) return s -- cgit v1.2.3-54-g00ecf