diff --git a/SnakeClient/SnakeApp/back-end/ProfileViewItems/mainmenumodel.cpp b/SnakeClient/SnakeApp/back-end/ProfileViewItems/mainmenumodel.cpp index 76e6b66..4e13a48 100644 --- a/SnakeClient/SnakeApp/back-end/ProfileViewItems/mainmenumodel.cpp +++ b/SnakeClient/SnakeApp/back-end/ProfileViewItems/mainmenumodel.cpp @@ -4,6 +4,7 @@ #include #include +#include void MainMenuModel::handleClientStatusChanged(bool) { auto status = OnlineStatus::ClientIsOffline; @@ -11,12 +12,22 @@ void MainMenuModel::handleClientStatusChanged(bool) { status = OnlineStatus::AuthorizationRequired; } + if (_client->isLogin()) { + status = OnlineStatus::Success; + } + setOnlineStatus(status); } MainMenuModel::MainMenuModel(QObject *ptr): QObject (ptr) { + + if(!ClientProtocol::initClientProtockol()) { + QuasarAppUtils::Params::verboseLog("client protockol not inited", QuasarAppUtils::Error); + } + _userViewModel = new UserView (this); _conf = Settings::instans(); + auto adderss = _conf->value(SERVER_ADDRESS, SERVER_ADDRESS_DEFAULT).toString(); auto port = _conf->value(SERVER_ADDRESS_PORT, SERVER_ADDRESS_DEFAULT_PORT).toInt(); _client = new ClientProtocol::Client(adderss, static_cast(port), this); @@ -26,6 +37,7 @@ MainMenuModel::MainMenuModel(QObject *ptr): QObject (ptr) { connect(_client, &ClientProtocol::Client::onlineChanged, this , &MainMenuModel::handleClientStatusChanged); + } QObject *MainMenuModel::userViewModel() const { diff --git a/SnakeClient/SnakeApp/back-end/settings.h b/SnakeClient/SnakeApp/back-end/settings.h index f5364f3..89dbd0b 100644 --- a/SnakeClient/SnakeApp/back-end/settings.h +++ b/SnakeClient/SnakeApp/back-end/settings.h @@ -6,7 +6,9 @@ #define SERVER_ADDRESS "SERVER_ADDRESS" #define SERVER_ADDRESS_PORT "SERVER_ADDRESS_PORT" -#define SERVER_ADDRESS_DEFAULT "178.124.160.6" +//#define SERVER_ADDRESS_DEFAULT "quasarapp.ddns.net" +#define SERVER_ADDRESS_DEFAULT "127.0.0.1" + #define SERVER_ADDRESS_DEFAULT_PORT DEFAULT_SNAKE_PORT class Settings diff --git a/SnakeClient/SnakeApp/front-end/MainMenu.qml b/SnakeClient/SnakeApp/front-end/MainMenu.qml index e574e50..5f51c1d 100644 --- a/SnakeClient/SnakeApp/front-end/MainMenu.qml +++ b/SnakeClient/SnakeApp/front-end/MainMenu.qml @@ -14,8 +14,10 @@ Item { signal playGame(); onOnlineStatusChanged: { - if (onlineStatus !== 4) { + if (onlineStatus) { loginPopUp._show(); + } else { + loginPopUp.close(); } } @@ -110,6 +112,21 @@ Item { source: LoginView { id: loginView loginStatus: onlineStatus + onSigLogin: { + if (!model) { + return; + } + + model.login(gmail, password); + } + onSigNewUser: { + if (!model) { + return; + } + + model.registerNewUser(gmail, userName, password); + + } } visible: true; diff --git a/SnakeServer/ClientProtocol/client.h b/SnakeServer/ClientProtocol/client.h index 136b05d..7c35c9c 100644 --- a/SnakeServer/ClientProtocol/client.h +++ b/SnakeServer/ClientProtocol/client.h @@ -43,7 +43,6 @@ private: bool sendPackage(Package &pkg); inline unsigned char nextIndex(); - bool ping(); QByteArray generateHash(const QByteArray &pass) const; @@ -68,6 +67,8 @@ public: */ bool login(const QString& gmail, const QByteArray &pass); + bool ping(); + void loginOut(); /** diff --git a/SnakeServer/ClientProtocol/rsakeyspool.h b/SnakeServer/ClientProtocol/rsakeyspool.h index 9637ebd..402f60a 100644 --- a/SnakeServer/ClientProtocol/rsakeyspool.h +++ b/SnakeServer/ClientProtocol/rsakeyspool.h @@ -27,6 +27,7 @@ public: bool take(QRSAEncryption::Rsa rsa, RSAKeyPair &res); void addNewKey(QRSAEncryption::Rsa rsa, const RSAKeyPair& key); int size(QRSAEncryption::Rsa rsa) const; + signals: void sigKeyTaked(); diff --git a/SnakeServer/ClientProtocol/server.cpp b/SnakeServer/ClientProtocol/server.cpp index 6993844..5fc08da 100644 --- a/SnakeServer/ClientProtocol/server.cpp +++ b/SnakeServer/ClientProtocol/server.cpp @@ -261,8 +261,10 @@ Server::~Server() { } bool Server::run(const QString &ip, unsigned short port) { - if (!listen(QHostAddress(ip), port) ) { - QuasarAppUtils::Params::verboseLog("listing fail " + this->errorString()); + + if (!listen(QHostAddress(ip), port)) { + QuasarAppUtils::Params::verboseLog("listing fail " + this->errorString(), + QuasarAppUtils::Error); return false; } diff --git a/SnakeServer/Server/mainserver.cpp b/SnakeServer/Server/mainserver.cpp index ada4223..a267d4b 100644 --- a/SnakeServer/Server/mainserver.cpp +++ b/SnakeServer/Server/mainserver.cpp @@ -271,18 +271,21 @@ MainServer::MainServer(bool forceKeys ,QObject *ptr): connect(_db, &SqlDBCache::sigPlayerChanged, _websocketctrl, &WebSocketController::handlePlayerChanged); + if (!ClientProtocol::initClientProtockol()){ + QuasarAppUtils::Params::verboseLog("clientProtocol no inited", QuasarAppUtils::Error); + } + } bool MainServer::run(const QString &ip, unsigned short port, const QString& db, - const QString& terminalServer, bool terminalForce) { + const QString& terminalServer) { if (!_db->initDb((db.size())? db: DEFAULT_DB_PATH)) { QuasarAppUtils::Params::verboseLog("init db fail!", QuasarAppUtils::Error); return false; } - if (!_terminalPort->run((terminalServer.isEmpty())? DEFAULT_SERVER : terminalServer, - terminalForce)) { + if (!_terminalPort->run((terminalServer.isEmpty())? DEFAULT_SERVER : terminalServer, true)) { QuasarAppUtils::Params::verboseLog("run termonal fail!", QuasarAppUtils::Error); return false; } diff --git a/SnakeServer/Server/mainserver.h b/SnakeServer/Server/mainserver.h index 36ca9a8..0c75e16 100644 --- a/SnakeServer/Server/mainserver.h +++ b/SnakeServer/Server/mainserver.h @@ -48,7 +48,7 @@ private slots: public: MainServer(bool forceKeys, QObject *ptr = nullptr); bool run(const QString& ip = "", unsigned short port = 0, const QString &db = "", - const QString &terminalServer = "", bool terminalForce = false); + const QString &terminalServer = ""); virtual ~MainServer(); }; diff --git a/SnakeServer/serverProtocolTests/tst_testsnakeserver.cpp b/SnakeServer/serverProtocolTests/tst_testsnakeserver.cpp index f539cb5..6f98098 100644 --- a/SnakeServer/serverProtocolTests/tst_testsnakeserver.cpp +++ b/SnakeServer/serverProtocolTests/tst_testsnakeserver.cpp @@ -596,7 +596,7 @@ void testSankeServer::testProtockols() { QCoreApplication app(argc, argv); auto serv = new MainServer(true, this); - QVERIFY(serv->run(TEST_SERVER_ADDRESS, TEST_SERVER_PORT , "", TEST_LOCAL_SERVER, true)); + QVERIFY(serv->run(TEST_SERVER_ADDRESS, TEST_SERVER_PORT , "", TEST_LOCAL_SERVER)); ServerProtocol::Client cleS(TEST_LOCAL_SERVER); ClientProtocol::Client cleC(TEST_SERVER_ADDRESS, TEST_SERVER_PORT);