|
|
@@ -4136,19 +4136,120 @@ static void serviceManagement(void *conn)
|
|
|
{
|
|
|
int save_flag=0;
|
|
|
_MQTT_ServerRequestInfo *req=&_serviceManageRequestInfo._mqtt_info;
|
|
|
- mqtt_server_t *ser=&gdm->mqttInfo.ser[req->idx];
|
|
|
+ if (req->idx >= 0 && req->idx < MQTT_SER_MAX)
|
|
|
+ {
|
|
|
+ mqtt_server_t *ser = &gdm->mqttInfo.ser[req->idx];
|
|
|
+
|
|
|
+ int change_flag=0;
|
|
|
|
|
|
- if(req->idx |= ser->id) { ser->id = req->idx; save_flag=1; }
|
|
|
- if(req->name) { strcpy(ser->name, req->name); save_flag=1; }
|
|
|
- if(req->server) { strcpy(ser->server, req->server); save_flag=1; }
|
|
|
- if(req->port) { strcpy(ser->port, req->port); save_flag=1; }
|
|
|
- if(req->user) { strcpy(ser->user, req->user); save_flag=1; }
|
|
|
- if(req->password) { strcpy(ser->password, req->password); save_flag=1; }
|
|
|
- if(req->cid) { strcpy(ser->cid, req->cid); save_flag=1; }
|
|
|
+ if (req->idx |= ser->id)
|
|
|
+ {
|
|
|
+ ser->id = req->idx;
|
|
|
+ save_flag = 1;
|
|
|
+ }
|
|
|
+ if (req->name)
|
|
|
+ {
|
|
|
+ strcpy(ser->name, req->name);
|
|
|
+ save_flag = 1;
|
|
|
+ }
|
|
|
+ if (req->server)
|
|
|
+ {
|
|
|
+ if (!strcmp(ser->server, req->server))
|
|
|
+ change_flag = 1;
|
|
|
+ strcpy(ser->server, req->server);
|
|
|
+ save_flag = 1;
|
|
|
+ }
|
|
|
+ if (req->port)
|
|
|
+ {
|
|
|
+ if (!strcmp(ser->port, req->port))
|
|
|
+ change_flag = 1;
|
|
|
+ strcpy(ser->port, req->port);
|
|
|
+ save_flag = 1;
|
|
|
+ }
|
|
|
+ if (req->user)
|
|
|
+ {
|
|
|
+ if (!strcmp(ser->user, req->user))
|
|
|
+ change_flag = 1;
|
|
|
+ strcpy(ser->user, req->user);
|
|
|
+ save_flag = 1;
|
|
|
+ }
|
|
|
+ if (req->password)
|
|
|
+ {
|
|
|
+ if (!strcmp(ser->password, req->password))
|
|
|
+ change_flag = 1;
|
|
|
+ strcpy(ser->password, req->password);
|
|
|
+ save_flag = 1;
|
|
|
+ }
|
|
|
+ if (req->cid)
|
|
|
+ {
|
|
|
+ if (!strcmp(ser->cid, req->cid))
|
|
|
+ change_flag = 1;
|
|
|
+ strcpy(ser->cid, req->cid);
|
|
|
+ save_flag = 1;
|
|
|
+ }
|
|
|
|
|
|
- if(save_flag) {
|
|
|
- dev_mqtt_update_ser(gdm->db, ser);
|
|
|
+ if (save_flag)
|
|
|
+ {
|
|
|
+ if (change_flag)
|
|
|
+ {
|
|
|
+ ser->mode = 0;
|
|
|
+ }
|
|
|
+ dev_mqtt_update_ser(gdm->db, ser);
|
|
|
+ }
|
|
|
}
|
|
|
+ else if (req->idx == -1)
|
|
|
+ {
|
|
|
+ for (int i = 0; i < MQTT_SER_MAX; i++)
|
|
|
+ {
|
|
|
+ mqtt_server_t *ser = &gdm->mqttInfo.ser[i];
|
|
|
+
|
|
|
+ if (ser->id<0)
|
|
|
+ {
|
|
|
+ if (req->idx < 0)
|
|
|
+ {
|
|
|
+ ser->id = i;
|
|
|
+ save_flag = 1;
|
|
|
+ }
|
|
|
+ if (req->name)
|
|
|
+ {
|
|
|
+ strcpy(ser->name, req->name);
|
|
|
+ save_flag = 1;
|
|
|
+ }
|
|
|
+ if (req->server)
|
|
|
+ {
|
|
|
+ strcpy(ser->server, req->server);
|
|
|
+ save_flag = 1;
|
|
|
+ }
|
|
|
+ if (req->port)
|
|
|
+ {
|
|
|
+ strcpy(ser->port, req->port);
|
|
|
+ save_flag = 1;
|
|
|
+ }
|
|
|
+ if (req->user)
|
|
|
+ {
|
|
|
+ strcpy(ser->user, req->user);
|
|
|
+ save_flag = 1;
|
|
|
+ }
|
|
|
+ if (req->password)
|
|
|
+ {
|
|
|
+ strcpy(ser->password, req->password);
|
|
|
+ save_flag = 1;
|
|
|
+ }
|
|
|
+ if (req->cid)
|
|
|
+ {
|
|
|
+ strcpy(ser->cid, req->cid);
|
|
|
+ save_flag = 1;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (save_flag)
|
|
|
+ {
|
|
|
+ dev_mqtt_update_ser(gdm->db, ser);
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
}
|
|
|
else if(strcmp(_serviceManageRequestInfo.type,"mqttOpen")==0 ||
|
|
|
strcmp(_serviceManageRequestInfo.type,"mqttClose")==0)
|