diff --git a/relaisclient.cpp b/relaisclient.cpp index 5f9dea4..d0c943b 100644 --- a/relaisclient.cpp +++ b/relaisclient.cpp @@ -68,6 +68,12 @@ void RelaisClient::toggle() m_status = QString(); } +void RelaisClient::reboot() +{ + m_socket->write(QByteArrayLiteral("r")); + m_status = QString(); +} + void RelaisClient::requestStatus() { m_socket->write(QByteArrayLiteral("s")); diff --git a/relaisclient.h b/relaisclient.h index fef9544..4db4000 100644 --- a/relaisclient.h +++ b/relaisclient.h @@ -27,6 +27,7 @@ public Q_SLOTS: void on(); void off(); void toggle(); + void reboot(); void requestStatus(); private Q_SLOTS: diff --git a/relaiswebserver.cpp b/relaiswebserver.cpp index ca685fa..19997bb 100644 --- a/relaiswebserver.cpp +++ b/relaiswebserver.cpp @@ -22,11 +22,10 @@ void RelaisWebserver::handleRequest(HttpClientConnection *connection, const Http HttpResponse response; response.protocol = request.protocol; response.statusCode = HttpResponse::StatusCode::BadRequest; - response.body = "Path does not start with /"; response.headers.insert(QStringLiteral("Server"), QStringLiteral("Hatschi Server 1.0")); response.headers.insert(QStringLiteral("Content-Type"), QStringLiteral("text/html")); - connection->sendResponse(response); + connection->sendResponse(response, tr("Path does not start with /")); return; } @@ -84,6 +83,12 @@ void RelaisWebserver::handleRequest(HttpClientConnection *connection, const Http redirectRoot(connection, request); return; } + else if(parts.at(3) == "reboot") + { + client->reboot(); + redirectRoot(connection, request); + return; + } else { handle404(connection, request); @@ -124,6 +129,8 @@ void RelaisWebserver::handleRoot(HttpClientConnection *connection, const HttpReq if(client->status() != QStringLiteral("off")) output.append("" % tr("off") % " "); + + output.append("" % tr("reboot") % " "); output.append(""); output.append("" % tr("Delete") % ""); output.append(""); @@ -134,11 +141,10 @@ void RelaisWebserver::handleRoot(HttpClientConnection *connection, const HttpReq HttpResponse response; response.protocol = request.protocol; response.statusCode = HttpResponse::StatusCode::OK; - response.body = output.toUtf8(); response.headers.insert(QStringLiteral("Server"), QStringLiteral("Hatschi Server 1.0")); response.headers.insert(QStringLiteral("Content-Type"), QStringLiteral("text/html")); - connection->sendResponse(response); + connection->sendResponse(response, output); } void RelaisWebserver::redirectRoot(HttpClientConnection *connection, const HttpRequest &request) @@ -146,12 +152,12 @@ void RelaisWebserver::redirectRoot(HttpClientConnection *connection, const HttpR HttpResponse response; response.protocol = request.protocol; response.statusCode = HttpResponse::StatusCode::Found; - response.body = QByteArrayLiteral("Follow this link"); + response.headers.insert(QStringLiteral("Server"), QStringLiteral("Hatschi Server 1.0")); response.headers.insert(QStringLiteral("Content-Type"), QStringLiteral("text/html")); response.headers.insert(QStringLiteral("Location"), QStringLiteral("/")); - connection->sendResponse(response); + connection->sendResponse(response, "" % tr("Follow this link") % ""); } void RelaisWebserver::handle404(HttpClientConnection *connection, const HttpRequest &request) @@ -159,11 +165,10 @@ void RelaisWebserver::handle404(HttpClientConnection *connection, const HttpRequ HttpResponse response; response.protocol = request.protocol; response.statusCode = HttpResponse::StatusCode::NotFound; - response.body = "Not Found"; response.headers.insert(QStringLiteral("Server"), QStringLiteral("Hatschi Server 1.0")); response.headers.insert(QStringLiteral("Content-Type"), QStringLiteral("text/html")); - connection->sendResponse(response); + connection->sendResponse(response, tr("Not Found")); } QString RelaisWebserver::clientId(RelaisClient *client)