Skip to content

Commit 4bbbffc

Browse files
Add the option to create TLS/SSL sockets
1 parent d08fa1f commit 4bbbffc

File tree

1 file changed

+13
-3
lines changed

1 file changed

+13
-3
lines changed

smpplib/client.py

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -60,18 +60,21 @@ class Client(object):
6060
port = None
6161
vendor = None
6262
_socket = None
63+
_ssl_context = None
6364
sequence_generator = None
6465

65-
def __init__(self, host, port, timeout=5, sequence_generator=None, logger_name=None):
66+
def __init__(self, host, port, timeout=5, sequence_generator=None, logger_name=None, ssl_context=None):
6667
self.host = host
6768
self.port = int(port)
68-
self._socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
69+
self._ssl_context = ssl_context
6970
self.timeout = timeout
7071
self.logger = logging.getLogger(logger_name or 'smpp.Client.{}'.format(id(self)))
7172
if sequence_generator is None:
7273
sequence_generator = SimpleSequenceGenerator()
7374
self.sequence_generator = sequence_generator
7475

76+
self._socket = self._create_socket()
77+
7578
def __enter__(self):
7679
return self
7780

@@ -97,14 +100,21 @@ def sequence(self):
97100
def next_sequence(self):
98101
return self.sequence_generator.next_sequence()
99102

103+
def _create_socket(self):
104+
raw_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
105+
if self._ssl_context is None:
106+
return raw_socket
107+
108+
return ssl_context.wrap_socket(raw_socket)
109+
100110
def connect(self):
101111
"""Connect to SMSC"""
102112

103113
self.logger.info('Connecting to %s:%s...', self.host, self.port)
104114

105115
try:
106116
if self._socket is None:
107-
self._socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
117+
self._socket = self._create_socket()
108118
self._socket.settimeout(self.timeout)
109119
self._socket.connect((self.host, self.port))
110120
self.state = consts.SMPP_CLIENT_STATE_OPEN

0 commit comments

Comments
 (0)