Merge branch 'experimental' of git://cockatrice.git.sourceforge.net/gitroot/cockatrice/cockatrice
This commit is contained in:
commit
6b7c5eefd3
9 changed files with 50 additions and 33 deletions
|
@ -394,8 +394,10 @@ CardDragItem *CardItem::createDragItem(int _id, const QPointF &_pos, const QPoin
|
||||||
{
|
{
|
||||||
deleteDragItem();
|
deleteDragItem();
|
||||||
dragItem = new CardDragItem(this, _id, _pos, faceDown);
|
dragItem = new CardDragItem(this, _id, _pos, faceDown);
|
||||||
|
dragItem->setVisible(false);
|
||||||
scene()->addItem(dragItem);
|
scene()->addItem(dragItem);
|
||||||
dragItem->updatePosition(_scenePos);
|
dragItem->updatePosition(_scenePos);
|
||||||
|
dragItem->setVisible(true);
|
||||||
|
|
||||||
return dragItem;
|
return dragItem;
|
||||||
}
|
}
|
||||||
|
|
|
@ -92,7 +92,7 @@ bool UserListTWI::operator<(const QTreeWidgetItem &other) const
|
||||||
return data(0, Qt::UserRole).toInt() > other.data(0, Qt::UserRole).toInt();
|
return data(0, Qt::UserRole).toInt() > other.data(0, Qt::UserRole).toInt();
|
||||||
|
|
||||||
// Sort by name
|
// Sort by name
|
||||||
return data(2, Qt::UserRole).toString().toLower() < other.data(2, Qt::UserRole).toString().toLower();
|
return QString::localeAwareCompare(data(2, Qt::UserRole).toString(), other.data(2, Qt::UserRole).toString()) < 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
UserList::UserList(TabSupervisor *_tabSupervisor, AbstractClient *_client, UserListType _type, QWidget *parent)
|
UserList::UserList(TabSupervisor *_tabSupervisor, AbstractClient *_client, UserListType _type, QWidget *parent)
|
||||||
|
|
|
@ -57,8 +57,10 @@ AuthenticationResult Server::loginUser(Server_ProtocolHandler *session, QString
|
||||||
return authState;
|
return authState;
|
||||||
|
|
||||||
if (authState == PasswordRight) {
|
if (authState == PasswordRight) {
|
||||||
if (users.contains(name))
|
if (users.contains(name)) {
|
||||||
|
qDebug("Login denied: would overwrite old session");
|
||||||
return WouldOverwriteOldSession;
|
return WouldOverwriteOldSession;
|
||||||
|
}
|
||||||
} else if (authState == UnknownUser) {
|
} else if (authState == UnknownUser) {
|
||||||
// Change user name so that no two users have the same names,
|
// Change user name so that no two users have the same names,
|
||||||
// don't interfere with registered user names though.
|
// don't interfere with registered user names though.
|
||||||
|
|
|
@ -56,7 +56,7 @@ Server_Game::~Server_Game()
|
||||||
|
|
||||||
room->removeGame(this);
|
room->removeGame(this);
|
||||||
delete creatorInfo;
|
delete creatorInfo;
|
||||||
qDebug("Server_Game destructor");
|
qDebug() << "Server_Game destructor: gameId=" << gameId;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Server_Game::pingClockTimeout()
|
void Server_Game::pingClockTimeout()
|
||||||
|
|
|
@ -58,8 +58,8 @@ void Server_ProtocolHandler::prepareDestroy()
|
||||||
while (i.hasNext())
|
while (i.hasNext())
|
||||||
delete i.next().value();
|
delete i.next().value();
|
||||||
QMapIterator<QString, ServerInfo_User *> j(ignoreList);
|
QMapIterator<QString, ServerInfo_User *> j(ignoreList);
|
||||||
while (i.hasNext())
|
while (j.hasNext())
|
||||||
delete i.next().value();
|
delete j.next().value();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Server_ProtocolHandler::playerRemovedFromGame(Server_Game *game)
|
void Server_ProtocolHandler::playerRemovedFromGame(Server_Game *game)
|
||||||
|
@ -207,25 +207,26 @@ void Server_ProtocolHandler::processCommandContainer(CommandContainer *cont)
|
||||||
gameListMutex.lock();
|
gameListMutex.lock();
|
||||||
GameEventContainer *gQPublic = cont->getGameEventQueuePublic();
|
GameEventContainer *gQPublic = cont->getGameEventQueuePublic();
|
||||||
if (gQPublic) {
|
if (gQPublic) {
|
||||||
Server_Game *game = games.value(gQPublic->getGameId()).first;
|
QPair<Server_Game *, Server_Player *> gamePlayerPair = games.value(gQPublic->getGameId());
|
||||||
Server_Player *player = games.value(gQPublic->getGameId()).second;
|
if (gamePlayerPair.first) {
|
||||||
GameEventContainer *gQPrivate = cont->getGameEventQueuePrivate();
|
GameEventContainer *gQPrivate = cont->getGameEventQueuePrivate();
|
||||||
GameEventContainer *gQOmniscient = cont->getGameEventQueueOmniscient();
|
GameEventContainer *gQOmniscient = cont->getGameEventQueueOmniscient();
|
||||||
if (gQPrivate) {
|
if (gQPrivate) {
|
||||||
int privatePlayerId = cont->getPrivatePlayerId();
|
int privatePlayerId = cont->getPrivatePlayerId();
|
||||||
Server_Player *privatePlayer;
|
Server_Player *privatePlayer;
|
||||||
if (privatePlayerId == -1)
|
if (privatePlayerId == -1)
|
||||||
privatePlayer = player;
|
privatePlayer = gamePlayerPair.second;
|
||||||
else
|
else
|
||||||
privatePlayer = game->getPlayer(privatePlayerId);
|
privatePlayer = gamePlayerPair.first->getPlayer(privatePlayerId);
|
||||||
if (gQOmniscient) {
|
if (gQOmniscient) {
|
||||||
game->sendGameEventContainer(gQPublic, privatePlayer, true);
|
gamePlayerPair.first->sendGameEventContainer(gQPublic, privatePlayer, true);
|
||||||
game->sendGameEventContainerOmniscient(gQOmniscient, privatePlayer);
|
gamePlayerPair.first->sendGameEventContainerOmniscient(gQOmniscient, privatePlayer);
|
||||||
|
} else
|
||||||
|
gamePlayerPair.first->sendGameEventContainer(gQPublic, privatePlayer);
|
||||||
|
privatePlayer->sendProtocolItem(gQPrivate);
|
||||||
} else
|
} else
|
||||||
game->sendGameEventContainer(gQPublic, privatePlayer);
|
gamePlayerPair.first->sendGameEventContainer(gQPublic);
|
||||||
privatePlayer->sendProtocolItem(gQPrivate);
|
}
|
||||||
} else
|
|
||||||
game->sendGameEventContainer(gQPublic);
|
|
||||||
}
|
}
|
||||||
gameListMutex.unlock();
|
gameListMutex.unlock();
|
||||||
|
|
||||||
|
|
|
@ -172,6 +172,10 @@
|
||||||
<name>M11</name>
|
<name>M11</name>
|
||||||
<longname>Magic 2011</longname>
|
<longname>Magic 2011</longname>
|
||||||
</set>
|
</set>
|
||||||
|
<set import="1">
|
||||||
|
<name>M12</name>
|
||||||
|
<longname>Magic 2012</longname>
|
||||||
|
</set>
|
||||||
<set import="1">
|
<set import="1">
|
||||||
<name>COM</name>
|
<name>COM</name>
|
||||||
<longname>Magic: The Gathering-Commander</longname>
|
<longname>Magic: The Gathering-Commander</longname>
|
||||||
|
|
|
@ -37,9 +37,8 @@ void Servatrice_TcpServer::incomingConnection(int socketDescriptor)
|
||||||
} else {
|
} else {
|
||||||
QTcpSocket *socket = new QTcpSocket;
|
QTcpSocket *socket = new QTcpSocket;
|
||||||
socket->setSocketDescriptor(socketDescriptor);
|
socket->setSocketDescriptor(socketDescriptor);
|
||||||
logger->logMessage(QString("incoming connection: %1").arg(socket->peerAddress().toString()));
|
ServerSocketInterface *ssi = new ServerSocketInterface(server, socket);
|
||||||
|
logger->logMessage(QString("incoming connection: %1").arg(socket->peerAddress().toString()), ssi);
|
||||||
new ServerSocketInterface(server, socket);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -188,18 +187,27 @@ AuthenticationResult Servatrice::checkUserPassword(Server_ProtocolHandler *handl
|
||||||
QSqlQuery query;
|
QSqlQuery query;
|
||||||
query.prepare("select a.password, time_to_sec(timediff(now(), date_add(b.time_from, interval b.minutes minute))) < 0, b.minutes <=> 0 from " + dbPrefix + "_users a left join " + dbPrefix + "_bans b on b.id_user = a.id and b.time_from = (select max(c.time_from) from " + dbPrefix + "_bans c where c.id_user = a.id) where a.name = :name and a.active = 1");
|
query.prepare("select a.password, time_to_sec(timediff(now(), date_add(b.time_from, interval b.minutes minute))) < 0, b.minutes <=> 0 from " + dbPrefix + "_users a left join " + dbPrefix + "_bans b on b.id_user = a.id and b.time_from = (select max(c.time_from) from " + dbPrefix + "_bans c where c.id_user = a.id) where a.name = :name and a.active = 1");
|
||||||
query.bindValue(":name", user);
|
query.bindValue(":name", user);
|
||||||
if (!execSqlQuery(query))
|
if (!execSqlQuery(query)) {
|
||||||
|
qDebug("Login denied: SQL error");
|
||||||
return PasswordWrong;
|
return PasswordWrong;
|
||||||
|
}
|
||||||
|
|
||||||
if (query.next()) {
|
if (query.next()) {
|
||||||
if (query.value(1).toInt() || query.value(2).toInt())
|
if (query.value(1).toInt() || query.value(2).toInt()) {
|
||||||
|
qDebug("Login denied: banned");
|
||||||
return PasswordWrong;
|
return PasswordWrong;
|
||||||
if (query.value(0).toString() == password)
|
}
|
||||||
|
if (query.value(0).toString() == password) {
|
||||||
|
qDebug("Login accepted: password right");
|
||||||
return PasswordRight;
|
return PasswordRight;
|
||||||
else
|
} else {
|
||||||
|
qDebug("Login denied: password wrong");
|
||||||
return PasswordWrong;
|
return PasswordWrong;
|
||||||
} else
|
}
|
||||||
|
} else {
|
||||||
|
qDebug("Login accepted: unknown user");
|
||||||
return UnknownUser;
|
return UnknownUser;
|
||||||
|
}
|
||||||
} else
|
} else
|
||||||
return UnknownUser;
|
return UnknownUser;
|
||||||
}
|
}
|
||||||
|
|
|
@ -39,7 +39,7 @@ void ServerLogger::logMessage(QString message, ServerSocketInterface *ssi)
|
||||||
bufferMutex.lock();
|
bufferMutex.lock();
|
||||||
QString ssiString;
|
QString ssiString;
|
||||||
if (ssi)
|
if (ssi)
|
||||||
ssiString = QString::number((qulonglong) ssi) + " ";
|
ssiString = QString::number((qulonglong) ssi, 16) + " ";
|
||||||
buffer.append(QDateTime::currentDateTime().toString() + " " + QString::number((qulonglong) QThread::currentThread(), 16) + " " + ssiString + message);
|
buffer.append(QDateTime::currentDateTime().toString() + " " + QString::number((qulonglong) QThread::currentThread(), 16) + " " + ssiString + message);
|
||||||
bufferMutex.unlock();
|
bufferMutex.unlock();
|
||||||
|
|
||||||
|
|
|
@ -60,7 +60,7 @@ ServerSocketInterface::ServerSocketInterface(Servatrice *_server, QTcpSocket *_s
|
||||||
|
|
||||||
ServerSocketInterface::~ServerSocketInterface()
|
ServerSocketInterface::~ServerSocketInterface()
|
||||||
{
|
{
|
||||||
logger->logMessage("ServerSocketInterface destructor");
|
logger->logMessage("ServerSocketInterface destructor", this);
|
||||||
|
|
||||||
prepareDestroy();
|
prepareDestroy();
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue