version 1.188, 2006/08/09 21:13:10
|
version 1.193, 2007/03/13 17:51:14
|
|
|
// | // |
//============================================================================== | //============================================================================== |
// | // |
// Author: Mike Brasher (mbrasher@bmc.com) |
|
// |
|
// Modified By: Mike Day (mdday@us.ibm.com) |
|
// Karl Schopmeyer (k.schopmeyer@opengroup.org) |
|
// Nag Boranna (nagaraja_boranna@hp.com) |
|
// Jenny Yu (jenny_yu@hp.com) |
|
// Sushma Fernandes (sushma_fernandes@hp.com) |
|
// Carol Ann Krug Graves, Hewlett-Packard Company |
|
// (carolann_graves@hp.com) |
|
// Yi Zhou, Hewlett-Packard Company (yi_zhou@hp.com) |
|
// Dave Rosckes (rosckes@us.ibm.com) |
|
// Humberto Rivero (hurivero@us.ibm.com) |
|
// Steve Hills (steve.hills@ncr.com) |
|
// Sean Keenan, Hewlett-Packard Company (sean.keenan@hp.com) |
|
// Amit K Arora, IBM (amitarora@in.ibm.com) - pep 167 |
|
// Josephine Eskaline Joyce, IBM (jojustin@in.ibm.com) - Bug#2555 |
|
// Josephine Eskaline Joyce, IBM (jojustin@in.ibm.com) - Bug#2032 |
|
// Heather Sterling, IBM (hsterl@us.ibm.com) - PEP#222 |
|
// Josephine Eskaline Joyce, IBM (jojustin@in.ibm.com) - Bug#3452 |
|
// David Dillard, VERITAS Software Corp. |
|
// (david.dillard@veritas.com) |
|
// Aruran, IBM (aruran.shanmug@in.ibm.com) for Bug# 4183, 4937 |
|
// Thilo Boehm, IBM (tboehm@de.ibm.com) |
|
// |
|
//%///////////////////////////////////////////////////////////////////////////// | //%///////////////////////////////////////////////////////////////////////////// |
| |
| |
|
|
void GetOptions( | void GetOptions( |
ConfigManager* cm, | ConfigManager* cm, |
int& argc, | int& argc, |
char** argv) |
char** argv, |
|
const Boolean& shutdownOption) |
{ | { |
try | try |
{ | { |
|
if (shutdownOption) |
|
{ |
|
cm->loadConfigFiles(); |
|
} |
|
else |
|
{ |
cm->mergeConfigFiles(); | cm->mergeConfigFiles(); |
|
} |
|
|
|
// Temporarily disable updates to the current configuration |
|
// file if shutdownOption is true |
|
cm->useConfigFiles = (shutdownOption==false); |
| |
cm->mergeCommandLine(argc, argv); | cm->mergeCommandLine(argc, argv); |
|
|
|
// Enable updates again |
|
cm->useConfigFiles = true; |
} | } |
catch (NoSuchFile&) | catch (NoSuchFile&) |
{ | { |
|
|
#ifdef PEGASUS_OS_OS400 | #ifdef PEGASUS_OS_OS400 |
if (os400StartupOption == false) | if (os400StartupOption == false) |
#endif | #endif |
GetOptions(configManager, argc, argv); |
// If current process is "cimserver -s" (shutdown option = true) the contents |
|
// of current config should not be overwriten by planned config |
|
GetOptions(configManager, argc, argv, shutdownOption); |
} | } |
catch (Exception& e) | catch (Exception& e) |
{ | { |
|
|
// one of the variables is true. | // one of the variables is true. |
Boolean enableHttpConnection = false; | Boolean enableHttpConnection = false; |
Boolean enableHttpsConnection = false; | Boolean enableHttpsConnection = false; |
Boolean enableSSLExportClientVerification = false; |
|
| |
if (os400StartupOption == false) | if (os400StartupOption == false) |
{ | { |
|
|
configManager->getCurrentValue("enableHttpConnection")); | configManager->getCurrentValue("enableHttpConnection")); |
enableHttpsConnection = ConfigManager::parseBooleanValue( | enableHttpsConnection = ConfigManager::parseBooleanValue( |
configManager->getCurrentValue("enableHttpsConnection")); | configManager->getCurrentValue("enableHttpsConnection")); |
enableSSLExportClientVerification = ConfigManager::parseBooleanValue( |
|
configManager->getCurrentValue("enableSSLExportClientVerification")); |
|
} | } |
#else | #else |
Boolean enableHttpConnection = ConfigManager::parseBooleanValue( | Boolean enableHttpConnection = ConfigManager::parseBooleanValue( |
configManager->getCurrentValue("enableHttpConnection")); | configManager->getCurrentValue("enableHttpConnection")); |
Boolean enableHttpsConnection = ConfigManager::parseBooleanValue( | Boolean enableHttpsConnection = ConfigManager::parseBooleanValue( |
configManager->getCurrentValue("enableHttpsConnection")); | configManager->getCurrentValue("enableHttpsConnection")); |
Boolean enableSSLExportClientVerification = |
|
ConfigManager::parseBooleanValue(configManager->getCurrentValue( |
|
"enableSSLExportClientVerification")); |
|
#endif | #endif |
| |
// Make sure at least one connection is enabled | // Make sure at least one connection is enabled |
|
|
String configTimeout = | String configTimeout = |
configManager->getCurrentValue("shutdownTimeout"); | configManager->getCurrentValue("shutdownTimeout"); |
Uint32 timeoutValue = strtol(configTimeout.getCString(), (char **)0, 10); | Uint32 timeoutValue = strtol(configTimeout.getCString(), (char **)0, 10); |
|
// To deregister Pegasus with SLP |
|
#ifdef PEGASUS_SLP_REG_TIMEOUT |
|
unregisterPegasusFromSLP(); |
|
#endif |
| |
shutdownCIMOM(timeoutValue); | shutdownCIMOM(timeoutValue); |
| |
|
|
} | } |
} | } |
} | } |
|
|
|
|
if (enableSSLExportClientVerification) |
|
{ |
|
// |
|
// No config property is looked up to get the default port number. |
|
// Lookup the port defined in /etc/services for the service name |
|
// wbem-exp-https and bind to that port. If the service is not defined |
|
// then log a warning message and do not start the cimserver. |
|
// |
|
Uint32 port = 0; |
|
|
|
portNumberExportHttps = System::lookupPort(WBEM_EXPORT_HTTPS_SERVICE_NAME, port); |
|
|
|
if (portNumberExportHttps == 0) |
|
{ |
|
Logger::put_l(Logger::STANDARD_LOG, System::CIMSERVER, Logger::WARNING, |
|
"src.Server.cimserver.EXPORT_HTTPS_PORT_NOT_DEFINED", |
|
"Port not defined for the service wbem-exp-https. CIMServer will not be started."); |
|
|
|
MessageLoaderParms parms("src.Server.cimserver.EXPORT_HTTPS_PORT_NOT_DEFINED", |
|
"Port not defined for the service wbem-exp-https. CIMServer will not be started."); |
|
|
|
cerr << MessageLoader::getMessage(parms) << endl; |
|
|
|
return(1); |
|
} |
|
} |
|
#if defined(PEGASUS_DEBUG) | #if defined(PEGASUS_DEBUG) |
// Put out startup up message. | // Put out startup up message. |
cout << _cimServerProcess->getProductName() << " " << _cimServerProcess->getCompleteVersion() << endl; | cout << _cimServerProcess->getProductName() << " " << _cimServerProcess->getCompleteVersion() << endl; |
|
|
//cout << "Unable to start CIMServer." << endl; | //cout << "Unable to start CIMServer." << endl; |
//cout << "CIMServer is already running." << endl; | //cout << "CIMServer is already running." << endl; |
MessageLoaderParms parms("src.Server.cimserver.UNABLE_TO_START_SERVER_ALREADY_RUNNING", | MessageLoaderParms parms("src.Server.cimserver.UNABLE_TO_START_SERVER_ALREADY_RUNNING", |
"Unable to start CIMServer.\nCIMServer is already running."); |
"Unable to start CIMServer. CIMServer is already running."); |
PEGASUS_STD(cerr) << MessageLoader::getMessage(parms) << PEGASUS_STD(endl); | PEGASUS_STD(cerr) << MessageLoader::getMessage(parms) << PEGASUS_STD(endl); |
|
Logger::put(Logger::ERROR_LOG,System::CIMSERVER,Logger::INFORMATION, |
|
MessageLoader::getMessage(parms)); |
| |
// | // |
// notify parent process (if there is a parent process) to terminate | // notify parent process (if there is a parent process) to terminate |
|
|
| |
if (enableHttpConnection) | if (enableHttpConnection) |
{ | { |
_cimServer->addAcceptor(false, portNumberHttp, false, false); |
_cimServer->addAcceptor(false, portNumberHttp, false); |
//l10n | //l10n |
//Logger::put(Logger::STANDARD_LOG, System::CIMSERVER, Logger::INFORMATION, | //Logger::put(Logger::STANDARD_LOG, System::CIMSERVER, Logger::INFORMATION, |
//"Listening on HTTP port $0.", portNumberHttp); | //"Listening on HTTP port $0.", portNumberHttp); |
|
|
} | } |
if (enableHttpsConnection) | if (enableHttpsConnection) |
{ | { |
_cimServer->addAcceptor(false, portNumberHttps, true, false); |
_cimServer->addAcceptor(false, portNumberHttps, true); |
//l10n | //l10n |
//Logger::put(Logger::STANDARD_LOG, System::CIMSERVER, Logger::INFORMATION, | //Logger::put(Logger::STANDARD_LOG, System::CIMSERVER, Logger::INFORMATION, |
//"Listening on HTTPS port $0.", portNumberHttps); | //"Listening on HTTPS port $0.", portNumberHttps); |
|
|
"src.Server.cimserver.LISTENING_ON_HTTPS_PORT", | "src.Server.cimserver.LISTENING_ON_HTTPS_PORT", |
"Listening on HTTPS port $0.", portNumberHttps); | "Listening on HTTPS port $0.", portNumberHttps); |
} | } |
if (enableSSLExportClientVerification) |
|
{ |
|
_cimServer->addAcceptor(false, portNumberExportHttps, true, true); |
|
|
|
Logger::put_l(Logger::STANDARD_LOG, System::CIMSERVER, Logger::INFORMATION, |
|
"src.Server.cimserver.LISTENING_ON_EXPORT_HTTPS_PORT", |
|
"Listening on Export HTTPS port $0.", portNumberExportHttps); |
|
} |
|
| |
#ifndef PEGASUS_DISABLE_LOCAL_DOMAIN_SOCKET | #ifndef PEGASUS_DISABLE_LOCAL_DOMAIN_SOCKET |
_cimServer->addAcceptor(true, 0, false, false); |
_cimServer->addAcceptor(true, 0, false); |
//l10n | //l10n |
//Logger::put(Logger::STANDARD_LOG, System::CIMSERVER, Logger::INFORMATION, | //Logger::put(Logger::STANDARD_LOG, System::CIMSERVER, Logger::INFORMATION, |
//"Listening on local connection socket."); | //"Listening on local connection socket."); |
|
|
"Listening on HTTPS port $0.", portNumberHttps); | "Listening on HTTPS port $0.", portNumberHttps); |
cout << MessageLoader::getMessage(parms) << endl; | cout << MessageLoader::getMessage(parms) << endl; |
} | } |
if (enableSSLExportClientVerification) |
|
{ |
|
MessageLoaderParms parms("src.Server.cimserver.LISTENING_ON_EXPORT_HTTPS_PORT", |
|
"Listening on Export HTTPS port $0.", portNumberExportHttps); |
|
|
|
cout << MessageLoader::getMessage(parms) << endl; |
|
} |
|
| |
# ifndef PEGASUS_DISABLE_LOCAL_DOMAIN_SOCKET | # ifndef PEGASUS_DISABLE_LOCAL_DOMAIN_SOCKET |
//l10n | //l10n |
|
|
"Started $0 version $1.", | "Started $0 version $1.", |
_cimServerProcess->getProductName(), _cimServerProcess->getCompleteVersion()); | _cimServerProcess->getProductName(), _cimServerProcess->getCompleteVersion()); |
| |
#if defined(PEGASUS_OS_TYPE_UNIX) |
#if defined(PEGASUS_OS_TYPE_UNIX) && !defined(PEGASUS_OS_ZOS) |
if (daemonOption && !debugOutputOption) | if (daemonOption && !debugOutputOption) |
{ | { |
// Direct standard input, output, and error to /dev/null, | // Direct standard input, output, and error to /dev/null, |