Log and database functions moved from server core to libnxsrv
authorVictor Kirhenshtein <victor@netxms.org>
Sat, 16 Oct 2004 07:34:14 +0000 (07:34 +0000)
committerVictor Kirhenshtein <victor@netxms.org>
Sat, 16 Oct 2004 07:34:14 +0000 (07:34 +0000)
15 files changed:
.gitattributes
ChangeLog
src/server/core/config.cpp
src/server/core/main.cpp
src/server/core/netxmsd.dsp
src/server/core/nms_core.h
src/server/core/winsrv.cpp
src/server/include/nxsrvapi.h
src/server/libnxsrv/db.cpp [moved from src/server/core/db.cpp with 71% similarity]
src/server/libnxsrv/libnxsrv.dsp
src/server/libnxsrv/libnxsrv.h
src/server/libnxsrv/libnxsrv.rc [moved from src/server/core/core.rc with 100% similarity]
src/server/libnxsrv/log.cpp [moved from src/server/core/log.cpp with 87% similarity]
src/server/libnxsrv/messages.mc [moved from src/server/core/messages.mc with 99% similarity]
src/server/libnxsrv/resource.h [moved from src/server/core/resource.h with 100% similarity]

index 4433fb1..4403b66 100644 (file)
@@ -381,9 +381,7 @@ src/server/core/alarm.cpp -text
 src/server/core/client.cpp -text
 src/server/core/config.cpp -text
 src/server/core/container.cpp -text
-src/server/core/core.rc -text
 src/server/core/datacoll.cpp -text
-src/server/core/db.cpp -text
 src/server/core/dbwrite.cpp -text
 src/server/core/dcitem.cpp -text
 src/server/core/dcithreshold.cpp -text
@@ -400,9 +398,7 @@ src/server/core/id.cpp -text
 src/server/core/image.cpp -text
 src/server/core/interface.cpp -text
 src/server/core/locks.cpp -text
-src/server/core/log.cpp -text
 src/server/core/main.cpp -text
-src/server/core/messages.mc -text
 src/server/core/netinfo.cpp -text
 src/server/core/netobj.cpp -text
 src/server/core/netxmsd.dsp -text
@@ -419,7 +415,6 @@ src/server/core/node.cpp -text
 src/server/core/nortel.cpp -text
 src/server/core/np.cpp -text
 src/server/core/objects.cpp -text
-src/server/core/resource.h -text
 src/server/core/rootobj.cpp -text
 src/server/core/session.cpp -text
 src/server/core/snmp.cpp -text
@@ -459,10 +454,15 @@ src/server/include/nxsrvapi.h -text
 src/server/include/rwlock.h -text
 src/server/libnxsrv/Makefile.am -text
 src/server/libnxsrv/agent.cpp -text
+src/server/libnxsrv/db.cpp -text
 src/server/libnxsrv/libnxsrv.dsp -text
 src/server/libnxsrv/libnxsrv.dsw -text
 src/server/libnxsrv/libnxsrv.h -text
+src/server/libnxsrv/libnxsrv.rc -text
+src/server/libnxsrv/log.cpp -text
 src/server/libnxsrv/main.cpp -text
+src/server/libnxsrv/messages.mc -text
+src/server/libnxsrv/resource.h -text
 src/server/libnxsrv/rwlock.cpp -text
 src/server/tools/Makefile.am -text
 src/server/tools/nxaction/Makefile.am -text
index 6f5c2cb..1610546 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -10,6 +10,7 @@
 - Windows console: fixed bug in object browser which cause console to crash
 - Added internal statistics collection for average data collector queue length
   and average database writer queue length
+- All IP addresses now stored in database as text
 
 
 *
index f503f2d..ef1e00e 100644 (file)
@@ -191,7 +191,7 @@ BOOL ParseCommandLine(int argc, char *argv[])
       else if ((!strcmp(argv[i], "install"))||
                (!strcmp(argv[i], "install-events")))
       {
-         char path[MAX_PATH], *ptr;
+         char exePath[MAX_PATH], dllPath[MAX_PATH], *ptr;
 
          ptr = strrchr(argv[0], '\\');
          if (ptr != NULL)
@@ -199,15 +199,22 @@ BOOL ParseCommandLine(int argc, char *argv[])
          else
             ptr = argv[0];
 
-         _fullpath(path, ptr, 255);
+         _fullpath(exePath, ptr, 255);
 
-         if (stricmp(&path[strlen(path)-4], ".exe"))
-            strcat(path, ".exe");
+         if (stricmp(&exePath[strlen(exePath)-4], ".exe"))
+            strcat(exePath, ".exe");
+         strcpy(dllPath, exePath);
+         ptr = strrchr(dllPath, '\\');
+         if (ptr != NULL)  // Shouldn't be NULL
+         {
+            ptr++;
+            strcpy(ptr, "libnxsrv.dll");
+         }
 
          if (!strcmp(argv[i], "install"))
-            InstallService(path);
+            InstallService(exePath, dllPath);
          else
-            InstallEventSource(path);
+            InstallEventSource(dllPath);
          return FALSE;
       }
       else if (!strcmp(argv[i], "remove"))
index caf9b62..f2fd69a 100644 (file)
@@ -166,7 +166,7 @@ BOOL Initialize(void)
    DWORD dwAddr;
    char szInfo[256];
 
-   InitLog();
+   InitLog(g_dwFlags & AF_USE_EVENT_LOG, g_szLogFile, g_dwFlags & AF_STANDALONE);
 
 #ifdef _WIN32
    WSADATA wsaData;
