summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorosmiy <osmiy@97f52cf1-0a1b-0410-bd0e-c28be96e8082>2005-11-24 13:31:39 +0000
committerosmiy <osmiy@97f52cf1-0a1b-0410-bd0e-c28be96e8082>2005-11-24 13:31:39 +0000
commit2f4787ab7dbef66ea0175dc79aea200d43d8628b (patch)
tree49d8e38b063889386f7ce44ae80e8d69e0b31374 /src
parent70d2cd50abf74c0347875986e2cb53152a0de089 (diff)
downloadzabbix-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-xsrc/zabbix_agent_win32/Debug/ZabbixW32.exebin360536 -> 360536 bytes
-rwxr-xr-xsrc/zabbix_agent_win32/Release/ZabbixW32.exebin114688 -> 114688 bytes
-rw-r--r--src/zabbix_agent_win32/main.cpp2
-rw-r--r--src/zabbix_agent_win32/service.cpp52
-rw-r--r--src/zabbix_agent_win32/sysinfo.cpp10
-rw-r--r--src/zabbix_agent_win32/util.cpp52
-rw-r--r--src/zabbix_agent_win32/zabbixw32.h13
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
index 46b8bc04..9a0a34b2 100755
--- a/src/zabbix_agent_win32/Debug/ZabbixW32.exe
+++ b/src/zabbix_agent_win32/Debug/ZabbixW32.exe
Binary files differ
diff --git a/src/zabbix_agent_win32/Release/ZabbixW32.exe b/src/zabbix_agent_win32/Release/ZabbixW32.exe
index 69b0b875..76387eec 100755
--- a/src/zabbix_agent_win32/Release/ZabbixW32.exe
+++ b/src/zabbix_agent_win32/Release/ZabbixW32.exe
Binary files differ
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);