13 #include <QNetworkInterface> 44 LOG(VB_UPNP, LOG_DEBUG,
"UPnp - Constructor");
53 LOG(VB_UPNP, LOG_DEBUG,
"UPnp - Destructor");
89 if (sList.contains(QHostAddress(QHostAddress::AnyIPv4)))
91 sList.removeAll(QHostAddress(QHostAddress::AnyIPv4));
92 sList.removeAll(QHostAddress(QHostAddress::AnyIPv6));
93 sList.append(QNetworkInterface::allAddresses());
95 return Initialize( sList, nServicePort, pHttpServer );
104 LOG(VB_UPNP, LOG_DEBUG,
"UPnp::Initialize - Begin");
108 LOG(VB_GENERAL, LOG_ERR,
109 "UPnp::Initialize - Already initialized, programmer error.");
115 LOG(VB_GENERAL, LOG_ERR,
116 "UPnp::Initialize - Must call SetConfiguration.");
122 LOG(VB_GENERAL, LOG_ERR,
123 "UPnp::Initialize - Invalid Parameter (pHttpServer == NULL)");
137 if ((
g_IPAddrList[it].protocol() == QAbstractSocket::IPv4Protocol
139 ||(
g_IPAddrList[it].protocol() == QAbstractSocket::IPv6Protocol
153 LOG(VB_UPNP, LOG_DEBUG,
"UPnp::Initialize - End");
164 LOG(VB_UPNP, LOG_DEBUG,
"UPnp::Start - Enabling SSDP Notifications");
172 LOG(VB_UPNP, LOG_DEBUG,
"UPnp::Start - Returning");
181 LOG(VB_UPNP, LOG_INFO,
"UPnp::CleanUp() - disabling SSDP notifications");
273 if (pRequest !=
nullptr)
275 QString sDetails =
"";
278 sDetails =
"<UPnPResult xmlns=\"urn:schemas-upnp-org:control-1-0\">";
280 if (sMsg.length() == 0)
283 sDetails += QString(
"<errorCode>%1</errorCode>" 284 "<errorDescription>%2</errorDescription>" )
289 sDetails +=
"</UPnPResult>";
297 LOG(VB_GENERAL, LOG_ERR,
"Response not created - pRequest == NULL" );
305 const QString &hostName )
311 QString sUrl =
"http://" + pRequest->
m_mapHeaders[
"host" ] + sItems[1];
313 url.setHost( hostName );
317 LOG(VB_UPNP, LOG_INFO, QString(
"Sending http redirect to: %1")
318 .arg(url.toString()));
static Configuration * g_pConfig
bool Initialize(int nServicePort, HttpServer *pHttpServer)
static UPnpDeviceDesc * Retrieve(QString &sURL)
QStringMap m_mapRespHeaders
void RegisterExtension(HttpServerExtension *)
static QString Encode(const QString &sIn)
void EnableNotifications(int nServicePort)
MythCoreContext * gCoreContext
This global variable contains the MythCoreContext instance for the app.
void DisableNotifications()
QString GetSharePath(void) const
static QString GetResultDesc(UPnPResultCode eCode)
static void FormatErrorResponse(HTTPRequest *pRequest, UPnPResultCode eCode, const QString &sMsg="")
static Configuration * GetConfiguration()
HttpServer * m_pHttpServer
static void FormatRedirectResponse(HTTPRequest *pRequest, const QString &hostName)
static void SetConfiguration(Configuration *pConfig)
static UPnpDeviceDesc * GetDeviceDesc(QString &sURL)
#define LOG(_MASK_, _LEVEL_, _STRING_)
bool GetBoolSetting(const QString &key, bool defaultval=false)
HttpResponseType m_eResponseType
qint64 SendResponse(void)
void FormatErrorResponse(bool bServerError, const QString &sFaultString, const QString &sDetails)
static QList< QHostAddress > DefaultListen(void)
static QList< QHostAddress > g_IPAddrList
static UPnpDeviceDesc g_UPnpDeviceDesc