kopia lustrzana https://github.com/f4exb/sdrangel
HttpServer: use settings structures in place of QSettings (2)
rodzic
9a77311b2a
commit
3fb9d56d85
|
@ -4,13 +4,15 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "httpsessionstore.h"
|
#include "httpsessionstore.h"
|
||||||
|
#include "httpsessionssettings.h"
|
||||||
|
|
||||||
#include <QDateTime>
|
#include <QDateTime>
|
||||||
#include <QUuid>
|
#include <QUuid>
|
||||||
|
|
||||||
using namespace qtwebapp;
|
using namespace qtwebapp;
|
||||||
|
|
||||||
HttpSessionStore::HttpSessionStore(QSettings* settings, QObject* parent)
|
HttpSessionStore::HttpSessionStore(QSettings* settings, QObject* parent)
|
||||||
:QObject(parent)
|
:QObject(parent), sessionsSettings(0), useQtSettings(true)
|
||||||
{
|
{
|
||||||
this->settings=settings;
|
this->settings=settings;
|
||||||
connect(&cleanupTimer,SIGNAL(timeout()),this,SLOT(sessionTimerEvent()));
|
connect(&cleanupTimer,SIGNAL(timeout()),this,SLOT(sessionTimerEvent()));
|
||||||
|
@ -20,6 +22,17 @@ HttpSessionStore::HttpSessionStore(QSettings* settings, QObject* parent)
|
||||||
qDebug("HttpSessionStore: Sessions expire after %i milliseconds",expirationTime);
|
qDebug("HttpSessionStore: Sessions expire after %i milliseconds",expirationTime);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
HttpSessionStore::HttpSessionStore(HttpSessionsSettings* settings, QObject* parent)
|
||||||
|
:QObject(parent), settings(0), useQtSettings(false)
|
||||||
|
{
|
||||||
|
this->sessionsSettings=settings;
|
||||||
|
connect(&cleanupTimer,SIGNAL(timeout()),this,SLOT(sessionTimerEvent()));
|
||||||
|
cleanupTimer.start(60000);
|
||||||
|
cookieName=QByteArray(qPrintable(settings->cookieName));
|
||||||
|
expirationTime=settings->expirationTime;
|
||||||
|
qDebug("HttpSessionStore: Sessions expire after %i milliseconds",expirationTime);
|
||||||
|
}
|
||||||
|
|
||||||
HttpSessionStore::~HttpSessionStore()
|
HttpSessionStore::~HttpSessionStore()
|
||||||
{
|
{
|
||||||
cleanupTimer.stop();
|
cleanupTimer.stop();
|
||||||
|
@ -60,10 +73,10 @@ HttpSession HttpSessionStore::getSession(HttpRequest& request, HttpResponse& res
|
||||||
{
|
{
|
||||||
mutex.unlock();
|
mutex.unlock();
|
||||||
// Refresh the session cookie
|
// Refresh the session cookie
|
||||||
QByteArray cookieName=settings->value("cookieName","sessionid").toByteArray();
|
QByteArray cookieName = useQtSettings ? settings->value("cookieName","sessionid").toByteArray() : QByteArray(qPrintable(sessionsSettings->cookieName));
|
||||||
QByteArray cookiePath=settings->value("cookiePath").toByteArray();
|
QByteArray cookiePath = useQtSettings ? settings->value("cookiePath").toByteArray() : QByteArray(qPrintable(sessionsSettings->cookiePath));
|
||||||
QByteArray cookieComment=settings->value("cookieComment").toByteArray();
|
QByteArray cookieComment = useQtSettings ? settings->value("cookieComment").toByteArray() : QByteArray(qPrintable(sessionsSettings->cookieComment));
|
||||||
QByteArray cookieDomain=settings->value("cookieDomain").toByteArray();
|
QByteArray cookieDomain = useQtSettings ? settings->value("cookieDomain").toByteArray() : QByteArray(qPrintable(sessionsSettings->cookieDomain));
|
||||||
response.setCookie(HttpCookie(cookieName,session.getId(),expirationTime/1000,cookiePath,cookieComment,cookieDomain));
|
response.setCookie(HttpCookie(cookieName,session.getId(),expirationTime/1000,cookiePath,cookieComment,cookieDomain));
|
||||||
session.setLastAccess();
|
session.setLastAccess();
|
||||||
return session;
|
return session;
|
||||||
|
@ -72,10 +85,10 @@ HttpSession HttpSessionStore::getSession(HttpRequest& request, HttpResponse& res
|
||||||
// Need to create a new session
|
// Need to create a new session
|
||||||
if (allowCreate)
|
if (allowCreate)
|
||||||
{
|
{
|
||||||
QByteArray cookieName=settings->value("cookieName","sessionid").toByteArray();
|
QByteArray cookieName = useQtSettings ? settings->value("cookieName","sessionid").toByteArray() : QByteArray(qPrintable(sessionsSettings->cookieName));
|
||||||
QByteArray cookiePath=settings->value("cookiePath").toByteArray();
|
QByteArray cookiePath = useQtSettings ? settings->value("cookiePath").toByteArray() : QByteArray(qPrintable(sessionsSettings->cookiePath));
|
||||||
QByteArray cookieComment=settings->value("cookieComment").toByteArray();
|
QByteArray cookieComment = useQtSettings ? settings->value("cookieComment").toByteArray() : QByteArray(qPrintable(sessionsSettings->cookieComment));
|
||||||
QByteArray cookieDomain=settings->value("cookieDomain").toByteArray();
|
QByteArray cookieDomain = useQtSettings ? settings->value("cookieDomain").toByteArray() : QByteArray(qPrintable(sessionsSettings->cookieDomain));
|
||||||
HttpSession session(true);
|
HttpSession session(true);
|
||||||
qDebug("HttpSessionStore: create new session with ID %s",session.getId().data());
|
qDebug("HttpSessionStore: create new session with ID %s",session.getId().data());
|
||||||
sessions.insert(session.getId(),session);
|
sessions.insert(session.getId(),session);
|
||||||
|
|
|
@ -17,6 +17,8 @@
|
||||||
|
|
||||||
namespace qtwebapp {
|
namespace qtwebapp {
|
||||||
|
|
||||||
|
class HttpSessionsSettings;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Stores HTTP sessions and deletes them when they have expired.
|
Stores HTTP sessions and deletes them when they have expired.
|
||||||
The following configuration settings are required in the config file:
|
The following configuration settings are required in the config file:
|
||||||
|
@ -39,6 +41,7 @@ public:
|
||||||
|
|
||||||
/** Constructor. */
|
/** Constructor. */
|
||||||
HttpSessionStore(QSettings* settings, QObject* parent=NULL);
|
HttpSessionStore(QSettings* settings, QObject* parent=NULL);
|
||||||
|
HttpSessionStore(HttpSessionsSettings* settings, QObject* parent=NULL);
|
||||||
|
|
||||||
/** Destructor */
|
/** Destructor */
|
||||||
virtual ~HttpSessionStore();
|
virtual ~HttpSessionStore();
|
||||||
|
@ -86,6 +89,7 @@ private:
|
||||||
|
|
||||||
/** Configuration settings */
|
/** Configuration settings */
|
||||||
QSettings* settings;
|
QSettings* settings;
|
||||||
|
HttpSessionsSettings *sessionsSettings;
|
||||||
|
|
||||||
/** Timer to remove expired sessions */
|
/** Timer to remove expired sessions */
|
||||||
QTimer cleanupTimer;
|
QTimer cleanupTimer;
|
||||||
|
@ -99,6 +103,9 @@ private:
|
||||||
/** Used to synchronize threads */
|
/** Used to synchronize threads */
|
||||||
QMutex mutex;
|
QMutex mutex;
|
||||||
|
|
||||||
|
/** Settings flag */
|
||||||
|
bool useQtSettings;
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
|
|
||||||
/** Called every minute to cleanup expired sessions. */
|
/** Called every minute to cleanup expired sessions. */
|
||||||
|
|
Ładowanie…
Reference in New Issue