diff options
author | Björn Hagemeister | 2014-09-04 18:10:57 +0200 |
---|---|---|
committer | Björn Hagemeister | 2014-09-04 18:10:57 +0200 |
commit | de8cae01617b57ebd36a7d3fab3b4875b0da2255 (patch) | |
tree | 27a2fbc5db83225fc552000f7ddb5c778c55e920 /src/server | |
parent | Merge branch 'master' of git.openslx.org:pvs2 (diff) | |
download | pvs2-de8cae01617b57ebd36a7d3fab3b4875b0da2255.tar.gz pvs2-de8cae01617b57ebd36a7d3fab3b4875b0da2255.tar.xz pvs2-de8cae01617b57ebd36a7d3fab3b4875b0da2255.zip |
The sessionID is ignored by manager if client is connecting via auto-connect.
Diffstat (limited to 'src/server')
-rw-r--r-- | src/server/mainwindow/mainwindow.cpp | 18 | ||||
-rw-r--r-- | src/server/mainwindow/mainwindow.h | 1 | ||||
-rw-r--r-- | src/server/net/discoverylistener.cpp | 9 | ||||
-rw-r--r-- | src/server/util/global.cpp | 13 | ||||
-rw-r--r-- | src/server/util/global.h | 14 |
5 files changed, 45 insertions, 10 deletions
diff --git a/src/server/mainwindow/mainwindow.cpp b/src/server/mainwindow/mainwindow.cpp index 87e7471..c9eaf32 100644 --- a/src/server/mainwindow/mainwindow.cpp +++ b/src/server/mainwindow/mainwindow.cpp @@ -304,6 +304,7 @@ void MainWindow::tellClientCurrentSituation(Client* client) */ void MainWindow::tryToUseRoomTemplate() { + QMap<QString, QMap<QString, QPoint> > roomsList; SYSTEM_SETTINGS(conf); if (!conf.contains("rooms")) { @@ -327,7 +328,7 @@ void MainWindow::tryToUseRoomTemplate() for (int j = 0; j < size; j++) { conf.setArrayIndex(j); // qDebug() << "ip: " << conf.value("ip").toString() << " pos: " << conf.value("pos").toPoint(); - _rooms[i].append(qMakePair(conf.value("ip").toString(), conf.value("pos").toPoint())); + roomsList[i].insert(conf.value("ip").toString(), conf.value("pos").toPoint()); } conf.endArray(); @@ -338,6 +339,7 @@ void MainWindow::tryToUseRoomTemplate() if (address != QHostAddress(QHostAddress::LocalHost) && mgrIP == address.toString()) { qDebug("Found this ip in config."); + Global::setCurrentRoom(i); int size = conf.beginReadArray("client"); for (int j = 0; j < size; ++j) { conf.setArrayIndex(j); @@ -371,6 +373,7 @@ void MainWindow::tryToUseRoomTemplate() } conf.endGroup(); } + Global::setRooms(roomsList); } /***************************************************************************//** @@ -696,8 +699,8 @@ void MainWindow::onButtonReloadRoomConfig() { connect(_reloadWindow->ui->buttonBox, SIGNAL(accepted()), this, SLOT(onReloadRoomOk())); connect(_reloadWindow->ui->buttonBox, SIGNAL(rejected()), this, SLOT(onReloadRoomCancel())); - qDebug() << "in onButtonReloadRoomConfig!" << "size of room: " << _rooms.size(); - QList<QString> keyList = _rooms.keys(); + qDebug() << "in onButtonReloadRoomConfig!" << "size of room: " << Global::getRooms().size(); + QList<QString> keyList = Global::getRooms().keys(); for (QList<QString>::iterator it = keyList.begin(); it != keyList.end() ; it++) { _reloadWindow->ui->roomList->addItem(*it); } @@ -731,17 +734,18 @@ void MainWindow::onReloadRoomOk() // Load new room configuration. QString roomToReload = _reloadWindow->ui->roomList->currentItem()->data(0).toString(); // qDebug() << roomToReload; + Global::setCurrentRoom(roomToReload); _reloadWindow->ui->roomList->clear(); _reloadWindow->hide(); - QList<QPair<QString, QPoint>> room = _rooms[roomToReload]; + QMap<QString, QPoint> room = Global::getRooms()[roomToReload]; // qDebug() << " Room: " << room; // qDebug() << "_rooms: " << _rooms; - for (QList<QPair<QString, QPoint>>::iterator it = room.begin(); it != room.end(); ++it) + for (QMap<QString, QPoint>::iterator it = room.begin(); it != room.end(); ++it) { - QString computerId = (*it).first; - QPoint pos = (*it).second; + QString computerId = it.key(); + QPoint pos = it.value(); qDebug() << "ComputerID: " << computerId; qDebug() << "Pos: " << pos; diff --git a/src/server/mainwindow/mainwindow.h b/src/server/mainwindow/mainwindow.h index f8d0164..488ecc4 100644 --- a/src/server/mainwindow/mainwindow.h +++ b/src/server/mainwindow/mainwindow.h @@ -65,7 +65,6 @@ private: DiscoveryListener *_discoveryListener; FileDownloader _fileDownloader; QStringList _tutorList; - QMap<QString, QList<QPair<QString, QPoint> > > _rooms; static const QString sStrTutorNdef; static const QString sStrTutorOffline; diff --git a/src/server/net/discoverylistener.cpp b/src/server/net/discoverylistener.cpp index f3d7d39..58e877c 100644 --- a/src/server/net/discoverylistener.cpp +++ b/src/server/net/discoverylistener.cpp @@ -159,8 +159,13 @@ void DiscoveryListener::onReadyRead() if (!Network::isAddressInList(QString::fromUtf8(iplist), addr.toString())) continue; // If so, check if the submitted hash seems valid - if (genSha1(&Global::sessionNameArray(), &salt1, &iplist) != hash) - continue; // did not match local session name + if (genSha1(&Global::sessionNameArray(), &salt1, &iplist) != hash && + !(Global::getRooms()[Global::getCurrentRoom()].contains(addr.toString()))) + { + // did not match local session name and client is not in same room. + continue; + } + qDebug("Got matching discovery request..."); QByteArray myiplist(Network::interfaceAddressesToString().toUtf8()); QSslKey key; diff --git a/src/server/util/global.cpp b/src/server/util/global.cpp index 7bb3cc0..3ddbd65 100644 --- a/src/server/util/global.cpp +++ b/src/server/util/global.cpp @@ -9,6 +9,9 @@ QString Global::_sessionName = QString(); QByteArray Global::_sessionNameArray = QByteArray(); +QMap<QString, QMap<QString, QPoint> > Global::_rooms = + QMap<QString, QMap<QString, QPoint> >(); +QString Global::_currentRoom = QString(); void Global::setSessionName(const QString& name) { @@ -22,3 +25,13 @@ void Global::setSessionName() Global::_sessionName = name; Global::_sessionNameArray = name.toUtf8(); } + +void Global::setRooms(const QMap<QString, QMap<QString, QPoint> >& roomList) +{ + Global::_rooms = roomList; +} + +void Global::setCurrentRoom(QString room) +{ + Global::_currentRoom = room; +} diff --git a/src/server/util/global.h b/src/server/util/global.h index c5e0728..d4fed6c 100644 --- a/src/server/util/global.h +++ b/src/server/util/global.h @@ -10,6 +10,10 @@ #include <QString> #include <QByteArray> +#include <QMap> +#include <QPair> +#include <QPoint> +#include <QList> class Global { @@ -19,12 +23,22 @@ private: static QString _sessionName; static QByteArray _sessionNameArray; + static QMap<QString, QMap<QString, QPoint> > _rooms; + static QString _currentRoom; public: static const QString& sessionName() { return Global::_sessionName; } static const QByteArray& sessionNameArray() { return Global::_sessionNameArray; } static void setSessionName(const QString& name); static void setSessionName(); + + static void setRooms(const QMap<QString, QMap<QString, QPoint> > & roomList); + static const QMap<QString, QMap<QString, QPoint> >& getRooms() { + return _rooms; + } + + static void setCurrentRoom(QString room); + static const QString& getCurrentRoom() { return _currentRoom; } }; #endif /* GLOBAL_H_ */ |