diff options
| author | osmiy <osmiy@97f52cf1-0a1b-0410-bd0e-c28be96e8082> | 2006-05-18 14:27:31 +0000 |
|---|---|---|
| committer | osmiy <osmiy@97f52cf1-0a1b-0410-bd0e-c28be96e8082> | 2006-05-18 14:27:31 +0000 |
| commit | 1c3253c2dddc63349e34e38d681bedeede2da8a7 (patch) | |
| tree | 9f9b6109a8bde5ac2e3e126285fbd13e64d81477 /src | |
| parent | c7bc0f193a9c9d590781f150494f18a31b7e2df9 (diff) | |
- fixed 'EventLog' monitoring for Win32 ZABBIX agent (Eugene)
- fixed Win32 ZABBIX agent crash (Eugene)
git-svn-id: svn://svn.zabbix.com/trunk@2857 97f52cf1-0a1b-0410-bd0e-c28be96e8082
Diffstat (limited to 'src')
| -rwxr-xr-x | src/zabbix_agent_win32/Debug/ZabbixW32.exe | bin | 368716 -> 372812 bytes | |||
| -rwxr-xr-x | src/zabbix_agent_win32/Release/ZabbixW32.exe | bin | 114688 -> 114688 bytes | |||
| -rw-r--r-- | src/zabbix_agent_win32/ZabbixW32.dsp | 4 | ||||
| -rwxr-xr-x | src/zabbix_agent_win32/active.cpp | 96 | ||||
| -rw-r--r-- | src/zabbix_agent_win32/collect.cpp | 6 | ||||
| -rw-r--r-- | src/zabbix_agent_win32/comm.cpp | 294 | ||||
| -rwxr-xr-x | src/zabbix_agent_win32/eventlog.cpp | 334 | ||||
| -rw-r--r-- | src/zabbix_agent_win32/log.cpp | 7 | ||||
| -rwxr-xr-x | src/zabbix_agent_win32/logfiles.cpp | 112 | ||||
| -rw-r--r-- | src/zabbix_agent_win32/messages.mc | 20 | ||||
| -rw-r--r-- | src/zabbix_agent_win32/resource.h | 2 | ||||
| -rw-r--r-- | src/zabbix_agent_win32/sysinfo.cpp | 14 | ||||
| -rw-r--r-- | src/zabbix_agent_win32/util.cpp | 3 | ||||
| -rw-r--r-- | src/zabbix_agent_win32/zabbixw32.h | 5 |
14 files changed, 399 insertions, 498 deletions
diff --git a/src/zabbix_agent_win32/Debug/ZabbixW32.exe b/src/zabbix_agent_win32/Debug/ZabbixW32.exe Binary files differindex a749cd83..7dc35b47 100755 --- a/src/zabbix_agent_win32/Debug/ZabbixW32.exe +++ b/src/zabbix_agent_win32/Debug/ZabbixW32.exe diff --git a/src/zabbix_agent_win32/Release/ZabbixW32.exe b/src/zabbix_agent_win32/Release/ZabbixW32.exe Binary files differindex 20117b57..d294927b 100755 --- a/src/zabbix_agent_win32/Release/ZabbixW32.exe +++ b/src/zabbix_agent_win32/Release/ZabbixW32.exe diff --git a/src/zabbix_agent_win32/ZabbixW32.dsp b/src/zabbix_agent_win32/ZabbixW32.dsp index c8930341..24a174af 100644 --- a/src/zabbix_agent_win32/ZabbixW32.dsp +++ b/src/zabbix_agent_win32/ZabbixW32.dsp @@ -239,5 +239,9 @@ BuildCmds= \ # End Source File # End Group +# Begin Source File + +SOURCE=..\..\..\tmp\EventLog.asp +# End Source File # End Target # End Project diff --git a/src/zabbix_agent_win32/active.cpp b/src/zabbix_agent_win32/active.cpp index c03ef01f..1aed96a0 100755 --- a/src/zabbix_agent_win32/active.cpp +++ b/src/zabbix_agent_win32/active.cpp @@ -79,16 +79,19 @@ METRIC *metrics=NULL; static void InitMetrics() { +LOG_DEBUG_INFO("s","In InitMetrics()"); if(metrics==NULL) { metrics=(METRIC *)malloc(sizeof(METRIC)); metrics[0].key=NULL; } +LOG_DEBUG_INFO("s","End of InitMetrics()"); } static void FreeMetrics(void) { int i; +LOG_DEBUG_INFO("s","In FreeMetrics()"); for(i=0;;i++) { if(metrics[i].key == NULL) break; @@ -96,21 +99,22 @@ static void FreeMetrics(void) metrics[i].status = ITEM_STATUS_NOTSUPPORTED; } free(metrics); +LOG_DEBUG_INFO("s","End of FreeMetrics()"); } void disable_all_metrics() { int i; +LOG_DEBUG_INFO("s","In disable_all_metrics()"); INIT_CHECK_MEMORY(main); -// LOG_DEBUG_INFO("s","disable_all_metrics: start"); for(i=0;;i++) { if(metrics[i].key == NULL) break; metrics[i].status = ITEM_STATUS_NOTSUPPORTED; } -// LOG_DEBUG_INFO("s","disable_all_metrics: end"); CHECK_MEMORY(main,"disable_all_metrics","end"); +LOG_DEBUG_INFO("s","End of disable_all_metrics()"); } int get_min_nextcheck() @@ -119,10 +123,9 @@ int get_min_nextcheck() int min=-1; int nodata=0; +LOG_DEBUG_INFO("s","In get_min_nextcheck()"); INIT_CHECK_MEMORY(main); -// LOG_DEBUG_INFO("s","get_min_nextcheck: start"); - for(i=0;;i++) { if(metrics[i].key == NULL) break; @@ -141,6 +144,7 @@ INIT_CHECK_MEMORY(main); } CHECK_MEMORY(main,"add_check","end"); +LOG_DEBUG_INFO("s","End of get_min_nextcheck()"); return min; } @@ -148,7 +152,7 @@ void add_check(char *key, int refresh, int lastlogsize) { int i; -// LOG_DEBUG_INFO("s","add_check: start"); +LOG_DEBUG_INFO("s","In add_check()"); for(i=0;;i++) { @@ -176,7 +180,7 @@ void add_check(char *key, int refresh, int lastlogsize) break; } } -// LOG_DEBUG_INFO("s","add_check: end"); +LOG_DEBUG_INFO("s","End of add_check()"); } // Return position of Nth delimiter from right size, 0 - otherwise @@ -185,17 +189,17 @@ int strnrchr(char *str, int num, char delim) int i=0; int n=0; +LOG_DEBUG_INFO("s","In strnrchr()"); INIT_CHECK_MEMORY(main); -// LOG_DEBUG_INFO("s","strnrchr: start"); for(i=strlen(str)-1;i>=0;i--) { if(str[i]==delim) n++; if(n==num) break; } if(i==-1) i=0; -// LOG_DEBUG_INFO("s","strnrchr: end"); CHECK_MEMORY(main,"strnrchr","end"); +LOG_DEBUG_INFO("s","End of strnrchr()"); return i; } @@ -212,7 +216,7 @@ int parse_list_of_checks(char *str) char *str_copy; int p1,p2; -// LOG_DEBUG_INFO("s","parse_list_of_checks: start"); +LOG_DEBUG_INFO("s","In parse_list_of_checks()"); disable_all_metrics(); str_copy=str; @@ -257,7 +261,7 @@ int parse_list_of_checks(char *str) pos=strchr(str_copy,'\n'); } -// LOG_DEBUG_INFO("s","parse_list_of_checks: end"); +LOG_DEBUG_INFO("s","End of parse_list_of_checks()"); return SUCCEED; } @@ -272,6 +276,7 @@ int get_active_checks(char *server, int port, char *error, int max_error_len) struct sockaddr_in servaddr_in; +LOG_DEBUG_INFO("s","In get_active_checks()"); // zabbix_log( LOG_LEVEL_DEBUG, "get_active_checks: host[%s] port[%d]", server, port); servaddr_in.sin_family=AF_INET; @@ -419,6 +424,7 @@ int get_active_checks(char *server, int port, char *error, int max_error_len) } // LOG_DEBUG_INFO("s","get_active_checks: end"); +LOG_DEBUG_INFO("s","End of get_active_checks()"); return SUCCEED; } @@ -441,6 +447,7 @@ int send_value(char *server,int port,char *host, char *key,char *value,char *las //LOG_DEBUG_INFO("s","send_value: value"); //LOG_DEBUG_INFO("s",value); +LOG_DEBUG_INFO("s","In send_value()"); INIT_CHECK_MEMORY(main); servaddr_in.sin_family=AF_INET; @@ -552,16 +559,13 @@ sprintf(tmp,"Error in sendto()"); lbl_End: CHECK_MEMORY(main, "send_value", "end"); +LOG_DEBUG_INFO("s","End of send_value()"); return ret; } int process_active_checks(char *server, int port) { - REQUEST rq; - HANDLE hThread=NULL; - unsigned int tid; - - + REQUEST rq; char value[MAX_STRING_LEN]; char lastlogsize[MAX_STRING_LEN]; char timestamp[MAX_STRING_LEN]; @@ -574,11 +578,10 @@ int process_active_checks(char *server, int port) char c[MAX_STRING_LEN]; char *filename; +LOG_DEBUG_INFO("s","In process_active_checks()"); INIT_CHECK_MEMORY(main); -// LOG_DEBUG_INFO("s","pac: start"); now=time(NULL); - for(i=0;;i++) { if(metrics[i].key == NULL) break; @@ -599,10 +602,10 @@ INIT_CHECK_MEMORY(main); count=0; while(process_log(filename,&metrics[i].lastlogsize,value) == 0) { -LOG_DEBUG_INFO("s","Active check: log[*]"); -LOG_DEBUG_INFO("s",filename); -LOG_DEBUG_INFO("s","Active check: value"); -LOG_DEBUG_INFO("s",value); +//LOG_DEBUG_INFO("s","Active check: log[*]"); +//LOG_DEBUG_INFO("s",filename); +//LOG_DEBUG_INFO("s","Active check: value"); +//LOG_DEBUG_INFO("s",value); sprintf(lastlogsize,"%d",metrics[i].lastlogsize); if(send_value(server,port,confHostname,metrics[i].key, value, lastlogsize,timestamp,source,severity) == FAIL) { @@ -624,15 +627,12 @@ LOG_DEBUG_INFO("s",value); /* Special processing for log files */ else if(strncmp(metrics[i].key,"eventlog[",9) == 0) { -// LOG_DEBUG_INFO("s","process_active_checks: 1"); - strscpy(c,metrics[i].key); filename=strtok(c,"[]"); filename=strtok(NULL,"[]"); -// LOG_DEBUG_INFO("s","process_active_checks: 2"); count=0; - while(process_eventlog_new(filename,&metrics[i].lastlogsize, timestamp, source, severity, value) == 0) + while(process_eventlog(filename,&metrics[i].lastlogsize, timestamp, source, severity, value) == 0) { // sprintf(shortname, "%s:%s",confHostname,metrics[i].key); // zabbix_log( LOG_LEVEL_DEBUG, "%s",shortname); @@ -657,10 +657,8 @@ LOG_DEBUG_INFO("s",value); break; } count++; -// LOG_DEBUG_INFO("s","pac: end of loop()"); /* Do not flood ZABBIX server if file grows too fast */ if(count >= MAX_LINES_PER_SECOND*metrics[i].refresh) break; -// LOG_DEBUG_INFO("s","pac: 4"); } } else @@ -670,25 +668,15 @@ LOG_DEBUG_INFO("s",value); source[0]=0; severity[0]=0; + // Init REQUEST + memset(&rq, 0, sizeof(REQUEST)); strcpy(rq.cmd,metrics[i].key); - - hThread=(HANDLE)_beginthreadex(NULL,0,ProcessingThread,(void *)&rq,0,&tid); - - if (WaitForSingleObject(hThread,confTimeout)==WAIT_TIMEOUT) - { - strcpy(rq.result,"ZBX_ERROR\n"); - statTimedOutRequests++; - } - CloseHandle(hThread); - - //send(sock,rq.result,strlen(rq.result),0); + ProcessCommand(rq.cmd,rq.result); - //process(metrics[i].key, value); + ret = send_value(server,port,confHostname,metrics[i].key,rq.result,lastlogsize,timestamp,source,severity) ; - //sprintf(shortname,"%s:%s",confHostname,metrics[i].key); -// zabbix_log( LOG_LEVEL_DEBUG, "%s",shortname); - if(send_value(server,port,confHostname,metrics[i].key,rq.result,lastlogsize,timestamp,source,severity) == FAIL) + if(ret == FAIL) { ret = FAIL; break; @@ -697,30 +685,29 @@ LOG_DEBUG_INFO("s",value); if(strcmp(value,"ZBX_NOTSUPPORTED\n")==0) { metrics[i].status=ITEM_STATUS_NOTSUPPORTED; -// zabbix_log( LOG_LEVEL_WARNING, "Active check [%s] is not supported. Disabled.", metrics[i].key); +LOG_DEBUG_INFO("s","Active check is not supported. Disabled"); } } metrics[i].nextcheck=time(NULL)+metrics[i].refresh; } -//LOG_DEBUG_INFO("s","process_active_checks: end"); CHECK_MEMORY(main, "process_active_checks", "end"); +LOG_DEBUG_INFO("s","End of process_active_checks()"); return ret; } void refresh_metrics(char *server, int port, char *error, int max_error_len) { -// LOG_DEBUG_INFO("s","refresh_metrics: start"); -// zabbix_log( LOG_LEVEL_DEBUG, "In refresh_metrics()"); +LOG_DEBUG_INFO("s","In refresh_metrics()"); while(get_active_checks(server, port, error, max_error_len) != SUCCEED) { -// zabbix_log( LOG_LEVEL_WARNING, "Getting list of active checks failed. Will retry after 60 seconds"); +LOG_DEBUG_INFO("s","Getting list of active checks failed. Will retry after 60 seconds"); #ifdef HAVE_FUNCTION_SETPROCTITLE setproctitle("poller [sleeping for %d seconds]", 60*1000); #endif Sleep(60*1000); } -// LOG_DEBUG_INFO("s","refresh_metrics: end"); +LOG_DEBUG_INFO("s","Out of refresh_metrics()"); } void ActiveChecksThread(void *) @@ -729,12 +716,9 @@ void ActiveChecksThread(void *) int sleeptime, nextcheck; int nextrefresh; +LOG_DEBUG_INFO("s","In ActiveChecksThread()"); INIT_CHECK_MEMORY(main); -// LOG_DEBUG_INFO("s", "ActiveChecksThread start"); - -// LOG_DEBUG_INFO("d",confServerPort); - InitMetrics(); refresh_metrics(confServer, confServerPort, error, MAX_STRING_LEN); @@ -743,7 +727,6 @@ INIT_CHECK_MEMORY(main); for(;;) { INIT_CHECK_MEMORY(for); -//LOG_DEBUG_INFO("s","ActiveChecksThread: loop 1"); if(process_active_checks(confServer, confServerPort) == FAIL) { Sleep(60*1000); @@ -764,16 +747,12 @@ CHECK_MEMORY(for, "ActiveChecksThread", "end for 1"); sleeptime=0; } } -//LOG_DEBUG_INFO("s","sleeptime"); -//LOG_DEBUG_INFO("d",sleeptime); if(sleeptime>0) { if(sleeptime > 60) { sleeptime = 60; } -// zabbix_log( LOG_LEVEL_DEBUG, "Sleeping for %d seconds", -// sleeptime ); Sleep( sleeptime*1000 ); } @@ -788,14 +767,13 @@ CHECK_MEMORY(for, "ActiveChecksThread", "end for 1"); nextrefresh=time(NULL)+300; } -// LOG_DEBUG_INFO("s","ActiveChecksThread: loop 2"); CHECK_MEMORY(for, "ActiveChecksThread", "end for"); } /**/ FreeMetrics(); CHECK_MEMORY(main, "ActiveChecksThread", "end"); -//LOG_DEBUG_INFO("s", "ActiveChecksThread end"); +LOG_DEBUG_INFO("s","End of ActiveChecksThread()"); _endthread(); } diff --git a/src/zabbix_agent_win32/collect.cpp b/src/zabbix_agent_win32/collect.cpp index 7e77f828..43abac5b 100644 --- a/src/zabbix_agent_win32/collect.cpp +++ b/src/zabbix_agent_win32/collect.cpp @@ -275,8 +275,10 @@ INIT_CHECK_MEMORY(do); // Calculate time spent on sample processing and issue warning if it exceeds threshold dwTicksElapsed=GetTickCount()-dwTicksStart; if (dwTicksElapsed>confMaxProcTime) - WriteLog(MSG_BIG_PROCESSING_TIME,EVENTLOG_WARNING_TYPE,"dd", - confMaxProcTime,dwTicksElapsed); + { + LOG_DEBUG_INFO("s","Processing took too many time."); + LOG_DEBUG_INFO("d",dwTicksElapsed); + } // Save processing time to history buffer collectorTimesHistory[collectorTimesIdx++]=dwTicksElapsed; diff --git a/src/zabbix_agent_win32/comm.cpp b/src/zabbix_agent_win32/comm.cpp index ee965e85..0bdcdc16 100644 --- a/src/zabbix_agent_win32/comm.cpp +++ b/src/zabbix_agent_win32/comm.cpp @@ -22,13 +22,6 @@ #include "zabbixw32.h" - -// -// Request structure -// - - - // // Global data // @@ -59,78 +52,120 @@ CHECK_MEMORY(main, "IsValidServerAddr", "end"); // -// Request processing thread -// - -unsigned int __stdcall ProcessingThread(void *arg) -{ -INIT_CHECK_MEMORY(main); - ProcessCommand(((REQUEST *)arg)->cmd,((REQUEST *)arg)->result); -CHECK_MEMORY(main, "ProcessingThread", "end"); - - _endthreadex(0); - return 0; -} - - -// -// Client communication thread +// Client communication // -static void CommThread(void *param) +void Communicate(SOCKET sock) { - SOCKET sock; - int rc; - REQUEST rq; - struct timeval timeout; - FD_SET rdfs; - HANDLE hThread=NULL; - unsigned int tid; + TIMEVAL timeout = {0,0}; + FD_SET rdfs; + REQUEST rq; -//LOG_DEBUG_INFO("CommThread start"); + int rc = 0; +LOG_DEBUG_INFO("s","In Communicate()"); INIT_CHECK_MEMORY(main); - sock=(SOCKET)param; - // Wait for command from server + // Wait for command from server FD_ZERO(&rdfs); - FD_SET(sock,&rdfs); // ignore WARNING - timeout.tv_sec=COMMAND_TIMEOUT; - timeout.tv_usec=0; - if (select(sock+1,&rdfs,NULL,NULL,&timeout)==0) + FD_SET(sock,&rdfs); // ignore WARNING '...whle(0)' + + timeout.tv_sec = COMMAND_TIMEOUT; + timeout.tv_usec = 0; + rc = select(sock+1, &rdfs, (fd_set *)NULL, (fd_set *)NULL, &timeout); + if (rc == SOCKET_ERROR) + { + WriteLog(MSG_SELECT_ERROR,EVENTLOG_ERROR_TYPE,"e",WSAGetLastError()); + goto end_session; + } + if(rc == 0) { WriteLog(MSG_COMMAND_TIMEOUT,EVENTLOG_WARNING_TYPE,NULL); - goto end_session; + goto end_session; } - rc=recv(sock,rq.cmd,MAX_ZABBIX_CMD_LEN,0); - if (rc<=0) - { - WriteLog(MSG_RECV_ERROR,EVENTLOG_ERROR_TYPE,"s",strerror(errno)); - goto end_session; - } + // Init REQUEST + memset(&rq, 0, sizeof(REQUEST)); + rc = recv(sock,rq.cmd,MAX_ZABBIX_CMD_LEN-1,0); - rq.cmd[rc-1]=0; + if(rc <= 0) + { + WriteLog(MSG_RECV_ERROR,EVENTLOG_ERROR_TYPE,"s",strerror(errno)); + goto end_session; + } + rq.cmd[rc-1]=0; - hThread=(HANDLE)_beginthreadex(NULL,0,ProcessingThread,(void *)&rq,0,&tid); + ProcessCommand(rq.cmd,rq.result); + goto send_result; - if (WaitForSingleObject(hThread,confTimeout)==WAIT_TIMEOUT) - { - strcpy(rq.result,"ZBX_ERROR\n"); - WriteLog(MSG_REQUEST_TIMEOUT,EVENTLOG_WARNING_TYPE,"s",rq.cmd); - statTimedOutRequests++; - } - CloseHandle(hThread); +end_session: + sprintf(rq.result,"ERROR\n"); - send(sock,rq.result,strlen(rq.result),0); +send_result: + send(sock,rq.result,strlen(rq.result),0); - // Terminate session -end_session: - shutdown(sock,2); - closesocket(sock); - _endthread(); +CHECK_MEMORY(main, "Communicate", "end"); +LOG_DEBUG_INFO("s","End of Communicate()"); +} + +// +// Client connector thread +// + +unsigned int __stdcall AcceptThread(void *arg) +{ + SOCKET sock = (SOCKET)arg; + struct sockaddr_in servAddr; + int iSize=0,errorCount=0; + + LOG_DEBUG_INFO("s", "In AcceptThread()"); + INIT_CHECK_MEMORY(main); + + // Wait for connection requests + for(;;) + { + INIT_CHECK_MEMORY(while); + SOCKET sockClient; + + iSize = sizeof(struct sockaddr_in); + if ((sockClient=accept(sock,(struct sockaddr *)&servAddr,&iSize)) < 0) + { + int error = WSAGetLastError(); + + if (error!=WSAEINTR) + WriteLog(MSG_ACCEPT_ERROR,EVENTLOG_ERROR_TYPE,"e",error); + + errorCount++; + statAcceptErrors++; + if (errorCount>1000) + { + WriteLog(MSG_TOO_MANY_ERRORS,EVENTLOG_WARNING_TYPE,NULL); + errorCount=0; + } + Sleep(500); + continue; + } + + errorCount=0; /* Reset consecutive errors counter */ + + if (IsValidServerAddr(servAddr.sin_addr.S_un.S_addr)) + { + statAcceptedRequests++; + Communicate(sockClient); + } else { + statRejectedRequests++; + } + + shutdown(sockClient,2); + closesocket(sockClient); + + CHECK_MEMORY(while, "AcceptThread", "while"); + } + CHECK_MEMORY(main, "AcceptThread", "end"); + LOG_DEBUG_INFO("s", "End of AcceptThread()"); -CHECK_MEMORY(main, "CommThread", "end"); + _endthreadex(0); + return 0; } @@ -140,81 +175,70 @@ CHECK_MEMORY(main, "CommThread", "end"); void ListenerThread(void *) { - SOCKET sock,sockClient; - struct sockaddr_in servAddr; - int iSize,errorCount=0; +#define MAX_LISTENERS_COUNT 10 -INIT_CHECK_MEMORY(main); -//LOG_DEBUG_INFO("s", "ListenerThread start"); - - // Create socket - if ((sock=socket(AF_INET,SOCK_STREAM,0))==-1) - { - WriteLog(MSG_SOCKET_ERROR,EVENTLOG_ERROR_TYPE,"e",WSAGetLastError()); - _endthread(); - exit(1); - } - - // Fill in local address structure - memset(&servAddr,0,sizeof(struct sockaddr_in)); - servAddr.sin_family=AF_INET; - servAddr.sin_addr.s_addr=htonl(INADDR_ANY); - servAddr.sin_port=htons(confListenPort); - - // Bind socket - if (bind(sock,(struct sockaddr *)&servAddr,sizeof(struct sockaddr_in))!=0) - { - WriteLog(MSG_BIND_ERROR,EVENTLOG_ERROR_TYPE,"e",WSAGetLastError()); - _endthread(); - exit(1); - } - - // Set up queue - listen(sock,SOMAXCONN); - - // Wait for connection requests - for(;;) - { -//LOG_DEBUG_INFO("s","ListenerThread while 1"); -INIT_CHECK_MEMORY(while); - - iSize=sizeof(struct sockaddr_in); - if ((sockClient=accept(sock,(struct sockaddr *)&servAddr,&iSize))==-1) - { - int error=WSAGetLastError(); - - if (error!=WSAEINTR) - WriteLog(MSG_ACCEPT_ERROR,EVENTLOG_ERROR_TYPE,"e",error); - errorCount++; - statAcceptErrors++; - if (errorCount>1000) - { - WriteLog(MSG_TOO_MANY_ERRORS,EVENTLOG_WARNING_TYPE,NULL); - errorCount=0; - } - Sleep(500); - } - - errorCount=0; // Reset consecutive errors counter - - if (IsValidServerAddr(servAddr.sin_addr.S_un.S_addr)) - { - statAcceptedRequests++; - - _beginthread(CommThread,0,(void *)sockClient); - - } - else // Unauthorized connection - { - statRejectedRequests++; - shutdown(sockClient,2); - closesocket(sockClient); - } -CHECK_MEMORY(while, "ListenerThread", "while"); - } - -CHECK_MEMORY(main, "ListenerThread", "end"); -//WriteLog(MSG_SOCKET_ERROR,EVENTLOG_ERROR_TYPE,"s","ListenerThread end"); + HANDLE hThread[MAX_LISTENERS_COUNT]; + unsigned int tid[MAX_LISTENERS_COUNT]; + + SOCKET sock; + struct sockaddr_in servAddr; + //int iSize=0, errorCount=0; + + int i=0; + + LOG_DEBUG_INFO("s", "In ListenerThread()"); + INIT_CHECK_MEMORY(main); + + // Create socket + if ((sock=socket(AF_INET,SOCK_STREAM,0)) == INVALID_SOCKET) + { + WriteLog(MSG_SOCKET_ERROR,EVENTLOG_ERROR_TYPE,"e",WSAGetLastError()); + LOG_DEBUG_INFO("s", "End of ListenerThread() Error: 1"); + _endthread(); + exit(1); + } + + // Fill in local address structure + memset(&servAddr,0,sizeof(struct sockaddr_in)); + servAddr.sin_family = AF_INET; + servAddr.sin_addr.s_addr = htonl(INADDR_ANY); + servAddr.sin_port = htons(confListenPort); + + // Bind socket + if (bind(sock,(struct sockaddr *)&servAddr,sizeof(struct sockaddr_in)) == SOCKET_ERROR) + { + WriteLog(MSG_BIND_ERROR,EVENTLOG_ERROR_TYPE,"e",WSAGetLastError()); + LOG_DEBUG_INFO("s", "End of ListenerThread() Error: 2"); + _endthread(); + exit(1); + } + + // Set up queue + if(listen(sock,SOMAXCONN) == SOCKET_ERROR) + { + WriteLog(MSG_LISTEN_ERROR,EVENTLOG_ERROR_TYPE,"e",WSAGetLastError()); + LOG_DEBUG_INFO("s", "End of ListenerThread() Error: 2"); + _endthread(); + exit(1); + } + + for(i = 0; i < MAX_LISTENERS_COUNT; i++) + { + hThread[i] = (HANDLE)_beginthreadex(NULL,0,AcceptThread,(void *)sock,0,&(tid[i])); + if(hThread[i] >=0 ) + WriteLog(MSG_INFORMATION,EVENTLOG_INFORMATION_TYPE,"ds", tid[i], ": Listen thread is Started."); + } + + for(i = 0; i < MAX_LISTENERS_COUNT; i++) + { + if(WaitForSingleObject(hThread[i], INFINITE) == WAIT_OBJECT_0) + WriteLog(MSG_INFORMATION,EVENTLOG_INFORMATION_TYPE,"ds", tid[i], ": Listen thread is Terminated."); + + CloseHandle( hThread ); + } + + CHECK_MEMORY(main, "ListenerThread", "end"); + LOG_DEBUG_INFO("s", "End of ListenerThread()"); _endthread(); } diff --git a/src/zabbix_agent_win32/eventlog.cpp b/src/zabbix_agent_win32/eventlog.cpp index a08e856a..2525a4a7 100755 --- a/src/zabbix_agent_win32/eventlog.cpp +++ b/src/zabbix_agent_win32/eventlog.cpp @@ -12,60 +12,70 @@ DllExport long MyGetAEventLog(char *pAppName,HANDLE hAppLog,long which,double *pTime,char *pSource,char *pMessage,DWORD *pType,WORD *pCategory, DWORD *timestamp); -int process_eventlog_new(char *source,int *lastlogsize, char *timestamp, char *src, char *severity, char *message) +int process_eventlog( + char *source, + int *lastlogsize, + char *timestamp, + char *src, + char *severity, + char *message) { HANDLE hAppLog; - long nRecords,Latest=1; + long FirstID; + long LastID; long i; double time; DWORD t,type; WORD category; int ret = 1; +LOG_DEBUG_INFO("s","In process_eventlog()"); INIT_CHECK_MEMORY(main); - if (!MyOpenEventLog(source,&hAppLog,&nRecords,&Latest)) + if (!MyOpenEventLog(source,&hAppLog,&LastID,&FirstID)) { - for (i = 0; i<nRecords;i++) + LastID += FirstID; + FirstID = ((*lastlogsize) >= FirstID) ? (*lastlogsize)+1 : FirstID; + + for (i = FirstID; i < LastID; i++) { - if(*lastlogsize <= i) + if(MyGetAEventLog(source,hAppLog,i,&time,src,message,&type,&category,&t) == 0) { - - if(0 == MyGetAEventLog(source,hAppLog,Latest,&time,src,message,&type,&category,&t)) - { - sprintf(timestamp,"%ld",t); - - if(type==EVENTLOG_ERROR_TYPE) type=4; - else if(type==EVENTLOG_AUDIT_FAILURE) type=7; - else if(type==EVENTLOG_AUDIT_SUCCESS) type=8; - else if(type==EVENTLOG_INFORMATION_TYPE) type=1; - else if(type==EVENTLOG_WARNING_TYPE) type=2; - sprintf(severity,"%d",type); - *lastlogsize = Latest; - ret = 0; - break; - } + sprintf(timestamp,"%ld",t); + + if(type==EVENTLOG_ERROR_TYPE) type=4; + else if(type==EVENTLOG_AUDIT_FAILURE) type=7; + else if(type==EVENTLOG_AUDIT_SUCCESS) type=8; + else if(type==EVENTLOG_INFORMATION_TYPE) type=1; + else if(type==EVENTLOG_WARNING_TYPE) type=2; + sprintf(severity,"%d",type); + *lastlogsize = i; + ret = 0; + break; } - Latest++; } MyCloseEventLog(hAppLog); } -CHECK_MEMORY(main, "process_eventlog_new","end"); + +CHECK_MEMORY(main, "process_eventlog","end"); +LOG_DEBUG_INFO("s","End of process_eventlog()"); return ret; } // open event logger and return number of records -DllExport long MyOpenEventLog(char *pAppName,HANDLE -*pEventHandle,long *pNumRecords,long *pLatestRecord) +DllExport long MyOpenEventLog( + char *pAppName, + HANDLE *pEventHandle, + long *pNumRecords, + long *pLatestRecord) { - HANDLE hAppLog; /* handle to the -application log */ + HANDLE hAppLog; /* handle to the application log */ +LOG_DEBUG_INFO("s","In MyOpenEventLog()"); INIT_CHECK_MEMORY(main); -// LOG_DEBUG_INFO("s","MyOpenEventLog: start"); *pEventHandle = 0; *pNumRecords = 0; hAppLog = OpenEventLog(NULL,pAppName); // open log file @@ -77,231 +87,193 @@ INIT_CHECK_MEMORY(main); GetNumberOfEventLogRecords(hAppLog,(unsigned long*)pNumRecords);// get number of records GetOldestEventLogRecord(hAppLog,(unsigned long*)pLatestRecord); *pEventHandle = hAppLog; -// LOG_DEBUG_INFO("s","MyOpenEventLog: end"); - CHECK_MEMORY(main, "MyOpenEventLog", "end"); + +CHECK_MEMORY(main, "MyOpenEventLog", "end"); +LOG_DEBUG_INFO("s","End of MyOpenEventLog()"); return(0); } // close event logger -DllExport long MyCloseEventLog(HANDLE hAppLog) +DllExport long MyCloseEventLog( + HANDLE hAppLog + ) { +LOG_DEBUG_INFO("s","In MyCloseEventLog()"); INIT_CHECK_MEMORY(main); -// LOG_DEBUG_INFO("s","MyCloseEventLog: start"); - if (hAppLog) - CloseEventLog(hAppLog); -// LOG_DEBUG_INFO("s","MyCloseEventLog: end"); - CHECK_MEMORY(main, "MyCloseEventLog", "end"); + + if (hAppLog) CloseEventLog(hAppLog); + +CHECK_MEMORY(main, "MyCloseEventLog", "end"); +LOG_DEBUG_INFO("s","End of MyCloseEventLog()"); return(0); } // clear event log -DllExport long MyClearEventLog(HANDLE hAppLog) +DllExport long MyClearEventLog( + HANDLE hAppLog + ) { +LOG_DEBUG_INFO("s","In MyClearEventLog()"); INIT_CHECK_MEMORY(main); -LOG_DEBUG_INFO("s","MyClearEventLog: start"); + if (!(ClearEventLog(hAppLog,0))) { -LOG_DEBUG_INFO("s","MyClearEventLog: end1"); +LOG_DEBUG_INFO("s","MyClearEventLog: error exit"); return(GetLastError()); } -LOG_DEBUG_INFO("s","MyClearEventLog: end2"); + CHECK_MEMORY(main, "MyClearEventLog", "end"); +LOG_DEBUG_INFO("s","End of MyClearEventLog()"); return(0); } // get Nth error from event log. 1 is the first. -DllExport long MyGetAEventLog(char *pAppName,HANDLE hAppLog,long -which,double *pTime,char *pSource,char *pMessage,DWORD *pType,WORD *pCategory, DWORD *timestamp) +DllExport long MyGetAEventLog( + char *pAppName, + HANDLE hAppLog, + long which, + double *pTime, + char *pSource, + char *pMessage, + DWORD *pType, + WORD *pCategory, + DWORD *timestamp + ) { EVENTLOGRECORD *pELR = NULL; - BYTE bBuffer[1024]; /* hold the event -log record raw data */ + BYTE bBuffer[1024]; /* hold the event log record raw data */ DWORD dwRead, dwNeeded; - BOOL bSuccess; char temp[MAX_PATH]; - char MsgDll[MAX_PATH]; /* the name of the -message DLL */ + char MsgDll[MAX_PATH]; /* the name of the message DLL */ HKEY hk = NULL; DWORD Data; DWORD Type; - HINSTANCE hLib = NULL; /* handle to the -messagetable DLL */ + HINSTANCE hLib = NULL; /* handle to the messagetable DLL */ char *pCh = NULL, *pFile = NULL, *pNextFile = NULL; char *aInsertStrs[MAX_INSERT_STRS]; // array of pointers to insert long i; LPTSTR msgBuf = NULL; // hold text of the error message that we long err = 0; +LOG_DEBUG_INFO("s","In MyGetAEventLog()"); INIT_CHECK_MEMORY(main); -//LOG_DEBUG_INFO("s","MyGetAEventLog: start"); - if (!hAppLog) - { -//LOG_DEBUG_INFO("s","MyGetAEventLog: 1"); - return(0); - } + if (!hAppLog) return(0); + + pMessage[0] = '\0'; - bSuccess = ReadEventLog(hAppLog, /* event-log handle */ + if(!ReadEventLog(hAppLog, /* event-log handle */ EVENTLOG_SEEK_READ | /* read forward */ EVENTLOG_FORWARDS_READ, /* sequential read */ which, /* which record to read 1 is first */ bBuffer, /* address of buffer */ sizeof(bBuffer), /* size of buffer */ &dwRead, /* count of bytes read */ - &dwNeeded); /* bytes in next record */ - - if (!bSuccess) + &dwNeeded)) /* bytes in next record */ { -//LOG_DEBUG_INFO("s","MyGetAEventLog: 2"); - err = GetLastError(); - if(err==0) err = 1; + return GetLastError(); } + pELR = (EVENTLOGRECORD*)bBuffer; // point to data - if(err == 0) - { - pELR = (EVENTLOGRECORD*)bBuffer; // point to data - - strcpy(pSource,((char*)pELR + sizeof(EVENTLOGRECORD)));// copy source name - // build path to message dll - strcpy(temp,"SYSTEM\\CurrentControlSet\\Services\\EventLog\\"); - strcat(temp,pAppName); - strcat(temp,"\\"); - strcat(temp,((char*)pELR + sizeof(EVENTLOGRECORD))); - if (RegOpenKey(HKEY_LOCAL_MACHINE, temp, &hk)) - { -//LOG_DEBUG_INFO("s","MyGetAEventLog: 3"); - err = GetLastError(); - if(err==0) err = 1; - } - } + *pTime = (double)pELR->TimeGenerated; // return double timestamp + *pType = pELR->EventType; // return event type + *pCategory = pELR->EventCategory; // return category + *timestamp = pELR->TimeGenerated; // return timestamp + + strcpy(pSource,((char*)pELR + sizeof(EVENTLOGRECORD)));// copy source name - if(err == 0) +// Get path to message dll + strcpy(temp,"SYSTEM\\CurrentControlSet\\Services\\EventLog\\"); + strcat(temp,pAppName); + strcat(temp,"\\"); + strcat(temp,((char*)pELR + sizeof(EVENTLOGRECORD))); + + pFile = NULL; + if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, temp, 0, KEY_READ, &hk) == ERROR_SUCCESS) { + pFile = temp; Data = MAX_PATH; - if (RegQueryValueEx(hk, /* handle of key to query */ + err = RegQueryValueEx( + hk, /* handle of key to query */ "EventMessageFile", /* value name */ NULL, /* must be NULL */ &Type, /* address of type value */ - (UCHAR*)temp, /* address of value data */ - &Data)) /* length of value data */ - { -//LOG_DEBUG_INFO("s","MyGetAEventLog: 4"); - err = GetLastError(); - if(err==0) err = 1; - } + (UCHAR*)pFile, /* address of value data */ + &Data); /* length of value data */ + RegCloseKey(hk); - pFile = temp; + if(err != ERROR_SUCCESS) + pFile = NULL; } - - if(err == 0) + + err = 1; + while(pFile) { - for (;;) + pNextFile = strchr(pFile,';'); + if(pNextFile) { -//LOG_DEBUG_INFO("s","MyGetAEventLog: for 1"); -//LOG_DEBUG_INFO("s",pFile); -//LOG_DEBUG_INFO("s","MyGetAEventLog: for 1.1"); - - - pNextFile = strchr(pFile,';'); - if (pNextFile) - { - *pNextFile = 0; - } -//LOG_DEBUG_INFO("s","MyGetAEventLog: for 1.3"); + *pNextFile = '\0'; + pNextFile++; + } - if (!ExpandEnvironmentStrings(pFile, MsgDll, MAX_PATH)) - { - err = GetLastError(); - if(err==0) err = 1; - break; - } -//LOG_DEBUG_INFO("s","MyGetAEventLog: for 2.1"); + if (ExpandEnvironmentStrings(pFile, MsgDll, MAX_PATH)) + { hLib = LoadLibraryEx(MsgDll, NULL, LOAD_LIBRARY_AS_DATAFILE); - if (!hLib) + if(hLib) { - err = 1; - break; - } -//LOG_DEBUG_INFO("s","MyGetAEventLog: 4"); - -/* prepare the array of insert strings for FormatMessage - the - insert strings are in the log entry. */ - pCh = (char *)((LPBYTE)pELR + pELR->StringOffset); + /* prepare the array of insert strings for FormatMessage - the + insert strings are in the log entry. */ + for ( + i = 0, pCh = (char *)((LPBYTE)pELR + pELR->StringOffset); + i < pELR->NumStrings && i < MAX_INSERT_STRS; + i++, pCh += strlen(pCh) + 1) /* point to next string */ + { + aInsertStrs[i] = pCh; + } - for (i = 0; i < pELR->NumStrings && i < MAX_INSERT_STRS; i++) - { -//LOG_DEBUG_INFO("s","MyGetAEventLog: 5"); - aInsertStrs[i] = pCh; - pCh += strlen(pCh) + 1; /* point to next string */ - } -//LOG_DEBUG_INFO("s","MyGetAEventLog: 6"); - - -/* Format the message from the message DLL with the insert strings */ - if (FormatMessage( - FORMAT_MESSAGE_FROM_HMODULE | /* get the message from the DLL */ - FORMAT_MESSAGE_ALLOCATE_BUFFER | /* allocate the msg buffer for us */ - FORMAT_MESSAGE_ARGUMENT_ARRAY | /* lpArgs is an array of pointers */ - //60, - /* line length for the mesages */ - FORMAT_MESSAGE_FROM_SYSTEM, - hLib, /* the messagetable DLL handle */ - pELR->EventID, /* message ID */ - MAKELANGID(LANG_NEUTRAL, SUBLANG_ENGLISH_US), /* language ID */ - (LPTSTR) &msgBuf, /* address of pointer to buffer for message */ - MAX_MSG_LENGTH, /* maximum size of the message buffer */ - aInsertStrs)) /* array of insert strings for the message */ - { + /* Format the message from the message DLL with the insert strings */ + FormatMessage( + FORMAT_MESSAGE_FROM_HMODULE | + FORMAT_MESSAGE_ALLOCATE_BUFFER | + FORMAT_MESSAGE_ARGUMENT_ARRAY | + FORMAT_MESSAGE_FROM_SYSTEM, + hLib, /* the messagetable DLL handle */ + pELR->EventID, /* message ID */ + MAKELANGID(LANG_NEUTRAL, SUBLANG_ENGLISH_US), /* language ID */ + (LPTSTR) &msgBuf, /* address of pointer to buffer for message */ + MAX_MSG_LENGTH, /* maximum size of the message buffer */ + aInsertStrs); /* array of insert strings for the message */ + + strcpy(pMessage,msgBuf); // copy message err = 0; - break; - } -//LOG_DEBUG_INFO("s","MyGetAEventLog: 9"); - if (!pNextFile) /* more files to read ? */ - { -//LOG_DEBUG_INFO("s","MyGetAEventLog: 10"); - RegCloseKey(hk); - err = GetLastError(); - if(err == 0) err = 1; - break; + /* Free the buffer that FormatMessage allocated for us. */ + if(msgBuf) LocalFree((HLOCAL) msgBuf); + FreeLibrary(hLib); } - pFile = ++pNextFile; - - LocalFree((HLOCAL) msgBuf); - msgBuf = NULL; - FreeLibrary(hLib); - hLib = NULL; } - } - - if(err == 0) - { - strcpy(pMessage,msgBuf); // copy message - *pTime = (double)pELR->TimeGenerated; + if(err == 0) break; - *pType = pELR->EventType; // return event type - *pCategory = pELR->EventCategory; // return category - - *timestamp=pELR->TimeGenerated; - -//LOG_DEBUG_INFO("s","MyGetAEventLog: 11"); + pFile = pNextFile; } -/* Free the buffer that FormatMessage allocated for us. */ - if(msgBuf) LocalFree((HLOCAL) msgBuf); -/* free the message DLL since we don't know if we'll need it again */ - if(hLib) FreeLibrary(hLib); - if(hk) RegCloseKey(hk); - -//LOG_DEBUG_INFO("s","Y"); -//LOG_DEBUG_INFO("d",*pType); -//LOG_DEBUG_INFO("s","MyGetAEventLog: pMessage"); -//LOG_DEBUG_INFO("s",pMessage); + if(err) + { + for ( + i = 0, pCh = (char *)((LPBYTE)pELR + pELR->StringOffset); + i < pELR->NumStrings && i < MAX_INSERT_STRS; + i++, pCh += strlen(pCh) + 1) /* point to next string */ + { + if(i > 0) strcat(pMessage,","); + strcat(pMessage,pCh); + } + } CHECK_MEMORY(main, "MyGetAEventLog", "end"); - return err; +LOG_DEBUG_INFO("s","End of MyGetAEventLog()"); + return 0; }
\ No newline at end of file diff --git a/src/zabbix_agent_win32/log.cpp b/src/zabbix_agent_win32/log.cpp index 1c75ffbe..5b948c38 100644 --- a/src/zabbix_agent_win32/log.cpp +++ b/src/zabbix_agent_win32/log.cpp @@ -149,6 +149,7 @@ void WriteLog(DWORD msg,WORD wType,char *format...) { va_list args; char *strings[16],*msgBuf; + char *ptmp; int numStrings=0; DWORD error; @@ -166,7 +167,11 @@ void WriteLog(DWORD msg,WORD wType,char *format...) switch(format[numStrings]) { case 's': - strings[numStrings]=strdup(va_arg(args,char *)); + ptmp = va_arg(args,char *); + if(ptmp) + strings[numStrings] = strdup(ptmp); + else + strings[numStrings] = 0; break; case 'd': strings[numStrings]=(char *)malloc(16); diff --git a/src/zabbix_agent_win32/logfiles.cpp b/src/zabbix_agent_win32/logfiles.cpp index 8a7bb75c..b12e7448 100755 --- a/src/zabbix_agent_win32/logfiles.cpp +++ b/src/zabbix_agent_win32/logfiles.cpp @@ -51,16 +51,11 @@ CHECK_MEMORY(main, "process_log", "fopen"); return 1; } -LOG_DEBUG_INFO("d",_filelength(_fileno(f))); -LOG_DEBUG_INFO("d",*lastlogsize); - if(_filelength(_fileno(f)) < *lastlogsize) { *lastlogsize=0; } -LOG_DEBUG_INFO("d",*lastlogsize); - if(-1 == fseek(f,*lastlogsize,SEEK_SET)) { // zabbix_log( LOG_LEVEL_WARNING, "Cannot set postition to [%d] for [%s] [%s]", *lastlogsize, filename, strerror(errno)); @@ -85,110 +80,3 @@ CHECK_MEMORY(main, "process_log", "end"); LOG_DEBUG_INFO("s","End of process_log()"); return 0; } - -int process_eventlog(char *source,int *lastlogsize, int *timestamp, char *value) -{ - HANDLE h; - EVENTLOGRECORD *pevlr; - BYTE bBuffer[1024*64]; - DWORD dwRead, dwNeeded, dwThisRecord; - -LOG_DEBUG_INFO("s","Lastlogsize:"); -LOG_DEBUG_INFO("d",*lastlogsize); - - -INIT_CHECK_MEMORY(main); - - // Open the Application event log. - - h = OpenEventLog( NULL, // use local computer - source); // source name - if (h == NULL) - { - sprintf(value,"%s","ZBX_NOTSUPPORTED\n"); - LOG_DEBUG_INFO("s","Could not open event log"); -CHECK_MEMORY(main, "process_eventlog", "OpenEventLog"); - return 1; - } - - pevlr = (EVENTLOGRECORD *) &bBuffer; - - // Get the record number of the oldest event log record. - - GetOldestEventLogRecord(h, &dwThisRecord); -// LOG_DEBUG_INFO("d", dwThisRecord); - - // Opening the event log positions the file pointer for this - // handle at the beginning of the log. Read the event log records - // sequentially until the last record has been read. - -// while (ReadEventLog(h, // event log handle - while(ReadEventLog(h, // event log handle - EVENTLOG_FORWARDS_READ|EVENTLOG_SEEK_READ, - dwThisRecord, - pevlr, // pointer to buffer - 1024*64, // size of buffer - &dwRead, // number of bytes read - &dwNeeded)) // bytes in next record - { - //while (dwRead > 0) -// LOG_DEBUG_INFO("d", dwRead); - if (dwRead > 0) - { - // Print the record number, event identifier, type, - // and source name. - - // LOG_DEBUG_INFO("d",dwThisRecord); - if((dwThisRecord++) >= ((DWORD)(*lastlogsize))) - { - sprintf(value, "%03d Event ID 0x%08X Event type ", - dwThisRecord, pevlr->EventID); - WriteLog(MSG_ACTIVE_CHECKS,EVENTLOG_ERROR_TYPE,"s",value); - - *lastlogsize=dwThisRecord; - - break; - } - - - - switch(pevlr->EventType) - { - case EVENTLOG_ERROR_TYPE: -// printf("EVENTLOG_ERROR_TYPE\t "); - break; - case EVENTLOG_WARNING_TYPE: - // printf("EVENTLOG_WARNING_TYPE\t "); - break; - case EVENTLOG_INFORMATION_TYPE: - // printf("EVENTLOG_INFORMATION_TYPE "); - break; - case EVENTLOG_AUDIT_SUCCESS: - // printf("EVENTLOG_AUDIT_SUCCESS\t "); - break; - case EVENTLOG_AUDIT_FAILURE: - // printf("EVENTLOG_AUDIT_FAILURE\t "); - break; - default: - // printf("Unknown "); - break; - } - -// printf("Event source: %s\n", -// (LPSTR) ((LPBYTE) pevlr + sizeof(EVENTLOGRECORD))); - - dwRead -= pevlr->Length; - pevlr = (EVENTLOGRECORD *) - ((LPBYTE) pevlr + pevlr->Length); - } - - pevlr = (EVENTLOGRECORD *) &bBuffer; - } - - - CloseEventLog(h); - -CHECK_MEMORY(main, "process_eventlog", "end"); - - return 0; -}
\ No newline at end of file diff --git a/src/zabbix_agent_win32/messages.mc b/src/zabbix_agent_win32/messages.mc index d9174970..c61f59f8 100644 --- a/src/zabbix_agent_win32/messages.mc +++ b/src/zabbix_agent_win32/messages.mc @@ -87,6 +87,18 @@ Unable to bind socket: %1 . MessageId= +SymbolicName=MSG_LISTEN_ERROR +Language=English +Error listening on socket: %1 +. + +MessageId= +SymbolicName=MSG_SELECT_ERROR +Language=English +Unable to select socket: %1 +. + +MessageId= SymbolicName=MSG_ACCEPT_ERROR Language=English Unable to accept incoming connection: %1 @@ -215,7 +227,13 @@ PdhLookupPerfNameByIndex failed: %1 MessageId= SymbolicName=MSG_DEBUG_INFO Language=English -Debug Info: %1 +%1 Debug Info: %2 +. + +MessageId= +SymbolicName=MSG_INFORMATION +Language=English +Information: %1 %2 . ;#endif diff --git a/src/zabbix_agent_win32/resource.h b/src/zabbix_agent_win32/resource.h index 8d31792e..c02c661a 100644 --- a/src/zabbix_agent_win32/resource.h +++ b/src/zabbix_agent_win32/resource.h @@ -7,7 +7,7 @@ // #ifdef APSTUDIO_INVOKED #ifndef APSTUDIO_READONLY_SYMBOLS -#define _APS_NEXT_RESOURCE_VALUE 103 +#define _APS_NEXT_RESOURCE_VALUE 104 #define _APS_NEXT_COMMAND_VALUE 40001 #define _APS_NEXT_CONTROL_VALUE 1000 #define _APS_NEXT_SYMED_VALUE 101 diff --git a/src/zabbix_agent_win32/sysinfo.cpp b/src/zabbix_agent_win32/sysinfo.cpp index ed5c2b80..62ab9145 100644 --- a/src/zabbix_agent_win32/sysinfo.cpp +++ b/src/zabbix_agent_win32/sysinfo.cpp @@ -945,6 +945,7 @@ static LONG H_SystemUname(char *cmd,char *arg,char **value) SYSTEM_INFO sysInfo; OSVERSIONINFO versionInfo; +LOG_DEBUG_INFO("s","In H_SystemUname()"); INIT_CHECK_MEMORY(main); dwSize=MAX_COMPUTERNAME_LENGTH+1; @@ -1008,6 +1009,7 @@ INIT_CHECK_MEMORY(main); *value=strdup(buffer); CHECK_MEMORY(main, "H_SystemUname","end"); +LOG_DEBUG_INFO("s","End of H_SystemUname()"); return SYSINFO_RC_SUCCESS; } @@ -1107,6 +1109,10 @@ void ProcessCommand(char *received_cmd,char *result) SUBAGENT *sbi; BOOL isSubagentCommand=FALSE; +assert(received_cmd); +assert(result); + +LOG_DEBUG_INFO("s","In ProcessCommand()"); INIT_CHECK_MEMORY(main); for(i=0; received_cmd[i]!='\0'; i++) @@ -1116,7 +1122,7 @@ INIT_CHECK_MEMORY(main); received_cmd[i] = '\0'; break; } - } + } ExpandAlias(received_cmd,cmd); @@ -1200,7 +1206,8 @@ finish_cmd_processing:; free(strResult); } - CHECK_MEMORY(main, "ProcessCommand","end"); +CHECK_MEMORY(main, "ProcessCommand","end"); +LOG_DEBUG_INFO("s","End of ProcessCommand()"); } char *test_cmd = NULL; @@ -1210,6 +1217,8 @@ int TestCommand() char result[MAX_STRING_LEN]; int i = 0; +LOG_DEBUG_INFO("s","In TestCommand()"); + result[0] = 0; ProcessCommand(test_cmd, result); for(i=0; result[i]!='\0'; i++) @@ -1222,5 +1231,6 @@ int TestCommand() } printf("%-35s [%s]\n",test_cmd, result); +LOG_DEBUG_INFO("s","End of TestCommand()"); return 0; }
\ No newline at end of file diff --git a/src/zabbix_agent_win32/util.cpp b/src/zabbix_agent_win32/util.cpp index 4987e358..bbb8b4e6 100644 --- a/src/zabbix_agent_win32/util.cpp +++ b/src/zabbix_agent_win32/util.cpp @@ -83,12 +83,12 @@ INIT_CHECK_MEMORY(main); { i++; strcpy(confFile,argv[i]); // Next word should contain name of the config file + ret = TRUE; } else if (!strcmp(argv[i],"standalone")) // Run in standalone mode { dwFlags|=AF_STANDALONE; ret = TRUE; - goto lbl_end; } else if ((!strcmp(argv[i],"install"))|| (!strcmp(argv[i],"install-events"))) @@ -131,6 +131,7 @@ INIT_CHECK_MEMORY(main); i++; test_cmd = argv[i]; dwFlags|=AF_STANDALONE; + ret = TRUE; } else if (!strcmp(argv[i],"check-config")) { diff --git a/src/zabbix_agent_win32/zabbixw32.h b/src/zabbix_agent_win32/zabbixw32.h index 658caa7a..cc199dcf 100644 --- a/src/zabbix_agent_win32/zabbixw32.h +++ b/src/zabbix_agent_win32/zabbixw32.h @@ -43,7 +43,7 @@ #else #define DEBUG_SUFFIX #endif -#define AGENT_VERSION "1.1beta9" DEBUG_SUFFIX +#define AGENT_VERSION "1.1beta10" DEBUG_SUFFIX #define ZABBIX_SERVICE_NAME "ZabbixAgentdW32" #define ZABBIX_EVENT_SOURCE "Zabbix Win32 Agent" @@ -215,8 +215,7 @@ void ExpandAlias(char *orig,char *expanded); unsigned int __stdcall ProcessingThread(void *arg); int process_log(char *filename,int *lastlogsize, char *value); -//int process_eventlog(char *source,int *lastlogsize, char *value); -int process_eventlog_new(char *source,int *lastlogsize, char *timestamp, char *src, char *severity, char *message); +int process_eventlog(char *source,int *lastlogsize, char *timestamp, char *src, char *severity, char *message); void str_base64_encode(char *p_str, char *p_b64str, int in_size); void str_base64_decode(char *p_b64str, char *p_str, int *p_out_size); |
