UPnPResultCode MythXMLClient::GetConnectionInfo( const QString &sPin, DatabaseParams *pParams, QString &sMsg ) { if (pParams == NULL) return UPnPResult_InvalidArgs; int nErrCode = 0; QString sErrDesc; QStringMap list; sMsg.clear(); list.insert( "Pin", sPin ); if (SendSOAPRequest( "GetConnectionInfo", list, nErrCode, sErrDesc, m_bInQtThread )) { QString sXml = "<Info>" + list[ "Info" ] + "</Info>"; sMsg = sErrDesc; QDomDocument doc; if ( !doc.setContent( sXml, false, &sErrDesc, &nErrCode )) { sMsg = QObject::tr("Error Requesting Connection Info"); VERBOSE( VB_UPNP, QString( "Error Requesting Connection Info : (%1) - %2" ) .arg( nErrCode ) .arg( sErrDesc ) ); return UPnPResult_ActionFailed; } // -------------------------------------------------------------- // Is this a valid response? // -------------------------------------------------------------- QDomNode infoNode = doc.namedItem( "Info" ); if (!infoNode.isNull()) { QDomNode dbNode = infoNode.namedItem( "Database" ); pParams->dbHostName = GetNodeValue( dbNode, "Host" , QString( )); pParams->dbPort = GetNodeValue( dbNode, "Port" , 0 ); pParams->dbUserName = GetNodeValue( dbNode, "UserName" , QString( )); pParams->dbPassword = GetNodeValue( dbNode, "Password" , QString( )); pParams->dbName = GetNodeValue( dbNode, "Name" , QString( )); pParams->dbType = GetNodeValue( dbNode, "Type" , QString( )); QDomNode wolNode = infoNode.namedItem( "WOL" ); pParams->wolEnabled = GetNodeValue( wolNode, "Enabled" , false ); pParams->wolReconnect = GetNodeValue( wolNode, "Reconnect", 0 ); pParams->wolRetry = GetNodeValue( wolNode, "Retry" , 0 ); pParams->wolCommand = GetNodeValue( wolNode, "Command" , QString( )); return UPnPResult_Success; } else { if (sMsg.isEmpty()) sMsg = QObject::tr("Unexpected Response"); VERBOSE( VB_IMPORTANT, QString( "MythXMLClient::GetConnectionInfo Failed : Unexpected Response - %1" ) .arg( sXml )); } } else { sMsg = sErrDesc; if (sMsg.isEmpty()) sMsg = QObject::tr("Access Denied"); VERBOSE( VB_IMPORTANT, QString( "MythXMLClient::GetConnectionInfo Failed - (%1) %2" ) .arg( nErrCode ) .arg( sErrDesc )); } if (UPnPResult_HumanInterventionRequired == nErrCode || UPnPResult_ActionNotAuthorized == nErrCode) return (UPnPResultCode)nErrCode; return UPnPResult_ActionFailed; }
UPnPResultCode MythXMLClient::GetConnectionInfo( const QString &sPin, DatabaseParams *pParams, QString &sMsg ) { if (pParams == NULL) return UPnPResult_InvalidArgs; int nErrCode = 0; QString sErrDesc; QStringMap list; sMsg.clear(); list.insert( "Pin", sPin ); QDomDocument xmlResults = SendSOAPRequest( "GetConnectionInfo", list, nErrCode, sErrDesc, m_bInQtThread); // -------------------------------------------------------------- // Is this a valid response? // -------------------------------------------------------------- QDomNode oNode = xmlResults.namedItem( "GetConnectionInfoResult" ); if (UPnPResult_Success == nErrCode && !oNode.isNull()) { QDomNode dbNode = oNode.namedItem( "Database" ); pParams->dbHostName = GetNodeValue( dbNode, "Host" , QString()); pParams->dbPort = GetNodeValue( dbNode, "Port" , 0 ); pParams->dbUserName = GetNodeValue( dbNode, "UserName" , QString()); pParams->dbPassword = GetNodeValue( dbNode, "Password" , QString()); pParams->dbName = GetNodeValue( dbNode, "Name" , QString()); pParams->dbType = GetNodeValue( dbNode, "Type" , QString()); QDomNode wolNode = oNode.namedItem( "WOL" ); pParams->wolEnabled = GetNodeValue( wolNode, "Enabled" , false ); pParams->wolReconnect = GetNodeValue( wolNode, "Reconnect", 0 ); pParams->wolRetry = GetNodeValue( wolNode, "Retry" , 0 ); pParams->wolCommand = GetNodeValue( wolNode, "Command" , QString()); return UPnPResult_Success; } else { sMsg = sErrDesc; LOG(VB_GENERAL, LOG_ERR, QString("MythXMLClient::GetConnectionInfo Failed - (%1) %2") .arg(nErrCode) .arg(sErrDesc)); } if (( nErrCode == UPnPResult_HumanInterventionRequired ) || ( nErrCode == UPnPResult_ActionNotAuthorized ) || ( nErrCode == 501 )) { // Service calls no longer return UPnPResult codes, // convert standard 501 to UPnPResult code for now. return UPnPResult_ActionNotAuthorized; } return UPnPResult_ActionFailed; }
UPnPResultCode MythXMLClient::GetConnectionInfo( const QString &sPin, DatabaseParams *pParams, QString &sMsg ) { if (pParams == NULL) return UPnPResult_InvalidArgs; int nErrCode = 0; QString sErrDesc; QStringMap list; sMsg.clear(); list.insert( "Pin", sPin ); QDomDocument xmlResults = SendSOAPRequest( "GetConnectionInfo", list, nErrCode, sErrDesc, m_bInQtThread); // -------------------------------------------------------------- // Is this a valid response? // -------------------------------------------------------------- QDomNode oNode = xmlResults.namedItem( "GetConnectionInfoResult" ); if (UPnPResult_Success == nErrCode && !oNode.isNull()) { QDomNode dbNode = oNode.namedItem( "Database" ); pParams->dbHostName = GetNodeValue( dbNode, "Host" , QString()); pParams->dbPort = GetNodeValue( dbNode, "Port" , 0 ); pParams->dbUserName = GetNodeValue( dbNode, "UserName" , QString()); pParams->dbPassword = GetNodeValue( dbNode, "Password" , QString()); pParams->dbName = GetNodeValue( dbNode, "Name" , QString()); pParams->dbType = GetNodeValue( dbNode, "Type" , QString()); QDomNode wolNode = oNode.namedItem( "WOL" ); pParams->wolEnabled = GetNodeValue( wolNode, "Enabled" , false ); pParams->wolReconnect = GetNodeValue( wolNode, "Reconnect", 0 ); pParams->wolRetry = GetNodeValue( wolNode, "Retry" , 0 ); pParams->wolCommand = GetNodeValue( wolNode, "Command" , QString()); QDomNode verNode = oNode.namedItem( "Version" ); pParams->verVersion = GetNodeValue( verNode, "Version" , "" ); pParams->verBranch = GetNodeValue( verNode, "Branch" , "" ); pParams->verProtocol = GetNodeValue( verNode, "Protocol" , "" ); pParams->verBinary = GetNodeValue( verNode, "Binary" , "" ); pParams->verSchema = GetNodeValue( verNode, "Schema" , "" ); if ((pParams->verProtocol != MYTH_PROTO_VERSION) || (pParams->verSchema != MYTH_DATABASE_VERSION)) // incompatible version, we cannot use this backend { LOG(VB_GENERAL, LOG_ERR, QString("MythXMLClient::GetConnectionInfo Failed - " "Version Mismatch (%1,%2) != (%3,%4)") .arg(pParams->verProtocol) .arg(pParams->verSchema) .arg(MYTH_PROTO_VERSION) .arg(MYTH_DATABASE_VERSION)); sMsg = QObject::tr("Version Mismatch", "UPNP Errors"); return UPnPResult_ActionFailed; } return UPnPResult_Success; } else { sMsg = sErrDesc; LOG(VB_GENERAL, LOG_ERR, QString("MythXMLClient::GetConnectionInfo Failed - (%1) %2") .arg(nErrCode) .arg(sErrDesc)); } if (( nErrCode == UPnPResult_HumanInterventionRequired ) || ( nErrCode == UPnPResult_ActionNotAuthorized ) || ( nErrCode == 501 )) { // Service calls no longer return UPnPResult codes, // convert standard 501 to UPnPResult code for now. sMsg = QObject::tr("Not Authorized", "UPNP Errors"); return UPnPResult_ActionNotAuthorized; } sMsg = QObject::tr("Unknown Error", "UPNP Errors"); return UPnPResult_ActionFailed; }