@@ -179,7 +179,7 @@ BOOL Initialize(void)
    g_pLazyRequestQueue = new Queue(64, 16);
 
    // Initialize database driver and connect to database
-   if (!DBInit())
+   if (!DBInit(TRUE, g_dwFlags & AF_LOG_SQL_ERRORS))
       return FALSE;
 
    g_hCoreDB = DBConnect();
index 3d722d5..f4bbd17 100644 (file)
@@ -128,10 +128,6 @@ SOURCE=.\datacoll.cpp
 # End Source File
 # Begin Source File
 
-SOURCE=.\db.cpp
-# End Source File
-# Begin Source File
-
 SOURCE=.\dbwrite.cpp
 # End Source File
 # Begin Source File
@@ -196,10 +192,6 @@ SOURCE=.\locks.cpp
 # End Source File
 # Begin Source File
 
-SOURCE=.\log.cpp
-# End Source File
-# Begin Source File
-
 SOURCE=.\main.cpp
 # End Source File
 # Begin Source File
@@ -378,63 +370,6 @@ SOURCE=..\..\..\include\unicode.h
 # Begin Group "Resource Files"
 
 # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
-# Begin Source File
-
-SOURCE=.\core.rc
-# End Source File
-# Begin Source File
-
-SOURCE=.\MSG00001.bin
-# End Source File
-# End Group
-# Begin Group "Message files"
-
-# PROP Default_Filter ".mc"
-# Begin Source File
-
-SOURCE=.\messages.mc
-
-!IF  "$(CFG)" == "netxmsd - Win32 Release"
-
-# Begin Custom Build - Running Message Compiler on $(InputPath)
-ProjDir=.
-InputPath=.\messages.mc
-InputName=messages
-
-BuildCmds= \
-       mc -s -U -h $(ProjDir) -r $(ProjDir) $(InputName) \
-       del $(ProjDir)\$(InputName).rc \
-       
-
-"$(InputName).h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
-   $(BuildCmds)
-
-"Msg00001.bin" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
-   $(BuildCmds)
-# End Custom Build
-
-!ELSEIF  "$(CFG)" == "netxmsd - Win32 Debug"
-
-# Begin Custom Build - Running Message Compiler on $(InputPath)
-ProjDir=.
-InputPath=.\messages.mc
-InputName=messages
-
-BuildCmds= \
-       mc -s -U -h $(ProjDir) -r $(ProjDir) $(InputName) \
-       del $(ProjDir)\$(InputName).rc \
-       
-
-"$(InputName).h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
-   $(BuildCmds)
-
-"Msg00001.bin" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
-   $(BuildCmds)
-# End Custom Build
-
-!ENDIF 
-
-# End Source File
 # End Group
 # End Target
 # End Project
index 94ebacc..b40efa3 100644 (file)
@@ -95,9 +95,6 @@
 
 #endif   /* _WIN32 */
 
-#define MAX_DB_LOGIN          64
-#define MAX_DB_PASSWORD       64
-#define MAX_DB_NAME           32
 #define MAX_LINE_SIZE         4096
 
 #define UNLOCKED           ((DWORD)0xFFFFFFFF)
@@ -154,18 +151,6 @@ typedef void * HSNMPSESSION;
 #define ShutdownInProgress()  (g_dwFlags & AF_SHUTDOWN)
 
 
-//
-// Win32 service constants
-//
-
-#ifdef _WIN32
-
-#define CORE_SERVICE_NAME  "NetXMSCore"
-#define CORE_EVENT_SOURCE  "NetXMSCore"
-
-#endif   /* _WIN32 */
-
-
 //
 // Client session flags
 //
@@ -339,10 +324,6 @@ BOOL ConfigWriteStr(char *szVar, char *szValue, BOOL bCreate);
 BOOL ConfigWriteInt(char *szVar, int iValue, BOOL bCreate);
 BOOL ConfigWriteULong(char *szVar, DWORD dwValue, BOOL bCreate);
 
-void InitLog(void);
-void CloseLog(void);
-void WriteLog(DWORD msg, WORD wType, char *format, ...);
-
 BOOL ParseCommandLine(int argc, char *argv[]);
 BOOL LoadConfig(void);
 
@@ -354,32 +335,6 @@ BOOL SleepAndCheckForShutdown(int iSeconds);
 
 void SaveObjects(void);
 
-BOOL DBInit(void);
-DB_HANDLE DBConnect(void);
-void DBDisconnect(DB_HANDLE hConn);
-BOOL DBQuery(DB_HANDLE hConn, char *szQuery);
-DB_RESULT DBSelect(DB_HANDLE hConn, char *szQuery);
-DB_ASYNC_RESULT DBAsyncSelect(DB_HANDLE hConn, char *szQuery);
-BOOL DBFetch(DB_ASYNC_RESULT hResult);
-char *DBGetField(DB_RESULT hResult, int iRow, int iColumn);
-long DBGetFieldLong(DB_RESULT hResult, int iRow, int iColumn);
-DWORD DBGetFieldULong(DB_RESULT hResult, int iRow, int iColumn);
-INT64 DBGetFieldQuad(DB_RESULT hResult, int iRow, int iColumn);
-QWORD DBGetFieldUQuad(DB_RESULT hResult, int iRow, int iColumn);
-double DBGetFieldDouble(DB_RESULT hResult, int iRow, int iColumn);
-DWORD DBGetFieldIPAddr(DB_RESULT hResult, int iRow, int iColumn);
-char *DBGetFieldAsync(DB_ASYNC_RESULT hResult, int iColumn, char *pBuffer, int iBufSize);
-long DBGetFieldAsyncLong(DB_RESULT hResult, int iColumn);
-DWORD DBGetFieldAsyncULong(DB_ASYNC_RESULT hResult, int iColumn);
-INT64 DBGetFieldAsyncQuad(DB_RESULT hResult, int iColumn);
-QWORD DBGetFieldAsyncUQuad(DB_ASYNC_RESULT hResult, int iColumn);
-double DBGetFieldAsyncDouble(DB_RESULT hResult, int iColumn);
-DWORD DBGetFieldAsyncIPAddr(DB_RESULT hResult, int iColumn);
-int DBGetNumRows(DB_RESULT hResult);
-void DBFreeResult(DB_RESULT hResult);
-void DBFreeAsyncResult(DB_ASYNC_RESULT hResult);
-void DBUnloadDriver(void);
-
 void QueueSQLRequest(char *szQuery);
 void StartDBWriter(void);
 void StopDBWriter(void);
