147 lines
4.9 KiB
C++
147 lines
4.9 KiB
C++
//----------------------------------------------------------------------------
|
|
//
|
|
// Copyright (C) Intel Corporation, 2007-2009
|
|
//
|
|
// File: CimWinRMClient.h
|
|
//
|
|
// Contents: An implementation of the ICimWsmanClient interface using Microsoft WinRM
|
|
//
|
|
//----------------------------------------------------------------------------
|
|
|
|
#ifndef __CIM_WINRM_CLIENT_H
|
|
#define __CIM_WINRM_CLIENT_H
|
|
#include <windows.h>
|
|
#include "CimWsman.h"
|
|
#include <stdexcept>
|
|
|
|
|
|
namespace Intel
|
|
{
|
|
namespace WSManagement
|
|
{
|
|
//using namespace WsmanClientNamespace;
|
|
using Intel::Manageability::Cim::CimReference;
|
|
using Intel::Manageability::Cim::WsManSelectors;
|
|
|
|
const string CIMBINDING_NS = "http://schemas.dmtf.org/wbem/wsman/1/cimbinding.xsd";
|
|
|
|
class CimWinRMClient : public ICimWsmanClient
|
|
{
|
|
private:
|
|
CLSID _wsmanOleClsid;
|
|
IDispatch * _pWsmanDispatch;
|
|
IDispatch * _pWsmanSessionDispatch;
|
|
IDispatch * _pWsmanConnectionOptions;
|
|
DISPID _dispPropertyPut;
|
|
DISPID _getDispid;
|
|
DISPID _identifyDispid;
|
|
DISPID _putDispid;
|
|
DISPID _createDispid;
|
|
DISPID _enumerateDispid;
|
|
DISPID _invokeDispid;
|
|
DISPID _deleteDispid;
|
|
DISPID _createSessionDispid;
|
|
DISPID _createConnectionOptionsDispid;
|
|
DISPID _createResourceLocatorDispid;
|
|
long _connectionFlags;
|
|
bool Init();
|
|
void ReleaseDisps();
|
|
bool CreateSession();
|
|
bool SetConnectionOptions(wchar_t* fieldName, const string& fieldValue);
|
|
bool AddSessionFlag(wchar_t* flagName);
|
|
bool CreateConnectionOptions();
|
|
bool CreateSessionFlags();
|
|
bool GetFunctionIds();
|
|
bool GetDispId(IDispatch* disp, DISPID* id, wchar_t* name);
|
|
bool CreateResourceLocator(IDispatch** disp, const string& uri, const NameValuePairs *s) const;
|
|
bool GetEnumerationItems(IDispatch* disp, vector<string> &enumRes) const;
|
|
bool CheckForMoreItems(IDispatch* disp, DISPID& id, bool& hasItems) const;
|
|
bool AddSelectors(IDispatch* disp, const NameValuePairs *s) const;
|
|
bool AddSelector(IDispatch* disp, DISPID& selId, const string& name, const string& value) const;
|
|
|
|
ConnectionInfo connection;
|
|
// Copy constructor is declared private
|
|
CimWinRMClient(const CimWinRMClient& cl);
|
|
// operator = is declared private
|
|
CimWinRMClient& operator=(const CimWinRMClient& other);
|
|
|
|
//void OpenConnection(const ConnectionInfo Connection);
|
|
public:
|
|
// Construct from params.
|
|
explicit CimWinRMClient(const string &host = "localhost",
|
|
const int port = 80,
|
|
bool secure = false,
|
|
AuthMethod auth_method = DIGEST,
|
|
const string &username = "",
|
|
const string &password = ""
|
|
);
|
|
|
|
explicit CimWinRMClient(const ConnectionInfo &Connection);
|
|
|
|
// Destructor.
|
|
virtual ~CimWinRMClient();
|
|
|
|
// ConnectionInfo
|
|
virtual ConnectionInfo Connection() const;
|
|
|
|
// Creates a new instance of a resource.
|
|
virtual string Create(const string &resourceUri, const string &data) const;
|
|
|
|
// Identify.
|
|
virtual string Identify() const;
|
|
|
|
// Delete a resource.
|
|
virtual void Delete(const string &resourceUri, const NameValuePairs *s = NULL) const;
|
|
|
|
// Enumerate resource.
|
|
virtual void Enumerate(const string &resourceUri, vector<string> &enumRes, const NameValuePairs *s = NULL) const;
|
|
|
|
// Enumerate a resource.
|
|
virtual void Enumerate(vector<string> &enumRes, const EnumerateFilter &filter) const;
|
|
|
|
// Enumerate reference.
|
|
virtual void EnumerateRef(vector<string> &enumRes, const EnumerateFilter &filter) const;
|
|
|
|
// Retrieve a resource.
|
|
virtual string Get(const string &resourceUri, const NameValuePairs *s = NULL) const;
|
|
|
|
// Update a resource.
|
|
virtual string Put(const string &resourceUri, const string &content, const NameValuePairs *s = NULL) const;
|
|
|
|
// Invokes a method and returns the results of the method call.
|
|
virtual string Invoke(const string &resourceUri, const string &methodName, const string &content, const NameValuePairs *s = NULL) const;
|
|
|
|
// Submit a subscription
|
|
virtual string Subscribe(const string &resourceUri, const SubscribeInfo &info, string &identifier) const;
|
|
|
|
// Renew a subscription
|
|
virtual string Renew(const string &resourceUri, const string &identifier, float expire, const NameValuePairs *s = NULL) const;
|
|
|
|
// Terminate a subscription
|
|
virtual void Unsubscribe(const string &resourceUri, const string &identifier, const NameValuePairs *s = NULL) const;
|
|
|
|
// Set auth method
|
|
virtual void SetAuth(const char *auth_method = "digest");
|
|
|
|
// Set user name
|
|
virtual void SetUserName(const char *user_name);
|
|
|
|
// Set passsword
|
|
virtual void SetPassword(const char *password);
|
|
|
|
// Set encoding
|
|
virtual void SetEncoding(const char *encoding);
|
|
|
|
// Set CIM namespace
|
|
virtual void SetNamespace(const char *ns);
|
|
|
|
|
|
// Set client certificate params
|
|
void SetClientCert(const char *caOid=NULL, const char *caName=NULL, const bool localCert=false);
|
|
void SetProxy(const char *proxy=NULL, const char *proxy_username=NULL, const char *proxy_password=NULL);
|
|
|
|
};
|
|
} // namespace WSManagement
|
|
} // namespace Intel
|
|
#endif // __CIM_WINRM_CLIENT_H
|