26
26
char ZABBIX_EVENT_SOURCE[64] = {APPLICATION_NAME};
27
27
#endif /* _WINDOWS */
29
/******************************************************************************
31
* Function: comms_create_request *
33
* Purpose: dinamical xml request generation *
35
* Return value: XML request *
37
* Author: Eugene Grigorjev *
39
* Comments: required free allocated string with function 'zbx_free' *
41
******************************************************************************/
42
char* comms_create_request(
47
unsigned long *timestamp,
49
unsigned short *severity
52
#define ADD_XML_DATA(tag_name, var) \
54
str_base64_encode(var, data_b64, (int)strlen(var)); \
55
request = zbx_strdcatf(request, "<" tag_name ">%s</" tag_name ">", data_b64)
57
char data_b64[ZBX_MAX_B64_LEN];
65
/* zabbix_log(LOG_LEVEL_DEBUG, "comms_create_request host [%s] key [%s] data [%s]",host,key,data); */
67
memset(data_b64,0,sizeof(data_b64));
69
request = zbx_dsprintf(NULL,"%s", "<req>");
71
ADD_XML_DATA("host", host);
72
ADD_XML_DATA("key", key);
73
ADD_XML_DATA("data", data);
77
tmp_str = zbx_dsprintf(NULL, "%li", *lastlogsize);
78
ADD_XML_DATA("lastlogsize", tmp_str);
87
tmp_str = zbx_dsprintf(NULL, "%lu", *timestamp);
88
ADD_XML_DATA("timestamp", tmp_str);
91
ADD_XML_DATA("source", source);
93
tmp_str = zbx_dsprintf(NULL, "%u", *severity);
94
ADD_XML_DATA("severity", tmp_str);
98
return zbx_strdcat(request, "</req>");
101
int comms_parse_response(char *xml,char *host,char *key, char *data, char *lastlogsize, char *timestamp,
102
char *source, char *severity, int maxlen)
107
char host_b64[MAX_STRING_LEN];
108
char key_b64[MAX_STRING_LEN];
109
char data_b64[MAX_STRING_LEN];
110
char lastlogsize_b64[MAX_STRING_LEN];
111
char timestamp_b64[MAX_STRING_LEN];
112
char source_b64[ZBX_MAX_B64_LEN];
113
char severity_b64[MAX_STRING_LEN];
29
int comms_parse_response(char *xml, char *host, int host_len, char *key, int key_len, char *data, int data_len,
30
char *lastlogsize, int lastlogsize_len, char *timestamp, int timestamp_len,
31
char *source, int source_len, char *severity, int severity_len)
34
char *data_b64 = NULL;
123
memset(host_b64,0,sizeof(host_b64));
124
memset(key_b64,0,sizeof(key_b64));
125
memset(data_b64,0,sizeof(data_b64));
126
memset(lastlogsize_b64,0,sizeof(lastlogsize_b64));
127
memset(timestamp_b64,0,sizeof(timestamp_b64));
128
memset(source_b64,0,sizeof(source_b64));
129
memset(severity_b64,0,sizeof(severity_b64));
131
xml_get_data(xml, "host", host_b64, sizeof(host_b64)-1);
132
xml_get_data(xml, "key", key_b64, sizeof(key_b64)-1);
133
xml_get_data(xml, "data", data_b64, sizeof(data_b64)-1);
134
xml_get_data(xml, "lastlogsize", lastlogsize_b64, sizeof(lastlogsize_b64)-1);
135
xml_get_data(xml, "timestamp", timestamp_b64, sizeof(timestamp_b64)-1);
136
xml_get_data(xml, "source", source_b64, sizeof(source_b64)-1);
137
xml_get_data(xml, "severity", severity_b64, sizeof(severity_b64)-1);
139
memset(key,0,maxlen);
140
memset(host,0,maxlen);
141
memset(data,0,maxlen);
142
memset(lastlogsize,0,maxlen);
143
memset(timestamp,0,maxlen);
144
memset(source,0,maxlen);
145
memset(severity,0,maxlen);
147
str_base64_decode(host_b64, host, &i);
148
str_base64_decode(key_b64, key, &i);
149
str_base64_decode(data_b64, data, &i);
150
str_base64_decode(lastlogsize_b64, lastlogsize, &i);
151
str_base64_decode(timestamp_b64, timestamp, &i);
152
str_base64_decode(source_b64, source, &i);
153
str_base64_decode(severity_b64, severity, &i);
44
if (SUCCEED == xml_get_data_dyn(xml, "host", &data_b64))
46
str_base64_decode(data_b64, host, host_len - 1, &i);
48
xml_free_data_dyn(&data_b64);
51
if (SUCCEED == xml_get_data_dyn(xml, "key", &data_b64))
53
str_base64_decode(data_b64, key, key_len - 1, &i);
55
xml_free_data_dyn(&data_b64);
58
if (SUCCEED == xml_get_data_dyn(xml, "data", &data_b64))
60
str_base64_decode(data_b64, data, data_len - 1, &i);
62
xml_free_data_dyn(&data_b64);
65
if (SUCCEED == xml_get_data_dyn(xml, "lastlogsize", &data_b64))
67
str_base64_decode(data_b64, lastlogsize, lastlogsize_len - 1, &i);
68
lastlogsize[i] = '\0';
69
xml_free_data_dyn(&data_b64);
72
if (SUCCEED == xml_get_data_dyn(xml, "timestamp", &data_b64))
74
str_base64_decode(data_b64, timestamp, timestamp_len - 1, &i);
76
xml_free_data_dyn(&data_b64);
79
if (SUCCEED == xml_get_data_dyn(xml, "source", &data_b64))
81
str_base64_decode(data_b64, source, source_len - 1, &i);
83
xml_free_data_dyn(&data_b64);
86
if (SUCCEED == xml_get_data_dyn(xml, "severity", &data_b64))
88
str_base64_decode(data_b64, severity, severity_len - 1, &i);
90
xml_free_data_dyn(&data_b64);