@@ -442,7 +397,7 @@ void GetAccelarVLANIfList(DWORD dwIpAddr, const TCHAR *pszCommunity, INTERFACE_L
 #ifdef _WIN32
 
 void InitService(void);
-void InstallService(char *execName);
+void InstallService(char *execName, char *dllName);
 void RemoveService(void);
 void StartCoreService(void);
 void StopCoreService(void);
@@ -471,14 +426,6 @@ extern char g_szPIDFile[];
 #endif
 extern char g_szDataDir[];
 
-extern char g_szDbDriver[];
-extern char g_szDbDriver[];
-extern char g_szDbDrvParams[];
-extern char g_szDbServer[];
-extern char g_szDbLogin[];
-extern char g_szDbPassword[];
-extern char g_szDbName[];
-
 extern DB_HANDLE g_hCoreDB;
 extern Queue *g_pLazyRequestQueue;
 
index f7869c0..475aa81 100644 (file)
@@ -131,7 +131,7 @@ void InitService(void)
 // Create service
 //
 
-void InstallService(char *execName)
+void InstallService(char *execName, char *dllName)
 {
    SC_HANDLE mgr,service;
    char cmdLine[MAX_PATH*2];
@@ -163,7 +163,7 @@ void InstallService(char *execName)
 
    CloseServiceHandle(mgr);
 
-   InstallEventSource(execName);
+   InstallEventSource(dllName);
 }
 
 
index 643fb3d..97694af 100644 (file)
 #include <nxcscpapi.h>
 #include <nms_agent.h>
 #include <rwlock.h>
+#include <messages.h>
+
+
+//
+// DB-related constants
+//
+
+#define MAX_DB_LOGIN          64
+#define MAX_DB_PASSWORD       64
+#define MAX_DB_NAME           32
+
+
+//
+// Win32 service constants
+//
+
+#ifdef _WIN32
+
+#define CORE_SERVICE_NAME  _T("NetXMSCore")
+#define CORE_EVENT_SOURCE  _T("NetXMSCore")
+
+#endif   /* _WIN32 */
 
 
 //
@@ -164,5 +186,47 @@ void LIBNXSRV_EXPORTABLE DestroyArpCache(ARP_CACHE *pArpCache);
 void LIBNXSRV_EXPORTABLE DestroyInterfaceList(INTERFACE_LIST *pIfList);
 const TCHAR LIBNXSRV_EXPORTABLE *AgentErrorCodeToText(int iError);
 
+void LIBNXSRV_EXPORTABLE InitLog(BOOL bUseSystemLog, char *pszLogFile, BOOL bPrintToScreen);
+void LIBNXSRV_EXPORTABLE CloseLog(void);
+void LIBNXSRV_EXPORTABLE WriteLog(DWORD msg, WORD wType, char *format, ...);
+
+BOOL LIBNXSRV_EXPORTABLE DBInit(BOOL bWriteLog, BOOL bLogErrors);
+DB_HANDLE LIBNXSRV_EXPORTABLE DBConnect(void);
+void LIBNXSRV_EXPORTABLE DBDisconnect(DB_HANDLE hConn);
+BOOL LIBNXSRV_EXPORTABLE DBQuery(DB_HANDLE hConn, char *szQuery);
+DB_RESULT LIBNXSRV_EXPORTABLE DBSelect(DB_HANDLE hConn, char *szQuery);
+DB_ASYNC_RESULT LIBNXSRV_EXPORTABLE DBAsyncSelect(DB_HANDLE hConn, char *szQuery);
+BOOL LIBNXSRV_EXPORTABLE DBFetch(DB_ASYNC_RESULT hResult);
+char LIBNXSRV_EXPORTABLE *DBGetField(DB_RESULT hResult, int iRow, int iColumn);
+long LIBNXSRV_EXPORTABLE DBGetFieldLong(DB_RESULT hResult, int iRow, int iColumn);
+DWORD LIBNXSRV_EXPORTABLE DBGetFieldULong(DB_RESULT hResult, int iRow, int iColumn);
+INT64 LIBNXSRV_EXPORTABLE DBGetFieldQuad(DB_RESULT hResult, int iRow, int iColumn);
+QWORD LIBNXSRV_EXPORTABLE DBGetFieldUQuad(DB_RESULT hResult, int iRow, int iColumn);
+double LIBNXSRV_EXPORTABLE DBGetFieldDouble(DB_RESULT hResult, int iRow, int iColumn);
+DWORD LIBNXSRV_EXPORTABLE DBGetFieldIPAddr(DB_RESULT hResult, int iRow, int iColumn);
+char LIBNXSRV_EXPORTABLE *DBGetFieldAsync(DB_ASYNC_RESULT hResult, int iColumn, char *pBuffer, int iBufSize);
+long LIBNXSRV_EXPORTABLE DBGetFieldAsyncLong(DB_RESULT hResult, int iColumn);
+DWORD LIBNXSRV_EXPORTABLE DBGetFieldAsyncULong(DB_ASYNC_RESULT hResult, int iColumn);
+INT64 LIBNXSRV_EXPORTABLE DBGetFieldAsyncQuad(DB_RESULT hResult, int iColumn);
+QWORD LIBNXSRV_EXPORTABLE DBGetFieldAsyncUQuad(DB_ASYNC_RESULT hResult, int iColumn);
+double LIBNXSRV_EXPORTABLE DBGetFieldAsyncDouble(DB_RESULT hResult, int iColumn);
+DWORD LIBNXSRV_EXPORTABLE DBGetFieldAsyncIPAddr(DB_RESULT hResult, int iColumn);
+int LIBNXSRV_EXPORTABLE DBGetNumRows(DB_RESULT hResult);
+void LIBNXSRV_EXPORTABLE DBFreeResult(DB_RESULT hResult);
+void LIBNXSRV_EXPORTABLE DBFreeAsyncResult(DB_ASYNC_RESULT hResult);
+void LIBNXSRV_EXPORTABLE DBUnloadDriver(void);
+
+
+//
+// Variables
+//
+
+extern char LIBNXSRV_EXPORTABLE g_szDbDriver[];
+extern char LIBNXSRV_EXPORTABLE g_szDbDriver[];
+extern char LIBNXSRV_EXPORTABLE g_szDbDrvParams[];
+extern char LIBNXSRV_EXPORTABLE g_szDbServer[];
+extern char LIBNXSRV_EXPORTABLE g_szDbLogin[];
+extern char LIBNXSRV_EXPORTABLE g_szDbPassword[];
+extern char LIBNXSRV_EXPORTABLE g_szDbName[];
 
 #endif   /* _nxsrvapi_h_ */
similarity index 71%
rename from src/server/core/db.cpp
rename to src/server/libnxsrv/db.cpp
index 4910a43..4065c2e 100644 (file)
 **
 **/
 
-#include "nms_core.h"
+#include "libnxsrv.h"
 
 
 //
 // Global variables
 //
 
-char g_szDbDriver[MAX_PATH] = "";
-char g_szDbDrvParams[MAX_PATH] = "";
-char g_szDbServer[MAX_PATH] = "127.0.0.1";
-char g_szDbLogin[MAX_DB_LOGIN] = "netxms";
-char g_szDbPassword[MAX_DB_PASSWORD] = "";
-char g_szDbName[MAX_DB_NAME] = "netxms_db";
+char LIBNXSRV_EXPORTABLE g_szDbDriver[MAX_PATH] = "";
+char LIBNXSRV_EXPORTABLE g_szDbDrvParams[MAX_PATH] = "";
+char LIBNXSRV_EXPORTABLE g_szDbServer[MAX_PATH] = "127.0.0.1";
+char LIBNXSRV_EXPORTABLE g_szDbLogin[MAX_DB_LOGIN] = "netxms";
+char LIBNXSRV_EXPORTABLE g_szDbPassword[MAX_DB_PASSWORD] = "";
+char LIBNXSRV_EXPORTABLE g_szDbName[MAX_DB_NAME] = "netxms_db";
 
 
 //
 // Static data
 //
 
+static BOOL m_bWriteLog = FALSE;
+static BOOL m_bLogSQLErrors = FALSE;
 static HMODULE m_hDriver = NULL;
 static DB_HANDLE (* m_fpDrvConnect)(char *, char *, char *, char *) = NULL;
 static void (* m_fpDrvDisconnect)(DB_HANDLE) = NULL;
@@ -64,7 +66,7 @@ static void *DLGetSymbolAddrEx(HMODULE hModule, char *pszSymbol)
    char szErrorText[256];
 
    pFunc = DLGetSymbolAddr(hModule, pszSymbol, szErrorText);
-   if (pFunc == NULL)
+   if ((pFunc == NULL) && m_bWriteLog)
       WriteLog(MSG_DLSYM_FAILED, EVENTLOG_WARNING_TYPE, "ss", pszSymbol, szErrorText);
    return pFunc;
 }
