//---------------------------------------------------------------------------- // // Copyright (C) Intel Corporation, 2006 - 2007. // // File: SOAPCommunicator.cpp // // Contents: Allows communication of Soap messages. // // Notes: //---------------------------------------------------------------------------- #include "SOAPCommunicator.h" #include "SoapCommonDefinitions.h" #ifdef _WIN32 SOAPCommunicator::SOAPCommunicator(const char* host, bool tls, const char* user, const char* pass, const char* certName, bool kerberos) #else SOAPCommunicator::SOAPCommunicator(const char* host, bool tls, const char* user, const char* pass, const char* certPass, const char* certName, bool kerberos) #endif { is_tls = tls; setURLFromIP(host); #ifdef _WIN32 soap = new Soap(enTarget.c_str(), (const CHAR*)certName, user, pass, false, kerberos); #else soap = new Soap(enTarget.c_str(), (const CHAR*)certName, NULL, user, pass); #endif } SOAPCommunicator::~SOAPCommunicator() { if(soap) { delete soap; } } // Set the Managment-Console IP for the next notification void SOAPCommunicator::SetTarget(const char *url) { if (soap) { setURLFromIP(url); soap->SetIp(enTarget.c_str()); } } int SOAPCommunicator::SendEvent(string MEAddress , unsigned short MEPort, string ME_UUID, string MPSAddress, unsigned short MPSHttpPort, unsigned short MPSSocksPort, mps__ConnectionStateTypeDefinition state) { int status = 0; mps__EventNotificationType eventNotification; eventNotification.DeviceFqdn = MEAddress; eventNotification.State = state; eventNotification.DevicePort.push_back(MEPort); eventNotification.DeviceUuid = ME_UUID; eventNotification.MpsAddress = MPSAddress; eventNotification.MpsHttpPort = MPSHttpPort; eventNotification.MpsSocksPort = MPSSocksPort; eventNotification.WantReply = false; soap->Init(); _mps__EventNotificationRequest request; _mps__MPSAlertResponse response; request.MPSEvent = &eventNotification; if(soap_call___mps__MPSAlert(soap->GetSoap(),soap->GetIp(), NULL,&request,response)) { status = -1; } else { status = (int)response.KeepConnection; } return status; } void SOAPCommunicator::setURLFromIP(string ip) { enTarget = ip; }