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)