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..."