mirror of
https://github.com/ProtonMail/proton-bridge.git
synced 2025-12-11 13:16:53 +00:00
fix(GODT-2807): fix issue where sessionID would not be removed from command-line on restart by bridge-gui.
This commit is contained in:
@ -20,6 +20,7 @@
|
|||||||
#include "QMLBackend.h"
|
#include "QMLBackend.h"
|
||||||
#include "SentryUtils.h"
|
#include "SentryUtils.h"
|
||||||
#include "Settings.h"
|
#include "Settings.h"
|
||||||
|
#include <bridgepp/CLI/CLIUtils.h>
|
||||||
#include <bridgepp/GRPC/GRPCClient.h>
|
#include <bridgepp/GRPC/GRPCClient.h>
|
||||||
#include <bridgepp/Exception/Exception.h>
|
#include <bridgepp/Exception/Exception.h>
|
||||||
#include <bridgepp/ProcessMonitor.h>
|
#include <bridgepp/ProcessMonitor.h>
|
||||||
@ -101,19 +102,23 @@ void AppController::onFatalError(Exception const &exception) {
|
|||||||
qApp->exit(EXIT_FAILURE);
|
qApp->exit(EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//****************************************************************************************************************************************************
|
||||||
|
/// \param[in] isCrashing Is the restart triggered by a crash.
|
||||||
|
//****************************************************************************************************************************************************
|
||||||
void AppController::restart(bool isCrashing) {
|
void AppController::restart(bool isCrashing) {
|
||||||
if (!launcher_.isEmpty()) {
|
if (launcher_.isEmpty()) {
|
||||||
QProcess p;
|
return;
|
||||||
log_->info(QString("Restarting - App : %1 - Args : %2").arg(launcher_, launcherArgs_.join(" ")));
|
|
||||||
QStringList args = launcherArgs_;
|
|
||||||
if (isCrashing) {
|
|
||||||
args.append(noWindowFlag);
|
|
||||||
}
|
|
||||||
|
|
||||||
p.startDetached(launcher_, args);
|
|
||||||
p.waitForStarted();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QProcess p;
|
||||||
|
QStringList args = stripStringParameterFromCommandLine("--session-id", launcherArgs_);
|
||||||
|
if (isCrashing) {
|
||||||
|
args.append(noWindowFlag);
|
||||||
|
}
|
||||||
|
|
||||||
|
log_->info(QString("Restarting - App : %1 - Args : %2").arg(launcher_, args.join(" ")));
|
||||||
|
p.startDetached(launcher_, args);
|
||||||
|
p.waitForStarted();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -136,6 +136,7 @@ add_custom_command(
|
|||||||
|
|
||||||
add_library(bridgepp
|
add_library(bridgepp
|
||||||
bridgepp/BridgeUtils.cpp bridgepp/BridgeUtils.h
|
bridgepp/BridgeUtils.cpp bridgepp/BridgeUtils.h
|
||||||
|
bridgepp/CLI/CLIUtils.cpp bridgepp/CLI/CLIUtils.h
|
||||||
bridgepp/Exception/Exception.h bridgepp/Exception/Exception.cpp
|
bridgepp/Exception/Exception.h bridgepp/Exception/Exception.cpp
|
||||||
bridgepp/GRPC/GRPCClient.cpp bridgepp/GRPC/GRPCClient.h
|
bridgepp/GRPC/GRPCClient.cpp bridgepp/GRPC/GRPCClient.h
|
||||||
bridgepp/GRPC/GRPCErrors.h bridgepp/GRPC/GRPCErrors.cpp
|
bridgepp/GRPC/GRPCErrors.h bridgepp/GRPC/GRPCErrors.cpp
|
||||||
@ -188,6 +189,7 @@ enable_testing()
|
|||||||
#*****************************************************************************************************************************************************
|
#*****************************************************************************************************************************************************
|
||||||
add_executable(bridgepp-test EXCLUDE_FROM_ALL
|
add_executable(bridgepp-test EXCLUDE_FROM_ALL
|
||||||
Test/TestBridgeUtils.cpp
|
Test/TestBridgeUtils.cpp
|
||||||
|
Test/TestCLI.cpp
|
||||||
Test/TestException.cpp
|
Test/TestException.cpp
|
||||||
Test/TestSessionID.cpp
|
Test/TestSessionID.cpp
|
||||||
Test/TestWorker.cpp Test/TestWorker.h
|
Test/TestWorker.cpp Test/TestWorker.h
|
||||||
|
|||||||
50
internal/frontend/bridge-gui/bridgepp/Test/TestCLI.cpp
Normal file
50
internal/frontend/bridge-gui/bridgepp/Test/TestCLI.cpp
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
// Copyright (c) 2023 Proton AG
|
||||||
|
//
|
||||||
|
// This file is part of Proton Mail Bridge.
|
||||||
|
//
|
||||||
|
// Proton Mail Bridge is free software: you can redistribute it and/or modify
|
||||||
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
// the Free Software Foundation, either version 3 of the License, or
|
||||||
|
// (at your option) any later version.
|
||||||
|
//
|
||||||
|
// Proton Mail Bridge is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU General Public License
|
||||||
|
// along with Proton Mail Bridge. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
|
||||||
|
#include <bridgepp/CLI/CLIUtils.h>
|
||||||
|
#include <gtest/gtest.h>
|
||||||
|
|
||||||
|
|
||||||
|
using namespace bridgepp;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//****************************************************************************************************************************************************
|
||||||
|
//
|
||||||
|
//****************************************************************************************************************************************************
|
||||||
|
TEST(CLI, stripStringParameterFromCommandLine) {
|
||||||
|
struct Test {
|
||||||
|
QStringList input;
|
||||||
|
QStringList expectedOutput;
|
||||||
|
};
|
||||||
|
QList<Test> const tests = {
|
||||||
|
{{}, {}},
|
||||||
|
{{ "--a", "-b", "--C" }, { "--a", "-b", "--C" } },
|
||||||
|
{{ "--string", "value" }, {} },
|
||||||
|
{{ "--string" }, {} },
|
||||||
|
{{ "--string", "value", "-b", "--C" }, { "-b", "--C" } },
|
||||||
|
{{ "--string", "value", "-b", "--string", "value", "--C" }, { "-b", "--C" } },
|
||||||
|
{{ "--string", "value", "-b", "--string", "value", "--C" }, { "-b", "--C" } },
|
||||||
|
{{ "--string", "value", "-b", "--string"}, { "-b" } },
|
||||||
|
{{ "--string", "--string", "value", "-b", "--string"}, { "value", "-b" } },
|
||||||
|
};
|
||||||
|
|
||||||
|
for (Test const& test: tests) {
|
||||||
|
EXPECT_EQ(stripStringParameterFromCommandLine("--string", test.input), test.expectedOutput);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,45 @@
|
|||||||
|
// Copyright (c) 2023 Proton AG
|
||||||
|
//
|
||||||
|
// This file is part of Proton Mail Bridge.
|
||||||
|
//
|
||||||
|
// Proton Mail Bridge is free software: you can redistribute it and/or modify
|
||||||
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
// the Free Software Foundation, either version 3 of the License, or
|
||||||
|
// (at your option) any later version.
|
||||||
|
//
|
||||||
|
// Proton Mail Bridge is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU General Public License
|
||||||
|
// along with Proton Mail Bridge. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
#include "CLIUtils.h"
|
||||||
|
|
||||||
|
|
||||||
|
namespace bridgepp {
|
||||||
|
|
||||||
|
|
||||||
|
//****************************************************************************************************************************************************
|
||||||
|
/// \param[in] paramName The parameter name, including prefix dashes (e.g. '--string').
|
||||||
|
/// \param[in] commandLineParams The command-line parameters.
|
||||||
|
/// \return The command-line parameters where all occurrences of paramName and it associated value have been removed. Comparison is case-sensitive.
|
||||||
|
//****************************************************************************************************************************************************
|
||||||
|
QStringList stripStringParameterFromCommandLine(QString const ¶mName, QStringList const &commandLineParams) {
|
||||||
|
qint32 i = 0;
|
||||||
|
QStringList result;
|
||||||
|
while (i < commandLineParams.count()) {
|
||||||
|
if (paramName == commandLineParams[i]) {
|
||||||
|
i += 2;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
result.append(commandLineParams[i]);
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
} // namespace bridgepp
|
||||||
@ -0,0 +1,32 @@
|
|||||||
|
// Copyright (c) 2023 Proton AG
|
||||||
|
//
|
||||||
|
// This file is part of Proton Mail Bridge.
|
||||||
|
//
|
||||||
|
// Proton Mail Bridge is free software: you can redistribute it and/or modify
|
||||||
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
// the Free Software Foundation, either version 3 of the License, or
|
||||||
|
// (at your option) any later version.
|
||||||
|
//
|
||||||
|
// Proton Mail Bridge is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU General Public License
|
||||||
|
// along with Proton Mail Bridge. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
|
||||||
|
#ifndef BRIDGEPP_CLI_UTILS_H
|
||||||
|
#define BRIDGEPP_CLI_UTILS_H
|
||||||
|
|
||||||
|
|
||||||
|
namespace bridgepp {
|
||||||
|
|
||||||
|
|
||||||
|
QStringList stripStringParameterFromCommandLine(QString const ¶mName, QStringList const &commandLineParams); ///< Remove a string parameter from a list of command-line parameters.
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#endif // BRIDGEPP_CLI_UTILS_H
|
||||||
Reference in New Issue
Block a user