diff --git a/client/core/openvpnconfigurator.cpp b/client/core/openvpnconfigurator.cpp
index cfb4b146c..de0e74b3e 100644
--- a/client/core/openvpnconfigurator.cpp
+++ b/client/core/openvpnconfigurator.cpp
@@ -72,9 +72,9 @@ ErrorCode OpenVpnConfigurator::initPKI(const QString &path)
p.setWorkingDirectory(path);
-// QObject::connect(&p, &QProcess::channelReadyRead, [&](){
-// qDebug().noquote() << p.readAll();
-// });
+ // QObject::connect(&p, &QProcess::channelReadyRead, [&](){
+ // qDebug().noquote() << p.readAll();
+ // });
p.start();
p.waitForFinished();
@@ -125,15 +125,16 @@ OpenVpnConfigurator::ConnectionData OpenVpnConfigurator::createCertRequest()
connData.clientId = getRandomString(32);
QTemporaryDir dir;
-// if (dir.isValid()) {
-// // dir.path() returns the unique directory path
-// }
+ // if (dir.isValid()) {
+ // // dir.path() returns the unique directory path
+ // }
QString path = dir.path();
initPKI(path);
ErrorCode errorCode = genReq(path, connData.clientId);
+ Q_UNUSED(errorCode)
QFile req(path + "/pki/reqs/" + connData.clientId + ".req");
req.open(QIODevice::ReadOnly);
@@ -143,8 +144,8 @@ OpenVpnConfigurator::ConnectionData OpenVpnConfigurator::createCertRequest()
key.open(QIODevice::ReadOnly);
connData.privKey = key.readAll();
-// qDebug().noquote() << connData.request;
-// qDebug().noquote() << connData.privKey;
+ // qDebug().noquote() << connData.request;
+ // qDebug().noquote() << connData.privKey;
return connData;
}
@@ -155,7 +156,7 @@ OpenVpnConfigurator::ConnectionData OpenVpnConfigurator::prepareOpenVpnConfig(co
connData.host = credentials.hostName;
if (connData.privKey.isEmpty() || connData.request.isEmpty()) {
- *errorCode = ErrorCode::EasyRsaExecutableMissing;
+ *errorCode = ErrorCode::EasyRsaExecutableMissing;
return connData;
}
diff --git a/client/core/router.cpp b/client/core/router.cpp
index 0c230879d..3127549fd 100644
--- a/client/core/router.cpp
+++ b/client/core/router.cpp
@@ -11,13 +11,12 @@ Router &Router::Instance()
bool Router::routeAdd(const QString &ip, const QString &gw, QString mask)
{
-#ifdef Q_OS_WIN
-
qDebug().noquote() << QString("ROUTE ADD: IP:%1 %2 GW %3")
.arg(ip)
.arg(mask)
.arg(gw);
+#ifdef Q_OS_WIN
if (mask == "") {
mask = "255.255.255.255";
if (ip.endsWith(".0")) mask = "255.255.255.0";
@@ -108,7 +107,9 @@ bool Router::routeAdd(const QString &ip, const QString &gw, QString mask)
free(pIpForwardTable);
return (dwStatus == NO_ERROR);
-
+#else
+ // Not implemented yet
+ return false;
#endif
}
@@ -227,9 +228,11 @@ int Router::routeAddList(const QString &gw, const QStringList &ips)
if (pIpForwardTable)
free(pIpForwardTable);
- qDebug() << "Router::routeAddList finished, success: " << success_count << "/" << ips.size();
+ qDebug() << "Router::routeAddList finished, success: " << success_count << "/" << ips.size();
return success_count;
-
+#else
+ // Not implemented yet
+ return false;
#endif
}
@@ -260,7 +263,7 @@ bool Router::clearSavedRoutes()
}
if (dwStatus != ERROR_SUCCESS) {
- qDebug() << "Router::clearSavedRoutes : getIpForwardTable failed";
+ qDebug() << "Router::clearSavedRoutes : getIpForwardTable failed";
if (pIpForwardTable)
free(pIpForwardTable);
return false;
@@ -283,24 +286,31 @@ bool Router::clearSavedRoutes()
ipForwardRows.clear();
return true;
-
+#else
+ // Not implemented yet
+ return false;
#endif
}
bool Router::routeDelete(const QString &ip)
{
+ qDebug().noquote() << QString("ROUTE DELETE, IP: %1").arg(ip);
+
#ifdef Q_OS_WIN
- QProcess p;
- p.setProcessChannelMode(QProcess::MergedChannels);
- QString command = QString("route delete %1")
- .arg(ip);
+ QProcess p;
+ p.setProcessChannelMode(QProcess::MergedChannels);
+ QString command = QString("route delete %1")
+ .arg(ip);
- p.start(command);
- p.waitForFinished();
- qDebug().noquote() << "OUTPUT route delete: " + p.readAll();
+ p.start(command);
+ p.waitForFinished();
+ qDebug().noquote() << "OUTPUT route delete: " + p.readAll();
- return true;
-#endif
+ return true;
+#else
+ // Not implemented yet
+ return false;
+#endif
}
void Router::flushDns()
diff --git a/client/core/servercontroller.cpp b/client/core/servercontroller.cpp
index 198aac792..aa3bb9123 100644
--- a/client/core/servercontroller.cpp
+++ b/client/core/servercontroller.cpp
@@ -42,9 +42,9 @@ ErrorCode ServerController::runScript(const SshConnectionParameters &sshParams,
QEventLoop wait;
int exitStatus;
-// QObject::connect(proc.data(), &SshRemoteProcess::started, &wait, [](){
-// qDebug() << "Command started";
-// });
+ // QObject::connect(proc.data(), &SshRemoteProcess::started, &wait, [](){
+ // qDebug() << "Command started";
+ // });
QObject::connect(proc.data(), &SshRemoteProcess::closed, &wait, [&](int status){
exitStatus = status;
@@ -52,19 +52,19 @@ ErrorCode ServerController::runScript(const SshConnectionParameters &sshParams,
wait.quit();
});
- QObject::connect(proc.data(), &SshRemoteProcess::readyReadStandardOutput, [proc](){
- QString s = proc->readAllStandardOutput();
- if (s != "." && !s.isEmpty()) {
- qDebug().noquote() << s;
- }
- });
+ // QObject::connect(proc.data(), &SshRemoteProcess::readyReadStandardOutput, [proc](){
+ // QString s = proc->readAllStandardOutput();
+ // if (s != "." && !s.isEmpty()) {
+ // qDebug().noquote() << s;
+ // }
+ // });
- QObject::connect(proc.data(), &SshRemoteProcess::readyReadStandardError, [proc](){
- QString s = proc->readAllStandardError();
- if (s != "." && !s.isEmpty()) {
- qDebug().noquote() << s;
- }
- });
+ // QObject::connect(proc.data(), &SshRemoteProcess::readyReadStandardError, [proc](){
+ // QString s = proc->readAllStandardError();
+ // if (s != "." && !s.isEmpty()) {
+ // qDebug().noquote() << s;
+ // }
+ // });
proc->start();
@@ -82,7 +82,7 @@ ErrorCode ServerController::runScript(const SshConnectionParameters &sshParams,
}
ErrorCode ServerController::uploadTextFileToContainer(const ServerCredentials &credentials,
- QString &file, const QString &path)
+ QString &file, const QString &path)
{
QLoggingCategory::setFilterRules(QStringLiteral("qtc.ssh=false"));
@@ -106,9 +106,9 @@ ErrorCode ServerController::uploadTextFileToContainer(const ServerCredentials &c
QEventLoop wait;
int exitStatus = 0;
-// QObject::connect(proc.data(), &SshRemoteProcess::started, &wait, [](){
-// qDebug() << "Command started";
-// });
+ // QObject::connect(proc.data(), &SshRemoteProcess::started, &wait, [](){
+ // qDebug() << "Command started";
+ // });
QObject::connect(proc.data(), &SshRemoteProcess::closed, &wait, [&](int status){
//qDebug() << "Remote process exited with status" << status;
@@ -116,13 +116,13 @@ ErrorCode ServerController::uploadTextFileToContainer(const ServerCredentials &c
wait.quit();
});
-// QObject::connect(proc.data(), &SshRemoteProcess::readyReadStandardOutput, [proc](){
-// qDebug().noquote() << proc->readAllStandardOutput();
-// });
+ // QObject::connect(proc.data(), &SshRemoteProcess::readyReadStandardOutput, [proc](){
+ // qDebug().noquote() << proc->readAllStandardOutput();
+ // });
-// QObject::connect(proc.data(), &SshRemoteProcess::readyReadStandardError, [proc](){
-// qDebug().noquote() << proc->readAllStandardError();
-// });
+ // QObject::connect(proc.data(), &SshRemoteProcess::readyReadStandardError, [proc](){
+ // qDebug().noquote() << proc->readAllStandardError();
+ // });
proc->start();
wait.exec();
@@ -284,24 +284,15 @@ ErrorCode ServerController::setupOpenVpnServer(const ServerCredentials &credenti
ErrorCode e = runScript(sshParams(credentials), scriptData);
if (e) return e;
+ //return ok;
return checkOpenVpnServer(credentials);
}
ErrorCode ServerController::setupShadowSocksServer(const ServerCredentials &credentials)
{
- QString scriptData;
- QString scriptFileName = ":/server_scripts/setup_shadowsocks_server.sh";
- QFile file(scriptFileName);
- if (! file.open(QIODevice::ReadOnly)) return ErrorCode::InternalError;
+ Q_UNUSED(credentials)
- scriptData = file.readAll();
- if (scriptData.isEmpty()) return ErrorCode::InternalError;
-
- ErrorCode e = runScript(sshParams(credentials), scriptData);
- if (e) return e;
-
- return ErrorCode::NoError;
- //return checkShadowSocksServer(credentials);
+ return ErrorCode::NotImplementedError;
}
SshConnection *ServerController::connectToHost(const SshConnectionParameters &sshParams)
@@ -325,9 +316,9 @@ SshConnection *ServerController::connectToHost(const SshConnectionParameters &ss
});
-// QObject::connect(client, &SshConnection::dataAvailable, [&](const QString &message) {
-// qCritical() << "Ssh message:" << message;
-// });
+ // QObject::connect(client, &SshConnection::dataAvailable, [&](const QString &message) {
+ // qCritical() << "Ssh message:" << message;
+ // });
//qDebug() << "Connection state" << client->state();
@@ -337,22 +328,22 @@ SshConnection *ServerController::connectToHost(const SshConnectionParameters &ss
}
-// QObject::connect(&client, &SshClient::sshDataReceived, [&](){
-// qDebug().noquote() << "Data received";
-// });
+ // QObject::connect(&client, &SshClient::sshDataReceived, [&](){
+ // qDebug().noquote() << "Data received";
+ // });
-// if(client.sshState() != SshClient::SshState::Ready) {
-// qCritical() << "Can't connect to server";
-// return false;
-// }
-// else {
-// qDebug() << "SSh connection established";
-// }
+ // if(client.sshState() != SshClient::SshState::Ready) {
+ // qCritical() << "Can't connect to server";
+ // return false;
+ // }
+ // else {
+ // qDebug() << "SSh connection established";
+ // }
-// QObject::connect(proc, &SshProcess::finished, &wait, &QEventLoop::quit);
-// QObject::connect(proc, &SshProcess::failed, &wait, &QEventLoop::quit);
+ // QObject::connect(proc, &SshProcess::finished, &wait, &QEventLoop::quit);
+ // QObject::connect(proc, &SshProcess::failed, &wait, &QEventLoop::quit);
return client;
}
diff --git a/client/protocols/openvpnprotocol.cpp b/client/protocols/openvpnprotocol.cpp
index 38f8aba5d..c310bd8bb 100644
--- a/client/protocols/openvpnprotocol.cpp
+++ b/client/protocols/openvpnprotocol.cpp
@@ -226,6 +226,7 @@ void OpenVpnProtocol::onReadyReadDataFromManagementServer()
else {
emit protocolError(ErrorCode::OpenVpnUnknownError);
}
+ return;
}
QByteArray data(line.toStdString().c_str());
diff --git a/client/ui/mainwindow.cpp b/client/ui/mainwindow.cpp
index fe017705f..718edeea2 100644
--- a/client/ui/mainwindow.cpp
+++ b/client/ui/mainwindow.cpp
@@ -27,16 +27,17 @@
#endif
MainWindow::MainWindow(QWidget *parent) :
-#ifdef Q_OS_WIN
+ #ifdef Q_OS_WIN
CFramelessWindow(parent),
-#else
+ #else
QMainWindow(parent),
-#endif
+ #endif
ui(new Ui::MainWindow),
- m_settings(new Settings),
- m_vpnConnection(nullptr)
+ m_vpnConnection(nullptr),
+ m_settings(new Settings)
{
ui->setupUi(this);
+ ui->label_error_text->clear();
ui->widget_tittlebar->installEventFilter(this);
ui->stackedWidget_main->setSpeed(200);
@@ -209,10 +210,10 @@ void MainWindow::onPushButtonNewServerConnectWithNewData(bool)
serverCredentials.password = ui->lineEdit_new_server_password->text();
bool ok = installServer(serverCredentials,
- ui->page_new_server,
- ui->progressBar_new_server_connection,
- ui->pushButton_new_server_connect_with_new_data,
- ui->label_new_server_wait_info);
+ ui->page_new_server,
+ ui->progressBar_new_server_connection,
+ ui->pushButton_new_server_connect_with_new_data,
+ ui->label_new_server_wait_info);
if (ok) {
m_settings->setServerCredentials(serverCredentials);
@@ -375,8 +376,7 @@ void MainWindow::onConnectionStateChanged(VpnProtocol::ConnectionState state)
void MainWindow::onVpnProtocolError(ErrorCode errorCode)
{
- // TODO fix crash on Windows when starting vpn and another vpn already connected
- //QMessageBox::critical(this, APPLICATION_NAME, errorString(errorCode));
+ ui->label_error_text->setText(errorString(errorCode));
}
void MainWindow::onPushButtonConnectClicked(bool checked)
@@ -507,13 +507,13 @@ void MainWindow::setTrayState(VpnProtocol::ConnectionState state)
setTrayIcon(QString(resourcesPath).arg(DisconnectedTrayIconName));
}
-//#ifdef Q_OS_MAC
-// // Get theme from current user (note, this app can be launched as root application and in this case this theme can be different from theme of real current user )
-// bool darkTaskBar = MacOSFunctions::instance().isMenuBarUseDarkTheme();
-// darkTaskBar = forceUseBrightIcons ? true : darkTaskBar;
-// resourcesPath = ":/images_mac/tray_icon/%1";
-// useIconName = useIconName.replace(".png", darkTaskBar ? "@2x.png" : " dark@2x.png");
-//#endif
+ //#ifdef Q_OS_MAC
+ // // Get theme from current user (note, this app can be launched as root application and in this case this theme can be different from theme of real current user )
+ // bool darkTaskBar = MacOSFunctions::instance().isMenuBarUseDarkTheme();
+ // darkTaskBar = forceUseBrightIcons ? true : darkTaskBar;
+ // resourcesPath = ":/images_mac/tray_icon/%1";
+ // useIconName = useIconName.replace(".png", darkTaskBar ? "@2x.png" : " dark@2x.png");
+ //#endif
}
@@ -528,6 +528,7 @@ void MainWindow::onTrayActivated(QSystemTrayIcon::ActivationReason reason)
void MainWindow::onConnect()
{
+ ui->label_error_text->clear();
ui->pushButton_connect->setChecked(true);
qApp->processEvents();
diff --git a/client/ui/mainwindow.ui b/client/ui/mainwindow.ui
index 6c20db414..ccba720ba 100644
--- a/client/ui/mainwindow.ui
+++ b/client/ui/mainwindow.ui
@@ -267,7 +267,7 @@ QStackedWidget QWidget {
- 1
+ 0
@@ -1140,6 +1140,28 @@ color: #181922;
false
+
+
+
+ 0
+ 300
+ 381
+ 51
+
+
+
+ Error text
+
+
+ false
+
+
+ Qt::AlignCenter
+
+
+ true
+
+
diff --git a/deploy/data/macos/openvpn b/deploy/data/macos/openvpn
old mode 100644
new mode 100755
diff --git a/deploy/data/macos/post_install.sh b/deploy/data/macos/post_install.sh
old mode 100644
new mode 100755
diff --git a/deploy/data/macos/post_uninstall.sh b/deploy/data/macos/post_uninstall.sh
old mode 100644
new mode 100755
diff --git a/deploy/macos.sh b/deploy/macos.sh
index efe505a80..5bb14f5d8 100755
--- a/deploy/macos.sh
+++ b/deploy/macos.sh
@@ -44,6 +44,9 @@ cp -av $DEPLOY_DATA_DIR/post_install.sh $INSTALLER_DATA_DIR/post_install.
cp -av $DEPLOY_DATA_DIR/post_uninstall.sh $INSTALLER_DATA_DIR/post_uninstall.sh
cp -av $DEPLOY_DATA_DIR/$PLIST_NAME $INSTALLER_DATA_DIR/$PLIST_NAME
+rm -f $BUNDLE_DIR/Contents/macOS/post_install.sh $BUNDLE_DIR/Contents/macOS/post_uninstall.sh
+chmod a+x $INSTALLER_DATA_DIR/post_install.sh $INSTALLER_DATA_DIR/post_uninstall.sh
+
cd $BUNDLE_DIR
tar czf $INSTALLER_DATA_DIR/$APP_NAME.tar.gz ./
diff --git a/deploy/windows.bat b/deploy/windows.bat
index 1a1bd1d93..f46d23c6f 100644
--- a/deploy/windows.bat
+++ b/deploy/windows.bat
@@ -45,6 +45,7 @@ del "%OUT_APP_DIR:"=%\*.cpp"
del "%OUT_APP_DIR:"=%\*.h"
del "%OUT_APP_DIR:"=%\*.res"
del "%OUT_APP_DIR:"=%\*.o"
+del "%OUT_APP_DIR:"=%\*.moc"
del "%OUT_APP_DIR:"=%\*.lib"
del "%OUT_APP_DIR:"=%\*.exp"
echo "Deploying..."