(file) Return to Executor.cpp CVS log (file) (dir) Up to [Pegasus] / pegasus / src / Pegasus / Common

Diff for /pegasus/src/Pegasus/Common/Executor.cpp between version 1.1.2.4 and 1.1.2.6

version 1.1.2.4, 2007/01/02 19:14:09 version 1.1.2.6, 2007/01/04 06:58:32
Line 54 
Line 54 
 #include "Mutex.h" #include "Mutex.h"
 #include "FileSystem.h" #include "FileSystem.h"
 #include "String.h" #include "String.h"
 #include <Pegasus/Security/Cimservera/Strlcpy.h>  #include <Executor/Strlcpy.h>
 #include <Pegasus/Security/Cimservera/Strlcat.h>  #include <Executor/Strlcat.h>
  
 #if defined(PEGASUS_ENABLE_PRIVILEGE_SEPARATION) #if defined(PEGASUS_ENABLE_PRIVILEGE_SEPARATION)
 # include <Executor/Executor.h>  # include <Executor/Messages.h>
 #endif #endif
  
 #if defined(PEGASUS_PAM_AUTHENTICATION) #if defined(PEGASUS_PAM_AUTHENTICATION)
 # include <Pegasus/Security/Cimservera/cimservera.h>  # include <Executor/PAMAuth.h>
 #endif #endif
  
 PEGASUS_NAMESPACE_BEGIN PEGASUS_NAMESPACE_BEGIN
Line 582 
Line 582 
     // _send request header:     // _send request header:
  
     ExecutorRequestHeader header;     ExecutorRequestHeader header;
     header.code = EXECUTOR_PING_REQUEST;      header.code = EXECUTOR_PING_MESSAGE;
  
     if (_send(_getSock(), &header, sizeof(header)) != sizeof(header))     if (_send(_getSock(), &header, sizeof(header)) != sizeof(header))
         return -1;         return -1;
Line 610 
Line 610 
     // _send request header:     // _send request header:
  
     ExecutorRequestHeader header;     ExecutorRequestHeader header;
     header.code = EXECUTOR_OPEN_FILE_REQUEST;      header.code = EXECUTOR_OPEN_FILE_MESSAGE;
  
     if (_send(_getSock(), &header, sizeof(header)) != sizeof(header))     if (_send(_getSock(), &header, sizeof(header)) != sizeof(header))
         return NULL;         return NULL;
Line 664 
Line 664 
     // _send request header:     // _send request header:
  
     ExecutorRequestHeader header;     ExecutorRequestHeader header;
     header.code = EXECUTOR_RENAME_FILE_REQUEST;      header.code = EXECUTOR_RENAME_FILE_MESSAGE;
  
     if (_send(_getSock(), &header, sizeof(header)) != sizeof(header))     if (_send(_getSock(), &header, sizeof(header)) != sizeof(header))
         return -1;         return -1;
Line 697 
Line 697 
     // _send request header:     // _send request header:
  
     ExecutorRequestHeader header;     ExecutorRequestHeader header;
     header.code = EXECUTOR_REMOVE_FILE_REQUEST;      header.code = EXECUTOR_REMOVE_FILE_MESSAGE;
  
     if (_send(_getSock(), &header, sizeof(header)) != sizeof(header))     if (_send(_getSock(), &header, sizeof(header)) != sizeof(header))
         return -1;         return -1;
Line 744 
Line 744 
     // _send request header:     // _send request header:
  
     ExecutorRequestHeader header;     ExecutorRequestHeader header;
     header.code = EXECUTOR_START_PROVIDER_AGENT_REQUEST;      header.code = EXECUTOR_START_PROVIDER_AGENT_MESSAGE;
  
     if (_send(_getSock(), &header, sizeof(header)) != sizeof(header))     if (_send(_getSock(), &header, sizeof(header)) != sizeof(header))
         return -1;         return -1;
Line 808 
Line 808 
     // _send request header:     // _send request header:
  
     ExecutorRequestHeader header;     ExecutorRequestHeader header;
     header.code = EXECUTOR_DAEMONIZE_EXECUTOR_REQUEST;      header.code = EXECUTOR_DAEMONIZE_EXECUTOR_MESSAGE;
  
     if (_send(_getSock(), &header, sizeof(header)) != sizeof(header))     if (_send(_getSock(), &header, sizeof(header)) != sizeof(header))
         return -1;         return -1;
