/** The main NEB module initialization routine. * * This function gets called when the module is loaded by the event broker. * * @param[in] flags - module flags - not used * @param[in] args - module arguments. These come from the nagios * configuration file, and are passed through to the module as it loads. * @param[in] handle - our module handle - passed from the OS to nagios as * nagios loaded us. * * @return Zero on success, or a non-zero error value. */ int nebmodule_init(int flags, char * args, nebmodule * handle) { int ret; myHandle = handle; // module args string should contain a fully-qualified config file path if (!args || !*args) args = DNX_DEFAULT_SERVER_CONFIG_FILE; if ((ret = initConfig(args)) != 0) return ERROR; // set configured debug level and syslog log facility code dnxLogInit(cfg.logFilePath, cfg.debugFilePath, cfg.auditFilePath, &cfg.debugLevel); dnxLog("-------- DNX Server Module Version %s Startup --------", VERSION); dnxLog("Copyright (c) 2006-2010 Intellectual Reserve. All rights reserved."); dnxLog("Configuration file: %s.", args); dnxLog("Dispatcher: %s.", cfg.dispatcherUrl); dnxLog("Collector: %s.", cfg.collectorUrl); dnxLog("Agent: %s.", cfg.agentUrl); if (cfg.debugFilePath && cfg.debugLevel != 0) { dnxLog("Debug logging enabled at level %d to %s.", cfg.debugLevel, cfg.debugFilePath); #if DEBUG_HEAP dnxLog("Debug heap is enabled."); #endif #if DEBUG_LOCKS dnxLog("Debug locks are enabled."); #endif } if (cfg.auditFilePath) dnxLog("Auditing enabled to %s.", cfg.auditFilePath); #if DEBUG_HEAP dnxLog("Debug heap is enabled."); #endif #if DEBUG_LOCKS dnxLog("Debug locks are enabled."); #endif // subscribe to PROCESS_DATA call-backs in order to defer initialization // until after Nagios validates its configuration and environment. if ((ret = neb_register_callback(NEBCALLBACK_PROCESS_DATA, myHandle, 0, ehProcessData)) != OK) { dnxLog("PROCESS_DATA event registration failed: %s.", dnxErrorString(ret)); releaseConfig(); return ERROR; } start_time = time(0); dnxLog("-------- DNX Server Module Startup Complete --------"); return OK; }
// one way out void cleanExit(int ret) { #ifdef HAVE_LIBXOSD killqueue (); #endif releaseConfig(); closelog(); exit(ret); }
/** The main NEB module deinitialization routine. * * This function gets called when the module is unloaded by the event broker. * * @param[in] flags - nagios NEB module flags - not used. * @param[in] reason - nagios reason code - not used. * * @return Always returns zero. */ int nebmodule_deinit(int flags, int reason) { dnxLog("-------- DNX Server Module Shutdown Initiated --------"); dnxServerDeInit(); releaseConfig(); xheapchk(); dnxLog("-------- DNX Server Module Shutdown Completed --------"); return 0; }
static bool readConfig(const char *file, Options *opts, Options *def) #endif { #ifdef __cplusplus if(file.isEmpty()) { const char *xdg=xdgConfigFolder(); if(xdg) { QString filename(xdg); filename+="/"QTC_FILE; return readConfig(filename, opts, def); } } #else if(!file) { const char *xdg=xdgConfigFolder(); if(xdg) { char filename[QTC_MAX_FILENAME_LEN]; sprintf(filename, "%s/"QTC_FILE, xdg); return readConfig(filename, opts, def); } } #endif else { #ifdef __cplusplus QtCConfig cfg(file); if(cfg.ok()) { #else GHashTable *cfg=loadConfig(file); if(cfg) { #endif QTC_CFG_READ_ROUND(round) QTC_CFG_READ_DI(highlightFactor) QTC_CFG_READ_TB_BORDER(toolbarBorders) QTC_CFG_READ_APPEARANCE(appearance, def->appearance) QTC_CFG_READ_BOOL(fixParentlessDialogs) QTC_CFG_READ_BOOL(stripedProgress) QTC_CFG_READ_BOOL(animatedProgress) QTC_CFG_READ_BOOL(lighterPopupMenuBgnd) QTC_CFG_READ_BOOL(embolden) QTC_CFG_READ_DEF_BTN(defBtnIndicator) QTC_CFG_READ_LINE(sliderThumbs) QTC_CFG_READ_LINE(handles) QTC_CFG_READ_BOOL(highlightTab) QTC_CFG_READ_SHADE(shadeSliders, false) QTC_CFG_READ_SHADE(shadeMenubars, true) QTC_CFG_READ_SHADE(shadeCheckRadio, false) QTC_CFG_READ_APPEARANCE(menubarAppearance, def->menubarAppearance) QTC_CFG_READ_APPEARANCE(menuitemAppearance, opts->appearance) QTC_CFG_READ_APPEARANCE(toolbarAppearance, def->toolbarAppearance) QTC_CFG_READ_LINE(toolbarSeparators) QTC_CFG_READ_LINE(splitters) QTC_CFG_READ_BOOL(customMenuTextColor) QTC_CFG_READ_MOUSE_OVER(coloredMouseOver) QTC_CFG_READ_BOOL(menubarMouseOver) QTC_CFG_READ_BOOL(shadeMenubarOnlyWhenActive) QTC_CFG_READ_BOOL(thinnerMenuItems) QTC_CFG_READ_COLOR(customSlidersColor) QTC_CFG_READ_COLOR(customMenubarsColor) QTC_CFG_READ_COLOR(customMenuSelTextColor) QTC_CFG_READ_COLOR(customMenuNormTextColor) QTC_CFG_READ_COLOR(customCheckRadioColor) QTC_CFG_READ_SCROLLBAR(scrollbarType) QTC_CFG_READ_BOOL(shadowButtons) QTC_CFG_READ_APPEARANCE(lvAppearance, opts->appearance) QTC_CFG_READ_APPEARANCE(tabAppearance, opts->appearance) QTC_CFG_READ_APPEARANCE(sliderAppearance, opts->appearance) QTC_CFG_READ_APPEARANCE(progressAppearance, opts->appearance) #ifndef QTC_PLAIN_FOCUS_ONLY QTC_CFG_READ_BOOL(stdFocus) #endif QTC_CFG_READ_BOOL(lvLines) QTC_CFG_READ_BOOL(drawStatusBarFrames) QTC_CFG_READ_BOOL(fillSlider) QTC_CFG_READ_BOOL(roundMbTopOnly) QTC_CFG_READ_BOOL(borderMenuitems) QTC_CFG_READ_BOOL(gradientPbGroove) QTC_CFG_READ_BOOL(darkerBorders) QTC_CFG_READ_BOOL(vArrows) QTC_CFG_READ_BOOL(colorMenubarMouseOver) #ifdef __cplusplus QTC_CFG_READ_BOOL(stdSidebarButtons) QTC_CFG_READ_BOOL(gtkScrollViews); QTC_CFG_READ_BOOL(gtkComboMenus); #endif #ifndef QTC_COMMON_ONLY_COVERTERS QTC_CFG_READ_SHADING(shading, SHADING_HSL); #endif #ifndef __cplusplus releaseConfig(cfg); #endif if(SHADE_SELECTED==opts->shadeCheckRadio) opts->shadeCheckRadio=SHADE_BLEND_SELECTED; checkColor(&opts->shadeMenubars, &opts->customMenubarsColor); checkColor(&opts->shadeSliders, &opts->customSlidersColor); checkColor(&opts->shadeCheckRadio, &opts->customCheckRadioColor); if(APPEARANCE_BEVELLED==opts->toolbarAppearance) opts->toolbarAppearance=APPEARANCE_GRADIENT; else if(APPEARANCE_RAISED==opts->toolbarAppearance) opts->toolbarAppearance=APPEARANCE_FLAT; if(APPEARANCE_BEVELLED==opts->menubarAppearance) opts->menubarAppearance=APPEARANCE_GRADIENT; else if(APPEARANCE_RAISED==opts->menubarAppearance) opts->menubarAppearance=APPEARANCE_FLAT; if(APPEARANCE_BEVELLED==opts->sliderAppearance) opts->sliderAppearance=APPEARANCE_GRADIENT; if(APPEARANCE_BEVELLED==opts->tabAppearance) opts->tabAppearance=APPEARANCE_GRADIENT; if(opts->highlightFactor<((100.0+MIN_HIGHLIGHT_FACTOR)/100.0) || opts->highlightFactor>((100.0+MAX_HIGHLIGHT_FACTOR)/100.0)) opts->highlightFactor=DEFAULT_HIGHLIGHT_FACTOR; if(opts->animatedProgress && !opts->stripedProgress) opts->animatedProgress=false; if(SHADE_CUSTOM==opts->shadeMenubars || SHADE_BLEND_SELECTED==opts->shadeMenubars || !opts->borderMenuitems) opts->colorMenubarMouseOver=true; return true; } } return false; } static bool fileExists(const char *path) { struct stat info; return 0==lstat(path, &info) && (info.st_mode&S_IFMT)==S_IFREG; } static const char * getSystemConfigFile() { static const char * constFiles[]={ "/etc/qt4/"QTC_FILE, "/etc/qt3/"QTC_FILE, "/etc/qt/"QTC_FILE, NULL }; int i; for(i=0; constFiles[i]; ++i) if(fileExists(constFiles[i])) return constFiles[i]; return NULL; } static void defaultSettings(Options *opts) { /* Set hard-coded defaults... */ opts->contrast=7; opts->highlightFactor=DEFAULT_HIGHLIGHT_FACTOR; opts->round=ROUND_FULL; opts->lighterPopupMenuBgnd=true; opts->animatedProgress=true; opts->stripedProgress=true; opts->highlightTab=true; opts->embolden=false; opts->appearance=APPEARANCE_DULL_GLASS; opts->lvAppearance=APPEARANCE_BEVELLED; opts->tabAppearance=APPEARANCE_GRADIENT; opts->sliderAppearance=APPEARANCE_DULL_GLASS; opts->menubarAppearance=APPEARANCE_GRADIENT; opts->menuitemAppearance=APPEARANCE_DULL_GLASS; opts->toolbarAppearance=APPEARANCE_GRADIENT; opts->progressAppearance=APPEARANCE_DULL_GLASS; opts->defBtnIndicator=IND_COLORED; opts->sliderThumbs=LINE_DOTS; opts->handles=LINE_DOTS; opts->shadeSliders=SHADE_BLEND_SELECTED; opts->shadeMenubars=SHADE_DARKEN; opts->shadeCheckRadio=SHADE_NONE; opts->toolbarBorders=TB_NONE; opts->toolbarSeparators=LINE_DOTS; opts->splitters=LINE_DOTS; opts->fixParentlessDialogs=false; opts->customMenuTextColor=false; opts->coloredMouseOver=MO_PLASTIK; opts->menubarMouseOver=true; opts->shadeMenubarOnlyWhenActive=true; opts->thinnerMenuItems=false; opts->scrollbarType=SCROLLBAR_KDE; opts->shadowButtons=true; #ifndef QTC_PLAIN_FOCUS_ONLY opts->stdFocus=true; #endif opts->lvLines=false; opts->drawStatusBarFrames=false; opts->fillSlider=true; opts->roundMbTopOnly=true; opts->borderMenuitems=true; opts->gradientPbGroove=true; opts->darkerBorders=false; opts->vArrows=false; opts->colorMenubarMouseOver=false; #ifdef __cplusplus opts->stdSidebarButtons=false; opts->gtkScrollViews=false; opts->gtkComboMenus=false; opts->customMenubarsColor.setRgb(0, 0, 0); opts->customSlidersColor.setRgb(0, 0, 0); opts->customMenuNormTextColor.setRgb(0, 0, 0); opts->customMenuSelTextColor.setRgb(0, 0, 0); opts->customCheckRadioColor.setRgb(0, 0, 0); #else opts->customMenubarsColor.red=opts->customMenubarsColor.green=opts->customMenubarsColor.blue=0; opts->customSlidersColor.red=opts->customSlidersColor.green=opts->customSlidersColor.blue=0; opts->customMenuNormTextColor.red=opts->customMenuNormTextColor.green=opts->customMenuNormTextColor.blue=0; opts->customMenuSelTextColor.red=opts->customMenuSelTextColor.green=opts->customMenuSelTextColor.blue=0; opts->customCheckRadioColor.red=opts->customCheckRadioColor.green=opts->customCheckRadioColor.blue=0; #endif /* Read system config file... */ { static const char * systemFilename=NULL; if(!systemFilename) systemFilename=getSystemConfigFile(); if(systemFilename) readConfig(systemFilename, opts, opts); } }