|
|
@@ -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) {
|