diff --git a/core/DapServersListRequester.h b/core/DapServersListRequester.h index 2f09d6518a9f7b3f162369058f3359597465b531..3a543ec921a5332b534edbea4af2447953d295a8 100644 --- a/core/DapServersListRequester.h +++ b/core/DapServersListRequester.h @@ -20,6 +20,11 @@ public: } return reply->errorString(); } + + QNetworkReply::NetworkError networkReplyError(){ + return qobject_cast<QNetworkReply *>(parent())->error(); + } + signals: void sigResponse(const QJsonDocument& doc); void sigNetworkError(QNetworkReply::NetworkError); diff --git a/core/DapSession.cpp b/core/DapSession.cpp index 5feabbb67d2262b10a867d1e546f526b08b2eca9..3354126657a45c59da883813620c641ff269984f 100644 --- a/core/DapSession.cpp +++ b/core/DapSession.cpp @@ -203,8 +203,14 @@ void DapSession::onEnc() { qDebug() << "Enc reply"; if (m_netEncryptReply && (m_netEncryptReply->error() != QNetworkReply::NoError)) { + qCritical() << "Network error: " << m_netEncryptReply->errorString(); - emit errorNetwork(m_netEncryptReply->errorString()); + if (m_netEncryptReply->error() == QNetworkReply::OperationCanceledError || m_netEncryptReply->error() == QNetworkReply::ConnectionRefusedError) + emit errorNetwork(6543 , m_netEncryptReply->errorString()); + else if (m_netEncryptReply->error() == QNetworkReply::UnknownNetworkError) + emit errorNetwork(3244 , m_netEncryptReply->errorString()); + else + emit errorNetwork(m_netEncryptReply->errorString()); return; } QByteArray arrData; @@ -479,7 +485,7 @@ void DapSession::onAuthorize() } } else if (m_xmlStreamReader.name() == "ts_active_till"){ DapDataLocal::instance()->serialKeyData()->setLicenseTermTill(m_xmlStreamReader.readElementText()); - qDebug() << "ts_active_till: " << DapDataLocal::instance()->serialKeyData()->licenseTermTill(); + qDebug() << "ts_active_till: " << DapDataLocal::instance()->serialKeyData()->licenseTermTill().toTime_t(); } else { m_userInform[m_xmlStreamReader.name().toString()] = m_xmlStreamReader.readElementText(); qDebug() << "Add user information: " << m_xmlStreamReader.name().toString() diff --git a/core/DapSession.h b/core/DapSession.h index 2bac3d900e5b74d127ef6e93cdddc1288a35de61..0f910583de8a8f2d9eae65a34fb8976acb10ea3b 100644 --- a/core/DapSession.h +++ b/core/DapSession.h @@ -170,6 +170,7 @@ signals: void errorAuthorization(const QString &); void activateKey(); void errorNetwork(const QString&); + void errorNetwork(const int&, const QString&); void authRequested(); void keyActRequested(); diff --git a/vpn/client/DapCmdHandlers/DapCmdAuth.cpp b/vpn/client/DapCmdHandlers/DapCmdAuth.cpp index 00f1eb95cf5ac3043396eefeffd472417b4494b8..6ca104365d48b9e63c9d144760e261ab637bc81c 100644 --- a/vpn/client/DapCmdHandlers/DapCmdAuth.cpp +++ b/vpn/client/DapCmdHandlers/DapCmdAuth.cpp @@ -39,6 +39,19 @@ void DapCmdAuth::sendCmdErrorAuth(const QString errorMsg) sendCmd(&response); } +void DapCmdAuth::sendCmdErrorAuth(const int& a_errorCode, const QString a_errorMsg) +{ + qWarning() <<"Error message: "<< a_errorMsg; + QJsonObject response; + QJsonObject errorObj; + + errorObj["code"] = a_errorCode; + errorObj["message"] = a_errorMsg; + response["error"] = errorObj; + + sendCmd(&response); +} + /** * @brief DapCmdAuth::handle * @param params diff --git a/vpn/client/DapCmdHandlers/DapCmdAuth.h b/vpn/client/DapCmdHandlers/DapCmdAuth.h index d7a40fa22217f45e8082114080bde3e32a6f3ea2..482f581019cc70b81a1b0dbb9494e027561cced4 100644 --- a/vpn/client/DapCmdHandlers/DapCmdAuth.h +++ b/vpn/client/DapCmdHandlers/DapCmdAuth.h @@ -13,7 +13,9 @@ public: virtual ~DapCmdAuth() override; void handle(const QJsonObject* params) override; +public slots: void sendCmdErrorAuth(const QString errorMsg); // TODO ENUM with errors and code in response + void sendCmdErrorAuth(const int& a_errorCode, const QString a_errorMsg); signals: void sigAuth(const QString& user, const QString& password, const QString& address, uint16_t port); }; diff --git a/vpn/client/DapCmdHandlers/DapCmdConnect.h b/vpn/client/DapCmdHandlers/DapCmdConnect.h index 5f01f0384667a33e0f914ea7739f66591fce97e3..7229fcc07dff73a6f762685deb42a7d48433a137 100644 --- a/vpn/client/DapCmdHandlers/DapCmdConnect.h +++ b/vpn/client/DapCmdHandlers/DapCmdConnect.h @@ -15,6 +15,7 @@ public: virtual ~DapCmdConnect() override; void handle(const QJsonObject* params) override; +public slots: void sendCmdError(const QString errorMsg); // TODO ENUM with errors and code in response void sendCmdError(int a_errorCode,const QString a_errorMsg); signals: diff --git a/vpn/client/DapCmdHandlers/DapCmdServersList.cpp b/vpn/client/DapCmdHandlers/DapCmdServersList.cpp index ea2d0b42bb4f4b8e2cb0423d523126cafef7d906..9fec22f23ebd1e03038523589da1085baa1489c4 100644 --- a/vpn/client/DapCmdHandlers/DapCmdServersList.cpp +++ b/vpn/client/DapCmdHandlers/DapCmdServersList.cpp @@ -42,6 +42,9 @@ void DapCmdServersList::handle(const QJsonObject* params) connect(reply, &DapServersListNetworkReply::sigNetworkError, [=]{ qWarning()<< "Network error: " << reply->errorString(); rotateList(); - sendSimpleError(-32002, reply->errorString()); + if (reply->networkReplyError() == QNetworkReply::UnknownNetworkError) + sendSimpleError(-32003, reply->errorString()); + else + sendSimpleError(-32002, reply->errorString()); }); } diff --git a/vpn/ui/DapCmdHandlers/DapCmdConnect.cpp b/vpn/ui/DapCmdHandlers/DapCmdConnect.cpp index 054f3068f2eb0d67d4c18c23f86f24ae6231271a..1b1aef5131c385b548683efe9a03b19e7f7a0568 100644 --- a/vpn/ui/DapCmdHandlers/DapCmdConnect.cpp +++ b/vpn/ui/DapCmdHandlers/DapCmdConnect.cpp @@ -45,5 +45,10 @@ void DapCmdConnect::handleError(int code, const QString& message) qDebug() << "handleError"; Q_UNUSED(code); qWarning() << *m_errorObject; + if (code == 6543 || code == -1025){ + emit errorMessage("Server not available. Please, try others or the same later"); + return; + } + emit errorMessage(message); } diff --git a/vpn/ui/DapCmdHandlers/DapCmdServersList.cpp b/vpn/ui/DapCmdHandlers/DapCmdServersList.cpp index 3777b8fe8fa2ae6d463f4eb805978f9c6c3eaa60..9fbbf62cff2e889df3070dc66a836a87beba7976 100644 --- a/vpn/ui/DapCmdHandlers/DapCmdServersList.cpp +++ b/vpn/ui/DapCmdHandlers/DapCmdServersList.cpp @@ -14,10 +14,7 @@ void DapCmdServersList::handleResult(const QJsonObject& result) if (servers.isEmpty()) { emit sigEmptyList("No servers available on this CDB. Try another..."); } else { - emit sigServersList(servers); - for(auto server : servers) { - qDebug() << server; - } + emit sigServersListUpdate(servers); } } else { qCritical() << "Error parse response from service"; @@ -35,6 +32,8 @@ void DapCmdServersList::handleError(int code, const QString& message) emit sigEmptyList(message); } else if (code == -32002) { emit sigErrorNetwork(message); + } else if (code == -32003) { + emit sigNetworkUnreachable(message); } qWarning() << *m_errorObject; } diff --git a/vpn/ui/DapCmdHandlers/DapCmdServersList.h b/vpn/ui/DapCmdHandlers/DapCmdServersList.h index b0714f839a9431af6091bcaec5bad6070822d007..dd00d0c8a6675ed0ef5b31c0c7e188b96d104867 100644 --- a/vpn/ui/DapCmdHandlers/DapCmdServersList.h +++ b/vpn/ui/DapCmdHandlers/DapCmdServersList.h @@ -13,9 +13,10 @@ protected: public: explicit DapCmdServersList(QObject *parent = nullptr); signals: - void sigServersList(const DapServerInfoList& servers); + void sigServersListUpdate(const DapServerInfoList& servers); void sigEmptyList(const QString &msg); void sigErrorNetwork(const QString &msg); + void sigNetworkUnreachable(const QString &msg); public slots: void sendCmdGetServersList() { sendCmd(); } }; diff --git a/vpn/ui/dialogs/SignInScreenSerialNumberBase.cpp b/vpn/ui/dialogs/SignInScreenSerialNumberBase.cpp index e2214bb6803f00214410fbf3850a61d9acad3585..512f4d5b5f8a79ccf69ae948184aa89666fe9042 100644 --- a/vpn/ui/dialogs/SignInScreenSerialNumberBase.cpp +++ b/vpn/ui/dialogs/SignInScreenSerialNumberBase.cpp @@ -348,6 +348,9 @@ QString SignInScreenSerialNumberBase::translatedErrorMsg(QString a_errorMsg) else if (a_errorMsg == "Serial key activated, try to authorize") return tr("Serial key activated, try to authorize"); + else if (a_errorMsg == "Server not available. Please, try others or the same later") + return tr("Server not available. Please, try others or the same later"); + else return a_errorMsg; } diff --git a/vpn/ui/dialogs/StartScreen.cpp b/vpn/ui/dialogs/StartScreen.cpp index 697c200d8a2ef87d87402a27e4074a2efbbc4f89..47057794b346eeaee29cb51c6f2909d6238985dc 100644 --- a/vpn/ui/dialogs/StartScreen.cpp +++ b/vpn/ui/dialogs/StartScreen.cpp @@ -24,7 +24,13 @@ void StartScreen::setState(ConnectionState a_state) m_ui->lblSystemStatus->setText(statusText); } +void StartScreen::setErrorMessage(const QString &msg) +{ + m_ui->lblSystemStatus->setText(msg); +} + void StartScreen::initVariantUi(QWidget *a_widget) { Q_UNUSED(a_widget) } + diff --git a/vpn/ui/dialogs/StartScreen.h b/vpn/ui/dialogs/StartScreen.h index 386b79dc054504e0186fcf206ce23e56d8c8441b..ca8f6a77a493bba87a76ad6b3c97b27be06efb70 100644 --- a/vpn/ui/dialogs/StartScreen.h +++ b/vpn/ui/dialogs/StartScreen.h @@ -26,6 +26,7 @@ public: virtual QString screenName() override; void setState(ConnectionState a_state); + void setErrorMessage(const QString &msg); protected: