Просмотр исходного кода

1、解决恢复出厂设置异常
2、将全局变量的定义放在c,声明放在h中
3、更新7.15版web

guohui лет назад: 2
Родитель
Сommit
0e0e824407

BIN
output/t113i/root/run/web/978061e6b37737b696c2cdd88c6448da.png


Разница между файлами не показана из-за своего большого размера
+ 1 - 1
output/t113i/root/run/web/index.html


Разница между файлами не показана из-за своего большого размера
+ 1 - 0
output/t113i/root/run/web/js/app.470a38f3.js


+ 11 - 0
pro/src/common.c

@@ -12,6 +12,17 @@
 #undef LOG_TAG
 #define LOG_TAG    "main"
 
+
+GlobalDeviceManager __globalDeviceManage;
+GlobalDeviceManager __globalDeviceManage2;
+
+unsigned long __globalSxIdx;
+NTPClient* globalNTPclient;
+_User_Log _GlobalUserLoginInfo;
+UserInfo _GlobalUserInfoNew;
+char _GlobalUserToken[64];
+MenuAuthority _GlobalMenuAuthority;
+
 void printf_global_device_info(GlobalDeviceInfo* _globalDeviceInfo)
 {
     log_d("******global device info********* ");

+ 8 - 10
pro/src/common.h

@@ -841,19 +841,17 @@ typedef struct
     cascade_single_mmap_t *single_mmap;
     cascade_triphasic_mmap_t *triphasic_mmap;
 }GlobalDeviceManager;
-GlobalDeviceManager __globalDeviceManage;
-GlobalDeviceManager __globalDeviceManage2;
 
-NTPClient* globalNTPclient;
-bool bStopNTPthread;
-pthread_t NTPthread;
+extern GlobalDeviceManager __globalDeviceManage;
+extern GlobalDeviceManager __globalDeviceManage2;
 
-unsigned long __globalSxIdx;
+extern NTPClient* globalNTPclient;
+extern unsigned long __globalSxIdx;
 
-_User_Log _GlobalUserLoginInfo;//全局用户登录信息
-UserInfo _GlobalUserInfoNew;////最近登录的信息
-char _GlobalUserToken[64];////最近登录的信息
-MenuAuthority _GlobalMenuAuthority;////角色菜单权限
+extern _User_Log _GlobalUserLoginInfo;//全局用户登录信息
+extern UserInfo _GlobalUserInfoNew;////最近登录的信息
+extern char _GlobalUserToken[64];////最近登录的信息
+extern MenuAuthority _GlobalMenuAuthority;////角色菜单权限
 
 void initLogger(void);
 

+ 16 - 0
pro/src/file.c

@@ -91,6 +91,22 @@ int file_load(char* path, buf_t *fbuf)
 }
 
 
