version 1.237.2.5, 2014/03/12 22:35:06
|
version 1.238, 2011/02/16 06:44:31
|
|
|
| |
//Windows service variables are not defined elsewhere in the product | //Windows service variables are not defined elsewhere in the product |
//enable ability to override these | //enable ability to override these |
#ifndef PEGASUS_FLAVOR |
|
#ifndef PEGASUS_SERVICE_NAME | #ifndef PEGASUS_SERVICE_NAME |
#define PEGASUS_SERVICE_NAME "Pegasus CIM Object Manager"; | #define PEGASUS_SERVICE_NAME "Pegasus CIM Object Manager"; |
#endif | #endif |
#ifndef PEGASUS_SERVICE_DESCRIPTION | #ifndef PEGASUS_SERVICE_DESCRIPTION |
#define PEGASUS_SERVICE_DESCRIPTION "Pegasus CIM Object Manager Service"; | #define PEGASUS_SERVICE_DESCRIPTION "Pegasus CIM Object Manager Service"; |
#endif | #endif |
#else |
|
#ifndef PEGASUS_SERVICE_NAME |
|
#define PEGASUS_SERVICE_NAME PEGASUS_FLAVOR " Pegasus CIM Object Manager" |
|
#endif |
|
#ifndef PEGASUS_SERVICE_DESCRIPTION |
|
#define PEGASUS_SERVICE_DESCRIPTION PEGASUS_FLAVOR \ |
|
" Pegasus CIM Object Manager Service"; |
|
#endif |
|
#endif |
|
| |
#ifdef PEGASUS_OS_PASE | #ifdef PEGASUS_OS_PASE |
#include <as400_protos.h> //for _SETCCSID | #include <as400_protos.h> //for _SETCCSID |
|
|
| |
static const char OPTION_SHUTDOWN = 's'; | static const char OPTION_SHUTDOWN = 's'; |
| |
|
static const char LONG_HELP[] = "help"; |
|
|
|
static const char LONG_VERSION[] = "version"; |
|
|
static const char OPTION_DEBUGOUTPUT = 'X'; | static const char OPTION_DEBUGOUTPUT = 'X'; |
| |
/** GetOptions function - This function defines the Options Table | /** GetOptions function - This function defines the Options Table |
|
|
n); | n); |
ConfigManager::getInstance()->initCurrentValue(propName, String(startP, n)); | ConfigManager::getInstance()->initCurrentValue(propName, String(startP, n)); |
} | } |
static void _restrictListening( |
|
ConfigManager* configManager, |
|
const String &listenOn, |
|
const Uint32 &portNumberHttp, |
|
const Boolean useSSL) |
|
{ |
|
static Array<HostAddress> laddr = configManager ->getListenAddress( |
|
listenOn); |
|
for(Uint32 i = 0, n = laddr.size(); i < n; ++i) |
|
{ |
|
if(laddr[i].getAddressType() == HostAddress::AT_IPV6) |
|
{ |
|
#ifdef PEGASUS_ENABLE_IPV6 |
|
_cimServer->addAcceptor(HTTPAcceptor::IPV6_CONNECTION, |
|
portNumberHttp, useSSL, |
|
&laddr[i]); |
|
#endif |
|
} |
|
else if(laddr[i].getAddressType() == HostAddress::AT_IPV4) |
|
{ |
|
_cimServer->addAcceptor(HTTPAcceptor::IPV4_CONNECTION, |
|
portNumberHttp, useSSL, |
|
&laddr[i]); |
|
} |
|
} |
|
} |
|
| |
///////////////////////////////////////////////////////////////////////// | ///////////////////////////////////////////////////////////////////////// |
// MAIN | // MAIN |
|
|
// | // |
if (shutdownOption) | if (shutdownOption) |
{ | { |
#if defined(PEGASUS_OS_ZOS) && defined(PEGASUS_ZOS_SECURITY) |
|
// This checks whether user is authorized to stop the |
|
// CIM Server. When unauthorized a message is logged to |
|
// to the user and program exits. |
|
shutdownCheckProfileCIMSERVclassWBEM(); |
|
// Depending on the success of the previous check we may not |
|
// reach this code!!! |
|
#endif |
|
String configTimeout = | String configTimeout = |
configManager->getCurrentValue("shutdownTimeout"); | configManager->getCurrentValue("shutdownTimeout"); |
Uint32 timeoutValue = | Uint32 timeoutValue = |
|
|
_cimServerProcess->getCompleteVersion() << endl; | _cimServerProcess->getCompleteVersion() << endl; |
#endif | #endif |
| |
// Force initialization of hostname and fullyQualifiedHostName through |
|
// retrieving current value from Configuration Manager |
|
// - this will run getCurrentValue() in DefaultPropertyOwner.cpp |
|
configManager->getCurrentValue("hostname"); |
|
configManager->getCurrentValue("fullyQualifiedHostName"); |
|
|
|
// reset message loading to NON-process locale | // reset message loading to NON-process locale |
MessageLoader::_useProcessLocale = false; | MessageLoader::_useProcessLocale = false; |
| |
|
|
| |
// Start up the CIM Server | // Start up the CIM Server |
| |
|
try |
|
{ |
#if defined(PEGASUS_OS_TYPE_UNIX) | #if defined(PEGASUS_OS_TYPE_UNIX) |
// | // |
// Lock the CIMSERVER_LOCK_FILE during CIM Server start-up to prevent | // Lock the CIMSERVER_LOCK_FILE during CIM Server start-up to prevent |
|
|
CString startupLockFileName = ConfigManager::getHomedPath( | CString startupLockFileName = ConfigManager::getHomedPath( |
PEGASUS_CIMSERVER_START_LOCK_FILE).getCString(); | PEGASUS_CIMSERVER_START_LOCK_FILE).getCString(); |
| |
try |
|
{ |
|
|
|
// Make sure the start-up lock file exists | // Make sure the start-up lock file exists |
FILE* startupLockFile; | FILE* startupLockFile; |
if ((startupLockFile = fopen(startupLockFileName, "w")) != 0) | if ((startupLockFile = fopen(startupLockFileName, "w")) != 0) |
|
|
} | } |
| |
AutoFileLock fileLock(startupLockFileName); | AutoFileLock fileLock(startupLockFileName); |
#else |
|
try |
|
{ |
|
#endif | #endif |
| |
#if defined(PEGASUS_OS_TYPE_UNIX) || defined(PEGASUS_OS_VMS) | #if defined(PEGASUS_OS_TYPE_UNIX) || defined(PEGASUS_OS_VMS) |
|
|
{ | { |
Uint32 portNumberHttp = 0; | Uint32 portNumberHttp = 0; |
String httpPort = configManager->getCurrentValue("httpPort"); | String httpPort = configManager->getCurrentValue("httpPort"); |
if (httpPort.size() == 0) |
if (httpPort == String::EMPTY) |
{ | { |
// | // |
// Look up the WBEM-HTTP port number | // Look up the WBEM-HTTP port number |
|
|
} | } |
else | else |
{ | { |
Uint64 longNumber; |
// |
// use the current value which has been checked for validity at |
// user-specified |
// load(fct. GetOptions), see DefaultPropertyOwner::isValid() |
// |
StringConversion::decimalStringToUint64( |
CString portString = httpPort.getCString(); |
httpPort.getCString(), |
char* end = 0; |
longNumber); |
portNumberHttp = strtol(portString, &end, 10); |
portNumberHttp = longNumber & 0xffff; |
if (!(end != 0 && *end == '\0')) |
|
{ |
|
throw InvalidPropertyValue("httpPort", httpPort); |
|
} |
} | } |
| |
String listenOn = configManager->getCurrentValue("listenAddress"); |
|
if(String::equalNoCase(listenOn, "All")) |
|
{ |
|
if (addIP6Acceptor) | if (addIP6Acceptor) |
{ | { |
_cimServer->addAcceptor(HTTPAcceptor::IPV6_CONNECTION, | _cimServer->addAcceptor(HTTPAcceptor::IPV6_CONNECTION, |
|
|
_cimServer->addAcceptor(HTTPAcceptor::IPV4_CONNECTION, | _cimServer->addAcceptor(HTTPAcceptor::IPV4_CONNECTION, |
portNumberHttp, false); | portNumberHttp, false); |
} | } |
} |
|
else // Restricted listening |
|
{ |
|
_restrictListening( |
|
configManager, listenOn, portNumberHttp, false); |
|
} |
|
|
|
// The port number is converted to a string to avoid the | // The port number is converted to a string to avoid the |
// addition of localized characters (e.g., "5,988"). | // addition of localized characters (e.g., "5,988"). |
char scratchBuffer[22]; | char scratchBuffer[22]; |
|
|
{ | { |
Uint32 portNumberHttps = 0; | Uint32 portNumberHttps = 0; |
String httpsPort = configManager->getCurrentValue("httpsPort"); | String httpsPort = configManager->getCurrentValue("httpsPort"); |
if (httpsPort.size() == 0) |
if (httpsPort == String::EMPTY) |
{ | { |
// | // |
// Look up the WBEM-HTTPS port number | // Look up the WBEM-HTTPS port number |
|
|
} | } |
else | else |
{ | { |
Uint64 longNumber; |
// |
// use the current value which has been checked for validity at |
// user-specified |
// load(fct. GetOptions), see DefaultPropertyOwner::isValid() |
// |
StringConversion::decimalStringToUint64( |
CString portString = httpsPort.getCString(); |
httpsPort.getCString(), |
char* end = 0; |
longNumber); |
portNumberHttps = strtol(portString, &end, 10); |
portNumberHttps = longNumber & 0xffff; |
if (!(end != 0 && *end == '\0')) |
} |
|
|
|
String listenOn = configManager->getCurrentValue("listenAddress"); |
|
if(String::equalNoCase(listenOn, "All")) |
|
{ | { |
|
throw InvalidPropertyValue("httpsPort", httpsPort); |
|
} |
|
} |
if (addIP6Acceptor) | if (addIP6Acceptor) |
{ | { |
_cimServer->addAcceptor(HTTPAcceptor::IPV6_CONNECTION, | _cimServer->addAcceptor(HTTPAcceptor::IPV6_CONNECTION, |
|
|
_cimServer->addAcceptor(HTTPAcceptor::IPV4_CONNECTION, | _cimServer->addAcceptor(HTTPAcceptor::IPV4_CONNECTION, |
portNumberHttps, true); | portNumberHttps, true); |
} | } |
} |
|
else //Restricted |
|
{ |
|
_restrictListening( |
|
configManager, listenOn, portNumberHttps, true); |
|
} |
|
|
|
// The port number is converted to a string to avoid the | // The port number is converted to a string to avoid the |
// addition of localized characters (e.g., "5,989"). | // addition of localized characters (e.g., "5,989"). |
char scratchBuffer[22]; | char scratchBuffer[22]; |
|
|
parms); | parms); |
cerr << MessageLoader::getMessage(parms) << endl; | cerr << MessageLoader::getMessage(parms) << endl; |
| |
//delete the start up lock file |
|
#if defined(PEGASUS_OS_TYPE_UNIX) |
|
System::removeFile(startupLockFileName); |
|
#endif |
|
deleteCIMServer(); | deleteCIMServer(); |
return 1; | return 1; |
} | } |
| |
//delete the start up lock file |
|
#if defined(PEGASUS_OS_TYPE_UNIX) |
|
System::removeFile(startupLockFileName); |
|
#endif |
|
deleteCIMServer(); | deleteCIMServer(); |
return 0; | return 0; |
} | } |