8#include "httprequest.h"
12#include "pluginstore.h"
22ControllerServer::ControllerServer(HobrasoftHttpd::HttpConnection *parent) :
AbstractController(parent) {
28 AUTHORIZEREQUEST(Security::Permissions::Server);
30 QList<Dbt::ServerInfo> list = db()->serverInfo();
31 QString serverName = (list.isEmpty()) ? MSETTINGS->serverName() : list.first().name;
32 QString serverDescription = (list.isEmpty()) ? MSETTINGS->serverDescription() : list.first().description;
35 data[
"configfile"] = MSETTINGS->fileName();
36 data[
"name"] = serverName;
37 data[
"description"] = serverDescription;
38 data[
"git_commit"] = GIT_COMMIT;
39 data[
"git_branch"] = GIT_BRANCH;
40 data[
"version"] = VERSION;
41 data[
"qt_version"] = qtVersion();
46 if (
id ==
"configfile") {
47 AUTHORIZEREQUEST(Security::Permissions::ServerConfigFile);
49 QString configfile = MSETTINGS->fileName();
50 QFile file(configfile);
51 if (file.open(QIODevice::ReadOnly)) {
52 configstring = QString::fromUtf8(file.readAll());
53 configstring = configstring.replace(QRegExp(
"password\\s*=[^\\n]*\\n"),
"password = ***\n");
57 data[
"configfile"] = MSETTINGS->fileName();
58 data[
"config"] = configstring;
63 if (
id ==
"restart") {
66 PDEBUG <<
"restart :-)))";
67 if (
request->parameter(
"reallyrestart") ==
"YES" && MSETTINGS->serverEnableRemoteRestart()) {
72 PDEBUG <<
"restarting";
76 PDEBUG <<
"restart disabled";
80 PDEBUG <<
"a doprdele....";
84 if (
id ==
"objects") {
94QVariantList ControllerServer::objects(
const QObject *
object,
int depth) {
99 QObjectList list =
object->children();
100 for (
int i=0; i<list.size(); i++) {
101 const QObject *x = list[i];
102 QVariantMap objectdata;
103 objectdata[
"address"] = (quint64)x;
104 objectdata[
"name"] = x->objectName().isEmpty() ?
"unnamed" : x->objectName();
105 objectdata[
"class"] = x->metaObject()->className();
106 objectdata[
"children"] = objects(x, depth+1);
114 serviceOK(
request, response, putKey(db()->save(Dbt::ServerInfo::fromMap(data))));
Virtuální třída pro vyřizování unifikovaných Http požadavků na server API.
virtual void serviceError(HobrasoftHttpd::HttpRequest *request, HobrasoftHttpd::HttpResponse *response, int code, const QString &error, const QVariantMap &data)
Pošle chybovou odpověď
virtual void serviceOK(HobrasoftHttpd::HttpRequest *request, HobrasoftHttpd::HttpResponse *response, const QVariant &data=QVariant())
Pošle odpověď 200 OK.
HobrasoftHttpd::HttpRequest * request() const
Vrací ukazatel na aktuální request.
void serviceIdPut(HobrasoftHttpd::HttpRequest *request, HobrasoftHttpd::HttpResponse *response, const QVariantMap &data) Q_DECL_OVERRIDE
Pošle odpověď na požadavek konkrétního ID metodou PUT - obvykle vloží nový objekt nebo přepíše existu...
void serviceIdGet(HobrasoftHttpd::HttpRequest *request, HobrasoftHttpd::HttpResponse *response, const QString &id) Q_DECL_OVERRIDE
Pošle odpověď na požadavek konkrétního ID metodou GET.
void serviceIdPost(HobrasoftHttpd::HttpRequest *request, HobrasoftHttpd::HttpResponse *response, const QVariantMap &data) Q_DECL_OVERRIDE
Pošle odpověď na požadavek konkrétního ID metodou PUT - obvykle vloží nový objekt nebo přepíše existu...
void restart()
Restartuje (nebo ukončí) server.
static TimesheetServer * instance()
Vrací ukazatel na singleton instanci třídy.
Jmenný prostor pro obsluhu konkrétních HTTP požadavků aplikace.