kopia lustrzana https://github.com/Yakifo/amqtt
rodzic
56f3c911dd
commit
13c4a8a09f
|
@ -225,43 +225,46 @@ class Broker:
|
||||||
for listener_name in self.listeners_config:
|
for listener_name in self.listeners_config:
|
||||||
listener = self.listeners_config[listener_name]
|
listener = self.listeners_config[listener_name]
|
||||||
|
|
||||||
# Max connections
|
if 'bind' not in listener:
|
||||||
try:
|
self.logger.debug("Listener configuration '%s' is not bound" % listener_name)
|
||||||
max_connections = listener['max_connections']
|
else:
|
||||||
except KeyError:
|
# Max connections
|
||||||
max_connections = -1
|
|
||||||
|
|
||||||
# SSL Context
|
|
||||||
sc = None
|
|
||||||
if 'ssl' in listener and listener['ssl'].upper() == 'ON':
|
|
||||||
try:
|
try:
|
||||||
sc = ssl.create_default_context(ssl.Purpose.CLIENT_AUTH)
|
max_connections = listener['max_connections']
|
||||||
sc.load_cert_chain(listener['certfile'], listener['keyfile'])
|
except KeyError:
|
||||||
sc.verify_mode = ssl.CERT_OPTIONAL
|
max_connections = -1
|
||||||
except KeyError as ke:
|
|
||||||
raise BrokerException("'certfile' or 'keyfile' configuration parameter missing: %s" % ke)
|
|
||||||
except FileNotFoundError as fnfe:
|
|
||||||
raise BrokerException("Can't read cert files '%s' or '%s' : %s" %
|
|
||||||
(listener['certfile'], listener['keyfile'], fnfe))
|
|
||||||
|
|
||||||
if listener['type'] == 'tcp':
|
# SSL Context
|
||||||
address, port = listener['bind'].split(':')
|
sc = None
|
||||||
cb_partial = partial(self.stream_connected, listener_name=listener_name)
|
if 'ssl' in listener and listener['ssl'].upper() == 'ON':
|
||||||
instance = yield from asyncio.start_server(cb_partial,
|
try:
|
||||||
address,
|
sc = ssl.create_default_context(ssl.Purpose.CLIENT_AUTH)
|
||||||
port,
|
sc.load_cert_chain(listener['certfile'], listener['keyfile'])
|
||||||
ssl=sc,
|
sc.verify_mode = ssl.CERT_OPTIONAL
|
||||||
loop=self._loop)
|
except KeyError as ke:
|
||||||
self._servers[listener_name] = Server(listener_name, instance, max_connections, self._loop)
|
raise BrokerException("'certfile' or 'keyfile' configuration parameter missing: %s" % ke)
|
||||||
elif listener['type'] == 'ws':
|
except FileNotFoundError as fnfe:
|
||||||
address, port = listener['bind'].split(':')
|
raise BrokerException("Can't read cert files '%s' or '%s' : %s" %
|
||||||
cb_partial = partial(self.ws_connected, listener_name=listener_name)
|
(listener['certfile'], listener['keyfile'], fnfe))
|
||||||
instance = yield from websockets.serve(cb_partial, address, port, ssl=sc, loop=self._loop,
|
|
||||||
subprotocols=['mqtt'])
|
|
||||||
self._servers[listener_name] = Server(listener_name, instance, max_connections, self._loop)
|
|
||||||
|
|
||||||
self.logger.info("Listener '%s' bind to %s (max_connections=%d)" %
|
if listener['type'] == 'tcp':
|
||||||
(listener_name, listener['bind'], max_connections))
|
address, port = listener['bind'].split(':')
|
||||||
|
cb_partial = partial(self.stream_connected, listener_name=listener_name)
|
||||||
|
instance = yield from asyncio.start_server(cb_partial,
|
||||||
|
address,
|
||||||
|
port,
|
||||||
|
ssl=sc,
|
||||||
|
loop=self._loop)
|
||||||
|
self._servers[listener_name] = Server(listener_name, instance, max_connections, self._loop)
|
||||||
|
elif listener['type'] == 'ws':
|
||||||
|
address, port = listener['bind'].split(':')
|
||||||
|
cb_partial = partial(self.ws_connected, listener_name=listener_name)
|
||||||
|
instance = yield from websockets.serve(cb_partial, address, port, ssl=sc, loop=self._loop,
|
||||||
|
subprotocols=['mqtt'])
|
||||||
|
self._servers[listener_name] = Server(listener_name, instance, max_connections, self._loop)
|
||||||
|
|
||||||
|
self.logger.info("Listener '%s' bind to %s (max_connections=%d)" %
|
||||||
|
(listener_name, listener['bind'], max_connections))
|
||||||
|
|
||||||
self.transitions.starting_success()
|
self.transitions.starting_success()
|
||||||
yield from self.plugins_manager.fire_event(EVENT_BROKER_POST_START)
|
yield from self.plugins_manager.fire_event(EVENT_BROKER_POST_START)
|
||||||
|
|
Ładowanie…
Reference in New Issue