diff options
| author | osmiy <osmiy@97f52cf1-0a1b-0410-bd0e-c28be96e8082> | 2005-11-24 13:31:39 +0000 |
|---|---|---|
| committer | osmiy <osmiy@97f52cf1-0a1b-0410-bd0e-c28be96e8082> | 2005-11-24 13:31:39 +0000 |
| commit | 2f4787ab7dbef66ea0175dc79aea200d43d8628b (patch) | |
| tree | 49d8e38b063889386f7ce44ae80e8d69e0b31374 /src | |
| parent | 70d2cd50abf74c0347875986e2cb53152a0de089 (diff) | |
| download | zabbix-2f4787ab7dbef66ea0175dc79aea200d43d8628b.tar.gz zabbix-2f4787ab7dbef66ea0175dc79aea200d43d8628b.tar.xz zabbix-2f4787ab7dbef66ea0175dc79aea200d43d8628b.zip | |
- new W32 un/install floppy. (Eugene)
- fixed W32 agent service installation (Eugene)
git-svn-id: svn://svn.zabbix.com/trunk@2354 97f52cf1-0a1b-0410-bd0e-c28be96e8082
Diffstat (limited to 'src')
| -rwxr-xr-x | src/zabbix_agent_win32/Debug/ZabbixW32.exe | bin | 360536 -> 360536 bytes | |||
| -rwxr-xr-x | src/zabbix_agent_win32/Release/ZabbixW32.exe | bin | 114688 -> 114688 bytes | |||
| -rw-r--r-- | src/zabbix_agent_win32/main.cpp | 2 | ||||
| -rw-r--r-- | src/zabbix_agent_win32/service.cpp | 52 | ||||
| -rw-r--r-- | src/zabbix_agent_win32/sysinfo.cpp | 10 | ||||
| -rw-r--r-- | src/zabbix_agent_win32/util.cpp | 52 | ||||
| -rw-r--r-- | src/zabbix_agent_win32/zabbixw32.h | 13 |
7 files changed, 72 insertions, 57 deletions
diff --git a/src/zabbix_agent_win32/Debug/ZabbixW32.exe b/src/zabbix_agent_win32/Debug/ZabbixW32.exe Binary files differindex 46b8bc04..9a0a34b2 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 69b0b875..76387eec 100755 --- a/src/zabbix_agent_win32/Release/ZabbixW32.exe +++ b/src/zabbix_agent_win32/Release/ZabbixW32.exe diff --git a/src/zabbix_agent_win32/main.cpp b/src/zabbix_agent_win32/main.cpp index fb539e2a..af36a4a3 100644 --- a/src/zabbix_agent_win32/main.cpp +++ b/src/zabbix_agent_win32/main.cpp @@ -263,7 +263,7 @@ void Main(void) int ch; printf("\n*** Zabbix Win32 agent operational. Press ESC to terminate. ***\n"); - while(1) + for(;;) { ch=getch(); if (ch==0) diff --git a/src/zabbix_agent_win32/service.cpp b/src/zabbix_agent_win32/service.cpp index bdceb2f6..0e19b10a 100644 --- a/src/zabbix_agent_win32/service.cpp +++ b/src/zabbix_agent_win32/service.cpp @@ -132,10 +132,11 @@ CHECK_MEMORY(main,"InitService","end"); // Create service // -void ZabbixCreateService(char *execName) +int ZabbixCreateService(char *execName) { SC_HANDLE mgr,service; char cmdLine[MAX_PATH*2]; + int ret = 0; INIT_CHECK_MEMORY(main); @@ -143,7 +144,7 @@ INIT_CHECK_MEMORY(main); if (mgr==NULL) { printf("ERROR: Cannot connect to Service Manager (%s)\n",GetSystemErrorText(GetLastError())); - return; + return 1; } sprintf(cmdLine,"\"%s\" --config \"%s\"",execName,confFile); @@ -157,6 +158,7 @@ INIT_CHECK_MEMORY(main); printf("ERROR: Service named '" ZABBIX_SERVICE_NAME "' already exist\n"); else printf("ERROR: Cannot create service (%s)\n",GetSystemErrorText(code)); + ret = 1; } else { @@ -166,9 +168,11 @@ INIT_CHECK_MEMORY(main); CloseServiceHandle(mgr); - ZabbixInstallEventSource(execName); + if(ret == 0) + ret = ZabbixInstallEventSource(execName); CHECK_MEMORY(main,"ZabbixCreateService","end"); + return ret; } @@ -176,9 +180,10 @@ CHECK_MEMORY(main,"ZabbixCreateService","end"); // Remove service // -void ZabbixRemoveService(void) +int ZabbixRemoveService(void) { SC_HANDLE mgr,service; + int ret = 0; INIT_CHECK_MEMORY(main); @@ -187,7 +192,7 @@ INIT_CHECK_MEMORY(main); { printf("ERROR: Cannot connect to Service Manager (%s)\n",GetSystemErrorText(GetLastError())); CHECK_MEMORY(main,"ZabbixCreateService","OpenSCManager"); - return; + return 1; } service=OpenService(mgr,ZABBIX_SERVICE_NAME,DELETE); @@ -195,23 +200,29 @@ CHECK_MEMORY(main,"ZabbixCreateService","OpenSCManager"); { printf("ERROR: Cannot open service named '" ZABBIX_SERVICE_NAME "' (%s)\n", GetSystemErrorText(GetLastError())); + ret = 1; } else { if (DeleteService(service)) printf("Zabbix Win32 Agent service deleted successfully\n"); else + { printf("ERROR: Cannot remove service named '" ZABBIX_SERVICE_NAME "' (%s)\n", GetSystemErrorText(GetLastError())); + ret = 1; + } CloseServiceHandle(service); } CloseServiceHandle(mgr); - ZabbixRemoveEventSource(); + if(ret == 0) + ret = ZabbixRemoveEventSource(); CHECK_MEMORY(main,"ZabbixCreateService","end"); + return ret; } @@ -219,9 +230,10 @@ CHECK_MEMORY(main,"ZabbixCreateService","end"); // Start service // -void ZabbixStartService(void) +int ZabbixStartService(void) { SC_HANDLE mgr,service; + int ret = 0; INIT_CHECK_MEMORY(main); @@ -230,7 +242,7 @@ INIT_CHECK_MEMORY(main); { printf("ERROR: Cannot connect to Service Manager (%s)\n",GetSystemErrorText(GetLastError())); CHECK_MEMORY(main,"ZabbixStartService","OpenSCManager"); - return; + return 1; } service=OpenService(mgr,ZABBIX_SERVICE_NAME,SERVICE_START); @@ -238,20 +250,25 @@ CHECK_MEMORY(main,"ZabbixStartService","OpenSCManager"); { printf("ERROR: Cannot open service named '" ZABBIX_SERVICE_NAME "' (%s)\n", GetSystemErrorText(GetLastError())); + ret=1; } else { if (StartService(service,0,NULL)) printf("Zabbix Win32 Agent service started successfully\n"); else + { printf("ERROR: Cannot start service named '" ZABBIX_SERVICE_NAME "' (%s)\n", GetSystemErrorText(GetLastError())); + ret = 1; + } CloseServiceHandle(service); } CloseServiceHandle(mgr); CHECK_MEMORY(main,"ZabbixStartService","end"); + return ret; } @@ -259,9 +276,10 @@ CHECK_MEMORY(main,"ZabbixStartService","end"); // Stop service // -void ZabbixStopService(void) +int ZabbixStopService(void) { SC_HANDLE mgr,service; + int ret = 0; INIT_CHECK_MEMORY(main); @@ -270,7 +288,7 @@ INIT_CHECK_MEMORY(main); { printf("ERROR: Cannot connect to Service Manager (%s)\n",GetSystemErrorText(GetLastError())); CHECK_MEMORY(main,"ZabbixStopService","OpenSCManager"); - return; + return 1; } service=OpenService(mgr,ZABBIX_SERVICE_NAME,SERVICE_STOP); @@ -278,6 +296,7 @@ CHECK_MEMORY(main,"ZabbixStopService","OpenSCManager"); { printf("ERROR: Cannot open service named '" ZABBIX_SERVICE_NAME "' (%s)\n", GetSystemErrorText(GetLastError())); + ret = 1; } else { @@ -286,14 +305,18 @@ CHECK_MEMORY(main,"ZabbixStopService","OpenSCManager"); if (ControlService(service,SERVICE_CONTROL_STOP,&status)) printf("Zabbix Win32 Agent service stopped successfully\n"); else + { printf("ERROR: Cannot stop service named '" ZABBIX_SERVICE_NAME "' (%s)\n", GetSystemErrorText(GetLastError())); + ret = 1; + } CloseServiceHandle(service); } CloseServiceHandle(mgr); CHECK_MEMORY(main,"ZabbixStopService","end"); + return ret; } @@ -301,7 +324,7 @@ CHECK_MEMORY(main,"ZabbixStopService","end"); // Install event source // -void ZabbixInstallEventSource(char *path) +int ZabbixInstallEventSource(char *path) { HKEY hKey; DWORD dwTypes=EVENTLOG_ERROR_TYPE | EVENTLOG_WARNING_TYPE | EVENTLOG_INFORMATION_TYPE; @@ -314,7 +337,7 @@ INIT_CHECK_MEMORY(main); { printf("Unable to create registry key: %s\n",GetSystemErrorText(GetLastError())); CHECK_MEMORY(main,"ZabbixInstallEventSource","RegCreateKeyEx"); - return; + return 1; } RegSetValueEx(hKey,"TypesSupported",0,REG_DWORD,(BYTE *)&dwTypes,sizeof(DWORD)); @@ -324,6 +347,7 @@ CHECK_MEMORY(main,"ZabbixInstallEventSource","RegCreateKeyEx"); printf("Event source \"" ZABBIX_EVENT_SOURCE "\" installed successfully\n"); CHECK_MEMORY(main,"ZabbixInstallEventSource","end"); + return 0; } @@ -331,7 +355,7 @@ CHECK_MEMORY(main,"ZabbixInstallEventSource","end"); // Remove event source // -void ZabbixRemoveEventSource(void) +int ZabbixRemoveEventSource(void) { INIT_CHECK_MEMORY(main); @@ -345,6 +369,8 @@ INIT_CHECK_MEMORY(main); { printf("Unable to uninstall event source \"" ZABBIX_EVENT_SOURCE "\": %s\n", GetSystemErrorText(GetLastError())); + return 1; } CHECK_MEMORY(main,"ZabbixRemoveEventSource","end"); + return 0; } diff --git a/src/zabbix_agent_win32/sysinfo.cpp b/src/zabbix_agent_win32/sysinfo.cpp index ef979d4a..f935c03b 100644 --- a/src/zabbix_agent_win32/sysinfo.cpp +++ b/src/zabbix_agent_win32/sysinfo.cpp @@ -437,11 +437,11 @@ static LONG H_UserCounter(char *cmd,char *arg,double *value) static LONG H_MD5Hash(char *cmd,char *arg,char **value) { - char fileName[MAX_PATH],hashText[MD5_DIGEST_SIZE*2+1]; - unsigned char *data,hash[MD5_DIGEST_SIZE]; - HANDLE hFile,hFileMapping; - DWORD dwSize,dwSizeHigh; - int i; + char fileName[MAX_PATH], hashText[MD5_DIGEST_SIZE*2+1]; + unsigned char *data=NULL, hash[MD5_DIGEST_SIZE]; + HANDLE hFile=NULL,hFileMapping=NULL; + DWORD dwSize=0, dwSizeHigh=0; + int i=0; diff --git a/src/zabbix_agent_win32/util.cpp b/src/zabbix_agent_win32/util.cpp index 241cc530..56bd01fe 100644 --- a/src/zabbix_agent_win32/util.cpp +++ b/src/zabbix_agent_win32/util.cpp @@ -45,7 +45,7 @@ static void Help(void) " version : Display version information\n\n" "And possible options are:\n" " --config <file> : Specify alternate configuration file\n" - " (default is C:\\zabbix_agentd.conf)\n\n"); + " (default is %s)\n\n", confFile); } @@ -56,10 +56,11 @@ static void Help(void) // FALSE otherwise // -BOOL ParseCommandLine(int argc,char *argv[]) +int ParseCommandLine(int argc,char *argv[]) { int i; - BOOL ret = TRUE; + int ret = TRUE; + char path[MAX_PATH]; INIT_CHECK_MEMORY(main); @@ -68,13 +69,13 @@ INIT_CHECK_MEMORY(main); if (!strcmp(argv[i],"help")) // Display help and exit { Help(); - ret = FALSE; + exit(0); goto lbl_end; } else if (!strcmp(argv[i],"version")) // Display version and exit { printf("Zabbix Win32 Agent Version " AGENT_VERSION " Build of " __DATE__ "\n"); - ret = FALSE; + exit(0); goto lbl_end; } else if (!strcmp(argv[i],"--config")) // Config file @@ -91,63 +92,52 @@ INIT_CHECK_MEMORY(main); else if ((!strcmp(argv[i],"install"))|| (!strcmp(argv[i],"install-events"))) { - char path[MAX_PATH],*ptr; - - ptr=strrchr(argv[0],'\\'); - if (ptr!=NULL) - ptr++; - else - ptr=argv[0]; - - _fullpath(path,ptr,255); - - if (stricmp(&path[strlen(path)-4],".exe")) - strcat(path,".exe"); + _fullpath(path,argv[0],MAX_PATH); if (!strcmp(argv[i],"install")) - ZabbixCreateService(path); + ret = ZabbixCreateService(path); else - ZabbixInstallEventSource(path); - ret = FALSE; + ret = ZabbixInstallEventSource(path); + exit(ret); goto lbl_end; } else if (!strcmp(argv[i],"remove")) { - ZabbixRemoveService(); - ret = FALSE; + ret = ZabbixRemoveService(); + exit(ret); goto lbl_end; } else if (!strcmp(argv[i],"remove-events")) { - ZabbixRemoveEventSource(); - ret = FALSE; + ret = ZabbixRemoveEventSource(); + exit(ret); goto lbl_end; } else if (!strcmp(argv[i],"start")) { - ZabbixStartService(); - ret = FALSE; + ret = ZabbixStartService(); + exit(ret); goto lbl_end; } else if (!strcmp(argv[i],"stop")) { - ZabbixStopService(); - ret = FALSE; + ret = ZabbixStopService(); + exit(ret); goto lbl_end; } else if (!strcmp(argv[i],"check-config")) { dwFlags|=AF_STANDALONE; printf("Checking configuration file:\n\n"); - ReadConfig(); - ret = FALSE; + ret = ReadConfig(); + exit(ret); goto lbl_end; } else { printf("ERROR: Invalid command line argument\n\n"); Help(); - ret = FALSE; + exit(1); goto lbl_end; } } diff --git a/src/zabbix_agent_win32/zabbixw32.h b/src/zabbix_agent_win32/zabbixw32.h index 2d4bde9f..54f559f2 100644 --- a/src/zabbix_agent_win32/zabbixw32.h +++ b/src/zabbix_agent_win32/zabbixw32.h @@ -81,7 +81,6 @@ #define IsStandalone() (dwFlags & AF_STANDALONE) - // // Parameter definition structure // @@ -182,13 +181,13 @@ void CalculateMD5Hash(const unsigned char *data,int nbytes,unsigned char *hash); DWORD CalculateCRC32(const unsigned char *data,DWORD nbytes); void InitService(void); -void ZabbixCreateService(char *execName); -void ZabbixRemoveService(void); -void ZabbixStartService(void); -void ZabbixStopService(void); +int ZabbixCreateService(char *execName); +int ZabbixRemoveService(void); +int ZabbixStartService(void); +int ZabbixStopService(void); -void ZabbixInstallEventSource(char *path); -void ZabbixRemoveEventSource(void); +int ZabbixInstallEventSource(char *path); +int ZabbixRemoveEventSource(void); char *GetCounterName(DWORD index); |