Line 823 
Line 823 
     return response.status;     return response.status;
 } }
  
 static int OutOfProcess_changeOwner(  static int OutOfProcess_waitPid(
     const char* path,      int pid)
     const char* owner)  
 { {
     AutoMutex autoMutex(_mutex);     AutoMutex autoMutex(_mutex);
  
     // _send request header:     // _send request header:
  
     ExecutorRequestHeader header;     ExecutorRequestHeader header;
     header.code = EXECUTOR_CHANGE_OWNER_REQUEST;      header.code = EXECUTOR_WAIT_PID_MESSAGE;
  
     if (_send(_getSock(), &header, sizeof(header)) != sizeof(header))     if (_send(_getSock(), &header, sizeof(header)) != sizeof(header))
         return -1;         return -1;
  
     // _send request body:     // _send request body:
  
     ExecutorChangeOwnerRequest request;      ExecutorWaitPidRequest request;
     Strlcpy(request.path, path, sizeof(request.path));      request.pid = pid;
     Strlcpy(request.owner, owner, sizeof(request.owner));  
  
     if (_send(_getSock(), &request, sizeof(request)) != sizeof(request))     if (_send(_getSock(), &request, sizeof(request)) != sizeof(request))
         return -1;         return -1;
  
     // Receive the response     // Receive the response
  
     ExecutorChangeOwnerResponse response;      ExecutorWaitPidResponse response;
  
     if (_recv(_getSock(), &response, sizeof(response)) != sizeof(response))     if (_recv(_getSock(), &response, sizeof(response)) != sizeof(response))
         return -1;         return -1;
Line 856 
Line 854 
     return response.status;     return response.status;
 } }
  
 static int OutOfProcess_waitPid(  static int OutOfProcess_pamAuthenticate(
     int pid)      const char* username,
       const char* password)
 { {
     AutoMutex autoMutex(_mutex);     AutoMutex autoMutex(_mutex);
  
     // _send request header:     // _send request header:
  
     ExecutorRequestHeader header;     ExecutorRequestHeader header;
     header.code = EXECUTOR_WAIT_PID_REQUEST;      header.code = EXECUTOR_PAM_AUTHENTICATE_MESSAGE;
  
     if (_send(_getSock(), &header, sizeof(header)) != sizeof(header))     if (_send(_getSock(), &header, sizeof(header)) != sizeof(header))
         return -1;         return -1;
  
     // _send request body:      // _send request body.
  
     ExecutorWaitPidRequest request;      ExecutorPAMAuthenticateRequest request;
     request.pid = pid;      memset(&request, 0, sizeof(request));
       Strlcpy(request.username, username, EXECUTOR_BUFFER_SIZE);
       Strlcpy(request.password, password, EXECUTOR_BUFFER_SIZE);
  
     if (_send(_getSock(), &request, sizeof(request)) != sizeof(request))     if (_send(_getSock(), &request, sizeof(request)) != sizeof(request))
         return -1;         return -1;
  
     // Receive the response     // Receive the response
  
     ExecutorWaitPidResponse response;      ExecutorPAMAuthenticateResponse response;
  
     if (_recv(_getSock(), &response, sizeof(response)) != sizeof(response))     if (_recv(_getSock(), &response, sizeof(response)) != sizeof(response))
         return -1;         return -1;
Line 887 
Line 888 
     return response.status;     return response.status;
 } }
  
 static int OutOfProcess_pamAuthenticate(  static int OutOfProcess_pamValidateUser(
     const char* username,      const char* username)
     const char* password)  
 { {
     AutoMutex autoMutex(_mutex);     AutoMutex autoMutex(_mutex);
  
     // _send request header:     // _send request header:
  
     ExecutorRequestHeader header;     ExecutorRequestHeader header;
     header.code = EXECUTOR_PAM_AUTHENTICATE_REQUEST;      header.code = EXECUTOR_PAM_VALIDATE_USER_MESSAGE;
  
     if (_send(_getSock(), &header, sizeof(header)) != sizeof(header))     if (_send(_getSock(), &header, sizeof(header)) != sizeof(header))
         return -1;         return -1;
  
     // _send request body.     // _send request body.
  
     ExecutorPAMAuthenticateRequest request;      ExecutorPAMValidateUserRequest request;
     memset(&request, 0, sizeof(request));     memset(&request, 0, sizeof(request));
     Strlcpy(request.username, username, EXECUTOR_BUFFER_SIZE);     Strlcpy(request.username, username, EXECUTOR_BUFFER_SIZE);
     Strlcpy(request.password, password, EXECUTOR_BUFFER_SIZE);  
  
     if (_send(_getSock(), &request, sizeof(request)) != sizeof(request))     if (_send(_getSock(), &request, sizeof(request)) != sizeof(request))
         return -1;         return -1;
  
     // Receive the response     // Receive the response
  
     ExecutorPAMAuthenticateResponse response;      ExecutorPAMValidateUserResponse response;
  
     if (_recv(_getSock(), &response, sizeof(response)) != sizeof(response))     if (_recv(_getSock(), &response, sizeof(response)) != sizeof(response))
         return -1;         return -1;
Line 921 
Line 920 
     return response.status;     return response.status;
 } }
  
 static int OutOfProcess_pamValidateUser(  int OutOfProcess_startLocalAuth(
     const char* username)      const char* user,
       char path[EXECUTOR_BUFFER_SIZE],
       SessionKey* key)
 { {
     AutoMutex autoMutex(_mutex);     AutoMutex autoMutex(_mutex);
  
     // _send request header:     // _send request header:
  
     ExecutorRequestHeader header;     ExecutorRequestHeader header;
     header.code = EXECUTOR_PAM_VALIDATE_USER_REQUEST;      header.code = EXECUTOR_START_LOCAL_AUTH_MESSAGE;
  
     if (_send(_getSock(), &header, sizeof(header)) != sizeof(header))     if (_send(_getSock(), &header, sizeof(header)) != sizeof(header))
         return -1;         return -1;
  
     // _send request body.     // _send request body.
  
     ExecutorPAMValidateUserRequest request;      ExecutorStartLocalAuthRequest request;
     memset(&request, 0, sizeof(request));     memset(&request, 0, sizeof(request));
     Strlcpy(request.username, username, EXECUTOR_BUFFER_SIZE);      Strlcpy(request.user, user, EXECUTOR_BUFFER_SIZE);
  
     if (_send(_getSock(), &request, sizeof(request)) != sizeof(request))     if (_send(_getSock(), &request, sizeof(request)) != sizeof(request))
         return -1;         return -1;
  
     // Receive the response     // Receive the response
  
     ExecutorPAMValidateUserResponse response;      ExecutorStartLocalAuthResponse response;
  
     if (_recv(_getSock(), &response, sizeof(response)) != sizeof(response))     if (_recv(_getSock(), &response, sizeof(response)) != sizeof(response))
         return -1;         return -1;
  
       Strlcpy(key->data, response.key, sizeof(key->data));
       Strlcpy(path, response.path, EXECUTOR_BUFFER_SIZE);
   
       return response.status;
   }
   
   int OutOfProcess_finishLocalAuth(
       const SessionKey* key,
       const char* token,
       SessionKey* newKey)
   {
       AutoMutex autoMutex(_mutex);
   
       // _send request header:
   
       ExecutorRequestHeader header;
       header.code = EXECUTOR_FINISH_LOCAL_AUTH_MESSAGE;
   
       if (_send(_getSock(), &header, sizeof(header)) != sizeof(header))
           return -1;
   
       // _send request body.
   
       ExecutorFinishLocalAuthRequest request;
       memset(&request, 0, sizeof(request));
       Strlcpy(request.key, key->data, EXECUTOR_BUFFER_SIZE);
       Strlcpy(request.token, token, EXECUTOR_BUFFER_SIZE);
   
       if (_send(_getSock(), &request, sizeof(request)) != sizeof(request))
           return -1;
   
       // Receive the response
   
       ExecutorFinishLocalAuthResponse response;
   
       if (_recv(_getSock(), &response, sizeof(response)) != sizeof(response))
           return -1;
   
       Strlcpy(newKey->data, response.key, sizeof(newKey->data));
   
     return response.status;     return response.status;
 } }
  
