Ticket #9301: mythbackend.patch

File mythbackend.patch, 3.0 KB (added by Jonatan <mythtv@…>, 9 years ago)
  • mythtv/programs/mythbackend/mythxml.cpp

     
    123123    if (sURI == "GetVideoArt"           ) return MXML_GetVideoArt;
    124124    if (sURI == "GetInternetSearch"     ) return MXML_GetInternetSearch;
    125125    if (sURI == "GetInternetSources"    ) return MXML_GetInternetSources;
     126    if (sURI == "GetInternetContent"    ) return MXML_GetInternetContent;
    126127
    127128    return MXML_Unknown;
    128129}
     
    229230                case MXML_GetInternetSources :
    230231                    GetInternetSources( pRequest );
    231232                    return true;
     233                case MXML_GetInternetContent :
     234                    GetInternetContent( pRequest );
     235                    return true;
    232236
    233237                case MXML_GetConnectionInfo    :
    234238                    GetConnectionInfo( pRequest );
     
    16621666    pRequest->FormatActionResponse( list );
    16631667}
    16641668
     1669void MythXML::GetInternetContent( HTTPRequest *pRequest )
     1670{
     1671    pRequest->m_eResponseType   = ResponseTypeHTML;
     1672
     1673    QString grabber =  pRequest->m_mapParams[ "Grabber" ];
     1674
     1675    if (grabber.isEmpty())
     1676        return;
     1677
     1678    QString contentDir = QString("%1internetcontent/").arg(GetShareDir());
     1679    QString htmlFile(contentDir + grabber);
     1680
     1681    // Try to prevent directory traversal
     1682    QFileInfo fileInfo(htmlFile);
     1683    if (fileInfo.canonicalFilePath().startsWith(contentDir) &&
     1684        QFile::exists( htmlFile ))
     1685    {
     1686        pRequest->m_eResponseType   = ResponseTypeFile;
     1687        pRequest->m_nResponseStatus = 200;
     1688        pRequest->m_sFileName       = htmlFile;
     1689    }
     1690    else
     1691    {
     1692        pRequest->FormatRawResponse( QString("<HTML>File %1 does "
     1693                  "not exist!</HTML>").arg(htmlFile) );
     1694    }
     1695}
     1696
    16651697/////////////////////////////////////////////////////////////////////////////
    16661698//
    16671699/////////////////////////////////////////////////////////////////////////////
  • mythtv/programs/mythbackend/mythxml.h

     
    5454    MXML_GetVideoArt            = 17,
    5555    MXML_GetInternetSearch      = 18,
    5656    MXML_GetInternetSources     = 19,
     57    MXML_GetInternetContent     = 20,
    5758
    58     MXML_GetFile                = 20,
    59     MXML_GetFileList            = 21,
    60     MXML_GetFileLinks           = 22,
     59    MXML_GetFile                = 21,
     60    MXML_GetFileList            = 22,
     61    MXML_GetFileLinks           = 23,
    6162
    6263} MythXMLMethod;
    6364
     
    127128
    128129        void    GetInternetSearch( HTTPRequest *pRequest );
    129130        void    GetInternetSources( HTTPRequest *pRequest );
     131        void    GetInternetContent( HTTPRequest *pRequest );
    130132
    131133        void    GetDeviceDesc  ( HTTPRequest *pRequest );
    132134        void    GetFile        ( HTTPRequest *pRequest, QString sFileName );