payload name added to the transport protocol

This commit is contained in:
Bogdan Pilyugin 2025-01-24 13:26:31 +02:00
parent 94af947d1f
commit 0687a6a981
2 changed files with 39 additions and 38 deletions

View File

@ -98,6 +98,7 @@ typedef struct
time_t time;
int msgType;
int payloadType;
char payloadName[32];
void *payload;
unsigned char sha256[32];
} parsedData;

View File

@ -24,6 +24,7 @@
#include "webguiapp.h"
#include "SystemApplication.h"
#include "mbedtls/md.h"
#include <string.h>
#define TAG "SysComm"
@ -59,6 +60,7 @@ static sys_error_code PayloadDefaultTypeHandler(data_message_t *MSG)
jwObj_string(&jwc, "time", time);
jwObj_int(&jwc, "msgtype", DATA_MESSAGE_TYPE_RESPONSE);
jwObj_int(&jwc, "payloadtype", MSG->parsedData.payloadType);
jwObj_string(&jwc, "payloadname", MSG->parsedData.payloadName);
jwObj_object(&jwc, "payload");
jwObj_int(&jwc, "applytype", 0);
jwObj_object(&jwc, "variables");
@ -73,9 +75,7 @@ static sys_error_code PayloadDefaultTypeHandler(data_message_t *MSG)
for (int i = 0; i < result.elements; ++i)
{
jRead_string(MSG->inputDataBuffer, "{'data'{'payload'{'variables'{*", VarName,
VAR_MAX_NAME_LENGTH,
&i);
jRead_string(MSG->inputDataBuffer, "{'data'{'payload'{'variables'{*", VarName, VAR_MAX_NAME_LENGTH, &i);
const char parsevar[] = "{'data'{'payload'{'variables'{'";
char expr[sizeof(parsevar) + VAR_MAX_NAME_LENGTH];
strcpy(expr, parsevar);
@ -101,7 +101,6 @@ static sys_error_code PayloadDefaultTypeHandler(data_message_t *MSG)
tp = VAR_ERROR;
}
}
}
else
{ // Read variables
@ -114,7 +113,6 @@ static sys_error_code PayloadDefaultTypeHandler(data_message_t *MSG)
jwObj_string(&jwc, VarName, VarValue);
else
jwObj_raw(&jwc, VarName, VarValue);
}
free(VarValue);
}
@ -132,8 +130,7 @@ static sys_error_code PayloadDefaultTypeHandler(data_message_t *MSG)
if (datap)
{
datap += sizeof("\"data\":") - 1;
SHA256hmacHash((unsigned char*) datap, strlen(datap), (unsigned char*) "mykey", sizeof("mykey"),
MSG->parsedData.sha256);
SHA256hmacHash((unsigned char *)datap, strlen(datap), (unsigned char *)"mykey", sizeof("mykey"), MSG->parsedData.sha256);
unsigned char sha_print[32 * 2 + 1];
BytesToStr(MSG->parsedData.sha256, sha_print, 32);
sha_print[32 * 2] = 0x00;
@ -169,7 +166,6 @@ static sys_error_code PayloadDefaultTypeHandler(data_message_t *MSG)
default:
return SYS_ERROR_PARSE_APPLYTYPE;
}
}
else
{
@ -194,8 +190,7 @@ static sys_error_code DataHeaderParser(data_message_t *MSG)
jRead_string(MSG->inputDataBuffer, "{'data'", hashbuf, MSG->inputDataLength, 0);
if (strlen(hashbuf) > 0)
{
SHA256hmacHash((unsigned char*) hashbuf, strlen(hashbuf), (unsigned char*) "mykey", sizeof("mykey"),
MSG->parsedData.sha256);
SHA256hmacHash((unsigned char *)hashbuf, strlen(hashbuf), (unsigned char *)"mykey", sizeof("mykey"), MSG->parsedData.sha256);
unsigned char sha_print[32 * 2 + 1];
BytesToStr(MSG->parsedData.sha256, sha_print, 32);
sha_print[32 * 2] = 0x00;
@ -210,7 +205,6 @@ static sys_error_code DataHeaderParser(data_message_t *MSG)
return SYS_ERROR_PARSE_DATA;
}
jRead(MSG->inputDataBuffer, "{'signature'", &result);
if (result.elements == 1)
{
@ -223,8 +217,6 @@ static sys_error_code DataHeaderParser(data_message_t *MSG)
else
return SYS_ERROR_PARSE_SIGNATURE;
// Extract 'messidx' or throw exception
jRead(MSG->inputDataBuffer, "{'data'{'msgid'", &result);
if (result.elements == 1)
@ -274,6 +266,14 @@ static sys_error_code DataHeaderParser(data_message_t *MSG)
else
return SYS_ERROR_PARSE_PAYLOADTYPE;
jRead(MSG->inputDataBuffer, "{'data'{'payloadname'", &result);
if (result.elements == 1)
{
jRead_string(MSG->inputDataBuffer, "{'data'{'payloadname'", MSG->parsedData.payloadName, 31, 0);
}
else
strcpy(MSG->parsedData.payloadName, "notset");
sys_error_code err = SYS_ERROR_HANDLER_NOT_SET;
switch (MSG->parsedData.payloadType)
{