From 7213e10ba8ae2c96e810567a8ee93eb82cf4b0e2 Mon Sep 17 00:00:00 2001 From: doitux Date: Tue, 13 Jul 2010 20:55:01 +0000 Subject: [PATCH] implement close log in log.cpp again --- src/chatcleaner/cleanerserver.cpp | 284 ++++++++++----------- src/gui/qt/gametable/log/log.cpp | 22 +- src/gui/qt/startwindow/startwindowimpl.cpp | 26 +- 3 files changed, 168 insertions(+), 164 deletions(-) diff --git a/src/chatcleaner/cleanerserver.cpp b/src/chatcleaner/cleanerserver.cpp index f4b07f21..04420b14 100644 --- a/src/chatcleaner/cleanerserver.cpp +++ b/src/chatcleaner/cleanerserver.cpp @@ -13,85 +13,85 @@ using namespace std; CleanerServer::CleanerServer(): config(0), blockConnection(false), m_recvBufUsed(0), secondsSinceLastConfigChange(0) { - config = new CleanerConfig; + config = new CleanerConfig; - clientSecret = QString::fromUtf8(config->readConfigString("ClientAuthString").c_str()); - serverSecret = QString::fromUtf8(config->readConfigString("ServerAuthString").c_str()); - - myMessageFilter = new MessageFilter(config); - tcpServer = new QTcpServer(); - tcpServer->setMaxPendingConnections(1); - - if (!tcpServer->listen(QHostAddress(QString::fromUtf8(config->readConfigString("HostAddress").c_str())), config->readConfigInt("DefaultListenPort")) ) { - qDebug() << QString("Unable to start the server: %1.").arg(tcpServer->errorString()); - return; - } - qDebug() << QString("The server is running on port %1.").arg(tcpServer->serverPort()); + clientSecret = QString::fromUtf8(config->readConfigString("ClientAuthString").c_str()); + serverSecret = QString::fromUtf8(config->readConfigString("ServerAuthString").c_str()); - configRefreshTimer = new QTimer(); - - connect(configRefreshTimer, SIGNAL(timeout()), this, SLOT(refreshConfig())); - connect(tcpServer, SIGNAL(newConnection()), this, SLOT(newCon())); - - refreshConfig(); - configRefreshTimer->start(10000); + myMessageFilter = new MessageFilter(config); + tcpServer = new QTcpServer(); + tcpServer->setMaxPendingConnections(1); + + if (!tcpServer->listen(QHostAddress(QString::fromUtf8(config->readConfigString("HostAddress").c_str())), config->readConfigInt("DefaultListenPort")) ) { + qDebug() << QString("Unable to start the server: %1.").arg(tcpServer->errorString()); + return; + } + qDebug() << QString("The server is running on port %1.").arg(tcpServer->serverPort()); + + configRefreshTimer = new QTimer(); + + connect(configRefreshTimer, SIGNAL(timeout()), this, SLOT(refreshConfig())); + connect(tcpServer, SIGNAL(newConnection()), this, SLOT(newCon())); + + refreshConfig(); + configRefreshTimer->start(10000); } CleanerServer::~CleanerServer() { - delete config; - delete myMessageFilter; - delete tcpServer; - delete configRefreshTimer; + delete config; + delete myMessageFilter; + delete tcpServer; + delete configRefreshTimer; } void CleanerServer::newCon() - { - if(!blockConnection) { - tcpSocket = tcpServer->nextPendingConnection(); - connect(tcpSocket, SIGNAL(readyRead()), this, SLOT(onRead())); - connect(tcpSocket, SIGNAL(stateChanged(QAbstractSocket::SocketState)), this, SLOT(socketStateChanged(QAbstractSocket::SocketState))); - blockConnection = true; +{ + if(!blockConnection) { + tcpSocket = tcpServer->nextPendingConnection(); + connect(tcpSocket, SIGNAL(readyRead()), this, SLOT(onRead())); + connect(tcpSocket, SIGNAL(stateChanged(QAbstractSocket::SocketState)), this, SLOT(socketStateChanged(QAbstractSocket::SocketState))); + blockConnection = true; } - } +} void CleanerServer::onRead() { - qint64 bytesRead = tcpSocket->read((char *)m_recvBuf + m_recvBufUsed, sizeof(m_recvBuf) - m_recvBufUsed); - bool error = bytesRead < 1; - if (!error) - { - m_recvBufUsed += bytesRead; + qint64 bytesRead = tcpSocket->read((char *)m_recvBuf + m_recvBufUsed, sizeof(m_recvBuf) - m_recvBufUsed); + bool error = bytesRead < 1; + if (!error) + { + m_recvBufUsed += bytesRead; - asn_dec_rval_t retVal; - do - { - // Try to decode the packets. - InternalChatCleanerPacket recvMsg; - retVal = ber_decode(0, &asn_DEF_ChatCleanerMessage, (void **)recvMsg.GetMsgPtr(), m_recvBuf, m_recvBufUsed); - if(retVal.code == RC_OK) - { - if (retVal.consumed < m_recvBufUsed) - { - m_recvBufUsed -= retVal.consumed; - memmove(m_recvBuf, m_recvBuf + retVal.consumed, m_recvBufUsed); - } - else - m_recvBufUsed = 0; + asn_dec_rval_t retVal; + do + { + // Try to decode the packets. + InternalChatCleanerPacket recvMsg; + retVal = ber_decode(0, &asn_DEF_ChatCleanerMessage, (void **)recvMsg.GetMsgPtr(), m_recvBuf, m_recvBufUsed); + if(retVal.code == RC_OK) + { + if (retVal.consumed < m_recvBufUsed) + { + m_recvBufUsed -= retVal.consumed; + memmove(m_recvBuf, m_recvBuf + retVal.consumed, m_recvBufUsed); + } + else + m_recvBufUsed = 0; - // Handle the packets. - error = handleMessage(recvMsg); - } - } while (!error && retVal.code == RC_OK); - } + // Handle the packets. + error = handleMessage(recvMsg); + } + } while (!error && retVal.code == RC_OK); + } - if (error) - { - qDebug() << "Error handling packets from client."; - tcpSocket->close(); - } + if (error) + { + qDebug() << "Error handling packets from client."; + tcpSocket->close(); + } -/* char buf[1024]; + /* char buf[1024]; tcpSocket->readLine(buf, sizeof(buf)); QString message = QString::fromUtf8("%1").arg(buf); @@ -105,100 +105,100 @@ void CleanerServer::onRead() } bool CleanerServer::handleMessage(InternalChatCleanerPacket &msg) { - bool error = true; - if (msg.GetMsg()->present == ChatCleanerMessage_PR_cleanerInitMessage) - { - CleanerInitMessage_t *netInit = &msg.GetMsg()->choice.cleanerInitMessage; - if (netInit->requestedVersion == CLEANER_PROTOCOL_VERSION) - { - string tmpClientSecret((const char *)netInit->clientSecret.buf, netInit->clientSecret.size); - if (clientSecret == QString::fromStdString(tmpClientSecret)) - { - error = false; + bool error = true; + if (msg.GetMsg()->present == ChatCleanerMessage_PR_cleanerInitMessage) + { + CleanerInitMessage_t *netInit = &msg.GetMsg()->choice.cleanerInitMessage; + if (netInit->requestedVersion == CLEANER_PROTOCOL_VERSION) + { + string tmpClientSecret((const char *)netInit->clientSecret.buf, netInit->clientSecret.size); + if (clientSecret == QString::fromStdString(tmpClientSecret)) + { + error = false; - InternalChatCleanerPacket tmpAck; - tmpAck.GetMsg()->present = ChatCleanerMessage_PR_cleanerInitAckMessage; - CleanerInitAckMessage_t *netAck = &tmpAck.GetMsg()->choice.cleanerInitAckMessage; - netAck->serverVersion = CLEANER_PROTOCOL_VERSION; - string tmpServerSecret(serverSecret.toStdString()); - OCTET_STRING_fromBuf(&netAck->serverSecret, - tmpServerSecret.c_str(), - tmpServerSecret.length()); - sendMessageToClient(tmpAck); - } - else - qDebug() << "Invalid client secret."; - } - else - qDebug() << "Invalid client version: " << netInit->requestedVersion; - } - else if (msg.GetMsg()->present == ChatCleanerMessage_PR_cleanerChatRequestMessage) - { - error = false; - CleanerChatRequestMessage_t *netRequest = &msg.GetMsg()->choice.cleanerChatRequestMessage; - unsigned playerId = netRequest->playerId; - QString nick(QString::fromUtf8( - string((const char *)netRequest->playerName.buf, netRequest->playerName.size).c_str())); - QString message(QString::fromUtf8( - string((const char *)netRequest->chatMessage.buf, netRequest->chatMessage.size).c_str())); - QStringList checkreturn = myMessageFilter->check(playerId, nick, message); - QString checkAction = checkreturn.at(0); - QString checkMessage = checkreturn.at(1); + InternalChatCleanerPacket tmpAck; + tmpAck.GetMsg()->present = ChatCleanerMessage_PR_cleanerInitAckMessage; + CleanerInitAckMessage_t *netAck = &tmpAck.GetMsg()->choice.cleanerInitAckMessage; + netAck->serverVersion = CLEANER_PROTOCOL_VERSION; + string tmpServerSecret(serverSecret.toStdString()); + OCTET_STRING_fromBuf(&netAck->serverSecret, + tmpServerSecret.c_str(), + tmpServerSecret.length()); + sendMessageToClient(tmpAck); + } + else + qDebug() << "Invalid client secret."; + } + else + qDebug() << "Invalid client version: " << netInit->requestedVersion; + } + else if (msg.GetMsg()->present == ChatCleanerMessage_PR_cleanerChatRequestMessage) + { + error = false; + CleanerChatRequestMessage_t *netRequest = &msg.GetMsg()->choice.cleanerChatRequestMessage; + unsigned playerId = netRequest->playerId; + QString nick(QString::fromUtf8( + string((const char *)netRequest->playerName.buf, netRequest->playerName.size).c_str())); + QString message(QString::fromUtf8( + string((const char *)netRequest->chatMessage.buf, netRequest->chatMessage.size).c_str())); + QStringList checkreturn = myMessageFilter->check(playerId, nick, message); + QString checkAction = checkreturn.at(0); + QString checkMessage = checkreturn.at(1); - if (!checkAction.isEmpty()) - { - InternalChatCleanerPacket tmpReply; - tmpReply.GetMsg()->present = ChatCleanerMessage_PR_cleanerChatReplyMessage; - CleanerChatReplyMessage_t *netReply = &tmpReply.GetMsg()->choice.cleanerChatReplyMessage; - netReply->requestId = netRequest->requestId; - netReply->playerId = netRequest->playerId; + if (!checkAction.isEmpty()) + { + InternalChatCleanerPacket tmpReply; + tmpReply.GetMsg()->present = ChatCleanerMessage_PR_cleanerChatReplyMessage; + CleanerChatReplyMessage_t *netReply = &tmpReply.GetMsg()->choice.cleanerChatReplyMessage; + netReply->requestId = netRequest->requestId; + netReply->playerId = netRequest->playerId; - if(checkAction == "warn") { - netReply->cleanerActionType = cleanerActionType_cleanerActionWarning; - } - else if(checkAction == "kick") { - netReply->cleanerActionType = cleanerActionType_cleanerActionKick; - } - else if(checkAction == "kickban") { - netReply->cleanerActionType = cleanerActionType_cleanerActionBan; - } + if(checkAction == "warn") { + netReply->cleanerActionType = cleanerActionType_cleanerActionWarning; + } + else if(checkAction == "kick") { + netReply->cleanerActionType = cleanerActionType_cleanerActionKick; + } + else if(checkAction == "kickban") { + netReply->cleanerActionType = cleanerActionType_cleanerActionBan; + } - string tmpCheck(checkMessage.toUtf8()); - netReply->cleanerText = - OCTET_STRING_new_fromBuf( - &asn_DEF_OCTET_STRING, - (const char *)tmpCheck.c_str(), - tmpCheck.length()); - sendMessageToClient(tmpReply); - } - } - return error; + string tmpCheck(checkMessage.toUtf8()); + netReply->cleanerText = + OCTET_STRING_new_fromBuf( + &asn_DEF_OCTET_STRING, + (const char *)tmpCheck.c_str(), + tmpCheck.length()); + sendMessageToClient(tmpReply); + } + } + return error; } void CleanerServer::socketStateChanged(QAbstractSocket::SocketState state) { - qDebug() << "Socket state changed to: " << QAbstractSocket::UnconnectedState; - if(state == QAbstractSocket::UnconnectedState) blockConnection = false; + qDebug() << "Socket state changed to: " << QAbstractSocket::UnconnectedState; + if(state == QAbstractSocket::UnconnectedState) blockConnection = false; } void CleanerServer::refreshConfig() { - - QFileInfo configFileInfo(QString::fromUtf8(config->getConfigFileName().c_str())); - - if(configFileInfo.lastModified().secsTo(QDateTime::currentDateTime()) < 20) { - config->fillBuffer(); - } - - myMessageFilter->refreshConfig(); + + QFileInfo configFileInfo(QString::fromUtf8(config->getConfigFileName().c_str())); + + if(configFileInfo.lastModified().secsTo(QDateTime::currentDateTime()) < 20) { + config->fillBuffer(); + } + + myMessageFilter->refreshConfig(); } void CleanerServer::sendMessageToClient(InternalChatCleanerPacket &msg) { - unsigned char buf[MAX_CLEANER_PACKET_SIZE]; - asn_enc_rval_t e = der_encode_to_buffer(&asn_DEF_ChatCleanerMessage, msg.GetMsg(), buf, MAX_CLEANER_PACKET_SIZE); + unsigned char buf[MAX_CLEANER_PACKET_SIZE]; + asn_enc_rval_t e = der_encode_to_buffer(&asn_DEF_ChatCleanerMessage, msg.GetMsg(), buf, MAX_CLEANER_PACKET_SIZE); - if (e.encoded == -1) - qDebug() << "Failed to encode chat cleaner packet: " << msg.GetMsg()->present; - else - tcpSocket->write((const char *)buf, e.encoded); + if (e.encoded == -1) + qDebug() << "Failed to encode chat cleaner packet: " << msg.GetMsg()->present; + else + tcpSocket->write((const char *)buf, e.encoded); } diff --git a/src/gui/qt/gametable/log/log.cpp b/src/gui/qt/gametable/log/log.cpp index 7f2b3144..68324c70 100755 --- a/src/gui/qt/gametable/log/log.cpp +++ b/src/gui/qt/gametable/log/log.cpp @@ -197,17 +197,21 @@ Log::Log(gameTableImpl* w, ConfigFile *c) : myW(w), myConfig(c), myLogDir(0), my Log::~Log() { -qDebug() << "close log"; + cerr << "log destruktor"; + delete myConfig; + delete myLogDir; + delete myHtmlLogFile; + delete mySqliteLogDb; - // Datenbank schließe - mySqliteLogDb->close(); + myConfig = 0; +} - delete myConfig; - delete myLogDir; - delete myHtmlLogFile; - delete mySqliteLogDb; - - myConfig = 0; +void Log::closeLogDbAtExit() +{ + // Datenbank schließen + mySqliteLogDb->close(); + delete mySqliteLogDb; + mySqliteLogDb = NULL; } void Log::logPlayerActionMsg(QString msg, int playerID, int action, int setValue) { diff --git a/src/gui/qt/startwindow/startwindowimpl.cpp b/src/gui/qt/startwindow/startwindowimpl.cpp index a1aad9c3..a08d19ec 100644 --- a/src/gui/qt/startwindow/startwindowimpl.cpp +++ b/src/gui/qt/startwindow/startwindowimpl.cpp @@ -176,19 +176,19 @@ startWindowImpl::startWindowImpl(ConfigFile *c) startWindowImpl::~startWindowImpl() { - delete myNewGameDialog; - delete mySelectAvatarDialog; - delete mySettingsDialog; - delete myChangeHumanPlayerNameDialog; - delete myJoinNetworkGameDialog; - delete myConnectToServerDialog; - delete myStartNetworkGameDialog; - delete myCreateNetworkGameDialog; - delete myAboutPokerthDialog; - delete myGameLobbyDialog; - delete myTimeoutDialog; - delete myServerListDialog; - delete myInternetGameLoginDialog; +// delete myNewGameDialog; +// delete mySelectAvatarDialog; +// delete mySettingsDialog; +// delete myChangeHumanPlayerNameDialog; +// delete myJoinNetworkGameDialog; +// delete myConnectToServerDialog; +// delete myStartNetworkGameDialog; +// delete myCreateNetworkGameDialog; +// delete myAboutPokerthDialog; +// delete myGameLobbyDialog; +// delete myTimeoutDialog; +// delete myServerListDialog; +// delete myInternetGameLoginDialog; } void startWindowImpl::callNewGameDialog() {