From 47d19f4492718bbb4e9f522fcec29e017b949daf Mon Sep 17 00:00:00 2001
From: Andrei <EndrIIMail@gmail.com>
Date: Tue, 6 Aug 2019 17:03:49 +0300
Subject: [PATCH] simple fix server

---
 .../ProfileViewItems/mainmenumodel.cpp        | 12 ++++++++++++
 SnakeClient/SnakeApp/back-end/settings.h      |  4 +++-
 SnakeClient/SnakeApp/front-end/MainMenu.qml   | 19 ++++++++++++++++++-
 SnakeServer/ClientProtocol/client.h           |  3 ++-
 SnakeServer/ClientProtocol/rsakeyspool.h      |  1 +
 SnakeServer/ClientProtocol/server.cpp         |  6 ++++--
 SnakeServer/Server/mainserver.cpp             |  9 ++++++---
 SnakeServer/Server/mainserver.h               |  2 +-
 .../tst_testsnakeserver.cpp                   |  2 +-
 9 files changed, 48 insertions(+), 10 deletions(-)

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 <client.h>
 
 #include <back-end/settings.h>
+#include <quasarapp.h>
 
 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<unsigned short>(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);