@@ -74,16 +76,20 @@ static void *DLGetSymbolAddrEx(HMODULE hModule, char *pszSymbol)
 // Load and initialize database driver
 //
 
-BOOL DBInit(void)
+BOOL LIBNXSRV_EXPORTABLE DBInit(BOOL bWriteLog, BOOL bLogErrors)
 {
    BOOL (* fpDrvInit)(char *);
    char szErrorText[256];
 
+   m_bWriteLog = bWriteLog;
+   m_bLogSQLErrors = bLogErrors && bWriteLog;
+
    // Load driver's module
    m_hDriver = DLOpen(g_szDbDriver, szErrorText);
    if (m_hDriver == NULL)
    {
-      WriteLog(MSG_DLOPEN_FAILED, EVENTLOG_ERROR_TYPE, "ss", g_szDbDriver, szErrorText);
+      if (m_bWriteLog)
+         WriteLog(MSG_DLOPEN_FAILED, EVENTLOG_ERROR_TYPE, "ss", g_szDbDriver, szErrorText);
       return FALSE;
    }
 
@@ -107,21 +113,24 @@ BOOL DBInit(void)
        (m_fpDrvUnload == NULL) || (m_fpDrvAsyncSelect == NULL) || (m_fpDrvFetch == NULL) ||
        (m_fpDrvFreeAsyncResult == NULL) || (m_fpDrvGetFieldAsync == NULL))
    {
-      WriteLog(MSG_DBDRV_NO_ENTRY_POINTS, EVENTLOG_ERROR_TYPE, "s", g_szDbDriver);
+      if (m_bWriteLog)
+         WriteLog(MSG_DBDRV_NO_ENTRY_POINTS, EVENTLOG_ERROR_TYPE, "s", g_szDbDriver);
       return FALSE;
    }
 
    // Initialize driver
    if (!fpDrvInit(g_szDbDrvParams))
    {
-      WriteLog(MSG_DBDRV_INIT_FAILED, EVENTLOG_ERROR_TYPE, "s", g_szDbDriver);
+      if (m_bWriteLog)
+         WriteLog(MSG_DBDRV_INIT_FAILED, EVENTLOG_ERROR_TYPE, "s", g_szDbDriver);
       DLClose(m_hDriver);
       m_hDriver = NULL;
       return FALSE;
    }
 
    // Success
