]> git.sur5r.net Git - openldap/blobdiff - libraries/liblutil/ntservice.c
Fix ldaps / TLS processing...
[openldap] / libraries / liblutil / ntservice.c
index f287a647cb13674cc41cc286797ba45289efcd8e..d9be5df4966994b856438a4aa81e65385eb4c2f1 100644 (file)
@@ -1,6 +1,13 @@
+/* $OpenLDAP$ */
+/*
+ * Copyright 1998-1999 The OpenLDAP Foundation, All Rights Reserved.
+ * COPYING RESTRICTIONS APPLY, see COPYRIGHT file
+ */
 /* ntservice.c */
 #include "portable.h"
 
+#ifdef HAVE_NT_SERVICE_MANAGER
+
 #include <ac/stdlib.h>
 #include <ac/string.h>
 
@@ -39,7 +46,8 @@ void (*stopfunc)(int);
 /* in nt_err.c */
 char *GetLastErrorString( void );
 
-int srv_install(LPCTSTR lpszServiceName, LPCTSTR lpszBinaryPathName)
+int srv_install(LPCTSTR lpszServiceName, LPCTSTR lpszDisplayName,
+               LPCTSTR lpszBinaryPathName, BOOL auto_start)
 {
        HKEY            hKey;
        DWORD           dwValue, dwDisposition;
@@ -51,10 +59,10 @@ int srv_install(LPCTSTR lpszServiceName, LPCTSTR lpszBinaryPathName)
                if ((schService = CreateService( 
                                                        schSCManager, 
                                                        lpszServiceName, 
-                                                       TEXT("OpenLDAP Directory Service")
-                                                       SC_MANAGER_CREATE_SERVICE
+                                                       lpszDisplayName
+                                                       SERVICE_ALL_ACCESS
                                                        SERVICE_WIN32_OWN_PROCESS, 
-                                                       SERVICE_DEMAND_START, 
+                                                       auto_start ? SERVICE_AUTO_START : SERVICE_DEMAND_START, 
                                                        SERVICE_ERROR_NORMAL, 
                                                        lpszBinaryPathName, 
                                                        NULL, NULL, NULL, NULL, NULL)) != NULL)
@@ -71,13 +79,13 @@ int srv_install(LPCTSTR lpszServiceName, LPCTSTR lpszBinaryPathName)
                                "REG_SZ", REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &hKey, 
                                &dwDisposition) != ERROR_SUCCESS)
                        {
-                               fprintf( stderr, "RegCreateKeyEx() failed. GetLastError=%d (%s)\n", GetLastError(), GetLastErrorString() );
+                               fprintf( stderr, "RegCreateKeyEx() failed. GetLastError=%lu (%s)\n", GetLastError(), GetLastErrorString() );
                                RegCloseKey(hKey);
                                return(0);
                        }
                        if ( RegSetValueEx(hKey, "EventMessageFile", 0, REG_EXPAND_SZ, lpszBinaryPathName, strlen(lpszBinaryPathName) + 1) != ERROR_SUCCESS)
                        {
-                               fprintf( stderr, "RegSetValueEx(EventMessageFile) failed. GetLastError=%d (%s)\n", GetLastError(), GetLastErrorString() );
+                               fprintf( stderr, "RegSetValueEx(EventMessageFile) failed. GetLastError=%lu (%s)\n", GetLastError(), GetLastErrorString() );
                                RegCloseKey(hKey);
                                return(0);
                        }
@@ -85,7 +93,7 @@ int srv_install(LPCTSTR lpszServiceName, LPCTSTR lpszBinaryPathName)
                        dwValue = EVENTLOG_ERROR_TYPE | EVENTLOG_WARNING_TYPE | EVENTLOG_INFORMATION_TYPE;
                        if ( RegSetValueEx(hKey, "TypesSupported", 0, REG_DWORD, (LPBYTE) &dwValue, sizeof(DWORD)) != ERROR_SUCCESS) 
                        {
-                               fprintf( stderr, "RegCreateKeyEx(TypesSupported) failed. GetLastError=%d (%s)\n", GetLastError(), GetLastErrorString() );
+                               fprintf( stderr, "RegCreateKeyEx(TypesSupported) failed. GetLastError=%lu (%s)\n", GetLastError(), GetLastErrorString() );
                                RegCloseKey(hKey);
                                return(0);
                        }
