Implemented MQTT user/password auth.

Sun, 27 Sep 2020 17:08:27 +0200

author
Michiel Broek <mbroek@mbse.eu>
date
Sun, 27 Sep 2020 17:08:27 +0200
changeset 610
5563ee815701
parent 609
ee433a47fc13
child 611
732d482f47c8

Implemented MQTT user/password auth.

thermferm/mqtt.c file | annotate | diff | comparison | revisions
--- a/thermferm/mqtt.c	Sat Sep 12 16:50:35 2020 +0200
+++ b/thermferm/mqtt.c	Sun Sep 27 17:08:27 2020 +0200
@@ -1580,6 +1580,9 @@
            case EINVAL:
                syslog(LOG_NOTICE, "MQTT: mosquitto_new: Invalid id");
                break;
+	   default:
+		syslog(LOG_NOTICE, "MQTT: mosquitto_new: Unknown error %d", errno);
+		break;
        }
        mosquitto_lib_cleanup();
        return;
@@ -1608,6 +1611,25 @@
     mosquitto_message_callback_set(mosq, my_message_callback);
     mosquitto_subscribe_callback_set(mosq, my_subscribe_callback);
 
+    if (Config.mqtt_username && Config.mqtt_password) {
+	syslog(LOG_NOTICE, "MQTT: mosquitto_username_pw_set(%s, %s)", Config.mqtt_username, Config.mqtt_password);
+	if ((rc = mosquitto_username_pw_set(mosq, Config.mqtt_username, Config.mqtt_password))) {
+	    switch(errno) {
+           	case ENOMEM:
+		    syslog(LOG_NOTICE, "MQTT: mosquitto_username_pw_set: Out of memory");
+               	    break;
+           	case EINVAL:
+		    syslog(LOG_NOTICE, "MQTT: mosquitto_username_pw_set: Invalid id");
+		    break;
+           	default:
+		    syslog(LOG_NOTICE, "MQTT: mosquitto_username_pw_set: Unknown error %d", errno);
+		    break;
+       	    }
+       	    mosquitto_lib_cleanup();
+       	    return;
+	}
+    }
+
     if ((rc = mosquitto_connect(mosq, Config.mqtt_host, Config.mqtt_port, keepalive))) {
         if (rc == MOSQ_ERR_ERRNO) {
             strerror_r(errno, err, 1024);

mercurial