瀏覽代碼

1、修改MQTT客户端默认client ID为随机方式。2、调整MQTT修改服务器信息后自动断开

liyuezong 1 年之前
父節點
當前提交
595382a63c
共有 4 個文件被更改,包括 26 次插入 和 10 次删除
  1. 6 6
      pro/src/appweb_handle.c
  2. 13 3
      pro/src/json_handle.c
  3. 1 1
      pro/src/json_handle.h
  4. 6 0
      pro/src/sqlite_handle.c

+ 6 - 6
pro/src/appweb_handle.c

@@ -570,7 +570,7 @@ static void loginFunc(void* conn)
     //}
 
     //获取随机token
-    get_rand_str(g_token,32);
+    get_rand_str(g_token,32,false);
 
     //记录token
     strcpy(_newUserLogin->user_token,g_token);
@@ -4154,35 +4154,35 @@ static void serviceManagement(void *conn)
             }
             if (req->server)
             {
-                if (!strcmp(ser->server, 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))
+                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))
+                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))
+                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))
+                if (strcmp(ser->cid, req->cid))
                     change_flag = 1;
                 strcpy(ser->cid, req->cid);
                 save_flag = 1;

+ 13 - 3
pro/src/json_handle.c

@@ -123,10 +123,20 @@ static int get_base64(buf_t *logo, buf_t *qrcode)
 //虽然也是使用的系统的时间函数来初始化随机数发生器,但程序的
 //执行速度太快了,可能执行1000次循环返回的秒数都是一样的
 //time返回时间戳
-void get_rand_str(char* s,int num)
+void get_rand_str(char* s,int num,bool lowercase)
 {
-    //定义随机生成字符串表
-    char *str = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz,./;\"'<>?";
+    // 定义随机生成字符串表
+    char str[256]; // 足够大的缓冲区
+
+    if (lowercase)
+    {
+        snprintf(str, sizeof(str), "0123456789abcdefghijklmnopqrstuvwxyz");
+    }
+    else
+    {
+        snprintf(str, sizeof(str), "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz,./;\"'<>?");
+    }
+
     int i,lstr;
     char ss[2] = {0};
     lstr = strlen(str);//计算字符串长度

+ 1 - 1
pro/src/json_handle.h

@@ -578,7 +578,7 @@ typedef struct
 char* ctrl_sts_ack_to_json(void);
 char* ctrl_breaker_err_ack_to_json(char *string);
 
-void get_rand_str(char* s,int num);
+void get_rand_str(char* s,int num,bool lowercase);
 char* json_to_Token_info(const char* strHead);
 int json_to_User_login_info(const char* str,_User_Log* _newUserLogin);
 int json_to_User_loginOut_info(const char* str,char** _UserLoginOutToken);

+ 6 - 0
pro/src/sqlite_handle.c

@@ -4951,6 +4951,12 @@ int dev_mqtt_init(sqlite3 *db, mqtt_info_t *info)
 
 #ifdef MQTT_SERVER_BUILTIN
         extern mqtt_info_t DFLT_MQTT;
+        char radstr[16] = {0};
+        get_rand_str(radstr, 8,true);
+        char cid[32] = {0};
+        sprintf(cid, "mqtt_%s", radstr);
+        strcpy(DFLT_MQTT.ser[0].cid, cid);
+
         dev_mqtt_update_info(db, &DFLT_MQTT);
 #endif
     }