Go to the documentation of this file.
25 paths <<
"/Config/Database";
26 paths <<
"/Config/General";
35 LOG(VB_UPNP, LOG_INFO,
36 QString(
"HttpConfig::ProcessRequest(): m_sBaseURL: '%1',"
39 if (!request->
m_sBaseUrl.startsWith(
"/Config"))
63 bool okToSave =
false;
72 else if (request->
m_sBaseUrl ==
"/Config/General")
80 LOG(VB_UPNP, LOG_INFO,
"HTTP method 'Save' called, but not handled");
83 os <<
"<html><body><h3>The Save function for this screen is "
84 <<
"not hooked up yet</h3><dl>";
85 QStringMap::const_iterator it = request->
m_mapParams.begin();
88 if (it.key() ==
"__group__")
91 os <<
"<dt>"<<it.key()<<
"</dt><dd>"
94 os <<
"</dl></body></html>";
102 "no-cache=\"Ext\", max-age = 0";
108 else if (request->
m_sMethod ==
"Settings")
110 QString result = R
"({ "Error": "Unknown Settings List" })";
113 if (request->
m_sBaseUrl ==
"/Config/Database")
115 fn +=
"config_backend_database.xml";
120 else if (request->
m_sBaseUrl ==
"/Config/General")
122 fn +=
"config_backend_general.xml";
133 "no-cache=\"Ext\", max-age = 0";
141 if (request->
m_sBaseUrl ==
"/Config/Database")
142 fn +=
"config_backend_database.xml";
143 else if (request->
m_sBaseUrl ==
"/Config/General")
144 fn +=
"config_backend_general.xml";
149 else if ((request->
m_sMethod ==
"InstallPackage") &&
152 QString
package = QUrl::fromPercentEncoding(request->m_mapParams["package"].toUtf8());
153 QString url = QString(
"http://www.mythtv.org/ftp/3rdParty/%1").arg(package);
155 QString tmpFile = tmpGroup.
GetFirstDir(
true) +
"package.zip";
159 QString result =
"false";
172 "no-cache=\"Ext\", max-age = 0";
176 else if ((request->
m_sMethod ==
"FileBrowser") &&
179 QString startingDir = QUrl::fromPercentEncoding(request->
m_mapParams[
"dir"].toUtf8());
180 if (startingDir.startsWith(
"myth://"))
182 QUrl qurl(startingDir);
185 QString host = qurl.host();
186 int port = qurl.port();
190 QString storageGroup = qurl.userName();
195 if ((entries.size() == 1) &&
196 (entries[0].startsWith(
"sgdir::")))
198 QStringList parts = entries[0].split(
"::");
202 if (!entries.empty())
205 os <<
"<ul class=\"jqueryFileTree\" style=\"display: none;\">\r\n";
207 for (
const auto & entry : qAsConst(entries))
209 QStringList parts = entry.split(
"::");
210 QFileInfo fi(parts[1]);
218 if (entry.startsWith(
"sgdir::"))
220 os << R
"( <li class="directory collapsed"><a href="#" rel=")"
221 << path << "/\">" << parts[1] <<
"</a></li>\r\n";
223 else if (entry.startsWith(
"dir::"))
225 os << R
"( <li class="directory collapsed"><a href="#" rel=")"
226 << path << "/\">" << fi.fileName() <<
"</a></li>\r\n";
228 else if (entry.startsWith(
"file::"))
230 os <<
" <li class=\"file ext_" << fi.suffix() << R
"("><a href="#" rel=")"
231 << parts[3] << "\">" << fi.fileName() <<
"</a></li>\r\n";
239 QDir
dir(startingDir);
243 os <<
"<ul class=\"jqueryFileTree\" style=\"display: none;\">\r\n";
245 QFileInfoList infoList =
dir.entryInfoList();
246 for (
const auto & fi : qAsConst(infoList))
250 if (fi.fileName().startsWith(
"."))
253 os << R
"( <li class="directory collapsed"><a href="#" rel=")"
254 << fi.absoluteFilePath() << "/\">" << fi.fileName() <<
"</a></li>\r\n";
257 bool dirsOnly =
true;
259 dirsOnly = (request->
m_mapParams[
"dirsOnly"].toInt() != 0);
263 for (
const auto & fi : qAsConst(infoList))
267 if (fi.fileName().startsWith(
"."))
270 os <<
" <li class=\"file ext_" << fi.suffix() << R
"("><a href="#" rel=")"
271 << fi.absoluteFilePath() << "\">" << fi.fileName() <<
"</a></li>\r\n";
280 else if ((request->
m_sMethod ==
"GetValueList") &&
291 "no-cache=\"Ext\", max-age = 0";
298 "config_backend_database.xml";
300 QString form(
"/Config/Database/Save");
321 else if (request->
m_sMethod ==
"General")
324 "config_backend_general.xml";
326 QString form(
"/Config/General/Save");
352 "no-cache=\"Ext\", max-age = 0";
359 const QString &group)
361 QTextStream os(&buffer);
363 os.setCodec(
"UTF-8");
365 os <<
"<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" "
366 <<
"\"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\r\n"
367 <<
"<html xmlns=\"http://www.w3.org/1999/xhtml\""
368 <<
" xml:lang=\"en\" lang=\"en\">\r\n"
370 <<
" <meta http-equiv=\"Content-Type\"\r\n"
371 <<
" content=\"text/html; charset=UTF-8\" />\r\n"
372 <<
" <link rel=\"stylesheet\" href=\"/setup/css/Config.css\" type=\"text/css\">\r\n"
373 <<
" <title>MythTV Config</title>"
376 <<
"<div class=\"config\">\r\n"
377 <<
" <h1 class=\"config\">MythTV Configuration</h1>\r\n";
383 const QString &group)
385 QTextStream os(&buffer);
387 os.setCodec(
"UTF-8");
389 os <<
" <form id=\"config_form_" << group <<
"\">\r\n"
390 << R
"( <input type="hidden" id="__config_form_action__" value=")" << form << "\" />\r\n"
391 << R
"( <input type="hidden" id="__group__" value=")" << group << "\" />\r\n";
396 QTextStream os(&buffer);
400 os << R
"( <input type="button" value="Save Changes" onClick="javascript:submitConfigForm(')" << group << "')\" />\r\n"
409 QTextStream os(&buffer);
418 QTextStream os(&buffer);
420 for (
const auto *setting : qAsConst(settings))
421 os << setting->ToHTML(1);
static void PrintSettings(QBuffer &buffer, const MythSettingList &settings)
MythSettingList m_databaseSettings
MythSettingList m_generalSettings
bool load_settings(MythSettingList &settings, const QString &hostname)
QString m_sResponseTypeText
bool parse_settings(MythSettingList &settings, const QString &filename, const QString &group)
arg(title).arg(filename).arg(doDelete))
#define LOG(_MASK_, _LEVEL_, _QSTRING_)
QStringList GetSettingValueList(const QString &type)
QStringMap m_mapRespHeaders
QString StringMapToJSON(const QMap< QString, QString > &map)
static void PrintHeader(QBuffer &buffer, const QString &form, const QString &group="")
static QString GenMythURL(const QString &host=QString(), int port=0, QString path=QString(), const QString &storageGroup=QString())
QString GetShareDir(void)
static void PrintFooter(QBuffer &buffer, const QString &group="")
QString GetFirstDir(bool appendSlash=false) const
MythCoreContext * gCoreContext
This global variable contains the MythCoreContext instance for the app.
static void CloseForm(QBuffer &buffer, const QString &group="")
bool ProcessRequest(HTTPRequest *pRequest) override
bool check_settings(MythSettingList &, const QMap< QString, QString > ¶ms, QString &result)
QList< MythSettingBase * > MythSettingList
void FormatFileResponse(const QString &sFileName)
HttpResponseType m_eResponseType
QStringList GetFileInfoList(const QString &Path)
QString GetHostName(void)
bool extractZIP(const QString &zipFile, const QString &outDir)
QMap< QString, QString > GetSettingsMap(const MythSettingList &settings, const QString &hostname)
QStringList GetBasePaths() override
QString StringListToJSON(const QString &key, const QStringList &sList)
MythContext * gContext
This global variable contains the MythContext instance for the application.
MythDownloadManager * GetMythDownloadManager(void)
Gets the pointer to the MythDownloadManager singleton.
static void OpenForm(QBuffer &buffer, const QString &form, const QString &group="")