Timesheets-Server
Timesheets server
Načítám...
Vyhledávám...
Nebylo nic nalezeno
Dokumentace třídy Httpd::ControllerServer

Vrací informace o serveru. ...

#include <controllerserver.h>

Diagram dědičnosti pro třídu Httpd::ControllerServer:
Httpd::AbstractController

Veřejné metody

 ControllerServer (HobrasoftHttpd::HttpConnection *parent)
 
- Veřejné metody dědí se z Httpd::AbstractController
 AbstractController (HobrasoftHttpd::HttpConnection *parent)
 Konstruktor.
 
virtual void service (HobrasoftHttpd::HttpRequest *request, HobrasoftHttpd::HttpResponse *response)
 Obsluha požadavku.
 
void setCheckId (bool x)
 Nastavuje kontrolu položky ID v datech při PUT a POST.
 
void setAuthorizer (RequestAuthorizer *authorizer)
 
AuthenticatedUserauthenticatedUser () const
 
bool checkId () const
 Vrací stav kontroly položky ID v datech při PUT a POST.
 
Db::Databasedb ()
 

Chráněné metody

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 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 existující objekt.
 
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 existující objekt.
 
- Chráněné metody dědí se z Httpd::AbstractController
virtual bool exists (const QString &id)
 Kontrola existence zadaného ID.
 
virtual bool exists (HobrasoftHttpd::HttpRequest *request, const QString &id)
 Kontrola existence zadaného ID.
 
virtual void serviceOK (HobrasoftHttpd::HttpRequest *request, HobrasoftHttpd::HttpResponse *response, const QVariant &data=QVariant())
 Pošle odpověď 200 OK.
 
virtual void serviceError (HobrasoftHttpd::HttpRequest *request, HobrasoftHttpd::HttpResponse *response, int code, const QString &error, const QVariantMap &data)
 Pošle chybovou odpověď
 
virtual void serviceList (HobrasoftHttpd::HttpRequest *request, HobrasoftHttpd::HttpResponse *response)
 Měl by poslat v odpovědi kompletní seznam všech objektů ve třídě a ukončit se.
 
virtual void serviceEvents (HobrasoftHttpd::HttpRequest *request, HobrasoftHttpd::HttpResponse *response)
 Pošle v odpovědi kompletní seznam všech objektů ve třídě a následně
 
virtual void serviceIdEvents (HobrasoftHttpd::HttpRequest *request, HobrasoftHttpd::HttpResponse *response, const QString &id)
 Pošle v odpovědi proud událostí spojených se všemi objekty ve třídě
 
virtual void serviceIdDelete (HobrasoftHttpd::HttpRequest *request, HobrasoftHttpd::HttpResponse *response, const QString &id)
 Pošle odpověď na požadavek konkrétního ID metodou DELETE - obvykle objekt smaže.
 
virtual void serviceEvent (HobrasoftHttpd::HttpRequest *request, HobrasoftHttpd::HttpResponse *response, const QVariant &data)
 Pošle do otevřeného proudu událostí jednu událost.
 
virtual bool isAuthorized (Security::Permissions::Permission)
 
HobrasoftHttpd::HttpRequest * request () const
 Vrací ukazatel na aktuální request.
 
HobrasoftHttpd::HttpConnection * connection () const
 Vrací ukazatel na aktuální connection.
 

Privátní metody

QVariantList objects (const QObject *object, int dept=0)
 

Další zděděné členy

- Statické chráněné metody dědí se z Httpd::AbstractController
static QVariantMap putKey (const QVariant &key)
 

Detailní popis

Vrací informace o serveru.

GET /server/about

Vrací informace o serveru

{
"configfile": "/home/tycho/.timesheet-server.conf", // Cesta k použitému konfiguračnímu souboru
"name": "Hobrasoft", // Krátké jméno serveru
"description": "Pokusný server pro vývoj pracovních výkazů", // Podrobnější popis serveru
"git_branch": "master", // Použitá větev GITu, nastavuje se při překladu
"git_commit": "7dfd959", // Použitý commit GITu, nastavuje se při překladu
"version": "1.0.0" // Verze, bere se z version.h
}

GET /server/configfile

Vrací obsah konfiguračního souboru, hesla (položka password) jsou zamaskovaná:

{
"config": "[db]\nplugin = postgres\nname = timesheets\nserver = hrabos.hobrasoft.cz\nport = 5432\nuser = tycho\npassword = ***\n\n[httpd]\nthreads = false\n\n[server]\nname = Hobrasoft\ndescription = Pokusný server pro vývoj pracovních výkazů\n\n[log]\nall = true\n\n",
"configfile": "/home/tycho/.timesheet-server.conf"
}

GET /server/restart?reallyrestart=YES

Restartuje server. Závisí na položce "server/enable-remote-restart" v konfiguračním souboru. Ve skutečnosti se server nerestartuje, ale ukončí. O opětovné nastartování by se měl postarat systemd.

Vrací jednoduchou informaci, že požadavek byl přijat. Pokud není restartovaní umožněno, vrací chybu 405.

{
"ok": true;
}

GET /server/objects

Vypíše objekty v paměti, pouze pro ladění serveru.

