Parcourir la source

Merge branch 'master' of http://jiecheng2024.tpddns.cn:3000/liyuezong/SmartPDCode

liyi il y a 1 an
Parent
commit
4f83eb2c9a
4 fichiers modifiés avec 28 ajouts et 13 suppressions
  1. 2 1
      pro/src/appweb_handle.c
  2. 7 2
      pro/src/json_handle.c
  3. 1 1
      pro/src/json_handle.h
  4. 18 9
      pro/src/websocket_handle.c

+ 2 - 1
pro/src/appweb_handle.c

@@ -457,6 +457,7 @@ static void systemConfiguration(void* conn)
     mg_stream_t *s=(mg_stream_t *)conn;
     struct mg_http_message *hm=s->ev_data;
     char* rx_Head_buf=(char *)hm->head.buf;
+    int tls=s->c->is_tls;
 
     g_token = json_to_Token_info(rx_Head_buf);
     // 检查token是否有效
@@ -466,7 +467,7 @@ static void systemConfiguration(void* conn)
     }
     else
     {
-        ack_str = json_to_system_config_info();
+        ack_str = json_to_system_config_info(tls);
     }
     http_reply(conn, 200, ack_str);
 

+ 7 - 2
pro/src/json_handle.c

@@ -1135,7 +1135,7 @@ cJSON* json_to_over_equipment_mintenance(const char* str,_Equipment_Mintenance*
 }
 /// @brief 返回系统信息
 /// @return 
-char* json_to_system_config_info(void)
+char* json_to_system_config_info(int tls)
 {
     char* str = NULL;
     buf_t logo={NULL,0,0};
@@ -1153,7 +1153,12 @@ char* json_to_system_config_info(void)
     
     //返回websockt
     char strIPInfo[64] = "ws://192.168.1.132:6785/websocket/";
-    sprintf(strIPInfo,"ws://%s:6785/websocket/", getLocalIpAddress("eth0"));
+    if(tls) {
+        sprintf(strIPInfo,"wss://%s:6786/websocket/", getLocalIpAddress("eth0"));
+    }
+    else {
+        sprintf(strIPInfo,"ws://%s:6785/websocket/", getLocalIpAddress("eth0"));
+    }
     cJSON_AddStringToObject(data_field,"webSocket",strIPInfo); 
     
     get_base64(&logo, NULL);

+ 1 - 1
pro/src/json_handle.h

@@ -568,7 +568,7 @@ char* log_AthFailedinfo_to_json();
 char* user_info_to_json(void);
 char* user_routers_info_to_json(void);
 
-char* json_to_system_config_info(void);
+char* json_to_system_config_info(int tls);
 
 
 cJSON* json_to_overall_status_monitor(const char* str,_Over_All_Sts_Monitor* _over_all_sts_monitor);

+ 18 - 9
pro/src/websocket_handle.c

@@ -5,6 +5,7 @@
 #include "common.h"
 #include "sys.h"
 #include "lock.h"
+#include "file.h"
 #include "thread.h"
 #include "sqlite_handle.h"
 #include "json_handle.h"
@@ -21,12 +22,13 @@ typedef struct mg_mgr           mg_mgr_t;
 typedef struct mg_connection    mg_conn_t;
 typedef struct mg_ws_message    mg_ws_msg_t;
 typedef struct mg_http_message  mg_http_msg_t;
-
+typedef struct mg_tls_opts      mg_tls_t;
 
 typedef struct {
     mg_mgr_t  mgr;
     char      wpath[200];
     char      root[200];
+    mg_tls_t  tls;
 
     mg_conn_t *c;
     int       inited;
@@ -83,12 +85,6 @@ static int ws_send_data(ws_handle_t *wh, void *data, int len)
 }
 
 
-static void read_ipaddr(ws_handle_t *h)
-{ 
-  sprintf(h->wpath,"ws://%s:6785", getLocalIpAddress("eth0"));
-  printf("____ ws path: %s\n", h->wpath);
-}
-
 static void web_update(ws_handle_t *wh)
 {
     GlobalSensorManger* _globalSensorMangerTemp;
@@ -248,6 +244,14 @@ static void fn(mg_conn_t *c, int ev, void *ev_data)
     }
     break;
 
+    case MG_EV_ACCEPT:
+    {
+        if (c->fn_data) {
+            mg_tls_init(c, &wh->tls);
+        }
+    }
+    break;
+
     case MG_EV_HTTP_MSG:
     {
         mg_http_msg_t *hm = (mg_http_msg_t *) ev_data;
@@ -276,11 +280,16 @@ void* ws_thread(void* arg)
     int r;
     thread_handle_t *h=(thread_handle_t*)arg;
     ws_handle_t *wh=(ws_handle_t*)h->arg;
-    const char *listen_addr="ws://[::]:6785";
+    const char *ws_addr="ws://[::]:6785";
+    const char *wss_addr="wss://[::]:6786";
 
     //mg_log_set(MG_LL_DEBUG);
     mg_mgr_init(&wh->mgr);  // Initialise event manager
-    mg_http_listen(&wh->mgr, listen_addr, fn, NULL);  // Create HTTP listener
+    mg_http_listen(&wh->mgr, ws_addr, fn, NULL);  // Create HTTP listener
+    mg_http_listen(&wh->mgr, wss_addr, fn, (void*)1);
+
+    wh->tls.cert = mg_str(file_load2("/root/run/app/cert/server.crt"));
+    wh->tls.key = mg_str(file_load2("/root/run/app/cert/server.key"));
     wh->inited = 1;
 
     while(h->quit==0) {