+int file_copy(char *dst, char *src)
+{
+    int r;
+    buf_t fbuf;
+
+    remove(dst);
+    r = file_load(src, &fbuf);
+    if(r==0) {
+        r = file_save(dst, fbuf.buf, fbuf.dlen);
+        free(fbuf.buf);
+    }
+
+    return r;
+}
+
+
 int file_remove(char *path)
 {
     return remove(path);

+ 1 - 0
pro/src/file.h

@@ -14,6 +14,7 @@ typedef struct {
 int file_length(char* path);
 int file_save(char *path, void *buf, int len);
 int file_load(char* path, buf_t *buf);
+int file_copy(char *dst, char *src);
 int file_remove(char *path);
 
 

+ 43 - 42
pro/src/sys.c

@@ -64,41 +64,39 @@ static int exe_cmd(char *cmd, node_t *nd)
     char *pbuf=NULL;
     int onelen=1000;
     int dlen=0,blen=onelen;
-
-    pbuf = malloc(onelen);
-    if(!pbuf) {
-        return -1;
-    }
     
     fp = popen(cmd, "r");
     if (fp == NULL) {
         return -1;
     }
 
-	while(1) {
-        r = fread(pbuf+dlen, sizeof(char), onelen, fp);
-        if(r<=0) {
-            LOGE("exe_cmd fread failed\n");
-            break;
-        }
-        dlen += r;
-        if(dlen+onelen>blen) {
-            char* p = realloc(pbuf, dlen+onelen);
-            if(!p) {
-                LOGE("exe_cmd relloac %d failed\n", dlen+onelen);
-                free(pbuf); pclose(fp);
-                return -1;
+    if(nd) {
+        pbuf = malloc(onelen);
+        while(pbuf) {
+            r = fread(pbuf+dlen, sizeof(char), onelen, fp);
+            if(r<=0) {
+                LOGE("exe_cmd fread failed\n");
+                break;
+            }
+            dlen += r;
+            if(dlen+onelen>blen) {
+                char* p = realloc(pbuf, dlen+onelen);
+                if(!p) {
+                    LOGE("exe_cmd relloac %d failed\n", dlen+onelen);
+                    free(pbuf); pclose(fp);
+                    return -1;
+                }
+                pbuf = p;
+                blen = dlen+onelen;
             }
-            pbuf = p;
-            blen = dlen+onelen;
         }
-	}
+        
+        nd->pbuf = pbuf;
+        nd->dlen = dlen;
+        nd->blen = blen;
+    }
     pclose(fp);
     
-    nd->pbuf = pbuf;
-    nd->dlen = dlen;
-    nd->blen = blen;
-    
 	return 0;
 }
 
@@ -125,21 +123,26 @@ int sys_set_factory(void)
 #ifdef KEY_PARAS_IN_FILE
     r = paras_reset();
 #else
-    char dir[100],tmp[200];
+    char dir[100],src[200],dst[200];
 
     extern GlobalDeviceManager __globalDeviceManage;
     sqlite_deinit(__globalDeviceManage.db, &__globalDeviceManage.dbThreadlock);
 
     sys_get_path(dir, "");
-    snprintf(tmp, sizeof(tmp),"cp -f %s/%s %s/%s", dir, DATABASE_BAK_NAME, dir, DATABASE_NAME);
+    snprintf(src, sizeof(src), "%s/%s", dir, DATABASE_BAK_NAME);
+    snprintf(dst, sizeof(dst), "%s/%s", dir, DATABASE_NAME);
 
-    LOGD("___ %s\n", tmp);
-    r = system(tmp);
+    LOGD("___ file_copy from %s to %s\n", src, dst);
+    r = file_copy(dst, src);
     if(r==0) {
         r = set_net(&DFLT_PARAS.dev._network_info, IP_V4);
-        if(r==0) {
-            exit(0);
+        if(r) {
+            LOGE("____ set_net failed\n");
+            return -1;
         }
+
+        LOGD("____ exit smartPDU now ...\n");
+        exit(0);
     }
 #endif
 
@@ -486,7 +489,7 @@ typedef struct {
 static char* find_str(char *buf, char *head, char *tail, char *nic)
 {
     int len;
-    char *p,*p1,*p2;
+    char *p,*p1,*p2,*ptr=NULL;
 
     p1 = strstr(buf, head);
     p2 = strstr(buf, tail);
@@ -498,13 +501,13 @@ static char* find_str(char *buf, char *head, char *tail, char *nic)
             if(p) {
                 memcpy(p, p1, len); p[len] = 0;
                 if(strstr(p, nic)) {
-                    return p1;
+                    ptr = p1;
                 }
                 free(p);
             }
         }
     }
-    return NULL;
+    return ptr;
 }
 static int get_nic(char *nbuf, int nlen, char *nic, char *fbuf, int flen)
 {
@@ -522,7 +525,7 @@ static int get_nic(char *nbuf, int nlen, char *nic, char *fbuf, int flen)
             }
 
             len = XLEN(p2,p1);
-            if(nlen>=len) {
+            if(nlen>len) {
                 memcpy(nbuf, p1, len);
                 nbuf[len] = 0;
                 //LOGD("__x__%s:\n %s\n", nic, nbuf);
@@ -612,14 +615,12 @@ static int set_dns(char *dns1, char *dns2)
     int r;
     char buf[4000];
     
+    LOGD("_____ set_dns\n");
     memset(buf, 0, sizeof(buf));
     snprintf(buf, sizeof(buf), "interface=eth0\nserver=%s\nserver=%s\n", dns1, dns2);
     r = file_save(FILE_DNS, buf, strlen(buf))+1;
     if(r==0) {
-        r = system("killall dnsmasq; /usr/sbin/dnsmasq &");
-        if(r) {
-            LOGE("___ dnsmasq start failed\n");
-        }
+        system("killall dnsmasq; /usr/sbin/dnsmasq &");
     }
 
     return r;
@@ -643,7 +644,7 @@ static int get_net(NetworkInfo_t *para, int ipv)
 
     p = strstr(intf.e0, (ipv==IP_V4)?"inet":"inet6");
     if(p==NULL) {
-        LOGE("___get_net, inet/inet6 not found!\n");
+        LOGE("___get_ipv%d, %s not found!\n", (ipv==IP_V4)?4:6, (ipv==IP_V4)?"inet":"inet6");
         free(fbuf.buf); return -1;
     }
     
@@ -744,7 +745,7 @@ static int set_net(NetworkInfo_t *para, int ipv)
     }
     free(fbuf);
     
-    r = set_dns(para->dns1, para->dns2);
+    set_dns(para->dns1, para->dns2);
 
     return r;
 }
@@ -790,7 +791,7 @@ int sys_set_net(NetworkInfo_t *para, int ipVersion)
     r = get_net(&para2, ipVersion);
     if(r==0) {
         if(memcmp(para, &para2, sizeof(NetworkInfo_t))==0) {
-            LOGW("restart %s failed\n", DFLT_NIC);
+            LOGW("%s NetworkInfo is same, no need to set\n", DFLT_NIC);
             return -1;
         }
         r = set_net(para, ipVersion);