[Bug][API-644][syslog]Example Add the syslog configuration file backup mechanism(new)

Change-Id: I25324df4821948f0ed9360f09c025e3b7d9e32f2
diff --git a/meta/meta-mediatek-ivt/recipes-core/busybox/busybox_%.bbappend b/meta/meta-mediatek-ivt/recipes-core/busybox/busybox_%.bbappend
index 470d357..bfa00c9 100755
--- a/meta/meta-mediatek-ivt/recipes-core/busybox/busybox_%.bbappend
+++ b/meta/meta-mediatek-ivt/recipes-core/busybox/busybox_%.bbappend
@@ -1,3 +1,4 @@
+
 FILESEXTRAPATHS_append := ":${THISDIR}/${PN}"
 
 SRC_URI_append = " \
@@ -32,6 +33,9 @@
     install -m 0755 ${WORKDIR}/coredump-start ${D}/bin/
     install -m 0755 ${WORKDIR}/coredump-handler.sh ${D}/bin/
     install -m 0644 ${WORKDIR}/coredump.service.in ${D}${systemd_unitdir}/system/coredump.service
+    #lt add 2022.11.11 start
+    install -m 0755 ${WORKDIR}/syslog.conf ${D}/bin/
+    #lt add 2022.11.11 end
     if [ "${BUILD_LOAD_TYPE}" = "user" ]; then
         echo "*.err         /var/log/syslog.log"> ${D}/etc/syslog.conf
     else
diff --git a/src/lynq/framework/lynq-logrotate-service/src/lynq_logrotate_service.c b/src/lynq/framework/lynq-logrotate-service/src/lynq_logrotate_service.c
index a5a9918..264bb11 100755
--- a/src/lynq/framework/lynq-logrotate-service/src/lynq_logrotate_service.c
+++ b/src/lynq/framework/lynq-logrotate-service/src/lynq_logrotate_service.c
@@ -48,11 +48,97 @@
     return write_len;   

 }

 

+/**

+ * @brief check syslogd exist or no

+ * 

+ * @param void 

+ * @return 0:exist -1:no

+ */

+static int lynq_check_syslogd(void)

+{

+    FILE *fp;

+    char *lynq_get_syslogd_cmd = "ps -ef | grep syslogd";

+    char lynq_syslogd_deploy_buf[128] ={0};

+    char *lynq_syslogd_deploy_raw = "/sbin/syslogd";

+    

+    fp=popen(lynq_get_syslogd_cmd,"r");

+    if(NULL == fp)

+    {

+        return -1;

+    }

+    while (NULL != fgets(lynq_syslogd_deploy_buf,sizeof(lynq_syslogd_deploy_buf),fp))

+    {

+        printf("syslogd:%s\n",lynq_syslogd_deploy_buf);

+        if(NULL != strstr(lynq_syslogd_deploy_buf,lynq_syslogd_deploy_raw))

+        {

+            pclose(fp);

+            return 0;

+        }

+    }

+    pclose(fp);

+    return -1;

+}

+

+/**

+ * @brief monitor syslogcof

+ * 

+ * @param void 

+ * @return 0:success -1:fail

+ */

+static int lynq_monitor_syslogcof(void)

+{

+    FILE *fp;

+    char *lynq_get_syslog_deploy = "/etc/syslog/syslog.conf";

+    char lynq_syslog_deploy_buf[128] ={0};

+    char *lynq_syslog_deploy_raw = "/var/log/syslog.log";

+    

+    fp=fopen(lynq_get_syslog_deploy,"r");

+    if(NULL == fp)

+    {

+        return -1;

+    }

+    if((sizeof(lynq_syslog_deploy_buf)) > (fread(lynq_syslog_deploy_buf,sizeof(char),sizeof(lynq_syslog_deploy_buf),fp)))

+    {

+        if(ferror(fp))

+        {

+            fclose(fp);

+            return -1;

+        }

+        printf("syslog:%s\n",lynq_syslog_deploy_buf);

+    }

+    fclose(fp);

+

+    if(NULL == strstr(lynq_syslog_deploy_buf,lynq_syslog_deploy_raw))

+    {

+        system("cp /bin/syslog.conf /etc/syslog/");

+        system("syslogctl restart");

+        for(int j = 0; j < 3; j++) //Check whether syslogd exists and does not exist 3 times

+        {

+            if(-1 == lynq_check_syslogd())

+            {

+                system("syslogctl restart");

+                printf("syslogctl restart again\n");

+            }

+            else

+            {

+                printf("syslogctl restart success\n");

+                return 0;

+            }

+        }

+        return -1;

+    }

+    return 0;

+}

+

 int main()

 {

     char muclog[1024] = {0};

     LYLOGEINIT(USER_LOG_TAG);

     LYLOGSET(4);

+    if(-1 == lynq_monitor_syslogcof())

+    {

+        printf("lynq monitor syslogcof popen fail\n");

+    }

     system("/usr/bin/lynq-default");

     system("systemctl stop ntpd");

     lynq_fota_func();