summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBjörn Hagemeister2014-09-04 18:10:57 +0200
committerBjörn Hagemeister2014-09-04 18:10:57 +0200
commitde8cae01617b57ebd36a7d3fab3b4875b0da2255 (patch)
tree27a2fbc5db83225fc552000f7ddb5c778c55e920
parentMerge branch 'master' of git.openslx.org:pvs2 (diff)
downloadpvs2-de8cae01617b57ebd36a7d3fab3b4875b0da2255.tar.gz
pvs2-de8cae01617b57ebd36a7d3fab3b4875b0da2255.tar.xz
pvs2-de8cae01617b57ebd36a7d3fab3b4875b0da2255.zip
The sessionID is ignored by manager if client is connecting via auto-connect.
-rw-r--r--src/client/net/serverdiscovery.cpp6
-rw-r--r--src/client/toolbar/toolbar.cpp19
-rw-r--r--src/server/mainwindow/mainwindow.cpp18
-rw-r--r--src/server/mainwindow/mainwindow.h1
-rw-r--r--src/server/net/discoverylistener.cpp9
-rw-r--r--src/server/util/global.cpp13
-rw-r--r--src/server/util/global.h14
7 files changed, 53 insertions, 27 deletions
diff --git a/src/client/net/serverdiscovery.cpp b/src/client/net/serverdiscovery.cpp
index 2cd0796..0062561 100644
--- a/src/client/net/serverdiscovery.cpp
+++ b/src/client/net/serverdiscovery.cpp
@@ -47,10 +47,10 @@ ServerDiscovery::~ServerDiscovery()
*/
void ServerDiscovery::start(const QByteArray& sessionName, QString mgrIP)
{
- if (mgrIP != NULL) {
+ if (!mgrIP.isEmpty()) {
_mgrIP.setAddress(mgrIP);
} else {
- _mgrIP = NULL;
+ _mgrIP = QHostAddress::Null;
}
//assert(!this->isActive());
@@ -176,7 +176,7 @@ void ServerDiscovery::onUdpReadyRead()
}
// If so, check if the submitted hash seems valid
- if (genSha1(&_nameBytes, &_salt2, &iplist, &port, &cert) != hash)
+ if (genSha1(&_nameBytes, &_salt2, &iplist, &port, &cert) != hash && _mgrIP != addr)
{
// did not match local session name, or other data was spoofed
++_hashErrorCount;
diff --git a/src/client/toolbar/toolbar.cpp b/src/client/toolbar/toolbar.cpp
index 0111c1c..4b64b62 100644
--- a/src/client/toolbar/toolbar.cpp
+++ b/src/client/toolbar/toolbar.cpp
@@ -30,7 +30,7 @@ Toolbar::Toolbar(const QByteArray sessionName, QWidget *parent)
: Toolbar(parent)
{
qDebug() << "sessionName - constructor";
- _connectWindow->connectToSession(sessionName, NULL);
+ _connectWindow->connectToSession(sessionName, "");
}
/***************************************************************************//**
@@ -50,16 +50,7 @@ Toolbar::Toolbar(const bool autoConnect, QWidget *parent) : Toolbar(parent)
if (autoConnect) {
// Try getting manager ip.
QString mgrIp = identifyMgrIP();
- qDebug() << "mgrIP: " << mgrIp;
- if (mgrIp != NULL) {
- qDebug() << "Starting WITH specific mgrIP";
- _connectWindow->connectToSession("", mgrIp);
- } else {
- qDebug() << "Starting WITHOUT specific mgrIP";
- _connectWindow->connectToSession("", NULL);
- }
- } else {
- _connectWindow->connectToSession("", NULL);
+ _connectWindow->connectToSession("", mgrIp);
}
}
@@ -183,7 +174,7 @@ QString Toolbar::identifyMgrIP()
if (!conf.contains("rooms")) {
qDebug() << "Invalid config file!";
- return NULL;
+ return "";
}
QStringList rooms = conf.value("rooms").toStringList();
@@ -195,7 +186,7 @@ QString Toolbar::identifyMgrIP()
conf.beginGroup(i);
if (!conf.contains("mgrIP")) {
qDebug() << "Invalid config file!";
- return NULL;
+ return "";
}
// Find the managerIP of current room.
@@ -222,7 +213,7 @@ QString Toolbar::identifyMgrIP()
}
conf.endGroup();
}
- return NULL;
+ return "";
}
/*
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_ */