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 caad1dfcdee311bb6496839752b2a2df3f0fd98b. * 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
46 lines
1.5 KiB
C++
46 lines
1.5 KiB
C++
#include "WebJsonRpc.h"
|
|
#include "QtHttpReply.h"
|
|
#include "QtHttpRequest.h"
|
|
#include "QtHttpServer.h"
|
|
#include "QtHttpClientWrapper.h"
|
|
|
|
#include <api/JsonAPI.h>
|
|
|
|
WebJsonRpc::WebJsonRpc(QtHttpRequest* request, QtHttpServer* server, const bool& localConnection, QtHttpClientWrapper* parent)
|
|
: QObject(parent)
|
|
, _server(server)
|
|
, _wrapper(parent)
|
|
, _log(Logger::getInstance("HTTPJSONRPC"))
|
|
{
|
|
const QString client = request->getClientInfo().clientAddress.toString();
|
|
_jsonAPI = new JsonAPI(client, _log, localConnection, this, true);
|
|
connect(_jsonAPI, &JsonAPI::callbackMessage, this, &WebJsonRpc::handleCallback);
|
|
connect(_jsonAPI, &JsonAPI::forceClose, [&]() { _wrapper->closeConnection(); _stopHandle = true; });
|
|
_jsonAPI->initialize();
|
|
}
|
|
|
|
void WebJsonRpc::handleMessage(QtHttpRequest* request)
|
|
{
|
|
// TODO better solution. If jsonAPI emits forceClose the request is deleted and the following call to this method results in segfault
|
|
if(!_stopHandle)
|
|
{
|
|
QByteArray header = request->getHeader("Authorization");
|
|
QByteArray data = request->getRawData();
|
|
_unlocked = true;
|
|
_jsonAPI->handleMessage(data,header);
|
|
}
|
|
}
|
|
|
|
void WebJsonRpc::handleCallback(QJsonObject obj)
|
|
{
|
|
// guard against wrong callbacks; TODO: Remove when JSONAPI is more solid
|
|
if(!_unlocked) return;
|
|
_unlocked = false;
|
|
// construct reply with headers timestamp and server name
|
|
QtHttpReply reply(_server);
|
|
QJsonDocument doc(obj);
|
|
reply.addHeader ("Content-Type", "application/json");
|
|
reply.appendRawData (doc.toJson());
|
|
_wrapper->sendToClientWithReply(&reply);
|
|
}
|