-   WriteLog(MSG_DBDRV_LOADED, EVENTLOG_INFORMATION_TYPE, "s", g_szDbDriver);
+   if (m_bWriteLog)
+      WriteLog(MSG_DBDRV_LOADED, EVENTLOG_INFORMATION_TYPE, "s", g_szDbDriver);
    return TRUE;
 }
 
@@ -130,7 +139,7 @@ BOOL DBInit(void)
 // Notify driver of unload
 //
 
-void DBUnloadDriver(void)
+void LIBNXSRV_EXPORTABLE DBUnloadDriver(void)
 {
    m_fpDrvUnload();
    DLClose(m_hDriver);
@@ -141,7 +150,7 @@ void DBUnloadDriver(void)
 // Connect to database
 //
 
-DB_HANDLE DBConnect(void)
+DB_HANDLE LIBNXSRV_EXPORTABLE DBConnect(void)
 {
    return m_fpDrvConnect(g_szDbServer, g_szDbLogin, g_szDbPassword, g_szDbName);
 }
@@ -151,7 +160,7 @@ DB_HANDLE DBConnect(void)
 // Disconnect from database
 //
 
-void DBDisconnect(DB_HANDLE hConn)
+void LIBNXSRV_EXPORTABLE DBDisconnect(DB_HANDLE hConn)
 {
    m_fpDrvDisconnect(hConn);
 }
@@ -161,13 +170,13 @@ void DBDisconnect(DB_HANDLE hConn)
 // Perform a non-SELECT SQL query
 //
 
-BOOL DBQuery(DB_HANDLE hConn, char *szQuery)
+BOOL LIBNXSRV_EXPORTABLE DBQuery(DB_HANDLE hConn, char *szQuery)
 {
    BOOL bResult;
 
    bResult = m_fpDrvQuery(hConn, szQuery);
-   DbgPrintf(AF_DEBUG_SQL, "%s sync query: \"%s\"", bResult ? "Successful" : "Failed", szQuery);
-   if ((!bResult) && (g_dwFlags & AF_LOG_SQL_ERRORS))
+   //DbgPrintf(AF_DEBUG_SQL, "%s sync query: \"%s\"", bResult ? "Successful" : "Failed", szQuery);
+   if ((!bResult) && m_bLogSQLErrors)
       WriteLog(MSG_SQL_ERROR, EVENTLOG_ERROR_TYPE, "s", szQuery);
    return bResult;
 }
@@ -177,13 +186,13 @@ BOOL DBQuery(DB_HANDLE hConn, char *szQuery)
 // Perform SELECT query
 //
 
-DB_RESULT DBSelect(DB_HANDLE hConn, char *szQuery)
+DB_RESULT LIBNXSRV_EXPORTABLE DBSelect(DB_HANDLE hConn, char *szQuery)
 {
    DB_RESULT hResult;
    
    hResult = m_fpDrvSelect(hConn, szQuery);
-   DbgPrintf(AF_DEBUG_SQL, "%s sync query: \"%s\"", (hResult != NULL) ? "Successful" : "Failed", szQuery);
-   if ((!hResult) && (g_dwFlags & AF_LOG_SQL_ERRORS))
+   //DbgPrintf(AF_DEBUG_SQL, "%s sync query: \"%s\"", (hResult != NULL) ? "Successful" : "Failed", szQuery);
+   if ((!hResult) && m_bLogSQLErrors)
       WriteLog(MSG_SQL_ERROR, EVENTLOG_ERROR_TYPE, "s", szQuery);
    return hResult;
 }
@@ -193,7 +202,7 @@ DB_RESULT DBSelect(DB_HANDLE hConn, char *szQuery)
 // Get field's value
 //
 
-char *DBGetField(DB_RESULT hResult, int iRow, int iColumn)
+char LIBNXSRV_EXPORTABLE *DBGetField(DB_RESULT hResult, int iRow, int iColumn)
 {
    return m_fpDrvGetField(hResult, iRow, iColumn);
 }
@@ -203,7 +212,7 @@ char *DBGetField(DB_RESULT hResult, int iRow, int iColumn)
 // Get field's value as unsigned long
 //
 
-DWORD DBGetFieldULong(DB_RESULT hResult, int iRow, int iColumn)
+DWORD LIBNXSRV_EXPORTABLE DBGetFieldULong(DB_RESULT hResult, int iRow, int iColumn)
 {
    long iVal;
    DWORD dwVal;
@@ -222,7 +231,7 @@ DWORD DBGetFieldULong(DB_RESULT hResult, int iRow, int iColumn)
 // Get field's value as unsigned 64-bit int
 //
 
-QWORD DBGetFieldUQuad(DB_RESULT hResult, int iRow, int iColumn)
+QWORD LIBNXSRV_EXPORTABLE DBGetFieldUQuad(DB_RESULT hResult, int iRow, int iColumn)
 {
    INT64 iVal;
    QWORD qwVal;
@@ -241,7 +250,7 @@ QWORD DBGetFieldUQuad(DB_RESULT hResult, int iRow, int iColumn)
 // Get field's value as signed long
 //
 
-long DBGetFieldLong(DB_RESULT hResult, int iRow, int iColumn)
+long LIBNXSRV_EXPORTABLE DBGetFieldLong(DB_RESULT hResult, int iRow, int iColumn)
 {
    char *szVal;
 
@@ -254,7 +263,7 @@ long DBGetFieldLong(DB_RESULT hResult, int iRow, int iColumn)
 // Get field's value as signed 64-bit int
 //
 
-INT64 DBGetFieldQuad(DB_RESULT hResult, int iRow, int iColumn)
+INT64 LIBNXSRV_EXPORTABLE DBGetFieldQuad(DB_RESULT hResult, int iRow, int iColumn)
 {
    char *szVal;
 
@@ -267,7 +276,7 @@ INT64 DBGetFieldQuad(DB_RESULT hResult, int iRow, int iColumn)
 // Get field's value as double
 //
 
-double DBGetFieldDouble(DB_RESULT hResult, int iRow, int iColumn)
+double LIBNXSRV_EXPORTABLE DBGetFieldDouble(DB_RESULT hResult, int iRow, int iColumn)
 {
    char *szVal;
 
@@ -280,7 +289,7 @@ double DBGetFieldDouble(DB_RESULT hResult, int iRow, int iColumn)
 // Get field's value as IP address
 //
 
-DWORD DBGetFieldIPAddr(DB_RESULT hResult, int iRow, int iColumn)
+DWORD LIBNXSRV_EXPORTABLE DBGetFieldIPAddr(DB_RESULT hResult, int iRow, int iColumn)
 {
    char *szVal;
 
@@ -293,7 +302,7 @@ DWORD DBGetFieldIPAddr(DB_RESULT hResult, int iRow, int iColumn)
 // Get number of rows in result
 //
 
-int DBGetNumRows(DB_RESULT hResult)
+int LIBNXSRV_EXPORTABLE DBGetNumRows(DB_RESULT hResult)
 {
    return m_fpDrvGetNumRows(hResult);
 }
@@ -303,7 +312,7 @@ int DBGetNumRows(DB_RESULT hResult)
 // Free result
 //
 
-void DBFreeResult(DB_RESULT hResult)
+void LIBNXSRV_EXPORTABLE DBFreeResult(DB_RESULT hResult)
 {
    m_fpDrvFreeResult(hResult);
 }
@@ -313,13 +322,13 @@ void DBFreeResult(DB_RESULT hResult)
 // Asyncronous SELECT query
 //
 
-DB_ASYNC_RESULT DBAsyncSelect(DB_HANDLE hConn, char *szQuery)
+DB_ASYNC_RESULT LIBNXSRV_EXPORTABLE DBAsyncSelect(DB_HANDLE hConn, char *szQuery)
 {
    DB_RESULT hResult;
    
    hResult = m_fpDrvAsyncSelect(hConn, szQuery);
-   DbgPrintf(AF_DEBUG_SQL, "%s async query: \"%s\"", (hResult != NULL) ? "Successful" : "Failed", szQuery);
-   if ((!hResult) && (g_dwFlags & AF_LOG_SQL_ERRORS))
+   //DbgPrintf(AF_DEBUG_SQL, "%s async query: \"%s\"", (hResult != NULL) ? "Successful" : "Failed", szQuery);
+   if ((!hResult) && m_bLogSQLErrors)
       WriteLog(MSG_SQL_ERROR, EVENTLOG_ERROR_TYPE, "s", szQuery);
    return hResult;
 }
@@ -329,7 +338,7 @@ DB_ASYNC_RESULT DBAsyncSelect(DB_HANDLE hConn, char *szQuery)
 // Fetch next row from asynchronous SELECT result
 //
 
-BOOL DBFetch(DB_ASYNC_RESULT hResult)
+BOOL LIBNXSRV_EXPORTABLE DBFetch(DB_ASYNC_RESULT hResult)
 {
    return m_fpDrvFetch(hResult);
 }
@@ -339,7 +348,7 @@ BOOL DBFetch(DB_ASYNC_RESULT hResult)
 // Get field's value from asynchronous SELECT result
 //
 
-char *DBGetFieldAsync(DB_ASYNC_RESULT hResult, int iColumn, char *pBuffer, int iBufSize)
+char LIBNXSRV_EXPORTABLE *DBGetFieldAsync(DB_ASYNC_RESULT hResult, int iColumn, char *pBuffer, int iBufSize)
 {
    return m_fpDrvGetFieldAsync(hResult, iColumn, pBuffer, iBufSize);
 }
@@ -349,7 +358,7 @@ char *DBGetFieldAsync(DB_ASYNC_RESULT hResult, int iColumn, char *pBuffer, int i
 // Get field's value as unsigned long from asynchronous SELECT result
 //
 
-DWORD DBGetFieldAsyncULong(DB_ASYNC_RESULT hResult, int iColumn)
+DWORD LIBNXSRV_EXPORTABLE DBGetFieldAsyncULong(DB_ASYNC_RESULT hResult, int iColumn)
 {
    long iVal;
    DWORD dwVal;
@@ -367,7 +376,7 @@ DWORD DBGetFieldAsyncULong(DB_ASYNC_RESULT hResult, int iColumn)
 // Get field's value as unsigned 64-bit int from asynchronous SELECT result
 //
 
-QWORD DBGetFieldAsyncUQuad(DB_ASYNC_RESULT hResult, int iColumn)
+QWORD LIBNXSRV_EXPORTABLE DBGetFieldAsyncUQuad(DB_ASYNC_RESULT hResult, int iColumn)
 {
    INT64 iVal;
    QWORD qwVal;
@@ -385,7 +394,7 @@ QWORD DBGetFieldAsyncUQuad(DB_ASYNC_RESULT hResult, int iColumn)
 // Get field's value as signed long from asynchronous SELECT result
 //
 
-long DBGetFieldAsyncLong(DB_RESULT hResult, int iColumn)
+long LIBNXSRV_EXPORTABLE DBGetFieldAsyncLong(DB_RESULT hResult, int iColumn)
 {
    char szBuffer[64];
    
@@ -397,7 +406,7 @@ long DBGetFieldAsyncLong(DB_RESULT hResult, int iColumn)
 // Get field's value as signed 64-bit int from asynchronous SELECT result
 //
 
-INT64 DBGetFieldAsyncQuad(DB_RESULT hResult, int iColumn)
+INT64 LIBNXSRV_EXPORTABLE DBGetFieldAsyncQuad(DB_RESULT hResult, int iColumn)
 {
    char szBuffer[64];
    
@@ -409,7 +418,7 @@ INT64 DBGetFieldAsyncQuad(DB_RESULT hResult, int iColumn)
 // Get field's value as signed long from asynchronous SELECT result
 //
 
-double DBGetFieldAsyncDouble(DB_RESULT hResult, int iColumn)
+double LIBNXSRV_EXPORTABLE DBGetFieldAsyncDouble(DB_RESULT hResult, int iColumn)
 {
    char szBuffer[64];
    
@@ -421,7 +430,7 @@ double DBGetFieldAsyncDouble(DB_RESULT hResult, int iColumn)
 // Get field's value as IP address from asynchronous SELECT result
 //
 
-DWORD DBGetFieldAsyncIPAddr(DB_RESULT hResult, int iColumn)
+DWORD LIBNXSRV_EXPORTABLE DBGetFieldAsyncIPAddr(DB_RESULT hResult, int iColumn)
 {
    char szBuffer[64];
    
@@ -434,7 +443,7 @@ DWORD DBGetFieldAsyncIPAddr(DB_RESULT hResult, int iColumn)
 // Free asynchronous SELECT result
 //
 
-void DBFreeAsyncResult(DB_ASYNC_RESULT hResult)
+void LIBNXSRV_EXPORTABLE DBFreeAsyncResult(DB_ASYNC_RESULT hResult)
 {
    m_fpDrvFreeAsyncResult(hResult);
 }
index d108628..bfef00a 100644 (file)
@@ -106,6 +106,14 @@ SOURCE=.\agent.cpp
 # End Source File
 # Begin Source File
 
+SOURCE=.\db.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\log.cpp
+# End Source File
+# Begin Source File
+
 SOURCE=.\main.cpp
 # End Source File
 # Begin Source File
@@ -160,6 +168,59 @@ SOURCE=..\include\rwlock.h
 # Begin Group "Resource Files"
 
 # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
+# Begin Source File
+
+SOURCE=.\libnxsrv.rc
+# End Source File
+# End Group
+# Begin Group "Message Files"
+
+# PROP Default_Filter ".mc"
+# Begin Source File
+
+SOURCE=.\messages.mc
+
+!IF  "$(CFG)" == "libnxsrv - Win32 Release"
+
+# Begin Custom Build - Running Message Compiler on $(InputPath)
+ProjDir=.
+InputPath=.\messages.mc
+InputName=messages
+
+BuildCmds= \
+       mc -s -U -h $(ProjDir)\..\include -r $(ProjDir) $(InputName) \
+       del $(ProjDir)\$(InputName).rc \
+       
+
+"..\include\$(InputName).h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+   $(BuildCmds)
+
+"Msg00001.bin" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+   $(BuildCmds)
+# End Custom Build
+
+!ELSEIF  "$(CFG)" == "libnxsrv - Win32 Debug"
+
+# Begin Custom Build - Running Message Compiler on $(InputPath)
+ProjDir=.
+InputPath=.\messages.mc
+InputName=messages
+
+BuildCmds= \
+       mc -s -U -h $(ProjDir)\..\include -r $(ProjDir) $(InputName) \
+       del $(ProjDir)\$(InputName).rc \
+       
+
+"..\include\$(InputName).h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+   $(BuildCmds)
+
+"Msg00001.bin" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+   $(BuildCmds)
+# End Custom Build
+
+!ENDIF 
+
+# End Source File
 # End Group
 # End Target
 # End Project
index e5ccd4f..f3b221b 100644 (file)
@@ -37,6 +37,7 @@
 #include <nms_util.h>
 #include <nms_agent.h>
 #include <nms_threads.h>
+#include <dbdrv.h>
 #include <nms_cscp.h>
 #include <nxcscpapi.h>
 #include <nxsrvapi.h>
similarity index 87%
rename from src/server/core/log.cpp
rename to src/server/libnxsrv/log.cpp
index 65321ff..dce43d4 100644 (file)
@@ -1,6 +1,6 @@
 /* 
-** Network Management System Core
-** Copyright (C) 2003 Victor Kirhenshtein
+** NetXMS - Network Management System
+** Copyright (C) 2003, 2004 Victor Kirhenshtein
 **
 ** This program is free software; you can redistribute it and/or modify
 ** it under the terms of the GNU General Public License as published by
@@ -20,7 +20,7 @@
 **
 **/
 
-#include "nms_core.h"
+#include "libnxsrv.h"
 
 
 //
@@ -39,19 +39,25 @@ extern char *g_szMessages[];
 
 #ifdef _WIN32
 static HANDLE m_hEventLog = INVALID_HANDLE_VALUE;
+static HMODULE m_hLibraryHandle = NULL;
 #endif
 static FILE *m_hLogFile = NULL;
 static MUTEX m_mutexLogAccess = INVALID_MUTEX_HANDLE;
+static BOOL m_bUseSystemLog = FALSE;
+static BOOL m_bPrintToScreen = FALSE;
 
 
 //
 // Initialize log
 //
 
-void InitLog(void)
+void LIBNXSRV_EXPORTABLE InitLog(BOOL bUseSystemLog, char *pszLogFile, BOOL bPrintToScreen)
 {
+   m_bUseSystemLog = bUseSystemLog;
+   m_bPrintToScreen = bPrintToScreen;
 #ifdef _WIN32
-   if (g_dwFlags & AF_USE_EVENT_LOG)
+   m_hLibraryHandle = GetModuleHandle(_T("LIBNXSRV.DLL"));
+   if (m_bUseSystemLog)
    {
       m_hEventLog = RegisterEventSource(NULL, CORE_EVENT_SOURCE);
    }
@@ -62,7 +68,7 @@ void InitLog(void)
       struct tm *loc;
       time_t t;
 
-      m_hLogFile = fopen(g_szLogFile, "a");
+      m_hLogFile = fopen(pszLogFile, "a");
       t = time(NULL);
       loc = localtime(&t);
       strftime(szTimeBuf, 32, "%d-%b-%Y %H:%M:%S", loc);
@@ -80,10 +86,10 @@ void InitLog(void)
 // Close log
 //
 
-void CloseLog(void)
+void LIBNXSRV_EXPORTABLE CloseLog(void)
 {
 #ifdef _WIN32
-   if (g_dwFlags & AF_USE_EVENT_LOG)
+   if (m_bUseSystemLog)
    {
       DeregisterEventSource(m_hEventLog);
    }
@@ -128,7 +134,7 @@ static void WriteLogToFile(char *szMessage)
    strftime(szBuffer, 32, "[%d-%b-%Y %H:%M:%S]", loc);
    fprintf(m_hLogFile, "%s %s", szBuffer, szMessage);
    fflush(m_hLogFile);
-   if (IsStandalone())
+   if (m_bPrintToScreen)
       printf("%s %s", szBuffer, szMessage);
 
    MutexUnlock(m_mutexLogAccess);
@@ -141,7 +147,7 @@ static void WriteLogToFile(char *szMessage)
 
 #ifndef _WIN32
 
-char *FormatMessageUX(DWORD dwMsgId, char **ppStrings)
+static char *FormatMessageUX(DWORD dwMsgId, char **ppStrings)
 {
    char *p, *pMsg;
    int i, iSize, iLen;
@@ -204,7 +210,7 @@ char *FormatMessageUX(DWORD dwMsgId, char **ppStrings)
 //             a - IP address in network byte order
 //
 
-void WriteLog(DWORD msg, WORD wType, char *format, ...)
+void LIBNXSRV_EXPORTABLE WriteLog(DWORD msg, WORD wType, char *format, ...)
 {
    va_list args;
    char *strings[16], *pMsg;
@@ -270,7 +276,7 @@ void WriteLog(DWORD msg, WORD wType, char *format, ...)
    }
 
 #ifdef _WIN32
-   if (g_dwFlags & AF_USE_EVENT_LOG)
+   if (m_bUseSystemLog)
    {
       ReportEvent(m_hEventLog, wType, 0, msg, NULL, numStrings, 0, (const char **)strings, NULL);
    }
@@ -278,8 +284,9 @@ void WriteLog(DWORD msg, WORD wType, char *format, ...)
    {
       LPVOID lpMsgBuf;
 
-      if (FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_HMODULE | FORMAT_MESSAGE_ARGUMENT_ARRAY,
-                        NULL, msg, 0, (LPTSTR)&lpMsgBuf, 0, strings)>0)
+      if (FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | 
+                        FORMAT_MESSAGE_FROM_HMODULE | FORMAT_MESSAGE_ARGUMENT_ARRAY,
+                        m_hLibraryHandle, msg, 0, (LPTSTR)&lpMsgBuf, 0, strings)>0)
       {
          char *pCR;
 
@@ -304,7 +311,7 @@ void WriteLog(DWORD msg, WORD wType, char *format, ...)
    }
 #else  /* _WIN32 */
    pMsg = FormatMessageUX(msg, strings);
-   if (g_dwFlags & AF_USE_EVENT_LOG)
+   if (m_bUseSystemLog)
    {
    }
    else
similarity index 99%
rename from src/server/core/messages.mc
rename to src/server/libnxsrv/messages.mc
index 4e37593..5cea729 100644 (file)
@@ -1,5 +1,5 @@
 ;/****************************************************************************
-; Messages for NMS Core
+; Messages for NetXMS Server
 ;****************************************************************************/
 ;
 ;#ifndef _messages_h_