[
{
"address": 94788673941232,
"children": [],
"class": "MSettings",
"name": "unnamed"
},
{
"address": 94788673967808,
"children": [],
"class": "Logger",
"name": "unnamed"
},
{
"address": 94788673960384,
"children": [
{
"address": 94788673966688,
"children": [],
"class": "Db::Plugins::DatabasePluginPostgres",
"name": "DatabasePluginPostgres"
}
],
"class": "Db::Database",
"name": "Database 94788673922752"
},
{
"address": 94788674023968,
"children": [],
"class": "Security::Guard",
"name": "unnamed"
},
{
"address": 94788674024368,
"children": [],
"class": "HobrasoftHttpd::HttpSettings",
"name": "unnamed"
},
{
"address": 94788674028784,
"children": [],
"class": "MyThread",
"name": "threadHttpServer"
}
]

Definice je uvedena na řádku 120 v souboru controllerserver.h.

Dokumentace konstruktoru a destruktoru

◆ ControllerServer()

ControllerServer::ControllerServer ( HobrasoftHttpd::HttpConnection * parent)

Definice je uvedena na řádku 22 v souboru controllerserver.cpp.

22 : AbstractController(parent) {
23}
AbstractController(HobrasoftHttpd::HttpConnection *parent)
Konstruktor.

Dokumentace členských funkcí

◆ objects()

QVariantList ControllerServer::objects ( const QObject * object,
int dept = 0 )
private

Definice je uvedena na řádku 94 v souboru controllerserver.cpp.

94 {
95 QVariantList data;
96 if (depth > 10) {
97 return data;
98 }
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);
107 data << objectdata;
108 }
109 return data;
110}

◆ serviceIdGet()

void ControllerServer::serviceIdGet ( HobrasoftHttpd::HttpRequest * request,
HobrasoftHttpd::HttpResponse * response,
const QString & id )
protectedvirtual

Pošle odpověď na požadavek konkrétního ID metodou GET.

Defaultní implementace posílá chybu 501 Not Implemented

Reimplementuje stejnojmenný prvek z Httpd::AbstractController.

Definice je uvedena na řádku 25 v souboru controllerserver.cpp.

25 {
26
27 if (id == "about") {
28 AUTHORIZEREQUEST(Security::Permissions::Server);
29
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;
33
34 QVariantMap data;
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();
42 serviceOK(request, response, data);
43 return;
44 }
45
46 if (id == "configfile") {
47 AUTHORIZEREQUEST(Security::Permissions::ServerConfigFile);
48 QString configstring;
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");
54 file.close();
55 }
56 QVariantMap data;
57 data["configfile"] = MSETTINGS->fileName();
58 data["config"] = configstring;
59 serviceOK(request, response, data);
60 return;
61 }
62
63 if (id == "restart") {
64 // AUTHORIZEREQUEST(Security::Permissions::ServerRestart);
65 QVariantMap data;
66 PDEBUG << "restart :-)))";
67 if (request->parameter("reallyrestart") == "YES" && MSETTINGS->serverEnableRemoteRestart()) {
68 // nelze volat přímo, je v jiném vláknu
69 QTimer::singleShot(100, TimesheetServer::instance(), &TimesheetServer::restart);
70 QVariantMap data;
71 data["ok"] = true;
72 PDEBUG << "restarting";
73 serviceOK(request, response, data);
74 return;
75 } else {
76 PDEBUG << "restart disabled";
77 serviceError(request, response, 405, "bad-request", "Could not restart server");
78 return;
79 }
80 PDEBUG << "a doprdele....";
81 return;
82 }
83
84 if (id == "objects") {
85 serviceOK(request, response, objects(TimesheetServer::instance()));
86 return;
87 }
88
89 serviceError(request, response, 404, "not-found", "Not found");
90
91}
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 restart()
Restartuje (nebo ukončí) server.
static TimesheetServer * instance()
Vrací ukazatel na singleton instanci třídy.

◆ serviceIdPost()

void ControllerServer::serviceIdPost ( HobrasoftHttpd::HttpRequest * request,
HobrasoftHttpd::HttpResponse * response,
const QVariantMap & data )
protectedvirtual

Pošle odpověď na požadavek konkrétního ID metodou PUT - obvykle vloží nový objekt nebo přepíše existující objekt.

Defaultní implementace posílá chybu 501 Not Implemented

Reimplementuje stejnojmenný prvek z Httpd::AbstractController.

Definice je uvedena na řádku 118 v souboru controllerserver.cpp.

118 {
119 serviceIdPut(request, response, data);
120}
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...

◆ serviceIdPut()

void ControllerServer::serviceIdPut ( HobrasoftHttpd::HttpRequest * request,
HobrasoftHttpd::HttpResponse * response,
const QVariantMap & data )
protectedvirtual

Pošle odpověď na požadavek konkrétního ID metodou PUT - obvykle vloží nový objekt nebo přepíše existující objekt.

Defaultní implementace posílá chybu 501 Not Implemented

Reimplementuje stejnojmenný prvek z Httpd::AbstractController.

Definice je uvedena na řádku 113 v souboru controllerserver.cpp.

113 {
114 serviceOK(request, response, putKey(db()->save(Dbt::ServerInfo::fromMap(data))));
115}

Dokumentace pro tuto třídu byla vygenerována z následujících souborů: