# HG changeset patch # User unc0rr # Date 1235630360 0 # Node ID 81abed9d4c119324fdf6e659966f520a305b575d # Parent 16cdd1745b7336d383b26483c5aace4c02506157 Ask user password and send it to server diff -r 16cdd1745b73 -r 81abed9d4c11 QTfrontend/newnetclient.cpp --- a/QTfrontend/newnetclient.cpp Wed Feb 25 17:36:02 2009 +0000 +++ b/QTfrontend/newnetclient.cpp Thu Feb 26 06:39:20 2009 +0000 @@ -18,6 +18,9 @@ */ #include +#include + +#include #include "hwconsts.h" #include "newnetclient.h" @@ -429,7 +432,14 @@ } if (lst[0] == "ASKPASSWORD") { - RawSendNet(QString("PASSWORD")); + QString password = QInputDialog::getText(0, tr("Password"), tr("Enter your password:"), QLineEdit::Password); + + QCA::Initializer qcaInit; + QCA::Hash shaHash("md5"); + shaHash.update(password.toLatin1()); + QByteArray hashResult = shaHash.final().toByteArray(); + + RawSendNet(QString("PASSWORD%1%2").arg(delimeter).arg(QCA::arrayToHex(hashResult))); return; } diff -r 16cdd1745b73 -r 81abed9d4c11 gameServer/HWProtoNEState.hs --- a/gameServer/HWProtoNEState.hs Wed Feb 25 17:36:02 2009 +0000 +++ b/gameServer/HWProtoNEState.hs Thu Feb 26 06:39:20 2009 +0000 @@ -41,9 +41,14 @@ parsedProto = fromMaybe 0 (maybeRead protoNum :: Maybe Word16) checkPassword = if (not . null) (nick client) then [CheckRegistered] else [] -handleCmd_NotEntered clID clients _ ["PASSWORD"] = - [ModifyClient (\cl -> cl{logonPassed = True}), - MoveToLobby] +handleCmd_NotEntered clID clients _ ["PASSWORD", passwd] = + if passwd == webPassword client then + [ModifyClient (\cl -> cl{logonPassed = True}), + MoveToLobby] + else + [ByeClient "Authentication failed"] + where + client = clients IntMap.! clID handleCmd_NotEntered _ _ _ ["DUMP"] = diff -r 16cdd1745b73 -r 81abed9d4c11 hedgewars.kdevelop --- a/hedgewars.kdevelop Wed Feb 25 17:36:02 2009 +0000 +++ b/hedgewars.kdevelop Thu Feb 26 06:39:20 2009 +0000 @@ -50,6 +50,7 @@ *.dpr *.hs *.pro + Find*.cmake @@ -215,7 +216,7 @@ false - + true false