Index: sysutils/py-mqttwarn/Makefile =================================================================== --- sysutils/py-mqttwarn/Makefile +++ sysutils/py-mqttwarn/Makefile @@ -1,8 +1,7 @@ # $FreeBSD$ PORTNAME= mqttwarn -DISTVERSION= 0.10.4 -PORTREVISION= 1 +DISTVERSION= 0.15.0 CATEGORIES= sysutils python PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX} @@ -12,14 +11,18 @@ LICENSE= EPL LICENSE_FILE= ${WRKSRC}/LICENSE -DEPRECATED= Uses deprecated version of python -EXPIRATION_DATE= 2020-08-15 - +RUN_DEPENDS+= ${PYTHON_PKGNAMEPREFIX}six>0:devel/py-six@${PY_FLAVOR} RUN_DEPENDS+= ${PYTHON_PKGNAMEPREFIX}paho-mqtt>=0:net/py-paho-mqtt@${PY_FLAVOR} +RUN_DEPENDS+= ${PYTHON_PKGNAMEPREFIX}Jinja2>0:devel/py-Jinja2@${PY_FLAVOR} +RUN_DEPENDS+= ${PYTHON_PKGNAMEPREFIX}attrs>=19.3.0:devel/py-attrs@${PY_FLAVOR} +RUN_DEPENDS+= ${PYTHON_PKGNAMEPREFIX}docopt>=0.6.2:devel/py-docopt@${PY_FLAVOR} +RUN_DEPENDS+= ${PYTHON_PKGNAMEPREFIX}requests>=2.22.0:www/py-requests@${PY_FLAVOR} +RUN_DEPENDS+= ${PYTHON_PKGNAMEPREFIX}future>=0.18.2:devel/py-future@${PY_FLAVOR} +RUN_DEPENDS+= ${PYTHON_PKGNAMEPREFIX}configparser>0:devel/py-configparser@${PY_FLAVOR} RUN_DEPENDS+= ${PYTHON_PKGNAMEPREFIX}supervisor>=0:sysutils/py-supervisor@${PY_FLAVOR} -USES= python:2.7 shebangfix -USE_PYTHON= flavors +USES= python:3.6+ shebangfix +USE_PYTHON= autoplist distutils SHEBANG_REGEX= '.*\.py$$' USE_GITHUB= yes GH_ACCOUNT= jpmens @@ -34,17 +37,19 @@ SUB_FILES= pkg-message post-patch: - @${REINPLACE_CMD} -e 's|MQTTWARN_LIBDIR|${PYTHON_SITELIBDIR}/${PORTNAME}/lib/|g' ${WRKSRC}/mqttwarn.ini.sample + @${REINPLACE_CMD} -e 's|MQTTWARN_LIBDIR|${PYTHON_SITELIBDIR}/${PORTNAME}/lib/|g' ${WRKSRC}/mqttwarn/examples/basic/mqttwarn.ini -do-build: - (cd ${WRKSRC} && ${PYTHON_CMD} -m compileall .) +#do-build: +# (cd ${WRKSRC} && ${PYTHON_CMD} ${PYTHON_LIBDIR}/compileall.py .) do-install: + (cd ${WRKSRC}/build && ${PYTHON_CMD} ${PYTHON_LIBDIR}/compileall.py .) ${MKDIR} ${STAGEDIR}/var/log/${PORTNAME} - ${INSTALL_SCRIPT} ${WRKSRC}/mqttwarn.py ${STAGEDIR}${PREFIX}/sbin/mqttwarn + ${INSTALL_SCRIPT} ${WRKSRC}/mqttwarn ${STAGEDIR}${PREFIX}/sbin/mqttwarn (cd ${WRKSRC}/etc && ${COPYTREE_SHARE} . ${STAGEDIR}${ETCDIR}) (cd ${WRKSRC}/services && ${COPYTREE_SHARE} . ${STAGEDIR}${PYTHON_SITELIBDIR}/${PORTNAME}/lib/services) - ${CP} ${WRKSRC}/mqttwarn.ini.sample ${STAGEDIR}${ETCDIR} + @${REINPLACE_CMD} 's|%%PYTHONPREFIX_SITELIBDIR%%|${PYTHONPREFIX_SITELIBDIR}|g' ${WRKSRC}/mqttwarn/examples/basic/mqttwarn.ini + ${CP} ${WRKSRC}/mqttwarn/examples/basic/mqttwarn.ini ${STAGEDIR}${ETCDIR}/mqttwarn.ini.sample do-install-DOCS-on: @${MKDIR} ${STAGEDIR}${DOCSDIR} Index: sysutils/py-mqttwarn/distinfo =================================================================== --- sysutils/py-mqttwarn/distinfo +++ sysutils/py-mqttwarn/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1540990308 -SHA256 (jpmens-mqttwarn-0.10.4_GH0.tar.gz) = a93cd520e622f57f416e01909f807754c485511dbbb2970c85cd479a971fbf73 -SIZE (jpmens-mqttwarn-0.10.4_GH0.tar.gz) = 790670 +TIMESTAMP = 1588261668 +SHA256 (jpmens-mqttwarn-0.15.0_GH0.tar.gz) = 29938ff47c17b077b1390260b766e111c3d75f81f5f07f0d5843d86a7b92e257 +SIZE (jpmens-mqttwarn-0.15.0_GH0.tar.gz) = 907873 Index: sysutils/py-mqttwarn/files/patch-examples_warntoggle_mqttwarn_customfunctions.py =================================================================== --- /dev/null +++ sysutils/py-mqttwarn/files/patch-examples_warntoggle_mqttwarn_customfunctions.py @@ -0,0 +1,11 @@ +--- examples/warntoggle/mqttwarn/customfunctions.py.orig 2020-04-30 16:00:58 UTC ++++ examples/warntoggle/mqttwarn/customfunctions.py +@@ -14,7 +14,7 @@ def togglestate(topic, payload, section, srv): + if topic in toggles: + # file found, topic found + topicblock = toggles[topic] +- srv.logging.debug('togglestate() was called from the ' + section + ' section and found ' + topic + ' in ' + filename) ++ srv.logging.debug('togglestate() was called from the ' + section + ' section and found ' + topic + ' in ' + filename) + else: + # file found, adding new topic + toggles[topic] = default_topicblock Index: sysutils/py-mqttwarn/files/patch-mqttwarn.ini.sample =================================================================== --- sysutils/py-mqttwarn/files/patch-mqttwarn.ini.sample +++ /dev/null @@ -1,10 +0,0 @@ ---- mqttwarn.ini.sample.orig 2018-03-26 17:57:16 UTC -+++ mqttwarn.ini.sample -@@ -14,6 +14,7 @@ clientid = 'mqttwarn' - lwt = 'clients/mqttwarn' - skipretained = False - cleansession = False -+libdir = /usr/local/lib/python2.7/site-packages/mqttwarn/lib/ - - # MQTTv31 = 3 (default) - # MQTTv311 = 4 Index: sysutils/py-mqttwarn/files/patch-mqttwarn.py =================================================================== --- sysutils/py-mqttwarn/files/patch-mqttwarn.py +++ /dev/null @@ -1,20 +0,0 @@ ---- mqttwarn.py.orig 2018-03-26 20:00:37 UTC -+++ mqttwarn.py -@@ -83,6 +83,8 @@ class Config(RawConfigParser): - self.cleansession = False - self.protocol = 3 - -+ self.libdir = '' -+ - self.logformat = '%(asctime)-15s %(levelname)-5s [%(module)s] %(message)s' - self.logfile = LOGFILE - self.loglevel = 'DEBUG' -@@ -999,7 +1001,7 @@ def load_services(services): - modulefile = 'services/%s.py' % module - - try: -- service_plugins[service]['module'] = load_module(modulefile) -+ service_plugins[service]['module'] = load_module(cf.libdir + '/' + modulefile) - logging.debug("Service %s loaded" % (service)) - except Exception, e: - logging.error("Can't load %s service (%s): %s" % (service, modulefile, str(e))) Index: sysutils/py-mqttwarn/files/patch-mqttwarn_core.py =================================================================== --- /dev/null +++ sysutils/py-mqttwarn/files/patch-mqttwarn_core.py @@ -0,0 +1,11 @@ +--- mqttwarn/core.py.orig 2020-02-24 14:41:12 UTC ++++ mqttwarn/core.py +@@ -496,7 +496,7 @@ def processor(worker_id=None): + logger.info("Invoking service plugin for `%s'" % service) + try: + # Fire the plugin in a separate thread and kill it if it doesn't return in 10s +- module = service_plugins[service]['module'] ++ module = service_plugins[service][cf.libdir + '/' + 'module'] + service_logger_name = 'mqttwarn.services.{}'.format(service) + srv = make_service(mqttc=mqttc, name=service_logger_name) + notified = timeout(module.plugin, (srv, st)) Index: sysutils/py-mqttwarn/files/patch-mqttwarn_examples_basic_mqttwarn.ini =================================================================== --- /dev/null +++ sysutils/py-mqttwarn/files/patch-mqttwarn_examples_basic_mqttwarn.ini @@ -0,0 +1,10 @@ +--- mqttwarn/examples/basic/mqttwarn.ini.orig 2020-02-24 14:35:15 UTC ++++ mqttwarn/examples/basic/mqttwarn.ini +@@ -23,6 +23,7 @@ clientid = 'mqttwarn' + lwt = 'clients/mqttwarn' + skipretained = False + cleansession = False ++libdir = %%PYTHONPREFIX_SITELIBDIR%%/mqttwarn/lib/ + + # MQTTv31 = 3 (default) + # MQTTv311 = 4 Index: sysutils/py-mqttwarn/files/patch-tests_bad__funcs.py =================================================================== --- /dev/null +++ sysutils/py-mqttwarn/files/patch-tests_bad__funcs.py @@ -0,0 +1,8 @@ +--- tests/bad_funcs.py.orig 2020-04-30 16:01:15 UTC ++++ tests/bad_funcs.py +@@ -3,4 +3,4 @@ + + def foobar(): + foo # intentional indentation error +- return True ++ return True Index: sysutils/py-mqttwarn/pkg-plist =================================================================== --- sysutils/py-mqttwarn/pkg-plist +++ /dev/null @@ -1,166 +0,0 @@ -%%ETCDIR%%/OpenWRT.init -%%ETCDIR%%/mqttwarn.default -%%ETCDIR%%/mqttwarn.init -%%ETCDIR%%/mqttwarn.logrotate -%%ETCDIR%%/mqttwarn.service -%%ETCDIR%%/supervisor.ini -%%ETCDIR%%/zabbix-template.xml -%%PORTDOCS%%%%DOCSDIR%%/README.md -%%PORTEXAMPLES%%%%EXAMPLESDIR%%/__init__.py -%%PORTEXAMPLES%%%%EXAMPLESDIR%%/__init__.pyc -%%PORTEXAMPLES%%%%EXAMPLESDIR%%/amqp-puka-get.py -%%PORTEXAMPLES%%%%EXAMPLESDIR%%/amqp-puka-get.pyc -%%PORTEXAMPLES%%%%EXAMPLESDIR%%/hiveeyes/__init__.py -%%PORTEXAMPLES%%%%EXAMPLESDIR%%/hiveeyes/__init__.pyc -%%PORTEXAMPLES%%%%EXAMPLESDIR%%/hiveeyes/hiveeyes.ini -%%PORTEXAMPLES%%%%EXAMPLESDIR%%/hiveeyes/hiveeyes.py -%%PORTEXAMPLES%%%%EXAMPLESDIR%%/hiveeyes/hiveeyes.pyc -%%PORTEXAMPLES%%%%EXAMPLESDIR%%/homie/__init__.py -%%PORTEXAMPLES%%%%EXAMPLESDIR%%/homie/__init__.pyc -%%PORTEXAMPLES%%%%EXAMPLESDIR%%/homie/homie.ini -%%PORTEXAMPLES%%%%EXAMPLESDIR%%/homie/homie.py -%%PORTEXAMPLES%%%%EXAMPLESDIR%%/homie/homie.pyc -%%PORTEXAMPLES%%%%EXAMPLESDIR%%/zabbix/zabbix_mqtt_agent.py -%%PORTEXAMPLES%%%%EXAMPLESDIR%%/zabbix/zabbix_mqtt_agent.pyc -%%PYTHON_SITELIBDIR%%/mqttwarn/lib/services/README.md -%%PYTHON_SITELIBDIR%%/mqttwarn/lib/services/amqp.py -%%PYTHON_SITELIBDIR%%/mqttwarn/lib/services/amqp.pyc -%%PYTHON_SITELIBDIR%%/mqttwarn/lib/services/apns.py -%%PYTHON_SITELIBDIR%%/mqttwarn/lib/services/apns.pyc -%%PYTHON_SITELIBDIR%%/mqttwarn/lib/services/asterisk.py -%%PYTHON_SITELIBDIR%%/mqttwarn/lib/services/asterisk.pyc -%%PYTHON_SITELIBDIR%%/mqttwarn/lib/services/autoremote.py -%%PYTHON_SITELIBDIR%%/mqttwarn/lib/services/autoremote.pyc -%%PYTHON_SITELIBDIR%%/mqttwarn/lib/services/carbon.py -%%PYTHON_SITELIBDIR%%/mqttwarn/lib/services/carbon.pyc -%%PYTHON_SITELIBDIR%%/mqttwarn/lib/services/celery.py -%%PYTHON_SITELIBDIR%%/mqttwarn/lib/services/celery.pyc -%%PYTHON_SITELIBDIR%%/mqttwarn/lib/services/dbus.py -%%PYTHON_SITELIBDIR%%/mqttwarn/lib/services/dbus.pyc -%%PYTHON_SITELIBDIR%%/mqttwarn/lib/services/dnsupdate.py -%%PYTHON_SITELIBDIR%%/mqttwarn/lib/services/dnsupdate.pyc -%%PYTHON_SITELIBDIR%%/mqttwarn/lib/services/emoncms.py -%%PYTHON_SITELIBDIR%%/mqttwarn/lib/services/emoncms.pyc -%%PYTHON_SITELIBDIR%%/mqttwarn/lib/services/execute.py -%%PYTHON_SITELIBDIR%%/mqttwarn/lib/services/execute.pyc -%%PYTHON_SITELIBDIR%%/mqttwarn/lib/services/fbchat.py -%%PYTHON_SITELIBDIR%%/mqttwarn/lib/services/fbchat.pyc -%%PYTHON_SITELIBDIR%%/mqttwarn/lib/services/file.py -%%PYTHON_SITELIBDIR%%/mqttwarn/lib/services/file.pyc -%%PYTHON_SITELIBDIR%%/mqttwarn/lib/services/freeswitch.py -%%PYTHON_SITELIBDIR%%/mqttwarn/lib/services/freeswitch.pyc -%%PYTHON_SITELIBDIR%%/mqttwarn/lib/services/gss.py -%%PYTHON_SITELIBDIR%%/mqttwarn/lib/services/gss.pyc -%%PYTHON_SITELIBDIR%%/mqttwarn/lib/services/gss2.py -%%PYTHON_SITELIBDIR%%/mqttwarn/lib/services/gss2.pyc -%%PYTHON_SITELIBDIR%%/mqttwarn/lib/services/hangbot.py -%%PYTHON_SITELIBDIR%%/mqttwarn/lib/services/hangbot.pyc -%%PYTHON_SITELIBDIR%%/mqttwarn/lib/services/hipchat.py -%%PYTHON_SITELIBDIR%%/mqttwarn/lib/services/hipchat.pyc -%%PYTHON_SITELIBDIR%%/mqttwarn/lib/services/http.py -%%PYTHON_SITELIBDIR%%/mqttwarn/lib/services/http.pyc -%%PYTHON_SITELIBDIR%%/mqttwarn/lib/services/icinga2.py -%%PYTHON_SITELIBDIR%%/mqttwarn/lib/services/icinga2.pyc -%%PYTHON_SITELIBDIR%%/mqttwarn/lib/services/ifttt.py -%%PYTHON_SITELIBDIR%%/mqttwarn/lib/services/ifttt.pyc -%%PYTHON_SITELIBDIR%%/mqttwarn/lib/services/influxdb.py -%%PYTHON_SITELIBDIR%%/mqttwarn/lib/services/influxdb.pyc -%%PYTHON_SITELIBDIR%%/mqttwarn/lib/services/instapush.py -%%PYTHON_SITELIBDIR%%/mqttwarn/lib/services/instapush.pyc -%%PYTHON_SITELIBDIR%%/mqttwarn/lib/services/ionic.py -%%PYTHON_SITELIBDIR%%/mqttwarn/lib/services/ionic.pyc -%%PYTHON_SITELIBDIR%%/mqttwarn/lib/services/iothub.py -%%PYTHON_SITELIBDIR%%/mqttwarn/lib/services/iothub.pyc -%%PYTHON_SITELIBDIR%%/mqttwarn/lib/services/irccat.py -%%PYTHON_SITELIBDIR%%/mqttwarn/lib/services/irccat.pyc -%%PYTHON_SITELIBDIR%%/mqttwarn/lib/services/linuxnotify.py -%%PYTHON_SITELIBDIR%%/mqttwarn/lib/services/linuxnotify.pyc -%%PYTHON_SITELIBDIR%%/mqttwarn/lib/services/log.py -%%PYTHON_SITELIBDIR%%/mqttwarn/lib/services/log.pyc -%%PYTHON_SITELIBDIR%%/mqttwarn/lib/services/mattermost.py -%%PYTHON_SITELIBDIR%%/mqttwarn/lib/services/mattermost.pyc -%%PYTHON_SITELIBDIR%%/mqttwarn/lib/services/mqtt.py -%%PYTHON_SITELIBDIR%%/mqttwarn/lib/services/mqtt.pyc -%%PYTHON_SITELIBDIR%%/mqttwarn/lib/services/mqttpub.py -%%PYTHON_SITELIBDIR%%/mqttwarn/lib/services/mqttpub.pyc -%%PYTHON_SITELIBDIR%%/mqttwarn/lib/services/mysql.py -%%PYTHON_SITELIBDIR%%/mqttwarn/lib/services/mysql.pyc -%%PYTHON_SITELIBDIR%%/mqttwarn/lib/services/mysql_dynamic.py -%%PYTHON_SITELIBDIR%%/mqttwarn/lib/services/mysql_dynamic.pyc -%%PYTHON_SITELIBDIR%%/mqttwarn/lib/services/mysql_remap.py -%%PYTHON_SITELIBDIR%%/mqttwarn/lib/services/mysql_remap.pyc -%%PYTHON_SITELIBDIR%%/mqttwarn/lib/services/mythtv.py -%%PYTHON_SITELIBDIR%%/mqttwarn/lib/services/mythtv.pyc -%%PYTHON_SITELIBDIR%%/mqttwarn/lib/services/nntp.py -%%PYTHON_SITELIBDIR%%/mqttwarn/lib/services/nntp.pyc -%%PYTHON_SITELIBDIR%%/mqttwarn/lib/services/nsca.py -%%PYTHON_SITELIBDIR%%/mqttwarn/lib/services/nsca.pyc -%%PYTHON_SITELIBDIR%%/mqttwarn/lib/services/osxnotify.py -%%PYTHON_SITELIBDIR%%/mqttwarn/lib/services/osxnotify.pyc -%%PYTHON_SITELIBDIR%%/mqttwarn/lib/services/osxsay.py -%%PYTHON_SITELIBDIR%%/mqttwarn/lib/services/osxsay.pyc -%%PYTHON_SITELIBDIR%%/mqttwarn/lib/services/pastebinpub.py -%%PYTHON_SITELIBDIR%%/mqttwarn/lib/services/pastebinpub.pyc -%%PYTHON_SITELIBDIR%%/mqttwarn/lib/services/pipe.py -%%PYTHON_SITELIBDIR%%/mqttwarn/lib/services/pipe.pyc -%%PYTHON_SITELIBDIR%%/mqttwarn/lib/services/postgres.py -%%PYTHON_SITELIBDIR%%/mqttwarn/lib/services/postgres.pyc -%%PYTHON_SITELIBDIR%%/mqttwarn/lib/services/prowl.py -%%PYTHON_SITELIBDIR%%/mqttwarn/lib/services/prowl.pyc -%%PYTHON_SITELIBDIR%%/mqttwarn/lib/services/pushalot.py -%%PYTHON_SITELIBDIR%%/mqttwarn/lib/services/pushalot.pyc -%%PYTHON_SITELIBDIR%%/mqttwarn/lib/services/pushbullet.py -%%PYTHON_SITELIBDIR%%/mqttwarn/lib/services/pushbullet.pyc -%%PYTHON_SITELIBDIR%%/mqttwarn/lib/services/pushover.py -%%PYTHON_SITELIBDIR%%/mqttwarn/lib/services/pushover.pyc -%%PYTHON_SITELIBDIR%%/mqttwarn/lib/services/pushsafer.py -%%PYTHON_SITELIBDIR%%/mqttwarn/lib/services/pushsafer.pyc -%%PYTHON_SITELIBDIR%%/mqttwarn/lib/services/redispub.py -%%PYTHON_SITELIBDIR%%/mqttwarn/lib/services/redispub.pyc -%%PYTHON_SITELIBDIR%%/mqttwarn/lib/services/rrdtool.py -%%PYTHON_SITELIBDIR%%/mqttwarn/lib/services/rrdtool.pyc -%%PYTHON_SITELIBDIR%%/mqttwarn/lib/services/serial.py -%%PYTHON_SITELIBDIR%%/mqttwarn/lib/services/serial.pyc -%%PYTHON_SITELIBDIR%%/mqttwarn/lib/services/slack.py -%%PYTHON_SITELIBDIR%%/mqttwarn/lib/services/slack.pyc -%%PYTHON_SITELIBDIR%%/mqttwarn/lib/services/smtp.py -%%PYTHON_SITELIBDIR%%/mqttwarn/lib/services/smtp.pyc -%%PYTHON_SITELIBDIR%%/mqttwarn/lib/services/sqlite.py -%%PYTHON_SITELIBDIR%%/mqttwarn/lib/services/sqlite.pyc -%%PYTHON_SITELIBDIR%%/mqttwarn/lib/services/sqlite_json2cols.py -%%PYTHON_SITELIBDIR%%/mqttwarn/lib/services/sqlite_json2cols.pyc -%%PYTHON_SITELIBDIR%%/mqttwarn/lib/services/sqlite_timestamp.py -%%PYTHON_SITELIBDIR%%/mqttwarn/lib/services/sqlite_timestamp.pyc -%%PYTHON_SITELIBDIR%%/mqttwarn/lib/services/ssh.py -%%PYTHON_SITELIBDIR%%/mqttwarn/lib/services/ssh.pyc -%%PYTHON_SITELIBDIR%%/mqttwarn/lib/services/syslog.py -%%PYTHON_SITELIBDIR%%/mqttwarn/lib/services/syslog.pyc -%%PYTHON_SITELIBDIR%%/mqttwarn/lib/services/telegram.py -%%PYTHON_SITELIBDIR%%/mqttwarn/lib/services/telegram.pyc -%%PYTHON_SITELIBDIR%%/mqttwarn/lib/services/thingspeak.py -%%PYTHON_SITELIBDIR%%/mqttwarn/lib/services/thingspeak.pyc -%%PYTHON_SITELIBDIR%%/mqttwarn/lib/services/tootpaste.py -%%PYTHON_SITELIBDIR%%/mqttwarn/lib/services/tootpaste.pyc -%%PYTHON_SITELIBDIR%%/mqttwarn/lib/services/twilio.py -%%PYTHON_SITELIBDIR%%/mqttwarn/lib/services/twilio.pyc -%%PYTHON_SITELIBDIR%%/mqttwarn/lib/services/twitter.py -%%PYTHON_SITELIBDIR%%/mqttwarn/lib/services/twitter.pyc -%%PYTHON_SITELIBDIR%%/mqttwarn/lib/services/websocket.py -%%PYTHON_SITELIBDIR%%/mqttwarn/lib/services/websocket.pyc -%%PYTHON_SITELIBDIR%%/mqttwarn/lib/services/xbmc.py -%%PYTHON_SITELIBDIR%%/mqttwarn/lib/services/xbmc.pyc -%%PYTHON_SITELIBDIR%%/mqttwarn/lib/services/xively.py -%%PYTHON_SITELIBDIR%%/mqttwarn/lib/services/xively.pyc -%%PYTHON_SITELIBDIR%%/mqttwarn/lib/services/xmpp.py -%%PYTHON_SITELIBDIR%%/mqttwarn/lib/services/xmpp.pyc -%%PYTHON_SITELIBDIR%%/mqttwarn/lib/services/zabbix.py -%%PYTHON_SITELIBDIR%%/mqttwarn/lib/services/zabbix.pyc -@sample %%ETCDIR%%/mqttwarn.ini.sample -sbin/mqttwarn -@mode 755 -@owner mqttwarn -@group mqttwarn -@dir /var/log/mqttwarn -@mode -@owner -@group