Line 970 
Line 1011 
     _mutex.unlock();     _mutex.unlock();
 } }
  
   int Executor::detectExecutor()
   {
       if (_getSock() == -1)
           return -1;
       else
           return 0;
   }
   
 int Executor::ping() int Executor::ping()
 { {
     if (_getSock() == -1)     if (_getSock() == -1)
Line 1055 
Line 1104 
 #endif /* defined(PEGASUS_ENABLE_PRIVILEGE_SEPARATION) */ #endif /* defined(PEGASUS_ENABLE_PRIVILEGE_SEPARATION) */
 } }
  
 int Executor::changeOwner(  
     const char* path,  
     const char* owner)  
 {  
     if (_getSock() == -1)  
         return InProcess_changeOwner(path, owner);  
   
 #if defined(PEGASUS_ENABLE_PRIVILEGE_SEPARATION)  
     return OutOfProcess_changeOwner(path, owner);  
 #else  
     return -1;  
 #endif /* defined(PEGASUS_ENABLE_PRIVILEGE_SEPARATION) */  
 }  
   
 int Executor::waitPid( int Executor::waitPid(
     int pid)     int pid)
 { {
Line 1109 
Line 1144 
 #endif /* defined(PEGASUS_ENABLE_PRIVILEGE_SEPARATION) */ #endif /* defined(PEGASUS_ENABLE_PRIVILEGE_SEPARATION) */
 } }
  
   int Executor::startLocalAuth(
       const char* user,
       char path[EXECUTOR_BUFFER_SIZE],
       SessionKey* key)
   {
       if (_getSock() == -1)
           return -1;
   
   #if defined(PEGASUS_ENABLE_PRIVILEGE_SEPARATION)
       return OutOfProcess_startLocalAuth(user, path, key);
   #else
       return -1;
   #endif /* defined(PEGASUS_ENABLE_PRIVILEGE_SEPARATION) */
   }
   
   int Executor::finishLocalAuth(
       const SessionKey* key,
       const char* token,
       SessionKey* newKey)
   {
       if (_getSock() == -1)
           return -1;
   
   #if defined(PEGASUS_ENABLE_PRIVILEGE_SEPARATION)
       return OutOfProcess_finishLocalAuth(key, token, newKey);
   #else
       return -1;
   #endif /* defined(PEGASUS_ENABLE_PRIVILEGE_SEPARATION) */
   }
   
 PEGASUS_NAMESPACE_END PEGASUS_NAMESPACE_END


Legend:
Removed from v.1.1.2.4  
changed lines
  Added in v.1.1.2.6

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2