8#include "httprequest.h"
9#include "httpresponse.h"
10#include "httpconnection.h"
12#include "staticfilecontroller.h"
15#include "pluginstore.h"
16#include "plugininterface.h"
40using namespace HobrasoftHttpd;
56RequestMapper::~RequestMapper() {
68 PDEBUG << request->method() << request->fullPath();
70 #define ROUTER(adresa, trida) \
71 if (m_path.startsWith(adresa)) { \
72 AbstractController *controller = new trida (connection()); \
73 controller->setAuthorizer(m_authorizer); \
74 controller->service(request, response); \
78 if (
m_path.contains(QRegExp(
"^/public/.*\\.shtml"))) {
79 serviceShtmlFile(request, response);
85 StaticFileController(connection()).service(request, response);
90 if (
m_path.startsWith(
"/public/")) {
91 StaticFileController(connection()).service(request, response);
102 if (!m_authorizer->
isLoggedIn(request, response)) {
128 if (
m_path.contains(QRegExp(
".*\\.shtml"))) {
129 serviceShtmlFile(request, response);
134 StaticFileController(connection()).service(request, response);
138void RequestMapper::serviceShtmlFile(HttpRequest *request, HttpResponse *response) {
142 data = readFile(
m_path, response);
147 response->setHeader(
"Content-Type",
"text/html; charset=" + connection()->settings()->encoding());
148 response->write(data);
153QByteArray RequestMapper::readFile(
const QString& path, HttpResponse *response) {
155 if (path.startsWith(
"/..") || path.startsWith(
"..")) {
156 response->setStatus(403,
"Forbidden");
157 response->write(QString(
"403 Forbidden: %1<br>\nDo not use ../ in your file path").arg(path).toUtf8());
162 QFile file(connection()->settings()->docroot()+
"/"+path);
163 if (!file.exists()) {
164 response->setStatus(404,
"Not found");
165 response->write(QString(
"404 File not found: %1").arg(file.fileName()).toUtf8());
170 if (!file.open(QIODevice::ReadOnly)) {
171 response->setStatus(403,
"Forbidden");
172 response->write(QString(
"403 Forbidden: %1").arg(file.fileName()).toUtf8());
179 while (!file.atEnd()) {
180 QString line = QString::fromUtf8(file.readLine());
181 line = line.replace(
"${ROLE}", rolename);
183 if (line.contains(QRegExp(R
"X(^\s*<!--\s*#include\s+['"].+['"]\s*-->\s*$)X"))) {
184 QStringList lineparts = line.split(QRegExp(R"X(['"])X"));
185 if (lineparts.size() != 3) {
188 data += readFile(lineparts[1], response);
191 data += line.toUtf8();
Vrací seznam kategorií od zadané kategorie až k rootu.
Manipulace s kategoriemi.
Vrací podklady pro tištěný pracovní výkaz.
Vrací podklady pro tištěný pracovní výkaz.
Vrací informace o serveru.
Vrací informace o pořadí přechodů mezi jednotlivými stavy ticketu.
Manipulace se šablonami stavů
Manipulace se stavy ticketů
Manipulace se soubory ticketů
Manipulace se stavy ticketů
Manipulace se záznamy pracovního výkazu.
Manipulace s přibalenými objekty ticketů
Manipuluje s informacemi o ticketech.
Manipuluje s informacemi o ticketech.
Nastartování nebo zastavení pracovního výkazu.
Kontroluje přihlašování uživatelů a jejich oprávnění přes webové rozhraní
bool isLoggedIn(HobrasoftHttpd::HttpRequest *, HobrasoftHttpd::HttpResponse *)
Řídí přihlašování k webovému rozhraní
Security::Roles::Role role() const
QString m_path
Obsluhovaná cesta (URL adresa)
RequestMapper(HobrasoftHttpd::HttpConnection *parent)
Konstruktor.
void service(HobrasoftHttpd::HttpRequest *request, HobrasoftHttpd::HttpResponse *response)
Vyřizuje jeden požadavek.
Jmenný prostor pro obsluhu konkrétních HTTP požadavků aplikace.
static QString toString(Role role)
Vrací název odpovídající role v textu.