async def main(*args, **kwargs): arguments = docopt(__doc__, version=get_version()) #print(arguments) formatter = "[%(asctime)s] :: %(levelname)s - %(message)s" if arguments['-d']: level = logging.DEBUG else: level = logging.INFO logging.basicConfig(level=level, format=formatter) config = None if arguments['-c']: config = read_yaml_config(arguments['-c']) else: config = read_yaml_config(os.path.join(os.path.dirname(os.path.realpath(__file__)), 'default_client.yaml')) logger.debug("Using default configuration") client_id = arguments.get("-i", None) if not client_id: client_id = _gen_client_id() if arguments['-k']: config['keep_alive'] = int(arguments['-k']) if arguments['--will-topic'] and arguments['--will-message'] and arguments['--will-qos']: config['will'] = dict() config['will']['topic'] = arguments['--will-topic'] config['will']['message'] = arguments['--will-message'].encode('utf-8') config['will']['qos'] = int(arguments['--will-qos']) config['will']['retain'] = arguments['--will-retain'] async with open_mqttclient(client_id=client_id, config=config) as C: await do_pub(C, arguments)
def main(*args, **kwargs): if sys.version_info[:2] < (3, 4): logger.fatal("Error: Python 3.4+ is required") sys.exit(-1) arguments = docopt(__doc__, version=get_version()) formatter = "[%(asctime)s] :: %(levelname)s - %(message)s" #debug mode if arguments['-d']: level = logging.DEBUG else: level = logging.INFO logging.basicConfig(level=level, format=formatter) config = None if arguments['-c']: config = read_yaml_config(arguments['-c']) else: config = read_yaml_config( os.path.join(os.path.dirname(os.path.realpath(__file__)), 'config.yaml')) logger.debug("Using default configuration") loop = asyncio.get_event_loop() #啟動broker broker = Broker(config) try: loop.run_until_complete(broker.start()) loop.run_forever() except KeyboardInterrupt: loop.run_until_complete(broker.shutdown()) finally: loop.close()
def main(*args, **kwargs): if sys.version_info[:2] < (3, 4): logger.fatal("Error: Python 3.4+ is required") sys.exit(-1) arguments = docopt(__doc__, version=get_version()) formatter = "[%(asctime)s] :: %(levelname)s - %(message)s" if arguments['-d']: level = logging.DEBUG else: level = logging.INFO logging.basicConfig(level=level, format=formatter) config = None if arguments['-c']: config = read_yaml_config(arguments['-c']) else: config = read_yaml_config(os.path.join(os.path.dirname(os.path.realpath(__file__)), 'default_broker.yaml')) logger.debug("Using default configuration") loop = asyncio.get_event_loop() broker = Broker(config) try: loop.run_until_complete(broker.start()) loop.run_forever() except KeyboardInterrupt: loop.run_until_complete(broker.shutdown()) finally: loop.close()
def _init_dollar_sys(self): """ Initializes and publish $SYS static topics """ from hbmqtt.version import get_version self.sys_handle = None version = 'HBMQTT version ' + get_version() self.retain_message(None, DOLLAR_SYS_ROOT + 'version', version.encode())
def on_broker_post_start(self, *args, **kwargs): self._stats[STAT_START_TIME] = datetime.now() from hbmqtt.version import get_version version = 'HBMQTT version ' + get_version() self.context.retain_message(DOLLAR_SYS_ROOT + 'version', version.encode()) # Start $SYS topics management try: sys_interval = int(self.context.config.get('sys_interval', 0)) if sys_interval > 0: self.context.logger.debug("Setup $SYS broadcasting every %d secondes" % sys_interval) self.sys_handle = self.context.loop.call_later(sys_interval, self.broadcast_dollar_sys_topics) else: self.context.logger.debug("$SYS disabled") except KeyError: pass
def main(*args, **kwargs): if sys.version_info[:2] < (3, 4): logger.fatal("Error: Python 3.4+ is required") sys.exit(-1) arguments = docopt(__doc__, version=get_version()) #print(arguments) formatter = "[%(asctime)s] :: %(levelname)s - %(message)s" if arguments['-d']: level = logging.DEBUG else: level = logging.INFO logging.basicConfig(level=level, format=formatter) config = None if arguments['-c']: config = read_yaml_config(arguments['-c']) else: config = read_yaml_config( os.path.join(os.path.dirname(os.path.realpath(__file__)), 'default_client.yaml')) logger.debug( os.path.join(os.path.dirname(os.path.realpath(__file__)), 'default_client.yaml')) logger.debug("Using default configuration") loop = asyncio.get_event_loop() client_id = arguments.get("-i", None) if not client_id: client_id = _gen_client_id() if arguments['-k']: config['keep_alive'] = int(arguments['-k']) if arguments['--will-topic'] and arguments['--will-message'] and arguments[ '--will-qos']: config['will'] = dict() config['will']['topic'] = arguments['--will-topic'] config['will']['message'] = arguments['--will-message'].encode('utf-8') config['will']['qos'] = int(arguments['--will-qos']) config['will']['retain'] = arguments['--will-retain'] client = MQTTClient(client_id=client_id, config=config, loop=loop) loop.run_until_complete(do_sub(client, arguments)) loop.close()
async def main(*args, **kwargs): arguments = docopt(__doc__, version=get_version()) formatter = "[%(asctime)s] :: %(levelname)s - %(message)s" if arguments['-d']: level = logging.DEBUG else: level = logging.INFO logging.basicConfig(level=level, format=formatter) config = None if arguments['-c']: config = read_yaml_config(arguments['-c']) else: config = read_yaml_config(os.path.join(os.path.dirname(os.path.realpath(__file__)), 'default_broker.yaml')) logger.debug("Using default configuration") async with create_broker(config) as broker: while True: await anyio.sleep(99999)
def main(*args, **kwargs): if sys.version_info[:2] < (3, 4): logger.fatal("Error: Python 3.4+ is required") sys.exit(-1) arguments = docopt(__doc__, version=get_version()) #print(arguments) formatter = "[%(asctime)s] :: %(levelname)s - %(message)s" if arguments['-d']: level = logging.DEBUG else: level = logging.INFO logging.basicConfig(level=level, format=formatter) config = None if arguments['-c']: config = read_yaml_config(arguments['-c']) else: config = read_yaml_config(os.path.join(os.path.dirname(os.path.realpath(__file__)), 'default_client.yaml')) logger.debug(os.path.join(os.path.dirname(os.path.realpath(__file__)), 'default_client.yaml')) logger.debug("Using default configuration") loop = asyncio.get_event_loop() client_id = arguments.get("-i", None) if not client_id: client_id = _gen_client_id() if arguments['-k']: config['keep_alive'] = int(arguments['-k']) if arguments['--will-topic'] and arguments['--will-message'] and arguments['--will-qos']: config['will'] = dict() config['will']['topic'] = arguments['--will-topic'] config['will']['message'] = arguments['--will-message'].encode('utf-8') config['will']['qos'] = int(arguments['--will-qos']) config['will']['retain'] = arguments['--will-retain'] client = MQTTClient(client_id=client_id, config=config, loop=loop) loop.run_until_complete(do_sub(client, arguments)) loop.close()
async def on_broker_post_start(self, *args, **kwargs): self._stats[STAT_START_TIME] = datetime.now() from hbmqtt.version import get_version version = 'HBMQTT version ' + get_version() await self.context.broadcast_message(DOLLAR_SYS_ROOT + 'version', version.encode(), retain=True) # Start $SYS topics management try: sys_interval = int(self.context.config.get('sys_interval', 0)) if sys_interval > 0: self.context.logger.debug( "Setup $SYS broadcasting every %d secondes", sys_interval) evt = anyio.create_event() await self.context._broker_instance._tg.spawn( self.broadcast_dollar_sys_topics_loop, sys_interval, evt) await evt.wait() else: self.context.logger.debug("$SYS disabled") except KeyError: pass
# Copyright (c) 2015 Nicolas JOUANIN # # See the file license.txt for copying permission. from setuptools import setup, find_packages from hbmqtt.version import get_version setup( name="hbmqtt", version=get_version(), description="MQTT client/broker using Python 3.4 asyncio library", author="Nicolas Jouanin", author_email='*****@*****.**', url="https://github.com/beerfactory/hbmqtt", license='MIT', packages=find_packages(exclude=['tests']), include_package_data=True, platforms='all', install_requires=[ 'transitions', 'websockets', 'passlib', 'docopt', 'pyyaml' ], classifiers=[ 'Development Status :: 3 - Alpha', 'Intended Audience :: Developers', 'License :: OSI Approved :: MIT License', 'Operating System :: POSIX', 'Operating System :: MacOS', 'Operating System :: Microsoft :: Windows', 'Programming Language :: Python :: 3.4', 'Programming Language :: Python :: 3.5', 'Programming Language :: Python :: 3.6', 'Topic :: Communications', 'Topic :: Internet' ],
def main(*args, **kwargs): if sys.version_info[:2] < (3, 4): logger.fatal("Error: Python 3.4+ is required") sys.exit(-1) arguments = docopt(__doc__, version=get_version()) formatter = "[%(asctime)s] :: %(levelname)s - %(message)s" if arguments['-d']: level = logging.DEBUG else: level = logging.INFO logging.basicConfig(level=level, format=formatter) config = None if arguments['-c']: config = read_yaml_config(arguments['-c']) else: config = read_yaml_config(os.path.join(os.path.dirname(os.path.realpath(__file__)), 'default_client.yaml')) logger.debug("Using default configuration") loop = asyncio.get_event_loop() client_id = arguments.get("-i", None) if not client_id: client_id = _gen_client_id() if arguments['-k']: config['keep_alive'] = int(arguments['-k']) if arguments['--will-topic'] and arguments['--will-message'] and arguments['--will-qos']: config['will'] = dict() config['will']['topic'] = arguments['--will-topic'] config['will']['message'] = arguments['--will-message'].encode('utf-8') config['will']['qos'] = int(arguments['--will-qos']) config['will']['retain'] = arguments['--will-retain'] if arguments['--schnorr'] or arguments['--ecdsa']: arguments['--clean-session'] = True msg = schnorr.hash_sha256( datetime.datetime.utcnow().isoformat()[:18] + client_id ) if arguments['--schnorr'] is not None: arg = _load_if_is_file(arguments["--schnorr"]) prk = schnorr.hash_sha256(arg) sig = binascii.hexlify(schnorr.sign(msg, prk)) else: arg = _load_if_is_file(arguments["--ecdsa"]) prk = ecdsa.hash_sha256(arg) sig = binascii.hexlify(ecdsa.sign(msg, prk)) parse = urlparse.urlparse(arguments["--url"]) puk = binascii.hexlify( schnorr.encoded_from_point( schnorr.G * schnorr.int.from_bytes(prk, byteorder="big") ) ) arguments["--url"] = urlparse.urlunparse( parse._replace(netloc="%s:%s@%s" % ( puk.decode("utf-8"), sig.decode("utf-8"), parse.netloc.split("@")[-1] )) ) client = MQTTClient(client_id=client_id, config=config, loop=loop) loop.run_until_complete(do_pub(client, arguments)) loop.close()
# Copyright (c) 2015 Nicolas JOUANIN # # See the file license.txt for copying permission. from setuptools import setup, find_packages from hbmqtt.version import get_version setup( name="hbmqtt", version=get_version(), description="HBMQTT - HomeBrew MQTT\nclient/brocker using Python 3.4 asyncio library", author="Nicolas Jouanin", author_email="*****@*****.**", url="https://github.com/beerfactory/hbmqtt", license="MIT", packages=find_packages(exclude=["tests"]), install_requires=["transitions==0.2.5", "blinker", "websockets"], classifiers=[ "Development Status :: 3 - Alpha", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Operating System :: POSIX", "Operating System :: MacOS", "Operating System :: Microsoft :: Windows", "Programming Language :: Python :: 3.4", "Topic :: Communications", "Topic :: Internet", ], )