]> git.sur5r.net Git - openldap/blobdiff - libraries/liblutil/ntservice.c
Add experimental code to check simple bind passwords
[openldap] / libraries / liblutil / ntservice.c
index 5b1acddd127f0a89291d6c2b5fad8773abc6d562..6540bf20797fc0ae8e9063457c1d592b1130299d 100644 (file)
@@ -1,13 +1,29 @@
-// ntservice.c
+/* $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>
+
 #include <stdio.h>
+
 #include <windows.h>
-#include "ldap.h"
+#include <winsvc.h>
+
+#include <ldap.h>
+
+#define ldap_debug slap_debug
+extern int slap_debug;
+
 #include "ldap_log.h"
 #include "ldap_pvt_thread.h"
-#include <winsvc.h>
-#include <sys/types.h>
-#include <ac/string.h>
+
 
 #include "ldap_defaults.h"
 
@@ -27,13 +43,6 @@ ldap_pvt_thread_t            start_status_tid,       stop_status_tid;
 
 void (*stopfunc)(int);
 
-/* in main.c */
-void WINAPI ServiceMain( DWORD argc, LPTSTR *argv );
-
-
-/* in wsa_err.c */
-char *WSAGetLastErrorString( void );
-
 /* in nt_err.c */
 char *GetLastErrorString( void );
 
@@ -69,13 +78,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);
                        }
@@ -83,7 +92,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);
                        }
@@ -92,13 +101,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);
 }
 
@@ -118,20 +127,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);
 }
 
@@ -167,7 +176,7 @@ static void *start_status_routine( void *ptr )
                                SetServiceStatus(hSLAPDServiceStatus, &SLAPDServiceStatus);
                                break;
                        case WAIT_FAILED:
-                               /* theres been some proble with WaitForSingleObject so tell the Service
+                               /* theres been some problem with WaitForSingleObject so tell the Service
                                 * Control Manager to wait 30 seconds before deploying its assasin and 
                                 * then leave the thread. */
                                SLAPDServiceStatus.dwCheckPoint++;
@@ -209,7 +218,7 @@ static void *stop_status_routine( void *ptr )
                                SetServiceStatus(hSLAPDServiceStatus, &SLAPDServiceStatus);
                                break;
                        case WAIT_FAILED:
-                               /* theres been some proble with WaitForSingleObject so tell the Service
+                               /* theres been some problem with WaitForSingleObject so tell the Service
                                 * Control Manager to wait 30 seconds before deploying its assasin and 
                                 * then leave the thread. */
                                SLAPDServiceStatus.dwCheckPoint++;
@@ -232,7 +241,7 @@ void WINAPI SLAPDServiceCtrlHandler( IN DWORD Opcode)
        case SERVICE_CONTROL_STOP:
        case SERVICE_CONTROL_SHUTDOWN:
 
-               Debug( LDAP_DEBUG_TRACE, "Service Shutdown ordered\n", 0, 0 );
+               Debug( LDAP_DEBUG_TRACE, "Service Shutdown ordered\n", 0, 0, 0 );
                SLAPDServiceStatus.dwCurrentState       = SERVICE_STOP_PENDING;
                SLAPDServiceStatus.dwCheckPoint++;
                SLAPDServiceStatus.dwWaitHint           = SCM_NOTIFICATION_INTERVAL * 2;
@@ -313,7 +322,7 @@ void *getRegParam( char *svc, char *value )
        return (void*)NULL;
 }
 
-void LogSlapdStartedEvent( char *svc, int slap_debug, char *configfile, short port, int udp )
+void LogSlapdStartedEvent( char *svc, int slap_debug, char *configfile, char *urls )
 {
        char *Inserts[5];
        WORD i = 0, j;
@@ -324,12 +333,11 @@ void LogSlapdStartedEvent( char *svc, int slap_debug, char *configfile, short po
        Inserts[i] = (char *)malloc( 20 );
        itoa( slap_debug, Inserts[i++], 10 );
        Inserts[i++] = ldap_pvt_strdup( configfile );
-       Inserts[i] = (char *)malloc( 20 );
-       itoa( port, Inserts[i++], 10 );
-       Inserts[i++] = ldap_pvt_strdup( udp ? "udp" : "tcp" );
+       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 );
+       ReportEvent( hEventLog, EVENTLOG_INFORMATION_TYPE, 0,
+               MSG_SLAPD_STARTED, NULL, i, 0, (LPCSTR *) Inserts, NULL );
 
        for ( j = 0; j < i; j++ )
                ldap_memfree( Inserts[j] );
@@ -343,7 +351,8 @@ void LogSlapdStoppedEvent( char *svc )
        HANDLE hEventLog;
        
        hEventLog = RegisterEventSource( NULL, svc );
-       ReportEvent( hEventLog, EVENTLOG_INFORMATION_TYPE, 0, MSG_SLAPD_STOPPED, NULL, 0, 0, NULL, NULL );
+       ReportEvent( hEventLog, EVENTLOG_INFORMATION_TYPE, 0,
+               MSG_SLAPD_STOPPED, NULL, 0, 0, NULL, NULL );
        DeregisterEventSource( hEventLog );
 }
 
@@ -418,3 +427,5 @@ void ReportSlapdShutdownComplete(  )
                SetServiceStatus(hSLAPDServiceStatus, &SLAPDServiceStatus);
        }
 }
+
+#endif