|  | @@ -723,7 +723,7 @@ char *HTTP_HistoryPage(uint32_t reqNum, char *bufIn, char *bufOut, uint16_t lenB
 | 
	
		
			
				|  |  |      ClearParamString(bufIn);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      memset(value, 0, 20);
 | 
	
		
			
				|  |  | -    GetParamValue(bufIn, "page=", value, &valueLen);
 | 
	
		
			
				|  |  | +    GetParamValue(bufIn, "page", value, &valueLen);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      if (strcmp(value, "all") == 0) {
 | 
	
		
			
				|  |  |          if (!LOG_IsInit()) {
 | 
	
	
		
			
				|  | @@ -773,7 +773,7 @@ char *HTTP_UpsHistoryPage(uint32_t reqNum, char *bufIn, char *bufOut, uint16_t l
 | 
	
		
			
				|  |  |      ClearParamString(bufIn);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      memset(value, 0, 20);
 | 
	
		
			
				|  |  | -    GetParamValue(bufIn, "page=", value, &valueLen);
 | 
	
		
			
				|  |  | +    GetParamValue(bufIn, "page", value, &valueLen);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      if (strcmp(value, "all") == 0) {
 | 
	
		
			
				|  |  |          if (!LOG_IsInit()) {
 | 
	
	
		
			
				|  | @@ -827,7 +827,7 @@ void HTTP_Prodate(uint32_t reqNum, char *bufIn, char *bufOut, uint16_t lenBufIn,
 | 
	
		
			
				|  |  |      ClearParamString(bufIn);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      memset(value, 0, 20);
 | 
	
		
			
				|  |  | -    GetParamValue(bufIn, "prodate=", value, &valueLen);
 | 
	
		
			
				|  |  | +    GetParamValue(bufIn, "prodate", value, &valueLen);
 | 
	
		
			
				|  |  |      /*
 | 
	
		
			
				|  |  |      printf("Prodate: ");
 | 
	
		
			
				|  |  |      printf(value);
 | 
	
	
		
			
				|  | @@ -862,6 +862,7 @@ char *HTTP_SetSettingsPage(uint32_t reqNum, char *bufIn, char *bufOut, uint16_t
 | 
	
		
			
				|  |  |      if (DataFlag2 == 0) {
 | 
	
		
			
				|  |  |          TotalReceived = 0;
 | 
	
		
			
				|  |  |          memset(bufOut, 0, strlen(bufOut));
 | 
	
		
			
				|  |  | +        bufOut[0] = '0';
 | 
	
		
			
				|  |  |          // parse packet for Content-length field
 | 
	
		
			
				|  |  |          size = Parse_Content_Length(bufIn, lenBufIn);
 | 
	
		
			
				|  |  |          DataOffset = strstr(bufIn, "managerIP");
 | 
	
	
		
			
				|  | @@ -1029,6 +1030,7 @@ char *HTTP_SetInfoPage(uint32_t reqNum, char *bufIn, char *bufOut, uint16_t lenB
 | 
	
		
			
				|  |  |      if (DataFlag == 0) {
 | 
	
		
			
				|  |  |          TotalReceived = 0;
 | 
	
		
			
				|  |  |          memset(bufOut, 0, strlen(bufOut));
 | 
	
		
			
				|  |  | +        bufOut[0] = '0';
 | 
	
		
			
				|  |  |          // parse packet for Content-length field
 | 
	
		
			
				|  |  |          size = Parse_Content_Length(bufIn, lenBufIn);
 | 
	
		
			
				|  |  |          DataOffset = strstr(bufIn, "sysname");
 | 
	
	
		
			
				|  | @@ -1093,25 +1095,25 @@ void HTTP_SetInfo(char *buf, uint16_t lenBuf)
 | 
	
		
			
				|  |  |      memset(value, 0, len);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      /* Название устройства */
 | 
	
		
			
				|  |  | -    GetParamValue(buf, "sysname=", value, &valueLen);
 | 
	
		
			
				|  |  | +    GetParamValue(buf, "sysname", value, &valueLen);
 | 
	
		
			
				|  |  |      url_decode(str, sizeof(str), value);
 | 
	
		
			
				|  |  |      SetNameDeviceStr(str);
 | 
	
		
			
				|  |  |      memset(value, 0, len);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      /* Владелец */
 | 
	
		
			
				|  |  | -    GetParamValue(buf, "owner=", value, &valueLen);
 | 
	
		
			
				|  |  | +    GetParamValue(buf, "owner", value, &valueLen);
 | 
	
		
			
				|  |  |      url_decode(str, sizeof(str), value);
 | 
	
		
			
				|  |  |      SetOwner(str);
 | 
	
		
			
				|  |  |      memset(value, 0, len);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      /* Владелец */
 | 
	
		
			
				|  |  | -    GetParamValue(buf, "sysLocation=", value, &valueLen);
 | 
	
		
			
				|  |  | +    GetParamValue(buf, "sysLocation", value, &valueLen);
 | 
	
		
			
				|  |  |      url_decode(str, sizeof(str), value);
 | 
	
		
			
				|  |  |      SetLocation(str);
 | 
	
		
			
				|  |  |      memset(value, 0, len);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      /* Комментарий */
 | 
	
		
			
				|  |  | -    GetParamValue(buf, "comment=", value, &valueLen);
 | 
	
		
			
				|  |  | +    GetParamValue(buf, "comment", value, &valueLen);
 | 
	
		
			
				|  |  |      url_decode(str, sizeof(str), value);
 | 
	
		
			
				|  |  |      SetComment(str);
 | 
	
		
			
				|  |  |      memset(value, 0, len);
 | 
	
	
		
			
				|  | @@ -1236,7 +1238,7 @@ char *HTTP_UPSTest(uint32_t reqNum, char *bufIn, char *bufOut, uint16_t lenBufIn
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      strcpy(bufOut, HTTP_200_OK);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    GetParamValue(bufIn, "func=", tempValue, &valueLen);
 | 
	
		
			
				|  |  | +    GetParamValue(bufIn, "func", tempValue, &valueLen);
 | 
	
		
			
				|  |  |      if (strcmp(tempValue, "stop") == 0) {
 | 
	
		
			
				|  |  |          res = ups_metac_service_pdu(ups_cancel_test);
 | 
	
		
			
				|  |  |          if (res == 1 || res == 0) {
 | 
	
	
		
			
				|  | @@ -1258,7 +1260,7 @@ char *HTTP_UPSTest(uint32_t reqNum, char *bufIn, char *bufOut, uint16_t lenBufIn
 | 
	
		
			
				|  |  |              strcat(bufOut, "Команда \"Запуск теста\" отклонена ИБП!");
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |      } else if (strncmp(tempValue, "time", 6) == 0) {
 | 
	
		
			
				|  |  | -        GetParamValue(bufIn, "=", tempValue2, &valueLen);
 | 
	
		
			
				|  |  | +        GetParamValue(bufIn, "time", tempValue2, &valueLen);
 | 
	
		
			
				|  |  |          TimeParam = atoi(tempValue2);
 | 
	
		
			
				|  |  |          res = ups_metac_service_pdu(ups_test_time);
 | 
	
		
			
				|  |  |          if (res == 1 || res == 0) {
 | 
	
	
		
			
				|  | @@ -1297,7 +1299,7 @@ char *HTTP_UPSshutdown(uint32_t reqNum, char *bufIn, char *bufOut, uint16_t lenB
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      strcpy(bufOut, HTTP_200_OK);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    GetParamValue(bufIn, "func=", tempValue, &valueLen);
 | 
	
		
			
				|  |  | +    GetParamValue(bufIn, "func", tempValue, &valueLen);
 | 
	
		
			
				|  |  |      if (strcmp(tempValue, "reboot") == 0) {
 | 
	
		
			
				|  |  |          res = ups_metac_service_pdu(ups_cancel_shut_down);
 | 
	
		
			
				|  |  |          if (res == 1) {
 | 
	
	
		
			
				|  | @@ -1310,7 +1312,7 @@ char *HTTP_UPSshutdown(uint32_t reqNum, char *bufIn, char *bufOut, uint16_t lenB
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |      } else if (strncmp(tempValue, "off", 5) == 0) {
 | 
	
		
			
				|  |  |          memset(tempValue2, 0, 50);
 | 
	
		
			
				|  |  | -        GetParamValue(bufIn, "after=", tempValue2, &valueLen);
 | 
	
		
			
				|  |  | +        GetParamValue(bufIn, "after", tempValue2, &valueLen);
 | 
	
		
			
				|  |  |          TimeParamFloat = atof(tempValue2);
 | 
	
		
			
				|  |  |          res = ups_metac_service_pdu(ups_shutdown);
 | 
	
		
			
				|  |  |          if (res == 1) {
 | 
	
	
		
			
				|  | @@ -1364,7 +1366,7 @@ void LoginTimerCallback(TimerHandle_t pxTimer)
 | 
	
		
			
				|  |  |    */
 | 
	
		
			
				|  |  |  int HTTP_ConfirmWebPwd(char *bufIn, char *bufOut, uint16_t lenBufIn, uint16_t *lenBufOut)
 | 
	
		
			
				|  |  |  {
 | 
	
		
			
				|  |  | -    char tempStr[50];
 | 
	
		
			
				|  |  | +    char tempStr[52];
 | 
	
		
			
				|  |  |      char login[20];
 | 
	
		
			
				|  |  |      char password[20];
 | 
	
		
			
				|  |  |      char tmp_password[33];
 | 
	
	
		
			
				|  | @@ -1376,17 +1378,18 @@ int HTTP_ConfirmWebPwd(char *bufIn, char *bufOut, uint16_t lenBufIn, uint16_t *l
 | 
	
		
			
				|  |  |      memset(login, 0, 20);
 | 
	
		
			
				|  |  |      memset(password, 0, 20);
 | 
	
		
			
				|  |  |      memset(tmp_password, 0, 33);
 | 
	
		
			
				|  |  | -    memset(tempStr, 0, 50);
 | 
	
		
			
				|  |  | +    memset(tempStr, 0, 52);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      memset(name_login, 0, 50);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +    tempStr[0] = '0';
 | 
	
		
			
				|  |  |      /* Get first 50 bytes of string */
 | 
	
		
			
				|  |  | -    strncpy(tempStr, bufIn, 49);
 | 
	
		
			
				|  |  | +    strncat(tempStr, bufIn, 49);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      /* Add " " to the string in order GetParamValue() can be able to parse the param */
 | 
	
		
			
				|  |  |      strcat(tempStr, " ");
 | 
	
		
			
				|  |  | -    GetParamValue(tempStr, "login=", login, &valueLen);
 | 
	
		
			
				|  |  | -    GetParamValue(tempStr, "password=", tmp_password, &valueLen);
 | 
	
		
			
				|  |  | +    GetParamValue(tempStr, "login", login, &valueLen);
 | 
	
		
			
				|  |  | +    GetParamValue(tempStr, "password", tmp_password, &valueLen);
 | 
	
		
			
				|  |  |      url_decode(password, sizeof(password), tmp_password);
 | 
	
		
			
				|  |  |      valueLen = strlen(password);
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -1555,8 +1558,8 @@ char *HTTP_ChangeUserPwd(uint32_t reqNum, char *bufIn, char *bufOut, uint16_t le
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      strcpy(bufOut, HTTP_200_OK);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    if (GetParamValue(tempStr, "username=", login, &valueLen) &&
 | 
	
		
			
				|  |  | -        GetParamValue(tempStr, "oldpass=", tmp, &valueLen)) {
 | 
	
		
			
				|  |  | +    if (GetParamValue(tempStr, "username", login, &valueLen) &&
 | 
	
		
			
				|  |  | +        GetParamValue(tempStr, "oldpass", tmp, &valueLen)) {
 | 
	
		
			
				|  |  |          url_decode(password, sizeof(password), tmp);
 | 
	
		
			
				|  |  |          for (user_id = 0; user_id < MAX_WEB_USERS; user_id++) {
 | 
	
		
			
				|  |  |              memset(value, 0, 20);
 | 
	
	
		
			
				|  | @@ -1568,7 +1571,7 @@ char *HTTP_ChangeUserPwd(uint32_t reqNum, char *bufIn, char *bufOut, uint16_t le
 | 
	
		
			
				|  |  |                  (memcmp(password, value, 11) == 0)) {
 | 
	
		
			
				|  |  |                  memset(tmp, 0, sizeof(tmp));
 | 
	
		
			
				|  |  |                  memset(password, 0, 20);
 | 
	
		
			
				|  |  | -                if (GetParamValue(tempStr, "newpass=", tmp, &valueLen)) {
 | 
	
		
			
				|  |  | +                if (GetParamValue(tempStr, "newpass", tmp, &valueLen)) {
 | 
	
		
			
				|  |  |                      url_decode(password, sizeof(password), tmp);
 | 
	
		
			
				|  |  |                      valueLen = strlen(password);
 | 
	
		
			
				|  |  |                      memcpy(sSettings.sAuth[user_id].password, password, sizeof(sSettings.sAuth[user_id].password));
 | 
	
	
		
			
				|  | @@ -1914,12 +1917,30 @@ uint8_t GetParamValue(char *inStr, char *paramName, char *paramValue, uint8_t *p
 | 
	
		
			
				|  |  |      char *endValue = 0;
 | 
	
		
			
				|  |  |      int  len = 0;
 | 
	
		
			
				|  |  |      char *strPtr = 0;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -    strPtr = strstr(inStr, paramName);
 | 
	
		
			
				|  |  | +    char paramName_tmp[50];
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    memset(paramName_tmp, 0, sizeof(paramName_tmp));
 | 
	
		
			
				|  |  | +    paramName_tmp[0] = '&';
 | 
	
		
			
				|  |  | +    strncat(paramName_tmp, paramName, strlen(paramName));
 | 
	
		
			
				|  |  | +    strcat(paramName_tmp, "=");
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    strPtr = strstr(inStr, paramName_tmp);
 | 
	
		
			
				|  |  | +    if (strPtr == 0) {
 | 
	
		
			
				|  |  | +        paramName_tmp[0] = '0';
 | 
	
		
			
				|  |  | +        strPtr = strstr(inStr, paramName_tmp);
 | 
	
		
			
				|  |  | +        if (strPtr == 0) {
 | 
	
		
			
				|  |  | +            paramName_tmp[0] = '\n';
 | 
	
		
			
				|  |  | +            strPtr = strstr(inStr, paramName_tmp);
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        if (strPtr == 0) {
 | 
	
		
			
				|  |  | +            paramName_tmp[0] = '?';
 | 
	
		
			
				|  |  | +            strPtr = strstr(inStr, paramName_tmp);
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      if (strPtr != 0) {
 | 
	
		
			
				|  |  |          beginValue = strpbrk(strPtr, "=");
 | 
	
		
			
				|  |  | -        endValue = strpbrk(strPtr, "&");
 | 
	
		
			
				|  |  | +        endValue = strpbrk(&strPtr[1], "&");
 | 
	
		
			
				|  |  |          if (endValue == 0) {
 | 
	
		
			
				|  |  |              endValue = strpbrk(strPtr, " ");
 | 
	
		
			
				|  |  |          }
 |