- Timestamp:
- 11/08/09 23:24:31 (4 years ago)
- Branches:
- master, 0.4.0, 0.4.1, 0.4.2
- Children:
- 6672c56
- Parents:
- 3b4097d
- Location:
- include
- Files:
-
- 9 added
- 15 edited
-
NSCAPI.h (modified) (4 diffs)
-
NSCHelper.cpp (modified) (3 diffs)
-
NSCHelper.h (modified) (7 diffs)
-
NTService.h (modified) (1 diff)
-
arrayBuffer.cpp (modified) (10 diffs)
-
arrayBuffer.h (modified) (4 diffs)
-
charEx.h (modified) (6 diffs)
-
checkHelpers.hpp (modified) (2 diffs)
-
config.h (modified) (2 diffs)
-
dll/dll.hpp (added)
-
dll/impl_unix.hpp (added)
-
dll/impl_w32.hpp (added)
-
error.hpp (modified) (1 diff)
-
error_impl_unix.hpp (added)
-
error_impl_w32.hpp (added)
-
nrpe/nrpepacket.hpp (modified) (1 diff)
-
nsc_module_wrapper.hpp (added)
-
service/system_service.hpp (added)
-
service/unix_service.hpp (added)
-
settings/macros.h (modified) (4 diffs)
-
settings/settings_old.hpp (modified) (1 diff)
-
settings/settings_registry.hpp (modified) (1 diff)
-
strEx.h (modified) (24 diffs)
-
unicode_char.hpp (added)
Legend:
- Unmodified
- Added
- Removed
-
include/NSCAPI.h
r9567d4b r7f9c823 22 22 23 23 24 #include < tchar.h>24 #include <unicode_char.hpp> 25 25 26 26 namespace NSCAPI { … … 79 79 #endif 80 80 81 const int xor = 1;81 const int encryption_xor = 1; 82 82 83 83 // Settings types … … 96 96 97 97 struct plugin_info { 98 TCHAR*dll;99 TCHAR*name;100 TCHAR*description;101 TCHAR*version;98 wchar_t *dll; 99 wchar_t *name; 100 wchar_t *description; 101 wchar_t *version; 102 102 }; 103 103 typedef plugin_info* plugin_info_list; … … 105 105 106 106 }; 107 108 namespace NSCModuleHelper { 109 typedef void* (*lpNSAPILoader)(wchar_t*); 110 } -
include/NSCHelper.cpp
rf0eb62d r7f9c823 21 21 22 22 #include <NSCHelper.h> 23 #include <nsc_module_wrapper.hpp> 23 24 #include <msvc_wrappers.h> 24 #include <config.h> 25 #include <settings/macros.h> 26 #include <arrayBuffer.h> 27 //#include <config.h> 25 28 #include <strEx.h> 26 29 … … 67 70 * @return NSCAPI::success unless the buffer is to short then it will be NSCAPI::invalidBufferLen 68 71 */ 69 int NSCHelper::wrapReturnString( TCHAR*buffer, unsigned int bufLen, std::wstring str, int defaultReturnCode ) {72 int NSCHelper::wrapReturnString(wchar_t *buffer, unsigned int bufLen, std::wstring str, int defaultReturnCode ) { 70 73 // @todo deprecate this 71 74 if (str.length() >= bufLen) { … … 215 218 * @return The returned status of the command 216 219 */ 217 NSCAPI::nagiosReturn NSCModuleHelper::InjectCommandRAW(const TCHAR* command, const unsigned int argLen, TCHAR **argument, TCHAR *returnMessageBuffer, unsigned int returnMessageBufferLen, TCHAR *returnPerfBuffer, unsigned int returnPerfBufferLen)220 NSCAPI::nagiosReturn NSCModuleHelper::InjectCommandRAW(const wchar_t* command, const unsigned int argLen, TCHAR **argument, TCHAR *returnMessageBuffer, unsigned int returnMessageBufferLen, TCHAR *returnPerfBuffer, unsigned int returnPerfBufferLen) 218 221 { 219 222 if (!fNSAPIInject) -
include/NSCHelper.h
rd5356c1 r7f9c823 27 27 #include <charEx.h> 28 28 #include <arrayBuffer.h> 29 #include <windows.h> 29 #ifdef WIN32 30 //#include <windows.h> 31 #endif 30 32 31 33 … … 33 35 { 34 36 #ifdef DEBUG 35 NSCAPI::nagiosReturn wrapReturnString( TCHAR*buffer, unsigned int bufLen, std::wstring str, NSCAPI::nagiosReturn defaultReturnCode);36 NSCAPI::errorReturn wrapReturnString( TCHAR*buffer, unsigned int bufLen, std::wstring str, NSCAPI::errorReturn defaultReturnCode);37 NSCAPI::nagiosReturn wrapReturnString(wchar_t *buffer, unsigned int bufLen, std::wstring str, NSCAPI::nagiosReturn defaultReturnCode); 38 NSCAPI::errorReturn wrapReturnString(wchar_t *buffer, unsigned int bufLen, std::wstring str, NSCAPI::errorReturn defaultReturnCode); 37 39 #else 38 int wrapReturnString( TCHAR*buffer, unsigned int bufLen, std::wstring str, int defaultReturnCode);40 int wrapReturnString(wchar_t *buffer, unsigned int bufLen, std::wstring str, int defaultReturnCode); 39 41 #endif 40 42 std::wstring translateMessageType(NSCAPI::messageTypes msgType); … … 108 110 typedef std::list<plugin_info_type> plugin_info_list; 109 111 // Types for the Callbacks into the main program 110 typedef NSCAPI::errorReturn (*lpNSAPIGetBasePath)(TCHAR*,unsigned int); 111 typedef NSCAPI::errorReturn (*lpNSAPIGetApplicationName)(TCHAR*,unsigned int); 112 typedef NSCAPI::errorReturn (*lpNSAPIGetApplicationVersionStr)(TCHAR*,unsigned int); 113 typedef NSCAPI::errorReturn (*lpNSAPIGetSettingsString)(const TCHAR*,const TCHAR*,const TCHAR*,TCHAR*,unsigned int); 114 typedef NSCAPI::errorReturn (*lpNSAPIGetSettingsInt)(const TCHAR*, const TCHAR*, int); 115 typedef NSCAPI::errorReturn (*lpNSAPIGetSettingsSection)(const TCHAR*, arrayBuffer::arrayBuffer*, unsigned int *); 112 113 typedef NSCAPI::errorReturn (*lpNSAPIGetBasePath)(wchar_t*,unsigned int); 114 typedef NSCAPI::errorReturn (*lpNSAPIGetApplicationName)(wchar_t*,unsigned int); 115 typedef NSCAPI::errorReturn (*lpNSAPIGetApplicationVersionStr)(wchar_t*,unsigned int); 116 typedef NSCAPI::errorReturn (*lpNSAPIGetSettingsString)(const wchar_t*,const wchar_t*,const wchar_t*,wchar_t*,unsigned int); 117 typedef NSCAPI::errorReturn (*lpNSAPIGetSettingsInt)(const wchar_t*, const wchar_t*, int); 118 typedef NSCAPI::errorReturn (*lpNSAPIGetSettingsSection)(const wchar_t*, arrayBuffer::arrayBuffer*, unsigned int *); 116 119 typedef NSCAPI::errorReturn (*lpNSAPIReleaseSettingsSectionBuffer)(arrayBuffer::arrayBuffer*, unsigned int *); 117 typedef void (*lpNSAPIMessage)(int, const TCHAR*, const int, const TCHAR*);120 typedef void (*lpNSAPIMessage)(int, const wchar_t*, const int, const wchar_t*); 118 121 typedef NSCAPI::errorReturn (*lpNSAPIStopServer)(void); 119 122 typedef NSCAPI::errorReturn (*lpNSAPIExit)(void); 120 typedef NSCAPI::nagiosReturn (*lpNSAPIInject)(const TCHAR*, const unsigned int, TCHAR **, TCHAR *, unsigned int, TCHAR*, unsigned int);121 typedef void* (*lpNSAPILoader)(TCHAR*);123 typedef NSCAPI::nagiosReturn (*lpNSAPIInject)(const wchar_t*, const unsigned int, wchar_t **, wchar_t *, unsigned int, wchar_t *, unsigned int); 124 122 125 typedef NSCAPI::boolReturn (*lpNSAPICheckLogMessages)(int); 123 typedef NSCAPI::errorReturn (*lpNSAPIEncrypt)(unsigned int, const TCHAR*, unsigned int, TCHAR*, unsigned int *);124 typedef NSCAPI::errorReturn (*lpNSAPIDecrypt)(unsigned int, const TCHAR*, unsigned int, TCHAR*, unsigned int *);125 typedef NSCAPI::errorReturn (*lpNSAPISetSettingsString)(const TCHAR*, const TCHAR*, const TCHAR*);126 typedef NSCAPI::errorReturn (*lpNSAPISetSettingsInt)(const TCHAR*, const TCHAR*, int);126 typedef NSCAPI::errorReturn (*lpNSAPIEncrypt)(unsigned int, const wchar_t*, unsigned int, wchar_t*, unsigned int *); 127 typedef NSCAPI::errorReturn (*lpNSAPIDecrypt)(unsigned int, const wchar_t*, unsigned int, wchar_t*, unsigned int *); 128 typedef NSCAPI::errorReturn (*lpNSAPISetSettingsString)(const wchar_t*, const wchar_t*, const wchar_t*); 129 typedef NSCAPI::errorReturn (*lpNSAPISetSettingsInt)(const wchar_t*, const wchar_t*, int); 127 130 typedef NSCAPI::errorReturn (*lpNSAPIWriteSettings)(int); 128 131 typedef NSCAPI::errorReturn (*lpNSAPIReadSettings)(int); 129 132 typedef NSCAPI::errorReturn (*lpNSAPIRehash)(int); 130 typedef NSCAPI::errorReturn (*lpNSAPIDescribeCommand)(const TCHAR*,TCHAR*,unsigned int);133 typedef NSCAPI::errorReturn (*lpNSAPIDescribeCommand)(const wchar_t*,wchar_t*,unsigned int); 131 134 typedef NSCAPI::errorReturn (*lpNSAPIGetAllCommandNames)(arrayBuffer::arrayBuffer*, unsigned int *); 132 135 typedef NSCAPI::errorReturn (*lpNSAPIReleaseAllCommandNamessBuffer)(arrayBuffer::arrayBuffer*, unsigned int *); 133 typedef NSCAPI::errorReturn (*lpNSAPIRegisterCommand)(const TCHAR*,const TCHAR*);134 typedef NSCAPI::errorReturn (*lpNSAPISettingsRegKey)(const TCHAR*, const TCHAR*, int, const TCHAR*, const TCHAR*, const TCHAR*, int);135 typedef NSCAPI::errorReturn (*lpNSAPISettingsRegPath)(const TCHAR*, const TCHAR*, const TCHAR*, int);136 typedef NSCAPI::errorReturn (*lpNSAPIRegisterCommand)(const wchar_t*,const wchar_t*); 137 typedef NSCAPI::errorReturn (*lpNSAPISettingsRegKey)(const wchar_t*, const wchar_t*, int, const wchar_t*, const wchar_t*, const wchar_t*, int); 138 typedef NSCAPI::errorReturn (*lpNSAPISettingsRegPath)(const wchar_t*, const wchar_t*, const wchar_t*, int); 136 139 typedef NSCAPI::errorReturn (*lpNSAPIGetPluginList)(int *len, NSCAPI::plugin_info *list[]); 137 140 typedef NSCAPI::errorReturn (*lpNSAPIReleasePluginList)(int len, NSCAPI::plugin_info *list[]); … … 150 153 151 154 void Message(int msgType, std::wstring file, int line, std::wstring message); 152 NSCAPI::nagiosReturn InjectCommandRAW(const TCHAR* command, const unsigned int argLen, TCHAR **argument, TCHAR *returnMessageBuffer, unsigned int returnMessageBufferLen, TCHAR*returnPerfBuffer, unsigned int returnPerfBufferLen);153 NSCAPI::nagiosReturn InjectCommand(const TCHAR* command, const unsigned int argLen, TCHAR**argument, std::wstring & message, std::wstring & perf);154 NSCAPI::nagiosReturn InjectCommand(const TCHAR* command, std::list<std::wstring> argument, std::wstring & message, std::wstring & perf);155 NSCAPI::nagiosReturn InjectSplitAndCommand(const TCHAR* command, TCHAR* buffer, TCHARsplitChar, std::wstring & message, std::wstring & perf);156 NSCAPI::nagiosReturn InjectSplitAndCommand(const std::wstring command, const std::wstring buffer, TCHARsplitChar, std::wstring & message, std::wstring & perf, bool escape = false);155 NSCAPI::nagiosReturn InjectCommandRAW(const wchar_t* command, const unsigned int argLen, wchar_t **argument, wchar_t *returnMessageBuffer, unsigned int returnMessageBufferLen, wchar_t *returnPerfBuffer, unsigned int returnPerfBufferLen); 156 NSCAPI::nagiosReturn InjectCommand(const wchar_t* command, const unsigned int argLen, wchar_t **argument, std::wstring & message, std::wstring & perf); 157 NSCAPI::nagiosReturn InjectCommand(const wchar_t* command, std::list<std::wstring> argument, std::wstring & message, std::wstring & perf); 158 NSCAPI::nagiosReturn InjectSplitAndCommand(const wchar_t* command, wchar_t* buffer, wchar_t splitChar, std::wstring & message, std::wstring & perf); 159 NSCAPI::nagiosReturn InjectSplitAndCommand(const std::wstring command, const std::wstring buffer, wchar_t splitChar, std::wstring & message, std::wstring & perf, bool escape = false); 157 160 void StopService(void); 158 161 void Exit(void); … … 160 163 bool logDebug(); 161 164 bool checkLogMessages(int type); 162 std::wstring Encrypt(std::wstring str, unsigned int algorithm = NSCAPI:: xor);163 std::wstring Decrypt(std::wstring str, unsigned int algorithm = NSCAPI:: xor);165 std::wstring Encrypt(std::wstring str, unsigned int algorithm = NSCAPI::encryption_xor); 166 std::wstring Decrypt(std::wstring str, unsigned int algorithm = NSCAPI::encryption_xor); 164 167 NSCAPI::errorReturn SetSettingsString(std::wstring section, std::wstring key, std::wstring value); 165 168 NSCAPI::errorReturn SetSettingsInt(std::wstring section, std::wstring key, int value); … … 175 178 }; 176 179 177 namespace NSCModuleWrapper {178 struct module_version {179 int major;180 int minor;181 int revision;182 };183 184 BOOL wrapDllMain(HANDLE hModule, DWORD ul_reason_for_call);185 HINSTANCE getModule();186 187 int wrapModuleHelperInit(NSCModuleHelper::lpNSAPILoader f);;188 NSCAPI::errorReturn wrapGetModuleName(TCHAR* buf, unsigned int buflen, std::wstring str);189 NSCAPI::errorReturn wrapGetConfigurationMeta(TCHAR* buf, unsigned int buflen, std::wstring str);190 int wrapLoadModule(bool success);191 NSCAPI::errorReturn wrapGetModuleVersion(int *major, int *minor, int *revision, module_version version);192 NSCAPI::boolReturn wrapHasCommandHandler(bool has);193 NSCAPI::boolReturn wrapHasMessageHandler(bool has);194 int wrapUnloadModule(bool success);195 NSCAPI::nagiosReturn wrapHandleCommand(NSCAPI::nagiosReturn retResult, const std::wstring retMessage, const std::wstring retPerformance, TCHAR *returnBufferMessage, unsigned int returnBufferMessageLen, TCHAR *returnBufferPerf, unsigned int returnBufferPerfLen);196 }197 198 //////////////////////////////////////////////////////////////////////////199 // Module wrappers (definitions)200 #define NSC_WRAPPERS_MAIN() \201 extern "C" int NSModuleHelperInit(NSCModuleHelper::lpNSAPILoader f); \202 extern int NSLoadModule(int mode); \203 extern int NSGetModuleName(TCHAR* buf, int buflen); \204 extern int NSGetModuleDescription(TCHAR* buf, int buflen); \205 extern int NSGetModuleVersion(int *major, int *minor, int *revision); \206 extern NSCAPI::boolReturn NSHasCommandHandler(); \207 extern NSCAPI::boolReturn NSHasMessageHandler(); \208 extern void NSHandleMessage(int msgType, TCHAR* file, int line, TCHAR* message); \209 extern NSCAPI::nagiosReturn NSHandleCommand(const TCHAR* IN_cmd, const unsigned int IN_argsLen, TCHAR **IN_args, \210 TCHAR *OUT_retBufMessage, unsigned int IN_retBufMessageLen, TCHAR *OUT_retBufPerf, unsigned int IN_retBufPerfLen); \211 extern int NSUnloadModule(); \212 extern int NSGetConfigurationMeta(int IN_retBufLen, TCHAR *OUT_retBuf)213 214 #define NSC_WRAPPERS_CLI() \215 extern int NSCommandLineExec(const TCHAR*,const unsigned int,TCHAR**)216 217 #ifdef DEBUG218 #define NSC_LOG_ERROR_STD_C(msg) NSC_LOG_ERROR(((std::wstring)msg).c_str())219 #define NSC_LOG_ERROR_C(msg) { \220 NSCModuleHelper::Message(NSCAPI::error, _T(__FILE__), __LINE__, msg) \221 std::wcerr << msg << std::endl; }222 #else223 #define NSC_LOG_ERROR_STD_C(msg) NSC_LOG_ERROR_STD(msg)224 #define NSC_LOG_ERROR_C(msg) NSC_LOG_ERROR(msg)225 #endif226 227 228 #define NSC_LOG_ERROR_STD(msg) NSC_LOG_ERROR(((std::wstring)msg).c_str())229 #define NSC_LOG_ERROR(msg) \230 NSCModuleHelper::Message(NSCAPI::error, _T(__FILE__), __LINE__, msg)231 232 #define NSC_LOG_CRITICAL_STD(msg) NSC_LOG_CRITICAL(((std::wstring)msg).c_str())233 #define NSC_LOG_CRITICAL(msg) \234 NSCModuleHelper::Message(NSCAPI::critical, _T(__FILE__), __LINE__, msg)235 236 #define NSC_LOG_MESSAGE_STD(msg) NSC_LOG_MESSAGE(((std::wstring)msg).c_str())237 #define NSC_LOG_MESSAGE(msg) \238 NSCModuleHelper::Message(NSCAPI::log, _T(__FILE__), __LINE__, msg)239 240 //#define NSC_DEBUG_MSG_STD(msg) NSC_DEBUG_MSG(((std::wstring)msg).c_str())241 #define NSC_DEBUG_MSG_STD(msg) NSC_DEBUG_MSG((std::wstring)msg)242 #define NSC_DEBUG_MSG(msg) \243 NSCModuleHelper::Message(NSCAPI::debug, _T(__FILE__), __LINE__, msg)244 245 /*246 #define NSC_DEBUG_MSG_STD(msg)247 #define NSC_DEBUG_MSG(msg)248 */249 //////////////////////////////////////////////////////////////////////////250 // Message wrappers below this point251 252 #define NSC_WRAPPERS_MAIN_DEF(toObject) \253 extern int NSModuleHelperInit(NSCModuleHelper::lpNSAPILoader f) { \254 try { \255 return NSCModuleWrapper::wrapModuleHelperInit(f); \256 } catch (...) { \257 NSC_LOG_CRITICAL(_T("Unknown exception in: wrapModuleHelperInit(...)")); \258 return NSCAPI::hasFailed; \259 } \260 } \261 extern int NSLoadModule(int mode) { \262 try { \263 return NSCModuleWrapper::wrapLoadModule(toObject.loadModule(mode)); \264 } catch (NSCModuleHelper::NSCMHExcpetion e) { \265 NSC_LOG_CRITICAL(_T("NSCMHE in: wrapLoadModule: " + e.msg_)); \266 return NSCAPI::hasFailed; \267 } catch (...) { \268 NSC_LOG_CRITICAL(_T("Unknown exception in: wrapLoadModule(...)")); \269 return NSCAPI::hasFailed; \270 } \271 } \272 extern int NSGetModuleName(TCHAR* buf, int buflen) { \273 try { \274 return NSCModuleWrapper::wrapGetModuleName(buf, buflen, toObject.getModuleName()); \275 } catch (...) { \276 NSC_LOG_CRITICAL(_T("Unknown exception in: wrapGetModuleName(...)")); \277 return NSCAPI::hasFailed; \278 } \279 } \280 extern int NSGetModuleDescription(TCHAR* buf, int buflen) { \281 try { \282 return NSCModuleWrapper::wrapGetModuleName(buf, buflen, toObject.getModuleDescription()); \283 } catch (...) { \284 NSC_LOG_CRITICAL(_T("Unknown exception in: wrapGetModuleName(...)")); \285 return NSCAPI::hasFailed; \286 } \287 } \288 extern int NSGetModuleVersion(int *major, int *minor, int *revision) { \289 try { \290 return NSCModuleWrapper::wrapGetModuleVersion(major, minor, revision, toObject.getModuleVersion()); \291 } catch (...) { \292 NSC_LOG_CRITICAL(_T("Unknown exception in: wrapGetModuleVersion(...)")); \293 return NSCAPI::hasFailed; \294 } \295 } \296 extern int NSUnloadModule() { \297 try { \298 return NSCModuleWrapper::wrapUnloadModule(toObject.unloadModule()); \299 } catch (...) { \300 NSC_LOG_CRITICAL(_T("Unknown exception in: wrapGetModuleVersion(...)")); \301 return NSCAPI::hasFailed; \302 } \303 }304 #define NSC_WRAPPERS_HANDLE_MSG_DEF(toObject) \305 extern void NSHandleMessage(int msgType, TCHAR* file, int line, TCHAR* message) { \306 try { \307 toObject.handleMessage(msgType, file, line, message); \308 } catch (...) { \309 NSC_LOG_CRITICAL(_T("Unknown exception in: handleMessage(...)")); \310 } \311 } \312 extern NSCAPI::boolReturn NSHasMessageHandler() { \313 try { \314 return NSCModuleWrapper::wrapHasMessageHandler(toObject.hasMessageHandler()); \315 } catch (...) { \316 NSC_LOG_CRITICAL(_T("Unknown exception in: wrapHasMessageHandler(...)")); \317 return NSCAPI::isfalse; \318 } \319 }320 #define NSC_WRAPPERS_IGNORE_MSG_DEF() \321 extern void NSHandleMessage(int msgType, TCHAR* file, int line, TCHAR* message) {} \322 extern NSCAPI::boolReturn NSHasMessageHandler() { return NSCAPI::isfalse; }323 #define NSC_WRAPPERS_HANDLE_CMD_DEF(toObject) \324 extern NSCAPI::nagiosReturn NSHandleCommand(const TCHAR* IN_cmd, const unsigned int IN_argsLen, TCHAR **IN_args, \325 TCHAR *OUT_retBufMessage, unsigned int IN_retBufMessageLen, TCHAR *OUT_retBufPerf, unsigned int IN_retBufPerfLen) \326 { \327 try { \328 std::wstring message, perf; \329 NSCAPI::nagiosReturn retCode = toObject.handleCommand(IN_cmd, IN_argsLen, IN_args, message, perf); \330 return NSCModuleWrapper::wrapHandleCommand(retCode, message, perf, OUT_retBufMessage, IN_retBufMessageLen, OUT_retBufPerf, IN_retBufPerfLen); \331 } catch (...) { \332 NSC_LOG_CRITICAL(_T("Unknown exception in: wrapHandleCommand(...)")); \333 return NSCAPI::returnIgnored; \334 } \335 } \336 extern NSCAPI::boolReturn NSHasCommandHandler() { \337 try { \338 return NSCModuleWrapper::wrapHasCommandHandler(toObject.hasCommandHandler()); \339 } catch (...) { \340 NSC_LOG_CRITICAL(_T("Unknown exception in: wrapHasCommandHandler(...)")); \341 return NSCAPI::isfalse; \342 } \343 }344 #define NSC_WRAPPERS_IGNORE_CMD_DEF() \345 extern NSCAPI::nagiosReturn NSHandleCommand(const TCHAR* IN_cmd, const unsigned int IN_argsLen, TCHAR **IN_args, \346 TCHAR *OUT_retBufMessage, unsigned int IN_retBufMessageLen, TCHAR *OUT_retBufPerf, unsigned int IN_retBufPerfLen) { \347 return NSCAPI::returnIgnored; \348 } \349 extern NSCAPI::boolReturn NSHasCommandHandler() { return NSCAPI::isfalse; }350 351 352 #define NSC_WRAPPERS_HANDLE_CONFIGURATION(toObject) \353 extern int NSGetConfigurationMeta(int IN_retBufLen, TCHAR *OUT_retBuf) \354 { \355 try { \356 return NSCModuleWrapper::wrapGetConfigurationMeta(OUT_retBuf, IN_retBufLen, toObject.getConfigurationMeta()); \357 } catch (...) { \358 NSC_LOG_CRITICAL(_T("Unknown exception in: wrapGetConfigurationMeta(...)")); \359 return NSCAPI::hasFailed; \360 } \361 }362 363 #define NSC_WRAPPERS_CLI_DEF(toObject) \364 extern int NSCommandLineExec(const TCHAR* command,const unsigned int argLen,TCHAR** args) { \365 try { \366 return toObject.commandLineExec(command, argLen, args); \367 } catch (...) { \368 NSC_LOG_CRITICAL(_T("Unknown exception in: commandLineExec(...)")); \369 std::wcerr << _T("Unknown exception in: commandLineExec(...)") << std::endl; \370 return NSCAPI::hasFailed; \371 } \372 } \373 374 //////////////////////////////////////////////////////////////////////////375 #define MODULE_SETTINGS_START(class, name, description) \376 std::wstring class::getConfigurationMeta() { \377 return (std::wstring)_T("<module name=\"") + name + _T("\" description=\"") + description + _T("\">") \378 _T("<pages>")379 380 381 #define ADVANCED_PAGE(title) \382 _T("<page title=\"") title _T("\" advanced=\"true\">") \383 _T("<items>")384 385 #define PAGE(title) \386 _T("<page title=\"") title _T("\">") \387 _T("<items>")388 389 #define ITEM_EDIT_TEXT(caption, description) \390 _T("<item type=\"text\" caption=\"") caption _T("\" description=\"") description _T("\"><options>")391 392 #define ITEM_EDIT_OPTIONAL_LIST(caption, description) \393 _T("<item type=\"optional_list\" caption=\"") caption _T("\" description=\"") description _T("\"><options>")394 395 #define ITEM_CHECK_BOOL(caption, description) \396 _T("<item type=\"bool\" caption=\"") caption _T("\" description=\"") description _T("\"><options>")397 398 #define ITEM_MAP_TO(type) \399 _T("</options><mapper type=\"") type _T("\">") \400 _T("<options>")401 402 #define OPTION(key, value) \403 _T("<option key=\"") key _T("\" value=\"") value _T("\"/>")404 405 #define ITEM_END() \406 _T("</options>") \407 _T("</mapper>") \408 _T("</item>")409 410 #define PAGE_END() \411 _T("</items>") \412 _T("</page>")413 414 #define MODULE_SETTINGS_END() \415 _T("</pages>") \416 _T("</module>"); \417 }418 180 419 181 #define SETTINGS_MAKE_NAME(key) \ … … 437 199 NSCModuleHelper::settings_register_key(setting_keys::key ## _PATH, setting_keys::key, NSCAPI::key_string, setting_keys::key ## _TITLE, setting_keys::key ## _DESC, setting_keys::key ## _DEFAULT, setting_keys::key ## _ADVANCED); 438 200 #define SETTINGS_REG_KEY_I(key) \ 439 NSCModuleHelper::settings_register_key(setting_keys::key ## _PATH, setting_keys::key, NSCAPI::key_integer, setting_keys::key ## _TITLE, setting_keys::key ## _DESC, strEx::itos(setting_keys::key ## _DEFAULT), setting_keys::key ## _ADVANCED);201 NSCModuleHelper::settings_register_key(setting_keys::key ## _PATH, setting_keys::key, NSCAPI::key_integer, setting_keys::key ## _TITLE, setting_keys::key ## _DESC, boost::lexical_cast<std::wstring>(setting_keys::key ## _DEFAULT), setting_keys::key ## _ADVANCED); 440 202 #define SETTINGS_REG_KEY_B(key) \ 441 203 NSCModuleHelper::settings_register_key(setting_keys::key ## _PATH, setting_keys::key, NSCAPI::key_integer, setting_keys::key ## _TITLE, setting_keys::key ## _DESC, setting_keys::key ## _DEFAULT==1?_T("1"):_T("0"), setting_keys::key ## _ADVANCED); -
include/NTService.h
r739db5a r7f9c823 24 24 #include <sysinfo.h> 25 25 26 namespace service_helper {26 namespace service_helper_impl { 27 27 class service_exception { 28 28 std::wstring what_; -
include/arrayBuffer.cpp
r739db5a r7f9c823 28 28 * @return Argument wrapped as a list 29 29 */ 30 arrayBuffer::arrayList arrayBuffer::arrayBuffer2list(const unsigned int argLen, TCHAR*argument[]) {30 arrayBuffer::arrayList arrayBuffer::arrayBuffer2list(const unsigned int argLen, wchar_t *argument[]) { 31 31 arrayList ret; 32 32 int i=0; … … 53 53 for (i=0;it!=lst.end();++it,i++) { 54 54 std::wstring::size_type alen = (*it).size(); 55 arrayBuffer[i] = new TCHAR[alen+2];55 arrayBuffer[i] = new wchar_t[alen+2]; 56 56 wcsncpy_s(arrayBuffer[i], alen+2, (*it).c_str(), alen+1); 57 57 } … … 107 107 * @return The arrayBuffer 108 108 */ 109 arrayBuffer::arrayBuffer arrayBuffer::split2arrayBuffer(const TCHAR* buffer, TCHARsplitChar, unsigned int &argLen) {109 arrayBuffer::arrayBuffer arrayBuffer::split2arrayBuffer(const wchar_t* buffer, wchar_t splitChar, unsigned int &argLen) { 110 110 if (!buffer) 111 111 throw ArrayBufferException(_T("Invalid buffer specified!")); 112 112 argLen = 0; 113 const TCHAR*p = buffer;113 const wchar_t *p = buffer; 114 114 if (!p[0]) { 115 115 return createEmptyArrayBuffer(argLen); … … 121 121 } 122 122 argLen++; 123 TCHAR **arrayBuffer = new TCHAR*[argLen];123 wchar_t **arrayBuffer = new wchar_t*[argLen]; 124 124 p = buffer; 125 125 for (unsigned int i=0;i<argLen;i++) { 126 const TCHAR*q = wcschr(p, (i<argLen-1)?splitChar:0);126 const wchar_t *q = wcschr(p, (i<argLen-1)?splitChar:0); 127 127 unsigned int len = static_cast<int>(q-p); 128 arrayBuffer[i] = new TCHAR[len+1];128 arrayBuffer[i] = new wchar_t[len+1]; 129 129 wcsncpy_s(arrayBuffer[i], len+1, p, len); 130 130 arrayBuffer[i][len] = 0; … … 140 140 delete [] arrayBuffer[position]; 141 141 size_t len = argument.length(); 142 arrayBuffer[position] = new TCHAR[len+2];142 arrayBuffer[position] = new wchar_t[len+2]; 143 143 wcsncpy_s(arrayBuffer[position], len+1, argument.c_str(), len); 144 144 arrayBuffer[position][len] = 0; … … 153 153 * @return The arrayBuffer 154 154 */ 155 arrayBuffer::arrayBuffer arrayBuffer::split2arrayBuffer(const std::wstring inBuf, TCHARsplitChar, unsigned int &argLen, bool escape) {155 arrayBuffer::arrayBuffer arrayBuffer::split2arrayBuffer(const std::wstring inBuf, wchar_t splitChar, unsigned int &argLen, bool escape) { 156 156 if (inBuf.empty()) 157 157 return createEmptyArrayBuffer(argLen); … … 197 197 for (std::list<std::wstring>::const_iterator cit=token_list.begin();cit!=token_list.end();++cit) { 198 198 size_t len = (*cit).size(); 199 TCHAR* token = new TCHAR[len+1];199 wchar_t* token = new wchar_t[len+1]; 200 200 wcsncpy_s(token, len+1, (*cit).c_str(), len); 201 201 arrayBuffer[argLen++] = token; … … 289 289 std::wcout << "arrayBuffer::test_createEmptyArrayBuffer() : "; 290 290 unsigned int argLen; 291 TCHAR** c = createEmptyArrayBuffer(argLen);291 wchar_t ** c = createEmptyArrayBuffer(argLen); 292 292 if ((c) && (argLen == 0)) 293 293 std::wcout << "Succeeded" << std::endl; … … 302 302 * @param OUT_argLen 303 303 */ 304 void arrayBuffer::test_split2arrayBuffer_str(std::wstring buffer, TCHARsplitter, int OUT_argLen) {304 void arrayBuffer::test_split2arrayBuffer_str(std::wstring buffer, wchar_t splitter, int OUT_argLen) { 305 305 std::wcout << _T("arrayBuffer::test_split2arrayBuffer(") << buffer << _T(", ...) : "); 306 306 unsigned int argLen = 0; 307 TCHAR** c = split2arrayBuffer(buffer, splitter, argLen);307 wchar_t ** c = split2arrayBuffer(buffer, splitter, argLen); 308 308 if ((c) && (argLen == OUT_argLen)) 309 309 std::wcout << _T("Succeeded") << std::endl; … … 318 318 * @param OUT_argLen 319 319 */ 320 void arrayBuffer::test_split2arrayBuffer_char( TCHAR* buffer, TCHARsplitter, int OUT_argLen) {320 void arrayBuffer::test_split2arrayBuffer_char(wchar_t* buffer, wchar_t splitter, int OUT_argLen) { 321 321 std::wcout << _T("arrayBuffer::test_split2arrayBuffer(") << buffer << _T(", ...) : "); 322 322 unsigned int argLen = 0; 323 TCHAR** c = split2arrayBuffer(buffer, splitter, argLen);323 wchar_t ** c = split2arrayBuffer(buffer, splitter, argLen); 324 324 if ((c) && (argLen == OUT_argLen)) 325 325 std::wcout << _T("Succeeded") << std::endl; -
include/arrayBuffer.h
r739db5a r7f9c823 20 20 ***************************************************************************/ 21 21 #pragma once 22 23 #include <tchar.h> 22 #include <unicode_char.hpp> 24 23 #include <string> 25 24 #include <list> … … 54 53 ArrayBufferException(std::wstring error) {} 55 54 }; 56 typedef TCHAR* arrayBufferItem;55 typedef wchar_t* arrayBufferItem; 57 56 typedef arrayBufferItem* arrayBuffer; 58 57 typedef std::list<std::wstring> arrayList; 59 58 void set(arrayBuffer arrayBuffer, const unsigned int argLen, const unsigned int position, std::wstring argument); 60 arrayList arrayBuffer2list(const unsigned int argLen, TCHAR**argument);59 arrayList arrayBuffer2list(const unsigned int argLen, wchar_t **argument); 61 60 arrayBuffer list2arrayBuffer(const arrayList lst, unsigned int &argLen); 62 arrayBuffer split2arrayBuffer(const TCHAR* buffer, TCHARsplitChar, unsigned int &argLen);63 arrayBuffer split2arrayBuffer(const std::wstring inBuf, TCHARsplitChar, unsigned int &argLen, bool escape = false);64 std::wstring arrayBuffer2string( TCHAR**argument, const unsigned int argLen, std::wstring join);61 arrayBuffer split2arrayBuffer(const wchar_t* buffer, wchar_t splitChar, unsigned int &argLen); 62 arrayBuffer split2arrayBuffer(const std::wstring inBuf, wchar_t splitChar, unsigned int &argLen, bool escape = false); 63 std::wstring arrayBuffer2string(wchar_t **argument, const unsigned int argLen, std::wstring join); 65 64 arrayBuffer createEmptyArrayBuffer(unsigned int &argLen); 66 65 arrayBuffer createArrayBuffer(unsigned int &argLen); … … 70 69 for (unsigned int i=0; i<argLen; i++) { 71 70 size_t s = wcslen(other[i]); 72 ret[i] = new TCHAR[s+2];71 ret[i] = new wchar_t[s+2]; 73 72 wcsncpy_s(ret[i], s+2, other[i], s); 74 73 } … … 78 77 #ifdef _DEBUG 79 78 void test_createEmptyArrayBuffer(); 80 void test_split2arrayBuffer_str(std::wstring buffer, TCHARsplitter, int OUT_argLen);81 void test_split2arrayBuffer_char( TCHAR* buffer, TCHARsplitter, int OUT_argLen);79 void test_split2arrayBuffer_str(std::wstring buffer, wchar_t splitter, int OUT_argLen); 80 void test_split2arrayBuffer_char(wchar_t* buffer, wchar_t splitter, int OUT_argLen); 82 81 void run_testArrayBuffer(); 83 82 #endif -
include/charEx.h
r739db5a r7f9c823 20 20 ***************************************************************************/ 21 21 #pragma once 22 #ifdef WIN32 22 23 #include <windows.h> 23 24 #include <tchar.h> 25 #endif 24 26 25 27 namespace charEx { … … 30 32 * @return a list with strings 31 33 */ 32 inline std::list<std::wstring> split(const TCHAR* buffer, TCHARsplit) {34 inline std::list<std::wstring> split(const wchar_t* buffer, wchar_t split) { 33 35 std::list<std::wstring> ret; 34 const TCHAR*start = buffer;35 for (const TCHAR*p = buffer;*p!='\0';p++) {36 const wchar_t *start = buffer; 37 for (const wchar_t *p = buffer;*p!='\0';p++) { 36 38 if (*p==split) { 37 39 std::wstring str(start, p-start); … … 44 46 } 45 47 46 48 /* 47 49 inline char* tchar_to_char( const wchar_t* pStr, int len, int &nChars) { 48 50 if (pStr == NULL) … … 78 80 --nChars; 79 81 if (nChars == 0) { 80 TCHAR *ret = new TCHAR[1];82 wchar_t *ret = new wchar_t[1]; 81 83 ret[0] = 0; 82 84 return ret; … … 84 86 85 87 // convert the narrow string to a wide string 86 TCHAR *ret = new TCHAR[nChars+1];88 wchar_t *ret = new wchar_t[nChars+1]; 87 89 MultiByteToWideChar(CP_ACP, 0 ,pStr ,len, const_cast<wchar_t*>(ret), nChars); 88 90 return ret; 89 91 } 92 */ 90 93 91 94 92 93 typedef std::pair<std::wstring,TCHAR*> token; 94 inline token getToken(TCHAR *buffer, TCHAR split) { 95 typedef std::pair<std::wstring,wchar_t*> token; 96 inline token getToken(wchar_t *buffer, wchar_t split) { 95 97 if (buffer == NULL) 96 98 throw std::exception(); 97 TCHAR*p = wcschr(buffer, split);99 wchar_t *p = wcschr(buffer, split); 98 100 if (!p) 99 101 return token(buffer, NULL); … … 104 106 } 105 107 #ifdef _DEBUG 106 inline void test_getToken( TCHAR* in1, TCHAR in2, std::wstring out1, TCHAR* out2) {108 inline void test_getToken(wchar_t* in1, wchar_t in2, std::wstring out1, wchar_t * out2) { 107 109 token t = getToken(in1, in2); 108 110 std::wcout << _T("charEx::test_getToken(") << in1 << _T(", ") << in2 << _T(") : "); -
include/checkHelpers.hpp
rb1ac2fa r7f9c823 277 277 } 278 278 static std::wstring print(__int64 value) { 279 return strEx::itos(value);279 return boost::lexical_cast<std::wstring>(value); 280 280 } 281 281 static std::wstring get_perf_unit(__int64 value) { … … 283 283 } 284 284 static std::wstring print_perf(__int64 value, std::wstring unit) { 285 return strEx::itos(value);285 return boost::lexical_cast<std::wstring>(value); 286 286 } 287 287 static std::wstring print_unformated(__int64 value) { 288 return strEx::itos(value);288 return boost::lexical_cast<std::wstring>(value); 289 289 } 290 290 static std::wstring print_percent(__int64 value) { 291 return strEx::itos(value) + _T("%");291 return boost::lexical_cast<std::wstring>(value) + _T("%"); 292 292 } 293 293 static std::wstring key_prefix() { -
include/config.h
rd5356c1 r7f9c823 22 22 23 23 #include "../AutoBuild.h" 24 /* 24 25 #include <tchar.h> 26 */ 25 27 #include <string> 26 28 #include <settings/macros.h> … … 197 199 #define LUA_SCRIPT_SECTION_TITLE _T("LUA Scripts") 198 200 */ 199 200 // Main Registry ROOT201 #define NS_HKEY_ROOT HKEY_LOCAL_MACHINE202 #define NS_REG_ROOT _T("SOFTWARE\\NSClient++") -
include/error.hpp
rdcd5462 r7f9c823 1 1 #pragma once 2 #include < tchar.h>2 #include <unicode_char.hpp> 3 3 #include <string> 4 #include <windows.h>5 4 #include <strEx.h> 6 5 #include <vector> 7 6 8 namespace error { 9 class format { 10 public: 11 static std::wstring from_system(unsigned long dwError) { 12 LPVOID lpMsgBuf = NULL; 13 unsigned long dwRet = FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER|FORMAT_MESSAGE_FROM_SYSTEM,NULL,dwError,MAKELANGID(LANG_NEUTRAL,SUBLANG_DEFAULT),(LPTSTR)&lpMsgBuf,0,NULL); 14 if (dwRet == 0) { 15 return _T("failed to lookup error code: ") + strEx::itos(dwError) + _T("( reson: ") + strEx::itos(GetLastError()) + _T(")"); 16 } 17 TCHAR *szBuf = new TCHAR[dwRet + 100]; 18 wsprintf(szBuf, _T("%d: %s"), dwError, lpMsgBuf); 19 std::wstring str = szBuf; 20 delete [] szBuf; 21 LocalFree(lpMsgBuf); 22 return str; 23 } 24 static std::wstring from_module(std::wstring module, unsigned long dwError) { 25 LPVOID lpMsgBuf; 26 unsigned long dwRet = FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER|FORMAT_MESSAGE_FROM_HMODULE|FORMAT_MESSAGE_IGNORE_INSERTS, 27 GetModuleHandle(module.c_str()),dwError,MAKELANGID(LANG_NEUTRAL,SUBLANG_DEFAULT),(LPTSTR)&lpMsgBuf,0,NULL); 28 if (dwRet == 0) { 29 return _T("failed to lookup error code: ") + strEx::itos(dwError) + _T("( reson: ") + strEx::itos(GetLastError()) + _T(")"); 30 } 31 TCHAR *szBuf = new TCHAR[dwRet + 100]; 32 wsprintf(szBuf, _T("%d: %s"), dwError, lpMsgBuf); 33 std::wstring str = szBuf; 34 delete [] szBuf; 35 LocalFree(lpMsgBuf); 36 return str; 37 } 38 static std::wstring from_module(std::wstring module, unsigned long dwError, DWORD *arguments) { 39 LPVOID lpMsgBuf; 40 HMODULE hevt = LoadLibraryEx(module.c_str(), NULL, DONT_RESOLVE_DLL_REFERENCES); 41 if (hevt == NULL) { 42 return _T("failed to load: ") + module + _T("( reson: ") + strEx::itos(GetLastError()) + _T(")"); 43 } 44 unsigned long dwRet = FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER|FORMAT_MESSAGE_FROM_HMODULE|FORMAT_MESSAGE_ARGUMENT_ARRAY,hevt, 45 dwError,MAKELANGID(LANG_NEUTRAL,SUBLANG_DEFAULT),(LPTSTR)&lpMsgBuf,0,reinterpret_cast<va_list*>(arguments)); 46 if (dwRet == 0) { 47 FreeLibrary(hevt); 48 return _T("failed to lookup error code: ") + strEx::itos(dwError) + _T(" from DLL: ") + module + _T("( reson: ") + strEx::itos(GetLastError()) + _T(")"); 49 } 50 TCHAR *szBuf = new TCHAR[dwRet + 100]; 51 wsprintf(szBuf, _T("%d: %s"), dwError, lpMsgBuf); 52 std::wstring str = szBuf; 53 delete [] szBuf; 54 LocalFree(lpMsgBuf); 55 FreeLibrary(hevt); 56 return str; 57 } 58 class message { 59 public: 60 static std::wstring from_module(std::wstring module, unsigned long dwError) { 61 HMODULE hDLL = LoadLibraryEx(module.c_str(), NULL, DONT_RESOLVE_DLL_REFERENCES); 62 if (hDLL == NULL) { 63 return _T("failed to load: ") + module + _T("( reson: ") + strEx::itos(GetLastError()) + _T(")"); 64 } 65 LPVOID lpMsgBuf; 66 unsigned long dwRet = FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER|FORMAT_MESSAGE_FROM_HMODULE|FORMAT_MESSAGE_IGNORE_INSERTS,hDLL, 67 dwError,MAKELANGID(LANG_NEUTRAL,SUBLANG_DEFAULT),(LPTSTR)&lpMsgBuf,0,NULL); 68 if (dwRet == 0) { 69 FreeLibrary(hDLL); 70 DWORD err = GetLastError(); 71 if (err == 317) { 72 return _T(""); 73 } 74 return _T("failed to lookup error code: ") + strEx::itos(dwError) + _T(" from DLL: ") + module + _T("( reson: ") + strEx::itos(err) + _T(")"); 75 } 76 std::wstring str = reinterpret_cast<TCHAR*>(lpMsgBuf); 77 LocalFree(lpMsgBuf); 78 FreeLibrary(hDLL); 79 return str; 80 } 81 82 static std::wstring from_module_x64(std::wstring module, unsigned long dwError, TCHAR* argList[], DWORD argCount) { 83 if (argCount == 0) 84 return from_module_wrapper(module, dwError); 85 if (argCount == 1) 86 return from_module_wrapper(module, dwError, argList[0]); 87 if (argCount == 2) 88 return from_module_wrapper(module, dwError, argList[0], argList[1]); 89 if (argCount == 3) 90 return from_module_wrapper(module, dwError, argList[0], argList[1], argList[2]); 91 if (argCount == 4) 92 return from_module_wrapper(module, dwError, argList[0], argList[1], argList[2], argList[3]); 93 if (argCount == 5) 94 return from_module_wrapper(module, dwError, argList[0], argList[1], argList[2], argList[3], argList[4]); 95 if (argCount == 6) 96 return from_module_wrapper(module, dwError, argList[0], argList[1], argList[2], argList[3], argList[4], argList[5]); 97 if (argCount == 7) 98 return from_module_wrapper(module, dwError, argList[0], argList[1], argList[2], argList[3], argList[4], argList[5], argList[6]); 99 if (argCount == 8) 100 return from_module_wrapper(module, dwError, argList[0], argList[1], argList[2], argList[3], argList[4], argList[5], argList[6], argList[7]); 101 if (argCount == 9) 102 return from_module_wrapper(module, dwError, argList[0], argList[1], argList[2], argList[3], argList[4], argList[5], argList[6], argList[7], argList[8]); 103 if (argCount == 10) 104 return from_module_wrapper(module, dwError, argList[0], argList[1], argList[2], argList[3], argList[4], argList[5], argList[6], argList[7], argList[8], argList[9]); 105 if (argCount == 11) 106 return from_module_wrapper(module, dwError, argList[0], argList[1], argList[2], argList[3], argList[4], argList[5], argList[6], argList[7], argList[8], argList[9], argList[10]); 107 return _T("We cant handle ") + strEx::itos(argCount) + _T(" arguments so you wont get argList here"); 108 } 109 private: 110 111 static std::wstring from_module_wrapper(std::wstring module, unsigned long dwError, ...) { 112 va_list Ellipsis; 113 va_start(Ellipsis, dwError); 114 std::wstring ret = __from_module(module, dwError, &Ellipsis); 115 va_end(Ellipsis); 116 return ret; 117 } 118 119 static std::wstring __from_module(std::wstring module, unsigned long dwError, va_list *arguments) { 120 HMODULE hDLL = LoadLibraryEx(module.c_str(), NULL, DONT_RESOLVE_DLL_REFERENCES); 121 if (hDLL == NULL) { 122 return _T("failed to load: ") + module + _T("( reson: ") + strEx::itos(GetLastError()) + _T(")"); 123 } 124 LPVOID lpMsgBuf; 125 126 //unsigned long dwRet = FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER|FORMAT_MESSAGE_FROM_HMODULE|FORMAT_MESSAGE_ARGUMENT_ARRAY,hDLL, 127 // dwError,MAKELANGID(LANG_NEUTRAL,SUBLANG_DEFAULT),(LPTSTR)&lpMsgBuf,0,reinterpret_cast<va_list*>(arguments)); 128 unsigned long dwRet = FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER|FORMAT_MESSAGE_FROM_HMODULE,hDLL, 129 dwError,MAKELANGID(LANG_NEUTRAL,SUBLANG_DEFAULT),(LPTSTR)&lpMsgBuf,0,reinterpret_cast<va_list*>(arguments)); 130 if (dwRet == 0) { 131 FreeLibrary(hDLL); 132 DWORD err = GetLastError(); 133 if (err == 317) { 134 return _T(""); 135 } 136 return _T("failed to lookup error code: ") + strEx::itos(dwError) + _T(" from DLL: ") + module + _T("( reson: ") + strEx::itos(err) + _T(")"); 137 } 138 std::wstring str = reinterpret_cast<TCHAR*>(lpMsgBuf); 139 LocalFree(lpMsgBuf); 140 FreeLibrary(hDLL); 141 return str; 142 } 143 public: 144 static std::wstring from_system(unsigned long dwError, DWORD *arguments) { 145 LPVOID lpMsgBuf; 146 unsigned long dwRet = FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER|FORMAT_MESSAGE_FROM_SYSTEM|FORMAT_MESSAGE_ARGUMENT_ARRAY,NULL, 147 dwError,MAKELANGID(LANG_NEUTRAL,SUBLANG_DEFAULT),(LPTSTR)&lpMsgBuf,0,reinterpret_cast<va_list*>(arguments)); 148 if (dwRet == 0) { 149 DWORD err = GetLastError(); 150 if (err == 317) { 151 return _T(""); 152 } 153 return _T("failed to lookup error code: ") + strEx::itos(dwError) + _T(" from system ( reson: ") + strEx::itos(err) + _T(")"); 154 } 155 std::wstring str = reinterpret_cast<TCHAR*>(lpMsgBuf); 156 LocalFree(lpMsgBuf); 157 return str; 158 } 159 }; 160 }; 161 class lookup { 162 public: 163 static std::wstring last_error(unsigned long dwLastError = -1) { 164 if (dwLastError == -1) { 165 dwLastError = GetLastError(); 166 } 167 return ::error::format::from_system(dwLastError); 168 } 169 static std::string last_error_ansi(unsigned long dwLastError = -1) { 170 if (dwLastError == -1) { 171 dwLastError = GetLastError(); 172 } 173 return strEx::wstring_to_string(::error::format::from_system(dwLastError)); 174 } 175 }; 176 } 7 #ifdef WIN32 8 #include <error_impl_w32.hpp> 9 #else 10 #include <error_impl_unix.hpp> 11 #endif -
include/nrpe/nrpepacket.hpp
r739db5a r7f9c823 148 148 unsigned int getBufferLength() const { return getBufferLength(buffer_length_); } 149 149 static unsigned int getBufferLength(unsigned int buffer_length) { return sizeof(packet)+buffer_length*sizeof(char); } 150 unsigned int getInternalBufferLength() const { return buffer_length_; } 150 151 151 152 -
include/settings/macros.h
rd5356c1 r7f9c823 1 1 #pragma once 2 2 3 3 #include <unicode_char.hpp> 4 4 5 5 #define DEFINE_SETTING_S(name, path, key, value) \ … … 39 39 setting_keys::key ## _PATH, setting_keys::key, type, setting_keys::key ## _TITLE, setting_keys::key ## _DESC, setting_keys::key ## _DEFAULT, setting_keys::key ## _ADVANCED 40 40 #define SETTINGS_REG_KEY_I_GEN(key, type) \ 41 setting_keys::key ## _PATH, setting_keys::key, type, setting_keys::key ## _TITLE, setting_keys::key ## _DESC, strEx::itos(setting_keys::key ## _DEFAULT), setting_keys::key ## _ADVANCED41 setting_keys::key ## _PATH, setting_keys::key, type, setting_keys::key ## _TITLE, setting_keys::key ## _DESC, boost::lexical_cast<std::wstring>(setting_keys::key ## _DEFAULT), setting_keys::key ## _ADVANCED 42 42 #define SETTINGS_REG_KEY_B_GEN(key, type) \ 43 43 setting_keys::key ## _PATH, setting_keys::key, type, setting_keys::key ## _TITLE, setting_keys::key ## _DESC, setting_keys::key ## _DEFAULT==1?_T("1"):_T("0"), setting_keys::key ## _ADVANCED … … 57 57 #define GENERIC_KEY_OBFUSCATED_PWD "obfuscated password" 58 58 #define GENERIC_KEY_USE_SSL "use ssl" 59 60 61 // Main Registry ROOT 62 #define NS_HKEY_ROOT HKEY_LOCAL_MACHINE 63 #define NS_REG_ROOT _T("SOFTWARE\\NSClient++") 59 64 60 65 … … 217 222 DESCRIBE_SETTING(SYNTAX, "SYNTAX", "Set this to use a specific syntax string for all commands (that don't specify one)."); 218 223 219 DEFINE_SETTING_I(BUFFER_SIZE, EVENT_LOG_SECTION, "buffer_size", 4096);224 DEFINE_SETTING_I(BUFFER_SIZE, EVENT_LOG_SECTION, "buffer_size", 65535); 220 225 DESCRIBE_SETTING(BUFFER_SIZE, "BUFFER SIZE", "The size of the bugfer to use when getting messages this affects the speed and maximum size of messages you can recieve."); 221 226 } -
include/settings/settings_old.hpp
rd5356c1 r7f9c823 5 5 #include <settings/Settings.h> 6 6 #include <simpleini/SimpleIni.h> 7 #include <settings/macros.h> 7 8 8 9 #define MAIN_MODULES_SECTION_OLD _T("modules") -
include/settings/settings_registry.hpp
rf0eb62d r7f9c823 6 6 #include <msvc_wrappers.h> 7 7 #include <error.hpp> 8 #include <settings/macros.h> 8 9 #define BUFF_LEN 4096 9 10 -
include/strEx.h
rd5356c1 r7f9c823 20 20 ***************************************************************************/ 21 21 #pragma once 22 23 #include <tchar.h> 24 #include <windows.h> 22 #include <unicode_char.hpp> 25 23 #include <sstream> 26 24 #include <iomanip> … … 32 30 #include <algorithm> 33 31 #include <locale> 32 #include <iostream> 33 #include <string> 34 #include <locale> 35 #include <boost/lexical_cast.hpp> 36 #include <boost/date_time.hpp> 37 #include <boost/lexical_cast.hpp> 38 //#include <boost/date_time/local_time/local_date_time.hpp> 39 //#include <boost/date_time/gregorian/conversion.hpp> 40 //boost::local_time::local_date_time 34 41 35 42 … … 38 45 #endif 39 46 47 48 49 50 #include <string> 51 #include <locale> 52 53 namespace boost 54 { 55 template<> 56 inline std::wstring lexical_cast<std::wstring, std::string>(const std::string& arg) 57 { 58 std::wstring result; 59 std::locale loc; 60 for(unsigned int i= 0; i < arg.size(); ++i) 61 { 62 result += std::use_facet<std::ctype<wchar_t> >(loc).widen(arg[i]); 63 } 64 return result; 65 } 66 67 template<> 68 inline std::string lexical_cast<std::string, std::wstring>(const std::wstring& arg) 69 { 70 std::string result; 71 std::locale loc; 72 for(unsigned int i= 0; i < arg.size(); ++i) 73 { 74 result += std::use_facet<std::ctype<wchar_t> >(loc).narrow(arg[i]); 75 } 76 return result; 77 } 78 } 40 79 namespace strEx { 41 80 class string_exception : public std::exception { … … 46 85 return _what; 47 86 } 87 virtual ~string_exception() throw(); 48 88 }; 49 89 namespace s { … … 72 112 lst += append; 73 113 } 74 114 /* 75 115 inline std::string wstring_to_string( const wchar_t* pStr, int len) { 76 116 if (pStr == NULL) … … 95 135 return buf ; 96 136 } 137 */ 97 138 inline std::string wstring_to_string( const std::wstring& str ) { 98 return wstring_to_string(str.c_str(), static_cast<int>(str.length())); 99 } 100 139 return boost::lexical_cast<std::string>(str) ; 140 //return wstring_to_string(str.c_str(), static_cast<int>(str.length())); 141 } 142 /* 101 143 inline std::wstring string_to_wstring( const char* pStr , int len ) { 102 144 if (pStr == NULL) … … 120 162 return buf ; 121 163 } 164 */ 122 165 inline std::wstring string_to_wstring( const std::string& str ) { 123 return string_to_wstring(str.c_str(), static_cast<int>(str.length())) ; 166 return boost::lexical_cast<std::wstring>(str) ; 167 //return string_to_wstring(str.c_str(), static_cast<int>(str.length())) ; 124 168 } 125 169 … … 164 208 return ss.str(); 165 209 } 166 167 inline std::wstring format_date(time_t time, std::wstring format = _T("%Y-%m-%d %H:%M:%S")) { 168 TCHAR buf[51]; 210 inline std::wstring format_date(boost::posix_time::ptime date, std::wstring format = _T("%Y-%m-%d %H:%M:%S")) { 211 std::locale locale_local (""); 212 213 boost::gregorian::wdate_facet *date_output = new boost::gregorian::wdate_facet(); 214 std::locale locale_adjusted (locale_local, date_output); 215 216 std::wstringstream date_ss; 217 date_ss.imbue(locale_adjusted); 218 219 date_output->format(format.c_str()); 220 date_ss << date; 221 222 std::wstring ss = date_ss.str(); 223 return ss; 224 } 225 226 227 inline std::wstring format_date(std::time_t time, std::wstring format = _T("%Y-%m-%d %H:%M:%S")) { 228 return format_date(boost::posix_time::from_time_t(time), format); 229 /* 230 wchar_t buf[51]; 169 231 struct tm nt; // = new struct tm; 170 232 #if (_MSC_VER > 1300) // 1300 == VC++ 7.0 … … 172 234 return _T(""); 173 235 #else 236 struct tm nt; // = new struct tm; 174 237 nt = gmtime(&time); 175 238 if (nt == NULL) … … 181 244 buf[l] = 0; 182 245 return buf; 183 } 246 */ 247 } 248 /* 184 249 inline std::wstring format_date(const SYSTEMTIME &time, std::wstring format = _T("%Y-%m-%d %H:%M:%S")) { 185 TCHAR buf[51];186 187 250 struct tm tmTime; 188 251 memset(&tmTime, 0, sizeof(tmTime)); … … 205 268 static const __int64 SECS_BETWEEN_EPOCHS = 11644473600; 206 269 static const __int64 SECS_TO_100NS = 10000000; 270 inline std::wstring format_filetime(unsigned long long filetime, std::wstring format = _T("%Y-%m-%d %H:%M:%S")) { 271 filetime -= (SECS_BETWEEN_EPOCHS * SECS_TO_100NS); 272 filetime /= SECS_TO_100NS; 273 return format_date(static_cast<time_t>(filetime), format); 274 } 275 */ 276 static const __int64 SECS_BETWEEN_EPOCHS = 11644473600; 277 static const __int64 SECS_TO_100NS = 10000000; 278 207 279 inline std::wstring format_filetime(unsigned long long filetime, std::wstring format = _T("%Y-%m-%d %H:%M:%S")) { 208 280 filetime -= (SECS_BETWEEN_EPOCHS * SECS_TO_100NS); … … 222 294 } 223 295 } 224 inline std::wstring ctos( TCHARc) {296 inline std::wstring ctos(wchar_t c) { 225 297 return std::wstring(1, c); 226 298 } 227 inline TCHARstoc(std::wstring str) {299 inline wchar_t stoc(std::wstring str) { 228 300 if (str.length() == 0) 229 301 return L' '; … … 245 317 return ss.str(); 246 318 } 319 /* 247 320 inline std::wstring itos(__int64 i) { 248 321 std::wstringstream ss; … … 250 323 return ss.str(); 251 324 } 325 */ 252 326 inline std::wstring itos(unsigned long i) { 253 327 std::wstringstream ss; … … 284 358 } 285 359 inline int stoi(std::wstring s) { 286 return _wtoi(s.c_str());360 return boost::lexical_cast<int>(s.c_str()); 287 361 } 288 362 inline double stod(std::wstring s) { 289 return _wtof(s.c_str());363 return boost::lexical_cast<double>(s.c_str()); 290 364 } 291 365 inline long long stoi64(std::wstring s) { 292 return _wtoi64(s.c_str());366 return boost::lexical_cast<long long>(s.c_str()); 293 367 } 294 368 inline unsigned stoui_as_time(std::wstring time, unsigned int smallest_unit = 1000) { 295 369 std::wstring::size_type p = time.find_first_of(_T("sSmMhHdDwW")); 296 unsigned int value = _wtoi(time.c_str());370 unsigned int value = boost::lexical_cast<unsigned int>(time.c_str()); 297 371 if (p == std::wstring::npos) 298 372 return value * smallest_unit; … … 312 386 inline unsigned long long stoi64_as_time(std::wstring time, unsigned int smallest_unit = 1000) { 313 387 std::wstring::size_type p = time.find_first_of(_T("sSmMhHdDwW")); 314 unsigned long long value = _wtoi64(time.c_str());315 388 if (p == std::wstring::npos) 316 return value * smallest_unit; 317 else if ( (time[p] == 's') || (time[p] == 'S') ) 389 return boost::lexical_cast<long long>(time) * smallest_unit; 390 unsigned long long value = boost::lexical_cast<long long>(time.substr(0, p)); 391 if ( (time[p] == 's') || (time[p] == 'S') ) 318 392 return value * 1000; 319 393 else if ( (time[p] == 'm') || (time[p] == 'M') ) … … 378 452 std::wstring::size_type p = s.find_first_of(_T("BMKGT")); 379 453 if (p == std::wstring::npos) 380 return _wtoi64(s.c_str());454 return boost::lexical_cast<long long>(s.c_str()); 381 455 else if (s[p] == 'B') 382 return _wtoi64(s.c_str());456 return boost::lexical_cast<long long>(s.c_str()); 383 457 else if (s[p] == 'K') 384 return _wtoi64(s.c_str())*1024;458 return boost::lexical_cast<long long>(s.c_str())*1024; 385 459 else if (s[p] == 'M') 386 return _wtoi64(s.c_str())*1024*1024;460 return boost::lexical_cast<long long>(s.c_str())*1024*1024; 387 461 else if (s[p] == 'G') 388 return _wtoi64(s.c_str())*1024*1024*1024;462 return boost::lexical_cast<long long>(s.c_str())*1024*1024*1024; 389 463 else if (s[p] == 'T') 390 return _wtoi64(s.c_str())*1024*1024*1024*1024;464 return boost::lexical_cast<long long>(s.c_str())*1024*1024*1024*1024; 391 465 else 392 return _wtoi64(s.c_str());393 } 394 #define BKMG_RANGE "BKMGTP"466 return boost::lexical_cast<long long>(s.c_str()); 467 } 468 #define BKMG_RANGE _T("BKMGTP") 395 469 #define BKMG_SIZE 5 396 470 397 inline std::wstring itos_as_BKMG(unsigned __int64i) {471 inline std::wstring itos_as_BKMG(unsigned long long i) { 398 472 double cpy = static_cast<double>(i); 399 TCHAR postfix[] = _T(BKMG_RANGE);473 wchar_t postfix[] = BKMG_RANGE; 400 474 int idx = 0; 401 475 while ((cpy > 999)&&(idx<BKMG_SIZE)) { … … 410 484 return ret; 411 485 } 412 inline std::wstring format_BKMG(unsigned __int64i, std::wstring unit) {486 inline std::wstring format_BKMG(unsigned long long i, std::wstring unit) { 413 487 double cpy = static_cast<double>(i); 414 TCHAR postfix[] = _T(BKMG_RANGE);488 wchar_t postfix[] = BKMG_RANGE; 415 489 if (unit.length() != 1) 416 490 return itos(cpy); … … 430 504 return itos(cpy); 431 505 } 432 inline std::wstring find_proper_unit_BKMG(unsigned __int64i) {506 inline std::wstring find_proper_unit_BKMG(unsigned long long i) { 433 507 double cpy = static_cast<double>(i); 434 TCHAR postfix[] = _T(BKMG_RANGE);508 wchar_t postfix[] = BKMG_RANGE; 435 509 int idx = 0; 436 510 while ((cpy > 999)&&(idx<BKMG_SIZE)) { … … 523 597 524 598 // There's no memichr(), so we roll our own. It ain't rocket science. 525 static const _E * __cdeclfind(const _E *buf, size_t len, const _E& ch) {599 static const _E * /*__cdecl*/ find(const _E *buf, size_t len, const _E& ch) { 526 600 // Jerry says that x86s have special mojo for memchr(), so the 527 601 // memchr() calls end up being reasonably efficient in practice. … … 539 613 540 614 // I'm reasonably sure that this is eq() for wide characters. Maybe. 541 static bool eq_int_type(const int_type& ch1, const int_type& ch2) {542 return char_traits<_E>::eq_int_type( tolower( ch1 ), tolower( ch2 ) );615 static bool eq_int_type(const long& ch1, const long& ch2) { 616 return std::char_traits<_E>::eq_int_type( tolower( ch1 ), tolower( ch2 ) ); 543 617 } 544 618 }; … … 547 621 //typedef std::basic_string<char, blind_traits<char>, std::allocator<char> > blindstr; 548 622 typedef std::basic_string<wchar_t, blind_traits<wchar_t>, std::allocator<wchar_t> > blindstr; 549 550 struct case_blind_string_compare : public std::binary_function<std::wstring, std::wstring, bool>551 {552 bool operator() (const std::wstring& x, const std::wstring& y) const {553 return _wcsicmp( x.c_str(), y.c_str() ) < 0;554 }555 };556 557 558 623 559 624 class StrICmp … … 596 661 } 597 662 663 struct case_blind_string_compare : public std::binary_function<std::wstring, std::wstring, bool> 664 { 665 bool operator() (const std::wstring& x, const std::wstring& y) const { 666 return StrCmpI<std::wstring>(x,y); 667 //return _wcsicmp( x.c_str(), y.c_str() ) < 0; 668 } 669 }; 598 670 599 671 #ifdef _DEBUG … … 635 707 } 636 708 637 638 #include <string> 639 #include <locale> 640 641 #include <boost/lexical_cast.hpp> 642 643 namespace boost 644 { 645 template<> 646 inline std::wstring lexical_cast<std::wstring, std::string>(const std::string& arg) 647 { 648 std::wstring result; 649 std::locale loc; 650 for(unsigned int i= 0; i < arg.size(); ++i) 651 { 652 result += std::use_facet<std::ctype<wchar_t> >(loc).widen(arg[i]); 653 } 654 return result; 655 } 656 657 template<> 658 inline std::string lexical_cast<std::string, std::wstring>(const std::wstring& arg) 659 { 660 std::string result; 661 std::locale loc; 662 for(unsigned int i= 0; i < arg.size(); ++i) 663 { 664 result += std::use_facet<std::ctype<wchar_t> >(loc).narrow(arg[i]); 665 } 666 return result; 709 template <typename T> std::string to_string(const T& arg) { 710 try { 711 return boost::lexical_cast<std::string>(arg) ; 712 } 713 catch(boost::bad_lexical_cast& e) { 714 return ""; 667 715 } 668 716 } 669 717 template <typename T> std::wstring to_wstring(const T& arg) { 718 try { 719 return boost::lexical_cast<std::wstring>(arg) ; 720 } 721 catch(boost::bad_lexical_cast& e) { 722 return _T(""); 723 } 724 }
Note: See TracChangeset
for help on using the changeset viewer.








