mirror of
				https://github.com/hyperion-project/hyperion.ng.git
				synced 2025-03-01 10:33:28 +00:00 
			
		
		
		
	* 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
		
	
		
			
				
	
	
		
			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);
 | 
						|
}
 |