Browse Source

syslog: receive and store the settings

Sergey Alirzaev 4 năm trước cách đây
mục cha
commit
8da4ea1958

+ 4 - 0
config/board_bt6711.h

@@ -82,6 +82,7 @@ XSETTING( WHITE_LIST_t, sWhiteList[MAX_WHITE_LIST], SETTINGS_SetWhiteListDef, AL
 XSETTING( WHITE_LIST_t, sWhiteListTemp[MAX_WHITE_LIST], SETTINGS_SetWhiteListDef, ALL_DEFAULT ) \
 XSETTING( uint8_t, sFlagNotification[ALL_TRAPS], SETTINGS_SetFlagNotificationDef, ALL_DEFAULT ) \
 XSETTING( FTP_Update_t,	sFTPUpdate, SETTINGS_SetFTPUpdateDef, ALL_DEFAULT ) \
+XSETTING( Syslog_Settings_t,	sSyslog, SETTINGS_SetSyslogDef, ALL_DEFAULT ) \
 
 #define SNMP_DEV_ROOT_OID       11
 
@@ -135,6 +136,9 @@ XSETTING( FTP_Update_t,	sFTPUpdate, SETTINGS_SetFTPUpdateDef, ALL_DEFAULT ) \
   XJSON_SETTINGS_TAG("ftp_path",           GetFTPPath,                          SetEmptyFuncStr) \
   XJSON_SETTINGS_TAG("ftp_login",          GetFTPLogin,                         SetEmptyFuncStr) \
   XJSON_SETTINGS_TAG("ftp_password",       GetFTPPassword,                      SetEmptyFuncStr) \
+  XJSON_SETTINGS_TAG("syslog_enable",      GetSyslogEnable,                     SetSyslogEnable) \
+  XJSON_SETTINGS_TAG("syslog_server",      GetSyslogServer,                     SetSyslogServer) \
+  XJSON_SETTINGS_TAG("syslog_port",        GetSyslogPort,                       SetSyslogPort) \
 
 #define WEB_PARAMS_TAGS_TABLE \
   XJSON_PARAMS_TAG("AC",                 GetInputVoltageStr) \

+ 2 - 0
modules/HTTP_Server/web_params_api.h

@@ -25,6 +25,7 @@
         || strncmp(tag, "dhcp", sizeof(tag)) == 0 \
         || strncmp(tag, "swauth", sizeof(tag)) == 0 \
         || strncmp(tag, "ups_max_power", sizeof(tag)) == 0 \
+        || strncmp(tag, "syslog_enable", sizeof(tag)) == 0 \
         || strncmp(tag, "rs_enabled", sizeof(tag)) == 0) { \
       cJSON_AddNumberToObject(cjson_param, tag, atoi(str)); \
     } else if (strncmp(tag, "pgw_en", sizeof(tag)) == 0 ) { \
@@ -51,6 +52,7 @@
               || strncmp(tag, "dhcp", sizeof(tag)) == 0 \
               || strncmp(tag, "swauth", sizeof(tag)) == 0 \
               || strncmp(tag, "pgw_en", sizeof(tag)) == 0 \
+              || strncmp(tag, "syslog_enable", sizeof(tag)) == 0 \
               || strncmp(tag, "rs_enabled", sizeof(tag)) == 0) { \
             set_param(value); \
           } \

+ 26 - 0
modules/parameters.c

@@ -1630,6 +1630,32 @@ void GetFTPPassword(char *str, uint8_t *len)
 {
   *len = sprintf(str, "%s", sSettings.sFTPUpdate.pass);
 }
+
+void GetSyslogEnable(char *str, uint8_t *len)
+{
+  str[0] = sSettings.sSyslog.enabled ? '1' : '0';
+  *len = 1;
+}
+void GetSyslogServer(char *str, uint8_t *len)
+{
+  *len = sprintf(str, "%s", ipaddr_ntoa(&sSettings.sSyslog.server_ip));
+}
+void GetSyslogPort(char *str, uint8_t *len)
+{
+  *len = sprintf(str, "%d", sSettings.sSyslog.server_port);
+}
+void SetSyslogEnable(char *str)
+{
+  sSettings.sSyslog.enabled = strncmp(str, "on", 2) == 0;
+}
+void SetSyslogServer(char *str)
+{
+  ipaddr_aton(str, &sSettings.sSyslog.server_ip);
+}
+void SetSyslogPort(char *str)
+{
+  sSettings.sSyslog.server_port = atoi(str);
+}
 #endif // HARDWARE_BT6711
 
 

+ 18 - 0
modules/parameters.h

@@ -606,6 +606,7 @@ void GetSSHEnableStateStr(char *str, uint8_t *len);
 #endif
 
 
+#ifdef HARDWARE_BT6711
 // ************************************************************************** //
 //                             Параметры FTP
 
@@ -615,6 +616,14 @@ void GetFTPPath(char *str, uint8_t *len);
 void GetFTPLogin(char *str, uint8_t *len);
 void GetFTPPassword(char *str, uint8_t *len);
 
+// ************************************************************************** //
+//                             Параметры Syslog
+
+void GetSyslogEnable(char *str, uint8_t *len);
+void GetSyslogServer(char *str, uint8_t *len);
+void GetSyslogPort(char *str, uint8_t *len);
+#endif // HARDWARE_BT6711
+
 // ************************************************************************** //
 //                                Флаги
 
@@ -1100,6 +1109,15 @@ void SetSSHPortStr(char *str);
 void SetSSHEnableStateStr(char *str);
 #endif
 
+#ifdef HARDWARE_BT6711
+// ************************************************************************** //
+//                             Параметры Syslog
+
+void SetSyslogEnable(char *str);
+void SetSyslogServer(char *str);
+void SetSyslogPort(char *str);
+#endif // HARDWARE_BT6711
+
 // ************************************************************************** //
 //                             Параметры даты и времени
 

+ 8 - 0
modules/settings_api.h

@@ -331,6 +331,12 @@ typedef struct {
 	char pass[30];
 } FTP_Update_t;
 
+typedef struct {
+	bool enabled;
+	ip_addr_t server_ip;
+	u16_t server_port;
+} Syslog_Settings_t;
+
 /**
   * @brief  Настройки реле.
   */ 
@@ -571,6 +577,8 @@ void SETTINGS_SetFlagNotificationDef(void);
 
 void SETTINGS_SetFTPUpdateDef(void);
 
+void SETTINGS_SetSyslogDef(void);
+
 /**
   * @brief  Установить значение сервисных настроек по умолчанию
   */

+ 7 - 0
modules/settings_api_bt6711.c

@@ -270,6 +270,13 @@ void SETTINGS_SetFTPUpdateDef(void)
   strcpy(&sSettings.sFTPUpdate.pass, "guest");
 }
 
+void SETTINGS_SetSyslogDef(void)
+{
+  sSettings.sSyslog.enabled = false;
+  IP4_ADDR(&sSettings.sSyslog.server_ip, 192,168,0,253);
+  sSettings.sSyslog.server_port = 514;
+}
+
 /**
   * @brief  Установить значение настроек прозрачного порта по умолчанию
   */