mirror of
https://github.com/hyperion-project/hyperion.ng.git
synced 2023-10-10 13:36:59 +02:00
5e559627be
* Push progress
TODO: rework RESET, probably to main.cpp again
* resetPassword rework
* enable administration restriction
* add short cmd for userdata
* Js apis
* Refactor JsonCB class
* Add userToken Auth
* Feat: Close connection if ext clients when def pw is set
* Feat: Protect db against pw/token tests
* WebUi PW Support (#9)
* Initial WebUi Password Support
* Small changes
* Initial WebUi Password Support
* Small changes
* Basic WebUi Token support
* added "removeStorage", added uiLock, updated login page
* Small improvments
* Small change
* Fix: prevent downgrade of authorization
* Add translation for localAdminAuth
* Feat: Show always save button in led layout
* Revert "Feat: Show always save button in led layout"
This reverts commit caad1dfcde
.
* Feat: Password change link in notification
* Fix: body padding modal overlap
* Feat: Add instance index to response on switch
* prevent schema error
Signed-off-by: Paulchen-Panther <Paulchen-Panter@protonmail.com>
* Feat: add pw save
* Feat: callout settings/pw replaced with notification
60 lines
1.7 KiB
C++
60 lines
1.7 KiB
C++
// project includes
|
|
#include "JsonClientConnection.h"
|
|
#include <api/JsonAPI.h>
|
|
|
|
// qt inc
|
|
#include <QTcpSocket>
|
|
#include <QHostAddress>
|
|
|
|
JsonClientConnection::JsonClientConnection(QTcpSocket *socket, const bool& localConnection)
|
|
: QObject()
|
|
, _socket(socket)
|
|
, _receiveBuffer()
|
|
, _log(Logger::getInstance("JSONCLIENTCONNECTION"))
|
|
{
|
|
connect(_socket, &QTcpSocket::disconnected, this, &JsonClientConnection::disconnected);
|
|
connect(_socket, &QTcpSocket::readyRead, this, &JsonClientConnection::readRequest);
|
|
// create a new instance of JsonAPI
|
|
_jsonAPI = new JsonAPI(socket->peerAddress().toString(), _log, localConnection, this);
|
|
// get the callback messages from JsonAPI and send it to the client
|
|
connect(_jsonAPI, &JsonAPI::callbackMessage, this , &JsonClientConnection::sendMessage);
|
|
connect(_jsonAPI, &JsonAPI::forceClose, this , [&](){ _socket->close(); } );
|
|
|
|
_jsonAPI->initialize();
|
|
}
|
|
|
|
void JsonClientConnection::readRequest()
|
|
{
|
|
_receiveBuffer += _socket->readAll();
|
|
// raw socket data, handling as usual
|
|
int bytes = _receiveBuffer.indexOf('\n') + 1;
|
|
while(bytes > 0)
|
|
{
|
|
// create message string
|
|
QString message(QByteArray(_receiveBuffer.data(), bytes));
|
|
|
|
// remove message data from buffer
|
|
_receiveBuffer = _receiveBuffer.mid(bytes);
|
|
|
|
// handle message
|
|
_jsonAPI->handleMessage(message);
|
|
|
|
// try too look up '\n' again
|
|
bytes = _receiveBuffer.indexOf('\n') + 1;
|
|
}
|
|
}
|
|
|
|
qint64 JsonClientConnection::sendMessage(QJsonObject message)
|
|
{
|
|
QJsonDocument writer(message);
|
|
QByteArray data = writer.toJson(QJsonDocument::Compact) + "\n";
|
|
|
|
if (!_socket || (_socket->state() != QAbstractSocket::ConnectedState)) return 0;
|
|
return _socket->write(data.data(), data.size());
|
|
}
|
|
|
|
void JsonClientConnection::disconnected(void)
|
|
{
|
|
emit connectionClosed();
|
|
}
|