|
@@ -36,6 +36,8 @@
|
|
|
#include "CLI_Commands.h"
|
|
|
#include "CLI_Parameters.h"
|
|
|
#include "telnet_server.h"
|
|
|
+#include "netconf.h"
|
|
|
+#include "control_symbol.h"
|
|
|
|
|
|
|
|
|
#define in_range_digit(c, lo, up) ((uint8_t)c >= lo && (uint8_t)c <= up)
|
|
@@ -289,7 +291,7 @@ static const CLI_Command_Definition_t prvHistoryCommandDefinition =
|
|
|
( const int8_t * const ) "history", /* The command string to type. */
|
|
|
( const int8_t * const ) "\thistory show EVENTS|UPS <num_page>: вывод журнала\r\n",
|
|
|
prvTaskHistoryCommand, /* The function to run. */
|
|
|
- 2 /* Two parameters are expected, which can take any value. */
|
|
|
+ 3 /* Two parameters are expected, which can take any value. */
|
|
|
};
|
|
|
|
|
|
/* Structure that defines the "sensor info" command line command. This
|
|
@@ -306,8 +308,8 @@ static const CLI_Command_Definition_t prvSensorCommandDefinition =
|
|
|
generates a table that shows how much run time each task has */
|
|
|
static const CLI_Command_Definition_t prvUploadCommandDefinition =
|
|
|
{
|
|
|
- ( const int8_t * const ) "firmware dowmload http", /* The command string to type. */
|
|
|
- ( const int8_t * const ) "\tfirmware dowmload http: переход в режим обновления через Web-сервер\r\n",
|
|
|
+ ( const int8_t * const ) "firmware download http", /* The command string to type. */
|
|
|
+ ( const int8_t * const ) "\tfirmware download http: переход в режим обновления через Web-сервер\r\n",
|
|
|
prvTaskUploadCommand, /* The function to run. */
|
|
|
2 /* No parameters are expected. */
|
|
|
};
|
|
@@ -446,28 +448,37 @@ static portBASE_TYPE prvTaskInfoCommand( int8_t *pcWriteBuffer, size_t xWriteBuf
|
|
|
if(xParameterStringLength > (int32_t)sizeof(str))
|
|
|
xParameterStringLength = sizeof(str) - 1;
|
|
|
strncat(str, ( const char * ) pcParameterString, strlen(( const char * ) pcParameterString));
|
|
|
- switch(i){
|
|
|
- case INFO_ADDRESS:
|
|
|
- if(telnet_code_auth == ADMIN)
|
|
|
- SetLocation(str);
|
|
|
- else
|
|
|
- strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcPermissionDenied, strlen( ( char * ) pcPermissionDenied ) );
|
|
|
- break;
|
|
|
- case INFO_OWNER:
|
|
|
- if(telnet_code_auth == ADMIN)
|
|
|
- SetOwner(str);
|
|
|
- else
|
|
|
- strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcPermissionDenied, strlen( ( char * ) pcPermissionDenied ) );
|
|
|
- break;
|
|
|
- case INFO_COMMENTS:
|
|
|
- if(telnet_code_auth == ADMIN)
|
|
|
- SetComment(str);
|
|
|
- else
|
|
|
- strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcPermissionDenied, strlen( ( char * ) pcPermissionDenied ) );
|
|
|
- break;
|
|
|
- default:
|
|
|
+ if(control_string_en_digit(str, strlen(str))){
|
|
|
+ switch(i){
|
|
|
+ case INFO_ADDRESS:
|
|
|
+ if(telnet_code_auth == ADMIN)
|
|
|
+ SetLocation(str);
|
|
|
+ else
|
|
|
+ strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcPermissionDenied, strlen( ( char * ) pcPermissionDenied ) );
|
|
|
+ break;
|
|
|
+ case INFO_OWNER:
|
|
|
+ if(telnet_code_auth == ADMIN)
|
|
|
+ SetOwner(str);
|
|
|
+ else
|
|
|
+ strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcPermissionDenied, strlen( ( char * ) pcPermissionDenied ) );
|
|
|
+ break;
|
|
|
+ case INFO_COMMENTS:
|
|
|
+ if(telnet_code_auth == ADMIN)
|
|
|
+ SetComment(str);
|
|
|
+ else
|
|
|
+ strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcPermissionDenied, strlen( ( char * ) pcPermissionDenied ) );
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ if(i >= INFO_ADDRESS && i <= INFO_COMMENTS){
|
|
|
+ SETTINGS_Save();
|
|
|
+ log_event_data(LOG_SETTING_SAVE, name_login_telnet);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else{
|
|
|
strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
- break;
|
|
|
}
|
|
|
xReturn = pdFALSE;
|
|
|
}
|
|
@@ -610,8 +621,11 @@ static portBASE_TYPE prvTaskSystimeCommand( int8_t *pcWriteBuffer, size_t xWrite
|
|
|
else{
|
|
|
fail = 1;
|
|
|
}
|
|
|
- if(!fail)
|
|
|
+ if(!fail){
|
|
|
SetDateStr(str);
|
|
|
+ SETTINGS_Save();
|
|
|
+ log_event_data(LOG_SETTING_SAVE, name_login_telnet);
|
|
|
+ }
|
|
|
else
|
|
|
strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
break;
|
|
@@ -643,8 +657,11 @@ static portBASE_TYPE prvTaskSystimeCommand( int8_t *pcWriteBuffer, size_t xWrite
|
|
|
else{
|
|
|
fail = 1;
|
|
|
}
|
|
|
- if(!fail)
|
|
|
+ if(!fail){
|
|
|
SetTimeStr(str);
|
|
|
+ SETTINGS_Save();
|
|
|
+ log_event_data(LOG_SETTING_SAVE, name_login_telnet);
|
|
|
+ }
|
|
|
else
|
|
|
strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
break;
|
|
@@ -716,6 +733,8 @@ static portBASE_TYPE prvTaskNTPCommand( int8_t *pcWriteBuffer, size_t xWriteBuff
|
|
|
enable_old_sntp = sSettings.sSNTP.sntpEnable;
|
|
|
SetSntpStateStr("1");
|
|
|
if(sSettings.sSNTP.sntpEnable != enable_old_sntp){
|
|
|
+ SETTINGS_Save();
|
|
|
+ log_event_data(LOG_SETTING_SAVE, name_login_telnet);
|
|
|
SNTP_Init();
|
|
|
//vTaskDelay(7000);
|
|
|
SNTP_Poll();
|
|
@@ -725,6 +744,8 @@ static portBASE_TYPE prvTaskNTPCommand( int8_t *pcWriteBuffer, size_t xWriteBuff
|
|
|
enable_old_sntp = sSettings.sSNTP.sntpEnable;
|
|
|
SetSntpStateStr("0");
|
|
|
if(sSettings.sSNTP.sntpEnable != enable_old_sntp){
|
|
|
+ SETTINGS_Save();
|
|
|
+ log_event_data(LOG_SETTING_SAVE, name_login_telnet);
|
|
|
SNTP_Init();
|
|
|
//vTaskDelay(7000);
|
|
|
SNTP_Poll();
|
|
@@ -781,6 +802,8 @@ static portBASE_TYPE prvTaskNTPCommand( int8_t *pcWriteBuffer, size_t xWriteBuff
|
|
|
if(ipaddr_addr(str_temp) != IPADDR_NONE){
|
|
|
if(strncmp(str_temp, sSettings.sSNTP.ip, strlen(str_temp)) != 0){
|
|
|
SetSntpServerIpStr(str_temp);
|
|
|
+ SETTINGS_Save();
|
|
|
+ log_event_data(LOG_SETTING_SAVE, name_login_telnet);
|
|
|
SNTP_Init();
|
|
|
//vTaskDelay(7000);
|
|
|
SNTP_Poll();
|
|
@@ -807,8 +830,11 @@ static portBASE_TYPE prvTaskNTPCommand( int8_t *pcWriteBuffer, size_t xWriteBuff
|
|
|
}
|
|
|
if(!fail){
|
|
|
float value = atof(str_temp);
|
|
|
- if(value > -12.0 && value < 12.0)
|
|
|
+ if(value > -12.0 && value < 12.0){
|
|
|
SetSntpTimeZoneStr(str_temp);
|
|
|
+ SETTINGS_Save();
|
|
|
+ log_event_data(LOG_SETTING_SAVE, name_login_telnet);
|
|
|
+ }
|
|
|
else
|
|
|
strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
}
|
|
@@ -903,17 +929,23 @@ static portBASE_TYPE prvTaskNetworkCommand( int8_t *pcWriteBuffer, size_t xWrite
|
|
|
strncat(str, ( const char * ) pcParameterString, strlen(( const char * ) pcParameterString));
|
|
|
switch(i){
|
|
|
case ARG_NETWORK_DHCP:
|
|
|
- if(strncmp(str, "ENA", 3) == 0)
|
|
|
+ if(strncmp(str, "ENA", 3) == 0){
|
|
|
SetUDPDhcpStateStr("True");
|
|
|
- else if(strncmp(str, "DIS", 3) == 0)
|
|
|
+ strcpy( ( char * ) pcWriteBuffer, "\t\tСохраните конфигурацию сетевых настроек\r\n" );
|
|
|
+ }
|
|
|
+ else if(strncmp(str, "DIS", 3) == 0){
|
|
|
SetUDPDhcpStateStr("False");
|
|
|
+ strcpy( ( char * ) pcWriteBuffer, "\t\tСохраните конфигурацию сетевых настроек\r\n" );
|
|
|
+ }
|
|
|
else
|
|
|
strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
break;
|
|
|
case ARG_NETWORK_IP:
|
|
|
if(xParameterStringLength <= 15){
|
|
|
- if(ipaddr_addr(str) != IPADDR_NONE)
|
|
|
+ if(ipaddr_addr(str) != IPADDR_NONE){
|
|
|
SetIPStr(str);
|
|
|
+ strcpy( ( char * ) pcWriteBuffer, "\t\tСохраните конфигурацию сетевых настроек\r\n" );
|
|
|
+ }
|
|
|
else
|
|
|
strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
}
|
|
@@ -923,8 +955,10 @@ static portBASE_TYPE prvTaskNetworkCommand( int8_t *pcWriteBuffer, size_t xWrite
|
|
|
break;
|
|
|
case ARG_NETWORK_GW:
|
|
|
if(xParameterStringLength <= 15){
|
|
|
- if(ipaddr_addr(str) != IPADDR_NONE)
|
|
|
+ if(ipaddr_addr(str) != IPADDR_NONE){
|
|
|
SetGatewayStr(str);
|
|
|
+ strcpy( ( char * ) pcWriteBuffer, "\t\tСохраните конфигурацию сетевых настроек\r\n" );
|
|
|
+ }
|
|
|
else
|
|
|
strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
}
|
|
@@ -934,8 +968,10 @@ static portBASE_TYPE prvTaskNetworkCommand( int8_t *pcWriteBuffer, size_t xWrite
|
|
|
break;
|
|
|
case ARG_NETWORK_MASK:
|
|
|
if(xParameterStringLength <= 15){
|
|
|
- if(ipaddr_addr(str) != IPADDR_NONE)
|
|
|
+ if(ipaddr_addr(str) != IPADDR_NONE){
|
|
|
SetMaskStr(str);
|
|
|
+ strcpy( ( char * ) pcWriteBuffer, "\t\tСохраните конфигурацию сетевых настроек\r\n" );
|
|
|
+ }
|
|
|
else
|
|
|
strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
}
|
|
@@ -1049,6 +1085,10 @@ static portBASE_TYPE prvTaskSNMPCommand( int8_t *pcWriteBuffer, size_t xWriteBuf
|
|
|
SetManagerIp5(str);
|
|
|
break;
|
|
|
}
|
|
|
+ if(temp > 0 && temp < 6){
|
|
|
+ SETTINGS_Save();
|
|
|
+ log_event_data(LOG_SETTING_SAVE, name_login_telnet);
|
|
|
+ }
|
|
|
}
|
|
|
else{
|
|
|
strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
@@ -1083,13 +1123,23 @@ static portBASE_TYPE prvTaskSNMPCommand( int8_t *pcWriteBuffer, size_t xWriteBuf
|
|
|
if(xParameterStringLength > (int32_t)sizeof(temp_str))
|
|
|
xParameterStringLength = sizeof(temp_str) - 1;
|
|
|
strncat(temp_str, ( const char * ) pcParameterString, strlen(( const char * ) pcParameterString));
|
|
|
- if(strncmp(str, "read", 4) == 0){
|
|
|
- SetReadCommunity(temp_str);
|
|
|
+ if(control_string_en_digit(temp_str, strlen(temp_str))){
|
|
|
+ if(strncmp(str, "read", 4) == 0){
|
|
|
+ SetReadCommunity(temp_str);
|
|
|
+ SETTINGS_Save();
|
|
|
+ log_event_data(LOG_SETTING_SAVE, name_login_telnet);
|
|
|
+ }
|
|
|
+ else if(strncmp(str, "write", 5) == 0){
|
|
|
+ SetWriteCommunity(temp_str);
|
|
|
+ SETTINGS_Save();
|
|
|
+ log_event_data(LOG_SETTING_SAVE, name_login_telnet);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
}
|
|
|
- else if(strncmp(str, "write", 5) == 0)
|
|
|
- SetWriteCommunity(temp_str);
|
|
|
- else
|
|
|
+ else{
|
|
|
strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
+ }
|
|
|
}
|
|
|
else{
|
|
|
strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
@@ -1202,6 +1252,7 @@ static portBASE_TYPE prvTaskConfigCommand( int8_t *pcWriteBuffer, size_t xWriteB
|
|
|
char str[110];
|
|
|
uint8_t i;
|
|
|
static uint8_t config_menu = 0;
|
|
|
+ static start = 0;
|
|
|
|
|
|
const int8_t * const pcInfoTableHeader = ( int8_t * ) "\r\n*********Конфигурация Контроллера*********\r\n";
|
|
|
|
|
@@ -1272,9 +1323,29 @@ static portBASE_TYPE prvTaskConfigCommand( int8_t *pcWriteBuffer, size_t xWriteB
|
|
|
}
|
|
|
break;
|
|
|
case ARG_CONFIG_APPLY:
|
|
|
- SETTINGS_Save();
|
|
|
- log_event_data(LOG_SETTING_SAVE, name_login_telnet);
|
|
|
- strcpy( ( char * ) pcWriteBuffer, "\t\tНастройки сохранены!\r\n");
|
|
|
+ if(!start){
|
|
|
+ /* Если параметры WEB изменились выставляем флаг, сохраняем настройки и перезагружаемся */
|
|
|
+ if (GetStateWebReinit() == true)
|
|
|
+ {
|
|
|
+ start = 1;
|
|
|
+#ifdef HARDWARE_BT6706
|
|
|
+ telnet_act = true;
|
|
|
+#endif
|
|
|
+ SetWebReinitFlag(true);
|
|
|
+ HTTP_SaveSettings();
|
|
|
+ strcpy( ( char * ) pcWriteBuffer, "\t\tНастройки сохранены! Контроллер будет перезагружен\r\n\tПосле перезагрузки подтвердите изменения сетевых настроек\r\n");
|
|
|
+ return pdTRUE;
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else{
|
|
|
+#ifdef HARDWARE_BT6706
|
|
|
+ telnet_act = true;
|
|
|
+#endif
|
|
|
+ start = 0;
|
|
|
+ vTaskDelay(1010);
|
|
|
+ Reboot();
|
|
|
+ }
|
|
|
break;
|
|
|
case ARG_CONFIG_CONFIRM:
|
|
|
telnet_act = true;
|
|
@@ -1355,6 +1426,20 @@ static portBASE_TYPE prvTaskHistoryCommand( int8_t *pcWriteBuffer, size_t xWrite
|
|
|
return pdFALSE;
|
|
|
}
|
|
|
|
|
|
+ if( strncmp( ( const char * ) pcParameterString, "show", xParameterStringLength ) != 0 ){
|
|
|
+ strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
+ return pdFALSE;
|
|
|
+ }
|
|
|
+
|
|
|
+ xParameterNumber ++;
|
|
|
+ /* Obtain the parameter string. */
|
|
|
+ pcParameterString = ( int8_t * ) FreeRTOS_CLIGetParameter
|
|
|
+ (
|
|
|
+ pcCommandString, /* The command string itself. */
|
|
|
+ xParameterNumber, /* Return the next parameter. */
|
|
|
+ &xParameterStringLength /* Store the parameter string length. */
|
|
|
+ );
|
|
|
+
|
|
|
for(i = 0; i < ARG_HISTORY_ALL; i ++){
|
|
|
if( strncmp( ( const char * ) pcParameterString, history_args_list[i], xParameterStringLength ) == 0 ){
|
|
|
break;
|
|
@@ -1627,7 +1712,7 @@ static portBASE_TYPE prvTaskUPSCommand( int8_t *pcWriteBuffer, size_t xWriteBuff
|
|
|
res = ups_metac_service_pdu(ups_cancel_test);
|
|
|
if(res == 1){
|
|
|
log_event_data(LOG_TEST_UPS, "Администратор (Останов)");
|
|
|
- strcpy( ( char * ) pcWriteBuffer, "\t\ttТест остановлен!\r\n");
|
|
|
+ strcpy( ( char * ) pcWriteBuffer, "\t\tТест остановлен!\r\n");
|
|
|
}
|
|
|
else{
|
|
|
strcpy( ( char * ) pcWriteBuffer, "\t\tТест не удалось остановить!\r\n");
|
|
@@ -1691,7 +1776,7 @@ static portBASE_TYPE prvTaskUPSCommand( int8_t *pcWriteBuffer, size_t xWriteBuff
|
|
|
res = ups_metac_service_pdu(ups_shutdown);
|
|
|
if(res == 1){
|
|
|
log_event_data(LOG_SHUTDOWN_UPS, "Администратор");
|
|
|
- strcpy( ( char * ) pcWriteBuffer, "\t\t\tОтключение нагрузки ИБП!\r\n");
|
|
|
+ strcpy( ( char * ) pcWriteBuffer, "\t\tОтключение нагрузки ИБП!\r\n");
|
|
|
}
|
|
|
else{
|
|
|
strcpy( ( char * ) pcWriteBuffer, "\t\tОтключение нагрузки ИБП не удалось!\r\n");
|