version 1.1, 2005/03/03 03:01:26
|
version 1.9, 2006/08/08 17:47:15
|
|
|
//%2005//////////////////////////////////////////////////////////////////////// |
//%2006//////////////////////////////////////////////////////////////////////// |
// | // |
// Copyright (c) 2000, 2001, 2002 BMC Software; Hewlett-Packard Development | // Copyright (c) 2000, 2001, 2002 BMC Software; Hewlett-Packard Development |
// Company, L.P.; IBM Corp.; The Open Group; Tivoli Systems. | // Company, L.P.; IBM Corp.; The Open Group; Tivoli Systems. |
|
|
// IBM Corp.; EMC Corporation; VERITAS Software Corporation; The Open Group. | // IBM Corp.; EMC Corporation; VERITAS Software Corporation; The Open Group. |
// Copyright (c) 2005 Hewlett-Packard Development Company, L.P.; IBM Corp.; | // Copyright (c) 2005 Hewlett-Packard Development Company, L.P.; IBM Corp.; |
// EMC Corporation; VERITAS Software Corporation; The Open Group. | // EMC Corporation; VERITAS Software Corporation; The Open Group. |
|
// Copyright (c) 2006 Hewlett-Packard Development Company, L.P.; IBM Corp.; |
|
// EMC Corporation; Symantec Corporation; The Open Group. |
// | // |
// Permission is hereby granted, free of charge, to any person obtaining a copy | // Permission is hereby granted, free of charge, to any person obtaining a copy |
// of this software and associated documentation files (the "Software"), to | // of this software and associated documentation files (the "Software"), to |
|
|
#include <sys/stat.h> | #include <sys/stat.h> |
#include <fcntl.h> | #include <fcntl.h> |
#include <unistd.h> | #include <unistd.h> |
|
#include <sys/wait.h> |
#include <Pegasus/Common/Config.h> | #include <Pegasus/Common/Config.h> |
#include <Pegasus/Common/String.h> | #include <Pegasus/Common/String.h> |
#include <Pegasus/Common/Logger.h> | #include <Pegasus/Common/Logger.h> |
|
#include <Pegasus/Config/ConfigManager.h> |
#include "OS400ConvertChar.h" | #include "OS400ConvertChar.h" |
|
#include "SSLWrapperOS400.h" |
|
#include "OS400SystemState.h" |
|
#include "CIMRepositoryUpdate400.h" // upgrade utility |
#include <Pegasus/Common/MessageLoader.h> //l10n | #include <Pegasus/Common/MessageLoader.h> //l10n |
#include <except.h> | #include <except.h> |
| |
|
|
void ServerProcess::notify_parent(int id) {} | void ServerProcess::notify_parent(int id) {} |
void ServerProcess::cimserver_set_process(void* p) {} | void ServerProcess::cimserver_set_process(void* p) {} |
long ServerProcess::get_server_pid(void) { return 0; } | long ServerProcess::get_server_pid(void) { return 0; } |
|
void ServerProcess::set_parent_pid(int pid) {} |
int ServerProcess::get_proc(int pid) { return 0; } | int ServerProcess::get_proc(int pid) { return 0; } |
int ServerProcess::cimserver_wait(void) { return 1; } | int ServerProcess::cimserver_wait(void) { return 1; } |
String ServerProcess::getHome(void) { return String::EMPTY; } | String ServerProcess::getHome(void) { return String::EMPTY; } |
|
|
/////////////////////////////////////////////////////////////////////// | /////////////////////////////////////////////////////////////////////// |
int ServerProcess::cimserver_fork(void) | int ServerProcess::cimserver_fork(void) |
{ | { |
|
// First migrate the server configuration settings into the planned file. |
|
CIMRepositoryUpdate400 obj; |
|
obj.preserveConfigSettings(); |
|
|
|
// TODO: This is here for now until we can move it into initialize. Right now it doesn't run because qycmsetupr won't work in a multi-threaded environment. See issue #AD2 |
|
obj.doIt(); |
|
|
#pragma convert(37) | #pragma convert(37) |
char rc5[3] = "05"; // rc5 means the CIMOM Server failed to start | char rc5[3] = "05"; // rc5 means the CIMOM Server failed to start |
char cppServ[10] = "QYCMCIMOM"; | char cppServ[10] = "QYCMCIMOM"; |
|
|
// so that iNavigator can start/stop it. | // so that iNavigator can start/stop it. |
// -- Swaps the job user to QSYS. | // -- Swaps the job user to QSYS. |
// -- Changes the authority of QYCMJOBD | // -- Changes the authority of QYCMJOBD |
|
// -- Calls the upgrade utility |
//////////////////////////////////////////////////// | //////////////////////////////////////////////////// |
int ServerProcess::cimserver_initialize(void) | int ServerProcess::cimserver_initialize(void) |
{ | { |
|
|
// (it's a known problem) and we can uncomment this #pragma. | // (it's a known problem) and we can uncomment this #pragma. |
// #pragma cancel_handler (CancelHandler, NULL) | // #pragma cancel_handler (CancelHandler, NULL) |
try { | try { |
system ("QSYS/CHGJOB JOB(*) LOG(4 00 *SECLVL)"); |
|
| |
#pragma convert(37) | #pragma convert(37) |
////////////////////////////////////////// | ////////////////////////////////////////// |
|
|
// Set the SQL server mode to true. | // Set the SQL server mode to true. |
// This will allow multiple connections to the same data source. | // This will allow multiple connections to the same data source. |
SQLSetEnvAttr(henv,SQL_ATTR_SERVER_MODE, &attr,0); | SQLSetEnvAttr(henv,SQL_ATTR_SERVER_MODE, &attr,0); |
|
|
|
//-------------------------------------------------- |
|
// Create server SSL certificate and private key |
|
// if they do not already exist. |
|
//-------------------------------------------------- |
|
|
|
// Check if SSL is enabled on either the wbem-https or |
|
// wbem-exp-https ports. |
|
ConfigManager * configManager = ConfigManager::getInstance(); |
|
Boolean enableHttpsConnection = ConfigManager::parseBooleanValue( |
|
configManager->getCurrentValue("enableHttpsConnection")); |
|
Boolean enableSSLExportClientVerification = ConfigManager::parseBooleanValue( |
|
configManager->getCurrentValue("enableSSLExportClientVerification")); |
|
if (enableHttpsConnection || enableSSLExportClientVerification) |
|
{ |
|
// Initialize the OS400 OpenSSL wrapper. |
|
// This checks if the OpenSSL LPO is installed. |
|
// It also activates the OpenSSL *SRVPGM and gets exports. |
|
SSL_OS400_Init(); |
|
|
|
// Create the certificate if needed |
|
// Get the location of the certificate |
|
String certPath; |
|
certPath = ConfigManager::getHomedPath( |
|
configManager->getCurrentValue("sslCertificateFilePath")); |
|
|
|
// Get the location of the private key |
|
String keyPath; |
|
keyPath = ConfigManager::getHomedPath( |
|
configManager->getCurrentValue("sslKeyFilePath")); |
|
|
|
SSL_CreateCert_OS400(keyPath, certPath); |
|
} |
|
} |
|
catch (Exception & e) |
|
{ |
|
//l10n |
|
Logger::put(Logger::ERROR_LOG, System::CIMSERVER, Logger::SEVERE, |
|
e.getMessage()); |
|
return(-1); |
} | } |
catch (...) | catch (...) |
{ | { |
|
|
return(-1); | return(-1); |
} | } |
| |
|
// TODO: add this back in when we fix the problem with setupr not working in a multi-threaded environment. |
|
// Call into the upgrade utility. This will perform any necessary upgrade step that need to be done. The upgrade program keys off of marker files which are created on install. This means that in most cases, nothing will be done unless the server is starting for the first time after an install. |
|
// CIMRepositoryUpdate400 obj; |
|
// obj.doIt(); |
|
|
// TODO: this is currently commented out because it causes build errors - | // TODO: this is currently commented out because it causes build errors - |
// it compiles just fine though. Hopefully this problem will be fixed | // it compiles just fine though. Hopefully this problem will be fixed |
// (it's a known problem) and we can uncomment this #pragma. | // (it's a known problem) and we can uncomment this #pragma. |
|
|
//////////////////////////////////////////////////// | //////////////////////////////////////////////////// |
// Platform specific run | // Platform specific run |
//////////////////////////////////////////////////// | //////////////////////////////////////////////////// |
int ServerProcess::platform_run( int argc, char** argv, Boolean shutdownOption ) |
int ServerProcess::platform_run( |
|
int argc, |
|
char** argv, |
|
Boolean shutdownOption, |
|
Boolean debugOutputOption) |
{ | { |
return cimserver_run( argc, argv, shutdownOption ); |
return cimserver_run(argc, argv, shutdownOption, debugOutputOption); |
} | } |
| |