EAPMsg profile configuration XML load/save support added
This commit is contained in:
parent
ce05418d8e
commit
a2830d2aee
@ -89,7 +89,26 @@ namespace eap
|
|||||||
///
|
///
|
||||||
virtual config* clone() const;
|
virtual config* clone() const;
|
||||||
|
|
||||||
|
/// \name XML configuration management
|
||||||
|
/// @{
|
||||||
|
|
||||||
///
|
///
|
||||||
|
/// Save to XML document
|
||||||
|
///
|
||||||
|
/// \param[in] pDoc XML document
|
||||||
|
/// \param[in] pConfigRoot Suggested root element for saving
|
||||||
|
///
|
||||||
|
virtual void save(_In_ IXMLDOMDocument *pDoc, _In_ IXMLDOMNode *pConfigRoot) const;
|
||||||
|
|
||||||
|
///
|
||||||
|
/// Load from XML document
|
||||||
|
///
|
||||||
|
/// \param[in] pConfigRoot Root element for loading
|
||||||
|
///
|
||||||
|
virtual void load(_In_ IXMLDOMNode *pConfigRoot);
|
||||||
|
|
||||||
|
/// @}
|
||||||
|
|
||||||
/// \name BLOB management
|
/// \name BLOB management
|
||||||
/// @{
|
/// @{
|
||||||
|
|
||||||
|
@ -80,6 +80,59 @@ eap::config* eap::config_method_eapmsg::clone() const
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void eap::config_method_eapmsg::save(_In_ IXMLDOMDocument *pDoc, _In_ IXMLDOMNode *pConfigRoot) const
|
||||||
|
{
|
||||||
|
assert(pDoc);
|
||||||
|
assert(pConfigRoot);
|
||||||
|
|
||||||
|
config_method::save(pDoc, pConfigRoot);
|
||||||
|
|
||||||
|
// Convert configuration BLOB to XML using EapHost (and ultimately method peer's EapPeerConfigBlob2Xml).
|
||||||
|
com_obj<IXMLDOMDocument2> pConfigDoc;
|
||||||
|
eap_error error;
|
||||||
|
DWORD dwResult = EapHostPeerConfigBlob2Xml(0, m_type, (DWORD)m_cfg_blob.size(), const_cast<BYTE*>(m_cfg_blob.data()), &pConfigDoc, &error._Myptr);
|
||||||
|
if (dwResult == ERROR_SUCCESS) {
|
||||||
|
HRESULT hr;
|
||||||
|
|
||||||
|
com_obj<IXMLDOMElement> pXmlElConfigDoc;
|
||||||
|
if (FAILED(hr = pConfigDoc->get_documentElement(&pXmlElConfigDoc)))
|
||||||
|
throw com_runtime_error(hr, __FUNCTION__ " Error getting XML document element.");
|
||||||
|
|
||||||
|
// Insert method configuration into our XML configuration.
|
||||||
|
if (FAILED(hr = pConfigRoot->appendChild(pXmlElConfigDoc, NULL)))
|
||||||
|
throw com_runtime_error(hr, __FUNCTION__ " Error appending configuration document element.");
|
||||||
|
} else if (error)
|
||||||
|
throw eap_runtime_error(*error , __FUNCTION__ " EapHostPeerConfigBlob2Xml failed.");
|
||||||
|
else
|
||||||
|
throw win_runtime_error(dwResult, __FUNCTION__ " EapHostPeerConfigBlob2Xml failed.");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void eap::config_method_eapmsg::load(_In_ IXMLDOMNode *pConfigRoot)
|
||||||
|
{
|
||||||
|
assert(pConfigRoot);
|
||||||
|
|
||||||
|
config_method::load(pConfigRoot);
|
||||||
|
|
||||||
|
// <EapHostConfig>
|
||||||
|
winstd::com_obj<IXMLDOMElement> pXmlElEapHostConfig;
|
||||||
|
if (SUCCEEDED(eapxml::select_element(pConfigRoot, winstd::bstr(L"eaphostconfig:EapHostConfig"), pXmlElEapHostConfig))) {
|
||||||
|
// Convert configuration XML to BLOB using EapHost (and ultimately method peer's EapPeerConfigXml2Blob).
|
||||||
|
DWORD cfg_data_size = 0;
|
||||||
|
eap_blob cfg_data;
|
||||||
|
eap_error error;
|
||||||
|
DWORD dwResult = EapHostPeerConfigXml2Blob(0, pXmlElEapHostConfig, &cfg_data_size, &cfg_data._Myptr, &m_type, &error._Myptr);
|
||||||
|
if (dwResult == ERROR_SUCCESS) {
|
||||||
|
const BYTE *_cfg_data = cfg_data.get();
|
||||||
|
m_cfg_blob.assign(_cfg_data, _cfg_data + cfg_data_size);
|
||||||
|
} else if (error)
|
||||||
|
throw eap_runtime_error(*error , __FUNCTION__ " EapHostPeerConfigBlob2Xml failed.");
|
||||||
|
else
|
||||||
|
throw win_runtime_error(dwResult, __FUNCTION__ " EapHostPeerConfigBlob2Xml failed.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void eap::config_method_eapmsg::operator<<(_Inout_ cursor_out &cursor) const
|
void eap::config_method_eapmsg::operator<<(_Inout_ cursor_out &cursor) const
|
||||||
{
|
{
|
||||||
config_method::operator<<(cursor);
|
config_method::operator<<(cursor);
|
||||||
|
@ -1 +1 @@
|
|||||||
Subproject commit 73bd1d5882b936abd7b1fa415539465e58a0942d
|
Subproject commit 244b00ea779895884570b401a59f3447ad73bb24
|
Loading…
x
Reference in New Issue
Block a user