summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/libs/zbxcommon/Makefile.am2
-rw-r--r--src/libs/zbxcommon/comms.c45
-rw-r--r--src/zabbix_sender/zabbix_sender.c10
-rw-r--r--src/zabbix_server/functions.c2
-rw-r--r--src/zabbix_server/trapper/trapper.c20
5 files changed, 52 insertions, 27 deletions
diff --git a/src/libs/zbxcommon/Makefile.am b/src/libs/zbxcommon/Makefile.am
index b9d14a52..bc4333cc 100644
--- a/src/libs/zbxcommon/Makefile.am
+++ b/src/libs/zbxcommon/Makefile.am
@@ -1,3 +1,3 @@
SUBDIRS=.
lib_LIBRARIES=libzbxcommon.a
-libzbxcommon_a_SOURCES=base64.c xml.c
+libzbxcommon_a_SOURCES=base64.c xml.c comms.c
diff --git a/src/libs/zbxcommon/comms.c b/src/libs/zbxcommon/comms.c
new file mode 100644
index 00000000..b2f9075a
--- /dev/null
+++ b/src/libs/zbxcommon/comms.c
@@ -0,0 +1,45 @@
+#include "common.h"
+
+int comms_create_request(char *host, char *key, char *data, char *request,int maxlen)
+{
+ int ret = SUCCEED;
+ char host_b64[MAX_STRING_LEN];
+ char key_b64[MAX_STRING_LEN];
+ char data_b64[MAX_STRING_LEN];
+
+ memset(host_b64,0,sizeof(host_b64));
+ memset(key_b64,0,sizeof(key_b64));
+ memset(data_b64,0,sizeof(data_b64));
+
+ str_base64_encode(host, host_b64, strlen(host));
+ str_base64_encode(key, key_b64, strlen(key));
+ str_base64_encode(data, data_b64, strlen(data));
+
+ snprintf(request,maxlen,"<req><host>%s</host><key>%s</key><data>%s</data></req>",host_b64,key_b64,data_b64);
+
+ return ret;
+}
+
+int comms_parse_response(char *xml,char *host,char *key, char *data, int maxlen)
+{
+ int ret = SUCCEED;
+ int i;
+
+ char host_b64[MAX_STRING_LEN];
+ char key_b64[MAX_STRING_LEN];
+ char data_b64[MAX_STRING_LEN];
+
+ xml_get_data(xml, "host", host_b64, sizeof(host_b64)-1);
+ xml_get_data(xml, "key", key_b64, sizeof(key_b64)-1);
+ xml_get_data(xml, "data", data_b64, sizeof(data_b64)-1);
+
+ memset(key,0,maxlen);
+ memset(host,0,maxlen);
+ memset(data,0,maxlen);
+
+ str_base64_decode(host_b64, host, &i);
+ str_base64_decode(key_b64, key, &i);
+ str_base64_decode(data_b64, data, &i);
+
+ return ret;
+}
diff --git a/src/zabbix_sender/zabbix_sender.c b/src/zabbix_sender/zabbix_sender.c
index 2e6f1aa8..c8a26eed 100644
--- a/src/zabbix_sender/zabbix_sender.c
+++ b/src/zabbix_sender/zabbix_sender.c
@@ -106,16 +106,10 @@ static int send_value(char *server,int port,char *hostname, char *key,char *valu
/* Send <req><host>SERVER_B64</host><key>KEY_B64</key><data>VALUE_B64</data></req> */
- memset(hostname_b64,0,sizeof(hostname_b64));
- memset(key_b64,0,sizeof(key_b64));
- memset(value_b64,0,sizeof(value_b64));
-
- str_base64_encode(hostname, hostname_b64, strlen(hostname));
- str_base64_encode(key, key_b64, strlen(key));
- str_base64_encode(value, value_b64, strlen(value));
+ comms_create_request(hostname, key, value, tosend,sizeof(tosend)-1);
// snprintf(tosend,sizeof(tosend)-1,"%s:%s\n",shortname,value);
- snprintf(tosend,sizeof(tosend)-1,"<req><host>%s</host><key>%s</key><data>%s</data></req>",hostname_b64,key_b64,value_b64);
+// snprintf(tosend,sizeof(tosend)-1,"<req><host>%s</host><key>%s</key><data>%s</data></req>",hostname_b64,key_b64,value_b64);
if( sendto(s,tosend,strlen(tosend),0,(struct sockaddr *)&servaddr_in,sizeof(struct sockaddr_in)) == -1 )
{
diff --git a/src/zabbix_server/functions.c b/src/zabbix_server/functions.c
index 35eae13d..882b6619 100644
--- a/src/zabbix_server/functions.c
+++ b/src/zabbix_server/functions.c
@@ -402,7 +402,7 @@ int process_data(int sockfd,char *server,char *key,char *value)
char lastlogsize[MAX_STRING_LEN];
int update_tr;
- zabbix_log( LOG_LEVEL_DEBUG, "In process_data()");
+ zabbix_log( LOG_LEVEL_WARNING, "In process_data([%s],[%s],[%s])",server,key,value);
snprintf(sql,sizeof(sql)-1,"select i.itemid,i.key_,h.host,h.port,i.delay,i.description,i.nextcheck,i.type,i.snmp_community,i.snmp_oid,h.useip,h.ip,i.history,i.lastvalue,i.prevvalue,i.value_type,i.trapper_hosts,i.delta,i.units,i.multiplier,i.formula from items i,hosts h where h.status=%d and h.hostid=i.hostid and h.host='%s' and i.key_='%s' and i.status=%d and i.type in (%d,%d)", HOST_STATUS_MONITORED, server, key, ITEM_STATUS_ACTIVE, ITEM_TYPE_TRAPPER, ITEM_TYPE_ZABBIX_ACTIVE);
result = DBselect(sql);
diff --git a/src/zabbix_server/trapper/trapper.c b/src/zabbix_server/trapper/trapper.c
index 7aa0735b..e3216ba6 100644
--- a/src/zabbix_server/trapper/trapper.c
+++ b/src/zabbix_server/trapper/trapper.c
@@ -83,25 +83,11 @@ int process_trap(int sockfd,char *s, int max_len)
{
zabbix_log( LOG_LEVEL_WARNING, "XML received [%s]", s);
- xml_get_data(s, "host", host_b64, MAX_STRING_LEN);
- xml_get_data(s, "key", key_b64, MAX_STRING_LEN);
- xml_get_data(s, "data", value_b64, MAX_STRING_LEN);
+ comms_parse_response(s,host_dec,key_dec, value_dec, sizeof(host_dec)-1);
- memset(key_dec,0,sizeof(key_dec));
- memset(host_dec,0,sizeof(host_dec));
- memset(value_dec,0,sizeof(value_dec));
-
- str_base64_decode(host_b64, host_dec, &i);
- str_base64_decode(key_b64, key_dec, &i);
- str_base64_decode(value_b64, value_dec, &i);
-
- zabbix_log( LOG_LEVEL_DEBUG, "Server [%s]->[%s]", host_b64, host_dec);
- zabbix_log( LOG_LEVEL_DEBUG, "Value [%s]->[%s]", value_b64, value_dec);
- zabbix_log( LOG_LEVEL_DEBUG, "Host [%s]->[%s]", host_b64, host_dec);
-
- host=host_dec;
- value_string=value_dec;
server=host_dec;
+ value_string=value_dec;
+ key=key_dec;
}
else
{