Go to the documentation of this file.
13 #include <QNetworkInterface>
39 LOG(VB_UPNP, LOG_DEBUG,
"UPnp - Constructor");
59 LOG(VB_UPNP, LOG_DEBUG,
"UPnp - Destructor");
77 if (sList.contains(QHostAddress(QHostAddress::AnyIPv4)))
79 sList.removeAll(QHostAddress(QHostAddress::AnyIPv4));
80 sList.removeAll(QHostAddress(QHostAddress::AnyIPv6));
81 sList.append(QNetworkInterface::allAddresses());
83 return Initialize( sList, nServicePort, pHttpServer );
92 LOG(VB_UPNP, LOG_DEBUG,
"UPnp::Initialize - Begin");
96 LOG(VB_GENERAL, LOG_ERR,
97 "UPnp::Initialize - Already initialized, programmer error.");
104 LOG(VB_GENERAL, LOG_ERR,
105 "UPnp::Initialize - Invalid Parameter (pHttpServer == NULL)");
119 if ((
g_IPAddrList[it].protocol() == QAbstractSocket::IPv4Protocol
121 ||(
g_IPAddrList[it].protocol() == QAbstractSocket::IPv6Protocol
135 LOG(VB_UPNP, LOG_DEBUG,
"UPnp::Initialize - End");
146 LOG(VB_UPNP, LOG_DEBUG,
"UPnp::Start - Enabling SSDP Notifications");
154 LOG(VB_UPNP, LOG_DEBUG,
"UPnp::Start - Returning");
163 LOG(VB_UPNP, LOG_INFO,
"UPnp::CleanUp() - disabling SSDP notifications");
248 if (pRequest !=
nullptr)
250 QString sDetails =
"";
253 sDetails =
"<UPnPResult xmlns=\"urn:schemas-upnp-org:control-1-0\">";
255 if (sMsg.length() == 0)
258 sDetails += QString(
"<errorCode>%1</errorCode>"
259 "<errorDescription>%2</errorDescription>" )
264 sDetails +=
"</UPnPResult>";
273 LOG(VB_GENERAL, LOG_ERR,
"Response not created - pRequest == NULL" );
282 const QString &hostName )
288 QString sUrl =
"http://" + pRequest->
GetLastHeader(
"host" ) + sItems[1];
291 (
"BackendServerAddr",hostName,hostName);
292 url.setHost( ipAddress );
296 LOG(VB_UPNP, LOG_INFO, QString(
"Sending http redirect to: %1")
297 .arg(url.toString()));
static UPnpDeviceDesc * Retrieve(QString &sURL)
@ UPnPResult_ActionFailed
@ UPnPResult_CDS_BadMetadata
@ UPnPResult_CDS_InvalidSortCriteria
void RegisterExtension(HttpServerExtension *pExtension)
@ UPnPResult_CDS_InvalidCurrentTagValue
#define LOG(_MASK_, _LEVEL_, _QSTRING_)
void WillSuspend(std::chrono::milliseconds MilliSeconds=0ms)
@ UPnPResult_CMGR_NotInNetwork
@ UPnPResult_CDS_ParameterMismatch
static QString Encode(const QString &sIn)
@ UPnPResult_InvalidControlURL
@ UPnPResult_SignatureFailure
static void FormatErrorResponse(HTTPRequest *pRequest, UPnPResultCode eCode, const QString &sMsg="")
bool Initialize(int nServicePort, HttpServer *pHttpServer)
void WillRestart(std::chrono::milliseconds MilliSeconds=0ms)
QStringMap m_mapRespHeaders
@ UPnPResult_CDS_TransferBusy
@ UPnPResult_OptionalActionNotImplemented
@ UPnPResult_CDS_InvalidNewTagValue
static void FormatRedirectResponse(HTTPRequest *pRequest, const QString &hostName)
@ UPnPResult_StringArgumentTooLong
static UPnpDeviceDesc * GetDeviceDesc(QString &sURL)
static MythPower * AcquireRelease(void *Reference, bool Acquire, std::chrono::seconds MinimumDelay=0s)
static void DisableNotifications(std::chrono::milliseconds)
@ UPnPResult_CDS_NoSuchFileTransfer
static QList< QHostAddress > DefaultListen(void)
@ UPnPResult_InvalidAction
@ UPnPResult_CDS_ResrtictedParentObject
@ UPnPResult_CDS_DestResAccessDenied
MythCoreContext * gCoreContext
This global variable contains the MythCoreContext instance for the app.
void EnableNotificatins(std::chrono::milliseconds) const
@ UPnPResult_ActionNotAuthorized
@ UPnPResult_CDS_ResourceAccessDenied
@ UPnPResult_CDS_NoSuchDestRes
void DisableNotifications()
bool GetBoolSetting(const QString &key, bool defaultval=false)
QString GetSharePath(void) const
@ UPnPResult_NoSuchSession
@ UPnPResult_CDS_ReadOnlyTag
@ UPnPResult_CDS_CannotProcessRequest
@ UPnPResult_InvalidSequence
@ UPnPResult_ArgumentValueInvalid
void FormatErrorResponse(bool bServerError, const QString &sFaultString, const QString &sDetails)
QString GetLastHeader(const QString &sType) const
QString GetSettingOnHost(const QString &key, const QString &host, const QString &defaultval="")
HttpResponseType m_eResponseType
@ UPnPResult_MS_AccessDenied
@ UPnPResult_CDS_NoSuchObject
@ UPnPResult_CDS_InvalidSearchCriteria
void WillShutDown(std::chrono::milliseconds MilliSeconds=0ms)
@ UPnPResult_CDS_RestrictedObject
@ UPnPResult_NotEncrypted
@ UPnPResult_SignatureMissing
@ UPnPResult_ArgumentValueOutOfRange
@ UPnPResult_HumanInterventionRequired
@ UPnPResult_CDS_RequiredTag
HttpServer * m_pHttpServer
void EnableNotifications(int nServicePort)
qint64 SendResponse(void)
@ UPnPResult_CDS_NoSuchSourceResource
static UPnpDeviceDesc g_UPnpDeviceDesc
static QList< QHostAddress > g_IPAddrList
void WokeUp(std::chrono::seconds SecondsAsleep)
@ UPnPResult_MythTV_NoNamespaceGiven
@ UPnPResult_MythTV_XmlParseError
static QString GetResultDesc(UPnPResultCode eCode)
@ UPnPResult_CDS_NoSuchContainer