@@ -94,13 +102,13 @@ int srv_install(LPCTSTR lpszServiceName, LPCTSTR lpszBinaryPathName)
                }
                else
                {
-                       fprintf( stderr, "CreateService() failed. GetLastError=%d (%s)\n", GetLastError(), GetLastErrorString() );
+                       fprintf( stderr, "CreateService() failed. GetLastError=%lu (%s)\n", GetLastError(), GetLastErrorString() );
                        CloseServiceHandle(schSCManager);
                        return(0);
                }
        }
        else
-               fprintf( stderr, "OpenSCManager() failed. GetLastError=%d (%s)\n", GetLastError(), GetLastErrorString() );
+               fprintf( stderr, "OpenSCManager() failed. GetLastError=%lu (%s)\n", GetLastError(), GetLastErrorString() );
        return(0);
 }
 
@@ -120,20 +128,20 @@ int srv_remove(LPCTSTR lpszServiceName, LPCTSTR lpszBinaryPathName)
                                CloseServiceHandle(schSCManager);
                                return(1);
                        } else {
-                               fprintf( stderr, "DeleteService() failed. GetLastError=%d (%s)\n", GetLastError(), GetLastErrorString() );
+                               fprintf( stderr, "DeleteService() failed. GetLastError=%lu (%s)\n", GetLastError(), GetLastErrorString() );
                                fprintf( stderr, "The %s service has not been removed.\n", lpszBinaryPathName);
                                CloseServiceHandle(schService);
                                CloseServiceHandle(schSCManager);
                                return(0);
                        }
                } else {
-                       fprintf( stderr, "OpenService() failed. GetLastError=%d (%s)\n", GetLastError(), GetLastErrorString() );
+                       fprintf( stderr, "OpenService() failed. GetLastError=%lu (%s)\n", GetLastError(), GetLastErrorString() );
                        CloseServiceHandle(schSCManager);
                        return(0);
                }
        }
        else
-               fprintf( stderr, "OpenSCManager() failed. GetLastError=%d (%s)\n", GetLastError(), GetLastErrorString() );
+               fprintf( stderr, "OpenSCManager() failed. GetLastError=%lu (%s)\n", GetLastError(), GetLastErrorString() );
        return(0);
 }
 
@@ -285,8 +293,8 @@ void *getRegParam( char *svc, char *value )
        static char vValue[1024];
        DWORD valLen = sizeof( vValue );
 
-       if ( svc != NULL )
-               sprintf ( path, "SOFTWARE\\OpenLDAP\\%s\\Parameters", svc );
+       if ( svc && strcmp(svc, SERVICE_NAME) )
+               sprintf ( path, "SOFTWARE\\%s", svc );
        else
                strcpy (path, "SOFTWARE\\OpenLDAP\\Parameters" );
        
@@ -326,11 +334,11 @@ void LogSlapdStartedEvent( char *svc, int slap_debug, char *configfile, char *ur
        Inserts[i] = (char *)malloc( 20 );
        itoa( slap_debug, Inserts[i++], 10 );
        Inserts[i++] = ldap_pvt_strdup( configfile );
-       Inserts[i++] = ldap_pvt_strdup( urls );
+       Inserts[i++] = ldap_pvt_strdup( urls ? urls : "ldap:///" );
        Inserts[i++] = ldap_pvt_strdup( is_NT_Service ? "svc" : "cmd" );
 
        ReportEvent( hEventLog, EVENTLOG_INFORMATION_TYPE, 0,
-               MSG_SLAPD_STARTED, NULL, i, 0, Inserts, NULL );
+               MSG_SLAPD_STARTED, NULL, i, 0, (LPCSTR *) Inserts, NULL );
 
        for ( j = 0; j < i; j++ )
                ldap_memfree( Inserts[j] );
@@ -420,3 +428,5 @@ void ReportSlapdShutdownComplete(  )
                SetServiceStatus(hSLAPDServiceStatus, &SLAPDServiceStatus);
        }
 }
+
+#endif