mirror of
https://github.com/ProtonMail/proton-bridge.git
synced 2025-12-10 04:36:43 +00:00
GODT-1671: Implement Quit & Restart mechanism
This commit is contained in:
@ -42,6 +42,10 @@ const (
|
||||
appName = "Proton Mail Launcher"
|
||||
configName = "bridge"
|
||||
exeName = "proton-bridge"
|
||||
guiName = "proton-bridge-gui"
|
||||
|
||||
FlagCLI = "--cli"
|
||||
FlagLauncher = "--launcher"
|
||||
)
|
||||
|
||||
func main() { //nolint:funlen
|
||||
@ -86,9 +90,15 @@ func main() { //nolint:funlen
|
||||
|
||||
versioner := versioner.New(updatesPath)
|
||||
|
||||
exe, err := getPathToUpdatedExecutable(exeName, versioner, kr, reporter)
|
||||
exeToLaunch := guiName
|
||||
args := os.Args[1:]
|
||||
if isCliMode(&args) {
|
||||
exeToLaunch = exeName
|
||||
}
|
||||
|
||||
exe, err := getPathToUpdatedExecutable(exeToLaunch, versioner, kr, reporter)
|
||||
if err != nil {
|
||||
if exe, err = getFallbackExecutable(exeName, versioner); err != nil {
|
||||
if exe, err = getFallbackExecutable(exeToLaunch, versioner); err != nil {
|
||||
logrus.WithError(err).Fatal("Failed to find any launchable executable")
|
||||
}
|
||||
}
|
||||
@ -98,7 +108,7 @@ func main() { //nolint:funlen
|
||||
logrus.WithError(err).Fatal("Failed to determine path to launcher")
|
||||
}
|
||||
|
||||
cmd := execabs.Command(exe, appendLauncherPath(launcher, os.Args[1:])...) //nolint:gosec
|
||||
cmd := execabs.Command(exe, appendLauncherPath(launcher, args)...) //nolint:gosec
|
||||
|
||||
cmd.Stdin = os.Stdin
|
||||
cmd.Stdout = os.Stdout
|
||||
@ -122,7 +132,7 @@ func appendLauncherPath(path string, args []string) []string {
|
||||
hasFlag := false
|
||||
|
||||
for k, v := range res {
|
||||
if v != "--launcher" {
|
||||
if v != FlagLauncher {
|
||||
continue
|
||||
}
|
||||
|
||||
@ -136,12 +146,22 @@ func appendLauncherPath(path string, args []string) []string {
|
||||
}
|
||||
|
||||
if !hasFlag {
|
||||
res = append(res, "--launcher", path)
|
||||
res = append(res, FlagLauncher, path)
|
||||
}
|
||||
|
||||
return res
|
||||
}
|
||||
|
||||
func isCliMode(args *[]string) bool {
|
||||
for _, v := range *args {
|
||||
if v == FlagCLI {
|
||||
return true
|
||||
}
|
||||
}
|
||||
|
||||
return false
|
||||
}
|
||||
|
||||
func getPathToUpdatedExecutable(
|
||||
name string,
|
||||
versioner *versioner.Versioner,
|
||||
|
||||
@ -97,6 +97,7 @@ type Base struct {
|
||||
usage string // the app's usage description
|
||||
command string // the command used to launch the app (either the exe path or the launcher path)
|
||||
restart bool // whether the app is currently set to restart
|
||||
launcher string // launcher to be used if not set in args
|
||||
|
||||
teardown []func() error // actions to perform when app is exiting
|
||||
}
|
||||
@ -322,6 +323,11 @@ func (b *Base) SetToRestart() {
|
||||
b.restart = true
|
||||
}
|
||||
|
||||
func (b *Base) ForceLauncher(launcher string) {
|
||||
b.launcher = launcher
|
||||
b.setupLauncher(launcher)
|
||||
}
|
||||
|
||||
// AddTeardownAction adds an action to perform during app teardown.
|
||||
func (b *Base) AddTeardownAction(fn func() error) {
|
||||
b.teardown = append(b.teardown, fn)
|
||||
@ -335,10 +341,7 @@ func (b *Base) wrapMainLoop(appMainLoop func(*Base, *cli.Context) error) cli.Act
|
||||
// If launcher was used to start the app, use that for restart
|
||||
// and autostart.
|
||||
if launcher := c.String(FlagLauncher); launcher != "" {
|
||||
b.command = launcher
|
||||
// Bridge supports no-window option which we should use
|
||||
// for autostart.
|
||||
b.Autostart.Exec = []string{launcher, "--" + FlagNoWindow}
|
||||
b.setupLauncher(launcher)
|
||||
}
|
||||
|
||||
if c.Bool(flagCPUProfile) {
|
||||
@ -402,3 +405,10 @@ func (b *Base) doTeardown() error {
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (b *Base) setupLauncher(launcher string) {
|
||||
b.command = launcher
|
||||
// Bridge supports no-window option which we should use
|
||||
// for autostart.
|
||||
b.Autostart.Exec = []string{launcher, "--" + FlagNoWindow}
|
||||
}
|
||||
|
||||
@ -38,6 +38,10 @@ func (b *Base) restartApp(crash bool) error {
|
||||
args = os.Args[1:]
|
||||
}
|
||||
|
||||
if b.launcher != "" {
|
||||
args = forceLauncherFlag(args, b.launcher)
|
||||
}
|
||||
|
||||
logrus.
|
||||
WithField("command", b.command).
|
||||
WithField("args", args).
|
||||
@ -78,3 +82,29 @@ func incrementRestartFlag(args []string) []string {
|
||||
|
||||
return res
|
||||
}
|
||||
|
||||
// forceLauncherFlag replace or add the launcher args with the one set in the app.
|
||||
func forceLauncherFlag(args []string, launcher string) []string {
|
||||
res := append([]string{}, args...)
|
||||
|
||||
hasFlag := false
|
||||
|
||||
for k, v := range res {
|
||||
if v != "--launcher" {
|
||||
continue
|
||||
}
|
||||
|
||||
if k+1 >= len(res) {
|
||||
continue
|
||||
}
|
||||
|
||||
hasFlag = true
|
||||
res[k+1] = launcher
|
||||
}
|
||||
|
||||
if !hasFlag {
|
||||
res = append(res, "--launcher", launcher)
|
||||
}
|
||||
|
||||
return res
|
||||
}
|
||||
|
||||
4
internal/frontend/.gitignore
vendored
4
internal/frontend/.gitignore
vendored
@ -9,8 +9,6 @@ rcc.qrc
|
||||
rcc_cgo_*.go
|
||||
*.qmlc
|
||||
|
||||
# QtCreator env
|
||||
CMakeLists.txt.user
|
||||
|
||||
# Generated file
|
||||
bridge-gui/Version.h
|
||||
bridge-gui/Config.h
|
||||
|
||||
@ -34,7 +34,7 @@ QString const exeSuffix = ".exe";
|
||||
QString const exeSuffix;
|
||||
#endif
|
||||
|
||||
QString const exeName = "bridge" + exeSuffix; ///< The bridge executable file name.
|
||||
QString const exeName = "proton-bridge" + exeSuffix; ///< The bridge executable file name.*
|
||||
|
||||
|
||||
}
|
||||
@ -55,9 +55,10 @@ QString BridgeMonitor::locateBridgeExe()
|
||||
/// \param[in] exePath The path of the Bridge executable.
|
||||
/// \param[in] parent The parent object of the worker.
|
||||
//****************************************************************************************************************************************************
|
||||
BridgeMonitor::BridgeMonitor(QString const &exePath, QObject *parent)
|
||||
BridgeMonitor::BridgeMonitor(QString const &exePath, QStringList const &args, QObject *parent)
|
||||
: Worker(parent)
|
||||
, exePath_(exePath)
|
||||
, args_(args)
|
||||
{
|
||||
QFileInfo fileInfo(exePath);
|
||||
if (!fileInfo.exists())
|
||||
@ -77,16 +78,23 @@ void BridgeMonitor::run()
|
||||
emit started();
|
||||
|
||||
QProcess p;
|
||||
p.start(exePath_, QStringList());
|
||||
p.start(exePath_, args_);
|
||||
p.waitForStarted();
|
||||
|
||||
status_.running = true;
|
||||
status_.pid = p.processId();
|
||||
|
||||
while (!p.waitForFinished(100))
|
||||
{
|
||||
// we discard output from bridge, it's logged to file on bridge side.
|
||||
p.readAllStandardError();
|
||||
p.readAllStandardOutput();
|
||||
}
|
||||
emit processExited(p.exitCode());
|
||||
|
||||
status_.running = false;
|
||||
status_.returnCode = p.exitCode();
|
||||
|
||||
emit processExited(status_.returnCode );
|
||||
emit finished();
|
||||
}
|
||||
catch (Exception const &e)
|
||||
@ -94,3 +102,11 @@ void BridgeMonitor::run()
|
||||
emit error(e.qwhat());
|
||||
}
|
||||
}
|
||||
|
||||
//****************************************************************************************************************************************************
|
||||
/// \return status of the monitored process
|
||||
//****************************************************************************************************************************************************
|
||||
const BridgeMonitor::MonitorStatus& BridgeMonitor::getStatus()
|
||||
{
|
||||
return status_;
|
||||
}
|
||||
|
||||
@ -33,8 +33,14 @@ class BridgeMonitor: public bridgepp::Worker
|
||||
public: // static member functions
|
||||
static QString locateBridgeExe(); ///< Try to find the bridge executable path.
|
||||
|
||||
struct MonitorStatus {
|
||||
bool running = false;
|
||||
int returnCode = 0;
|
||||
qint64 pid = 0;
|
||||
};
|
||||
|
||||
public: // member functions.
|
||||
BridgeMonitor(QString const& exePath, QObject *parent); ///< Default constructor.
|
||||
BridgeMonitor(QString const& exePath, QStringList const &args, QObject *parent); ///< Default constructor.
|
||||
BridgeMonitor(BridgeMonitor const&) = delete; ///< Disabled copy-constructor.
|
||||
BridgeMonitor(BridgeMonitor&&) = delete; ///< Disabled assignment copy-constructor.
|
||||
~BridgeMonitor() override = default; ///< Destructor.
|
||||
@ -42,11 +48,14 @@ public: // member functions.
|
||||
BridgeMonitor& operator=(BridgeMonitor&&) = delete; ///< Disabled move assignment operator.
|
||||
void run() override; ///< Run the worker.
|
||||
|
||||
const MonitorStatus& getStatus();
|
||||
signals:
|
||||
void processExited(int code); ///< Slot for the exiting of the process
|
||||
void processExited(int code); ///< Slot for the exiting of the process.
|
||||
|
||||
private: // data members
|
||||
QString const exePath_; ///< The path to the bridge executable.
|
||||
QStringList args_; ///< arguments to be passed to the brigde.
|
||||
MonitorStatus status_; ///< Status of the monitoring.
|
||||
};
|
||||
|
||||
|
||||
|
||||
@ -34,6 +34,7 @@ else()
|
||||
message(STATUS "Bridge version is ${BRIDGE_APP_VERSION}")
|
||||
endif()
|
||||
|
||||
configure_file(Version.h.in ${CMAKE_SOURCE_DIR}/Version.h)
|
||||
if (APPLE) # On macOS, we have some Objective-C++ code in DockIcon to deal with the dock icon.
|
||||
enable_language(OBJC OBJCXX)
|
||||
endif()
|
||||
@ -90,7 +91,7 @@ add_executable(bridge-gui
|
||||
QMLBackend.cpp QMLBackend.h
|
||||
UserList.cpp UserList.h
|
||||
${DOCK_ICON_SRC_FILE} DockIcon/DockIcon.h
|
||||
)
|
||||
UserDirectories.h)
|
||||
|
||||
target_precompile_headers(bridge-gui PRIVATE Pch.h)
|
||||
target_include_directories(bridge-gui PRIVATE ${CMAKE_CURRENT_SOURCE_DIR})
|
||||
|
||||
24
internal/frontend/bridge-gui/Config.h.in
Normal file
24
internal/frontend/bridge-gui/Config.h.in
Normal file
@ -0,0 +1,24 @@
|
||||
// Copyright (c) 2022 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 BRIDGE_GUI_CONFIG_H
|
||||
#define BRIDGE_GUI_CONFIG_H
|
||||
|
||||
#cmakedefine ATTACH_MODE @ATTACH_MODE@
|
||||
|
||||
#endif // BRIDGE_GUI_CONFIG_H
|
||||
@ -83,7 +83,7 @@ void QMLBackend::connectGrpcEvents()
|
||||
// app events
|
||||
connect(client, &GRPCClient::internetStatus, this, [&](bool isOn) { if (isOn) emit internetOn(); else emit internetOff(); });
|
||||
connect(client, &GRPCClient::toggleAutostartFinished, this, &QMLBackend::toggleAutostartFinished);
|
||||
connect(client, &GRPCClient::resetFinished, this, &QMLBackend::resetFinished);
|
||||
connect(client, &GRPCClient::resetFinished, this, &QMLBackend::onResetFinished);
|
||||
connect(client, &GRPCClient::reportBugFinished, this, &QMLBackend::reportBugFinished);
|
||||
connect(client, &GRPCClient::reportBugSuccess, this, &QMLBackend::bugReportSendSuccess);
|
||||
connect(client, &GRPCClient::reportBugError, this, &QMLBackend::bugReportSendError);
|
||||
@ -220,7 +220,12 @@ void QMLBackend::quit()
|
||||
void QMLBackend::restart()
|
||||
{
|
||||
app().grpc().restart();
|
||||
app().log().error("RESTART is not implemented"); /// \todo GODT-1671 implement restart.
|
||||
app().grpc().quit();
|
||||
}
|
||||
|
||||
void QMLBackend::forceLauncher(QString launcher)
|
||||
{
|
||||
app().grpc().forceLauncher(launcher);
|
||||
}
|
||||
|
||||
|
||||
@ -333,3 +338,12 @@ void QMLBackend::triggerReset()
|
||||
{
|
||||
app().grpc().triggerReset();
|
||||
}
|
||||
|
||||
//****************************************************************************************************************************************************
|
||||
//
|
||||
//****************************************************************************************************************************************************
|
||||
void QMLBackend::onResetFinished()
|
||||
{
|
||||
emit resetFinished();
|
||||
this->restart();
|
||||
}
|
||||
@ -150,11 +150,13 @@ public slots: // slot for signals received from QML -> To be forwarded to Bridge
|
||||
void guiReady(); // _ func() `slot:"guiReady"`
|
||||
void quit(); // _ func() `slot:"quit"`
|
||||
void restart(); // _ func() `slot:"restart"`
|
||||
void forceLauncher(QString launcher); // _ func() `slot:"forceLauncher"`
|
||||
void checkUpdates(); // _ func() `slot:"checkUpdates"`
|
||||
void installUpdate(); // _ func() `slot:"installUpdate"`
|
||||
void triggerReset(); // _ func() `slot:"triggerReset"`
|
||||
void reportBug(QString const &description, QString const& address, QString const &emailClient, bool includeLogs) {
|
||||
app().grpc().reportBug(description, address, emailClient, includeLogs); } // _ func(description, address, emailClient string, includeLogs bool) `slot:"reportBug"`
|
||||
void onResetFinished();
|
||||
|
||||
signals: // Signals received from the Go backend, to be forwarded to QML
|
||||
void toggleAutostartFinished(); // _ func() `signal:"toggleAutostartFinished"`
|
||||
|
||||
79
internal/frontend/bridge-gui/UserDirectories.h
Normal file
79
internal/frontend/bridge-gui/UserDirectories.h
Normal file
@ -0,0 +1,79 @@
|
||||
//
|
||||
// Created by romain on 01/08/22.
|
||||
//
|
||||
|
||||
#ifndef PROTON_BRIDGE_GUI_USERDIRECTORIES_H
|
||||
#define PROTON_BRIDGE_GUI_USERDIRECTORIES_H
|
||||
|
||||
#include <bridgepp/Exception/Exception.h>
|
||||
|
||||
using namespace bridgepp;
|
||||
|
||||
namespace UserDirectories {
|
||||
|
||||
QString const configFolder = "protonmail/bridge";
|
||||
|
||||
//****************************************************************************************************************************************************
|
||||
/// \return user configuration directory used by bridge (based on Golang OS/File's UserConfigDir).
|
||||
//****************************************************************************************************************************************************
|
||||
static const QString UserConfigDir()
|
||||
{
|
||||
QString dir;
|
||||
#ifdef Q_OS_WIN
|
||||
dir = qgetenv ("AppData");
|
||||
if (dir.isEmpty())
|
||||
throw Exception("%AppData% is not defined.");
|
||||
#elif defined(Q_OS_IOS) || defined(Q_OS_DARWIN)
|
||||
dir = qgetenv ("HOME");
|
||||
if (dir.isEmpty())
|
||||
throw Exception("$HOME is not defined.");
|
||||
dir += "/Library/Application Support";
|
||||
#else
|
||||
dir = qgetenv ("XDG_CONFIG_HOME");
|
||||
if (dir.isEmpty())
|
||||
dir = qgetenv ("HOME");
|
||||
if (dir.isEmpty())
|
||||
throw Exception("neither $XDG_CONFIG_HOME nor $HOME are defined");
|
||||
dir += "/.config";
|
||||
#endif
|
||||
QString folder = dir + "/" + configFolder;
|
||||
QDir().mkpath(folder);
|
||||
|
||||
return folder;
|
||||
}
|
||||
|
||||
|
||||
//****************************************************************************************************************************************************
|
||||
/// \return user configuration directory used by bridge (based on Golang OS/File's UserCacheDir).
|
||||
//****************************************************************************************************************************************************
|
||||
static const QString UserCacheDir()
|
||||
{
|
||||
QString dir;
|
||||
|
||||
#ifdef Q_OS_WIN
|
||||
dir = qgetenv ("LocalAppData");
|
||||
if (dir.isEmpty())
|
||||
throw Exception("%LocalAppData% is not defined.");
|
||||
#elif defined(Q_OS_IOS) || defined(Q_OS_DARWIN)
|
||||
dir = qgetenv ("HOME");
|
||||
if (dir.isEmpty())
|
||||
throw Exception("$HOME is not defined.");
|
||||
dir += "/Library/Caches";
|
||||
#else
|
||||
dir = qgetenv ("XDG_CACHE_HOME");
|
||||
if (dir.isEmpty())
|
||||
dir = qgetenv ("HOME");
|
||||
if (dir.isEmpty())
|
||||
throw Exception("neither XDG_CACHE_HOME nor $HOME are defined");
|
||||
dir += "/.cache";
|
||||
#endif
|
||||
QString folder = dir + "/" + configFolder;
|
||||
QDir().mkpath(folder);
|
||||
|
||||
return folder;
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
|
||||
#endif //PROTON_BRIDGE_GUI_USERDIRECTORIES_H
|
||||
@ -19,6 +19,7 @@
|
||||
#include "QMLBackend.h"
|
||||
#include "BridgeMonitor.h"
|
||||
#include "Version.h"
|
||||
#include "UserDirectories.h"
|
||||
#include <bridgepp/Log/Log.h>
|
||||
#include <bridgepp/Exception/Exception.h>
|
||||
|
||||
@ -26,6 +27,13 @@
|
||||
using namespace bridgepp;
|
||||
|
||||
|
||||
namespace
|
||||
{
|
||||
QString const launcherFlag = "--launcher"; ///< launcher flag parameter used for bridge.
|
||||
QString const bridgeLock = "bridge-gui.lock"; ///< file name used for the lock file.
|
||||
}
|
||||
|
||||
|
||||
//****************************************************************************************************************************************************
|
||||
/// // initialize the Qt application.
|
||||
//****************************************************************************************************************************************************
|
||||
@ -84,56 +92,94 @@ QQmlComponent *createRootQmlComponent(QQmlApplicationEngine &engine)
|
||||
|
||||
|
||||
//****************************************************************************************************************************************************
|
||||
/// \param[in] exePath The path of the Bridge executable. If empty, the function will try to locate the bridge application.
|
||||
/// \param[in] lock The lock file to be checked.
|
||||
/// \return True if the lock can be taken, false otherwize.
|
||||
//****************************************************************************************************************************************************
|
||||
void launchBridge(QString const &exePath)
|
||||
bool checkSingleInstance(QLockFile &lock)
|
||||
{
|
||||
lock.setStaleLockTime(0);
|
||||
if (!lock.tryLock())
|
||||
{
|
||||
qint64 pid;
|
||||
QString hostname, appName, details;
|
||||
if (lock.getLockInfo(&pid, &hostname, &appName))
|
||||
details = QString("(PID : %1 - Host : %2 - App : %3)").arg(pid).arg(hostname, appName);
|
||||
|
||||
app().log().error(QString("Instance already exists %1 %2").arg(lock.fileName(), details));
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
app().log().info(QString("lock file created %1").arg(lock.fileName()));
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
//****************************************************************************************************************************************************
|
||||
/// \param [in] argc number of arguments passed to the application.
|
||||
/// \param [in] argv list of arguments passed to the application.
|
||||
/// \param [out] args list of arguments passed to the application as a QStringList.
|
||||
/// \param [out] launcher launcher used in argument, forced to self application if not specify.
|
||||
/// \param[out] outAttach The value for the 'attach' command-line parameter.
|
||||
//****************************************************************************************************************************************************
|
||||
void parseArguments(int argc, char *argv[], QStringList& args, QString& launcher, bool &outAttach) {
|
||||
bool flagFound = false;
|
||||
launcher = QString::fromLocal8Bit(argv[0]);
|
||||
// for unknown reasons, on Windows QCoreApplication::arguments() frequently returns an empty list, which is incorrect, so we rebuild the argument
|
||||
// list from the original argc and argv values.
|
||||
for (int i = 1; i < argc; i++) {
|
||||
QString const &arg = QString::fromLocal8Bit(argv[i]);
|
||||
// we can't use QCommandLineParser here since it will fails on unknown options.
|
||||
// Arguments may contain some bridge flags.
|
||||
if (arg == launcherFlag)
|
||||
{
|
||||
args.append(arg);
|
||||
launcher = QString::fromLocal8Bit(argv[++i]);
|
||||
args.append(launcher);
|
||||
flagFound = true;
|
||||
}
|
||||
#ifdef QT_DEBUG
|
||||
else if (arg == "--attach" || arg == "-a")
|
||||
{
|
||||
// we don't keep the attach mode within the args since we don't need it for Bridge.
|
||||
outAttach = true;
|
||||
}
|
||||
#endif
|
||||
else
|
||||
{
|
||||
args.append(arg);
|
||||
}
|
||||
}
|
||||
if (!flagFound)
|
||||
{
|
||||
// add bridge-gui as launcher
|
||||
args.append(launcherFlag);
|
||||
args.append(launcher);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//****************************************************************************************************************************************************
|
||||
/// \param [in] args list of arguments to pass to bridge.
|
||||
//****************************************************************************************************************************************************
|
||||
void launchBridge(QStringList const &args)
|
||||
{
|
||||
UPOverseer& overseer = app().bridgeOverseer();
|
||||
overseer.reset();
|
||||
|
||||
QString bridgeExePath = exePath;
|
||||
if (exePath.isEmpty())
|
||||
bridgeExePath = BridgeMonitor::locateBridgeExe();
|
||||
const QString bridgeExePath = BridgeMonitor::locateBridgeExe();
|
||||
|
||||
if (bridgeExePath.isEmpty())
|
||||
throw Exception("Could not locate the bridge executable path");
|
||||
else
|
||||
app().log().debug(QString("Bridge executable path: %1").arg(QDir::toNativeSeparators(bridgeExePath)));
|
||||
|
||||
overseer = std::make_unique<Overseer>(new BridgeMonitor(bridgeExePath, nullptr), nullptr);
|
||||
overseer = std::make_unique<Overseer>(new BridgeMonitor(bridgeExePath, args, nullptr), nullptr);
|
||||
overseer->startWorker(true);
|
||||
}
|
||||
|
||||
|
||||
//****************************************************************************************************************************************************
|
||||
/// \param[in] argc The number of command-line arguments.
|
||||
/// \param[in] argv The list of command line arguments.
|
||||
/// \param[out] outAttach The value for the 'attach' command-line parameter.
|
||||
/// \param[out] outExePath The value for the 'bridge-exe-path' command-line parameter.
|
||||
//****************************************************************************************************************************************************
|
||||
void parseArguments(int argc, char **argv, bool &outAttach, QString &outExePath)
|
||||
{
|
||||
// for unknown reasons, on Windows QCoreApplication::arguments() frequently returns an empty list, which is incorrect, so we rebuild the argument
|
||||
// list from the original argc and argv values.
|
||||
QStringList args;
|
||||
for (int i = 0; i < argc; i++)
|
||||
args.append(QString::fromLocal8Bit(argv[i]));
|
||||
|
||||
// We do not want to 'advertise' the following switches, so we do not offer a '-h/--help' option.
|
||||
// we have not yet connected to Bridge, we do not know the application version number, so we do not offer a -v/--version switch.
|
||||
QCommandLineParser parser;
|
||||
parser.setApplicationDescription("Proton Mail Bridge");
|
||||
QCommandLineOption attachOption(QStringList() << "attach" << "a", "attach to an existing bridge process");
|
||||
parser.addOption(attachOption);
|
||||
QCommandLineOption exePathOption(QStringList() << "bridge-exe-path" << "b", "bridge executable path", "path", QString());
|
||||
parser.addOption(exePathOption);
|
||||
|
||||
parser.process(args);
|
||||
outAttach = parser.isSet(attachOption);
|
||||
outExePath = parser.value(exePathOption);
|
||||
}
|
||||
|
||||
|
||||
//****************************************************************************************************************************************************
|
||||
//
|
||||
//****************************************************************************************************************************************************
|
||||
@ -166,14 +212,19 @@ int main(int argc, char *argv[])
|
||||
QGuiApplication guiApp(argc, argv);
|
||||
initQtApplication();
|
||||
|
||||
bool attach = false;
|
||||
QString exePath;
|
||||
parseArguments(argc, argv, attach, exePath);
|
||||
|
||||
Log &log = initLog();
|
||||
|
||||
QLockFile lock(UserDirectories::UserCacheDir() + "/" + bridgeLock);
|
||||
if (!checkSingleInstance(lock))
|
||||
return EXIT_FAILURE;
|
||||
|
||||
QStringList args;
|
||||
QString launcher;
|
||||
bool attach = false;
|
||||
parseArguments(argc, argv, args, launcher, attach);
|
||||
|
||||
if (!attach)
|
||||
launchBridge(exePath);
|
||||
launchBridge(args);
|
||||
|
||||
app().backend().init();
|
||||
|
||||
@ -185,15 +236,34 @@ int main(int argc, char *argv[])
|
||||
|
||||
BridgeMonitor *bridgeMonitor = app().bridgeMonitor();
|
||||
bool bridgeExited = false;
|
||||
bool startError = false;
|
||||
QMetaObject::Connection connection;
|
||||
if (bridgeMonitor)
|
||||
{
|
||||
const BridgeMonitor::MonitorStatus& status = bridgeMonitor->getStatus();
|
||||
if (!status.running && !attach)
|
||||
{
|
||||
// BridgeMonitor already stopped meaning we are attached to an orphan Bridge.
|
||||
// Restart the full process to be sure there is no more bridge orphans
|
||||
app().log().error("Found orphan bridge, need to restart.");
|
||||
app().backend().forceLauncher(launcher);
|
||||
app().backend().restart();
|
||||
bridgeExited = true;
|
||||
startError = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
app().log().debug(QString("Monitoring Bridge PID : %1").arg(status.pid));
|
||||
connection = QObject::connect(bridgeMonitor, &BridgeMonitor::processExited, [&](int returnCode) {
|
||||
// GODT-1671 We need to find a 'safe' way to check if Bridge crashed and restart instead of just quitting. Is returnCode enough?
|
||||
bridgeExited = true;// clazy:exclude=lambda-in-connect
|
||||
qGuiApp->exit(returnCode);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
int const result = QGuiApplication::exec();
|
||||
int result = 0;
|
||||
if (!startError)
|
||||
result = QGuiApplication::exec();
|
||||
|
||||
QObject::disconnect(connection);
|
||||
app().grpc().stopEventStream();
|
||||
@ -204,7 +274,8 @@ int main(int argc, char *argv[])
|
||||
|
||||
if (!bridgeExited)
|
||||
closeBridgeApp();
|
||||
|
||||
// release the lock file
|
||||
lock.unlock();
|
||||
return result;
|
||||
}
|
||||
catch (Exception const &e)
|
||||
|
||||
@ -193,7 +193,7 @@ QtObject {
|
||||
onTriggered: {
|
||||
Qt.openUrlExternally(Backend.landingPageLink)
|
||||
root.updateManualError.active = false
|
||||
root.backend.quit()
|
||||
Backend.quit()
|
||||
}
|
||||
},
|
||||
Action {
|
||||
|
||||
@ -387,6 +387,18 @@ grpc::Status GRPCClient::triggerReset()
|
||||
}
|
||||
|
||||
|
||||
//****************************************************************************************************************************************************
|
||||
/// \return The status for the gRPC call.
|
||||
//****************************************************************************************************************************************************
|
||||
grpc::Status GRPCClient::forceLauncher(QString const &launcher)
|
||||
{
|
||||
grpc::ClientContext ctx;
|
||||
StringValue s;
|
||||
s.set_value(launcher.toStdString());
|
||||
return this->logGRPCCallStatus(stub_->ForceLauncher(&ctx, s, &empty), __FUNCTION__);
|
||||
}
|
||||
|
||||
|
||||
//****************************************************************************************************************************************************
|
||||
/// \param[in] port The port to check.
|
||||
/// \param[out] outFree The result of the check.
|
||||
|
||||
@ -70,6 +70,7 @@ public: // member functions.
|
||||
grpc::Status quit(); ///< Perform the "Quit" gRPC call.
|
||||
grpc::Status restart(); ///< Performs the Restart gRPC call.
|
||||
grpc::Status triggerReset(); ///< Performs the triggerReset gRPC call.
|
||||
grpc::Status forceLauncher(QString const &launcher); ///< Performs the 'ForceLauncher' call.
|
||||
grpc::Status isPortFree(qint32 port, bool &outFree); ///< Performs the 'IsPortFree' call.
|
||||
grpc::Status showOnStartup(bool &outValue); ///< Performs the 'ShowOnStartup' call.
|
||||
grpc::Status showSplashScreen(bool &outValue); ///< Performs the 'ShowSplashScreen' call.
|
||||
|
||||
@ -45,6 +45,7 @@ static const char* Bridge_method_names[] = {
|
||||
"/grpc.Bridge/ColorSchemeName",
|
||||
"/grpc.Bridge/CurrentEmailClient",
|
||||
"/grpc.Bridge/ReportBug",
|
||||
"/grpc.Bridge/ForceLauncher",
|
||||
"/grpc.Bridge/Login",
|
||||
"/grpc.Bridge/Login2FA",
|
||||
"/grpc.Bridge/Login2Passwords",
|
||||
@ -108,37 +109,38 @@ Bridge::Stub::Stub(const std::shared_ptr< ::grpc::ChannelInterface>& channel, co
|
||||
, rpcmethod_ColorSchemeName_(Bridge_method_names[20], options.suffix_for_stats(),::grpc::internal::RpcMethod::NORMAL_RPC, channel)
|
||||
, rpcmethod_CurrentEmailClient_(Bridge_method_names[21], options.suffix_for_stats(),::grpc::internal::RpcMethod::NORMAL_RPC, channel)
|
||||
, rpcmethod_ReportBug_(Bridge_method_names[22], options.suffix_for_stats(),::grpc::internal::RpcMethod::NORMAL_RPC, channel)
|
||||
, rpcmethod_Login_(Bridge_method_names[23], options.suffix_for_stats(),::grpc::internal::RpcMethod::NORMAL_RPC, channel)
|
||||
, rpcmethod_Login2FA_(Bridge_method_names[24], options.suffix_for_stats(),::grpc::internal::RpcMethod::NORMAL_RPC, channel)
|
||||
, rpcmethod_Login2Passwords_(Bridge_method_names[25], options.suffix_for_stats(),::grpc::internal::RpcMethod::NORMAL_RPC, channel)
|
||||
, rpcmethod_LoginAbort_(Bridge_method_names[26], options.suffix_for_stats(),::grpc::internal::RpcMethod::NORMAL_RPC, channel)
|
||||
, rpcmethod_CheckUpdate_(Bridge_method_names[27], options.suffix_for_stats(),::grpc::internal::RpcMethod::NORMAL_RPC, channel)
|
||||
, rpcmethod_InstallUpdate_(Bridge_method_names[28], options.suffix_for_stats(),::grpc::internal::RpcMethod::NORMAL_RPC, channel)
|
||||
, rpcmethod_SetIsAutomaticUpdateOn_(Bridge_method_names[29], options.suffix_for_stats(),::grpc::internal::RpcMethod::NORMAL_RPC, channel)
|
||||
, rpcmethod_IsAutomaticUpdateOn_(Bridge_method_names[30], options.suffix_for_stats(),::grpc::internal::RpcMethod::NORMAL_RPC, channel)
|
||||
, rpcmethod_IsCacheOnDiskEnabled_(Bridge_method_names[31], options.suffix_for_stats(),::grpc::internal::RpcMethod::NORMAL_RPC, channel)
|
||||
, rpcmethod_DiskCachePath_(Bridge_method_names[32], options.suffix_for_stats(),::grpc::internal::RpcMethod::NORMAL_RPC, channel)
|
||||
, rpcmethod_ChangeLocalCache_(Bridge_method_names[33], options.suffix_for_stats(),::grpc::internal::RpcMethod::NORMAL_RPC, channel)
|
||||
, rpcmethod_SetIsDoHEnabled_(Bridge_method_names[34], options.suffix_for_stats(),::grpc::internal::RpcMethod::NORMAL_RPC, channel)
|
||||
, rpcmethod_IsDoHEnabled_(Bridge_method_names[35], options.suffix_for_stats(),::grpc::internal::RpcMethod::NORMAL_RPC, channel)
|
||||
, rpcmethod_SetUseSslForSmtp_(Bridge_method_names[36], options.suffix_for_stats(),::grpc::internal::RpcMethod::NORMAL_RPC, channel)
|
||||
, rpcmethod_UseSslForSmtp_(Bridge_method_names[37], options.suffix_for_stats(),::grpc::internal::RpcMethod::NORMAL_RPC, channel)
|
||||
, rpcmethod_Hostname_(Bridge_method_names[38], options.suffix_for_stats(),::grpc::internal::RpcMethod::NORMAL_RPC, channel)
|
||||
, rpcmethod_ImapPort_(Bridge_method_names[39], options.suffix_for_stats(),::grpc::internal::RpcMethod::NORMAL_RPC, channel)
|
||||
, rpcmethod_SmtpPort_(Bridge_method_names[40], options.suffix_for_stats(),::grpc::internal::RpcMethod::NORMAL_RPC, channel)
|
||||
, rpcmethod_ChangePorts_(Bridge_method_names[41], options.suffix_for_stats(),::grpc::internal::RpcMethod::NORMAL_RPC, channel)
|
||||
, rpcmethod_IsPortFree_(Bridge_method_names[42], options.suffix_for_stats(),::grpc::internal::RpcMethod::NORMAL_RPC, channel)
|
||||
, rpcmethod_AvailableKeychains_(Bridge_method_names[43], options.suffix_for_stats(),::grpc::internal::RpcMethod::NORMAL_RPC, channel)
|
||||
, rpcmethod_SetCurrentKeychain_(Bridge_method_names[44], options.suffix_for_stats(),::grpc::internal::RpcMethod::NORMAL_RPC, channel)
|
||||
, rpcmethod_CurrentKeychain_(Bridge_method_names[45], options.suffix_for_stats(),::grpc::internal::RpcMethod::NORMAL_RPC, channel)
|
||||
, rpcmethod_GetUserList_(Bridge_method_names[46], options.suffix_for_stats(),::grpc::internal::RpcMethod::NORMAL_RPC, channel)
|
||||
, rpcmethod_GetUser_(Bridge_method_names[47], options.suffix_for_stats(),::grpc::internal::RpcMethod::NORMAL_RPC, channel)
|
||||
, rpcmethod_SetUserSplitMode_(Bridge_method_names[48], options.suffix_for_stats(),::grpc::internal::RpcMethod::NORMAL_RPC, channel)
|
||||
, rpcmethod_LogoutUser_(Bridge_method_names[49], options.suffix_for_stats(),::grpc::internal::RpcMethod::NORMAL_RPC, channel)
|
||||
, rpcmethod_RemoveUser_(Bridge_method_names[50], options.suffix_for_stats(),::grpc::internal::RpcMethod::NORMAL_RPC, channel)
|
||||
, rpcmethod_ConfigureUserAppleMail_(Bridge_method_names[51], options.suffix_for_stats(),::grpc::internal::RpcMethod::NORMAL_RPC, channel)
|
||||
, rpcmethod_StartEventStream_(Bridge_method_names[52], options.suffix_for_stats(),::grpc::internal::RpcMethod::SERVER_STREAMING, channel)
|
||||
, rpcmethod_StopEventStream_(Bridge_method_names[53], options.suffix_for_stats(),::grpc::internal::RpcMethod::NORMAL_RPC, channel)
|
||||
, rpcmethod_ForceLauncher_(Bridge_method_names[23], options.suffix_for_stats(),::grpc::internal::RpcMethod::NORMAL_RPC, channel)
|
||||
, rpcmethod_Login_(Bridge_method_names[24], options.suffix_for_stats(),::grpc::internal::RpcMethod::NORMAL_RPC, channel)
|
||||
, rpcmethod_Login2FA_(Bridge_method_names[25], options.suffix_for_stats(),::grpc::internal::RpcMethod::NORMAL_RPC, channel)
|
||||
, rpcmethod_Login2Passwords_(Bridge_method_names[26], options.suffix_for_stats(),::grpc::internal::RpcMethod::NORMAL_RPC, channel)
|
||||
, rpcmethod_LoginAbort_(Bridge_method_names[27], options.suffix_for_stats(),::grpc::internal::RpcMethod::NORMAL_RPC, channel)
|
||||
, rpcmethod_CheckUpdate_(Bridge_method_names[28], options.suffix_for_stats(),::grpc::internal::RpcMethod::NORMAL_RPC, channel)
|
||||
, rpcmethod_InstallUpdate_(Bridge_method_names[29], options.suffix_for_stats(),::grpc::internal::RpcMethod::NORMAL_RPC, channel)
|
||||
, rpcmethod_SetIsAutomaticUpdateOn_(Bridge_method_names[30], options.suffix_for_stats(),::grpc::internal::RpcMethod::NORMAL_RPC, channel)
|
||||
, rpcmethod_IsAutomaticUpdateOn_(Bridge_method_names[31], options.suffix_for_stats(),::grpc::internal::RpcMethod::NORMAL_RPC, channel)
|
||||
, rpcmethod_IsCacheOnDiskEnabled_(Bridge_method_names[32], options.suffix_for_stats(),::grpc::internal::RpcMethod::NORMAL_RPC, channel)
|
||||
, rpcmethod_DiskCachePath_(Bridge_method_names[33], options.suffix_for_stats(),::grpc::internal::RpcMethod::NORMAL_RPC, channel)
|
||||
, rpcmethod_ChangeLocalCache_(Bridge_method_names[34], options.suffix_for_stats(),::grpc::internal::RpcMethod::NORMAL_RPC, channel)
|
||||
, rpcmethod_SetIsDoHEnabled_(Bridge_method_names[35], options.suffix_for_stats(),::grpc::internal::RpcMethod::NORMAL_RPC, channel)
|
||||
, rpcmethod_IsDoHEnabled_(Bridge_method_names[36], options.suffix_for_stats(),::grpc::internal::RpcMethod::NORMAL_RPC, channel)
|
||||
, rpcmethod_SetUseSslForSmtp_(Bridge_method_names[37], options.suffix_for_stats(),::grpc::internal::RpcMethod::NORMAL_RPC, channel)
|
||||
, rpcmethod_UseSslForSmtp_(Bridge_method_names[38], options.suffix_for_stats(),::grpc::internal::RpcMethod::NORMAL_RPC, channel)
|
||||
, rpcmethod_Hostname_(Bridge_method_names[39], options.suffix_for_stats(),::grpc::internal::RpcMethod::NORMAL_RPC, channel)
|
||||
, rpcmethod_ImapPort_(Bridge_method_names[40], options.suffix_for_stats(),::grpc::internal::RpcMethod::NORMAL_RPC, channel)
|
||||
, rpcmethod_SmtpPort_(Bridge_method_names[41], options.suffix_for_stats(),::grpc::internal::RpcMethod::NORMAL_RPC, channel)
|
||||
, rpcmethod_ChangePorts_(Bridge_method_names[42], options.suffix_for_stats(),::grpc::internal::RpcMethod::NORMAL_RPC, channel)
|
||||
, rpcmethod_IsPortFree_(Bridge_method_names[43], options.suffix_for_stats(),::grpc::internal::RpcMethod::NORMAL_RPC, channel)
|
||||
, rpcmethod_AvailableKeychains_(Bridge_method_names[44], options.suffix_for_stats(),::grpc::internal::RpcMethod::NORMAL_RPC, channel)
|
||||
, rpcmethod_SetCurrentKeychain_(Bridge_method_names[45], options.suffix_for_stats(),::grpc::internal::RpcMethod::NORMAL_RPC, channel)
|
||||
, rpcmethod_CurrentKeychain_(Bridge_method_names[46], options.suffix_for_stats(),::grpc::internal::RpcMethod::NORMAL_RPC, channel)
|
||||
, rpcmethod_GetUserList_(Bridge_method_names[47], options.suffix_for_stats(),::grpc::internal::RpcMethod::NORMAL_RPC, channel)
|
||||
, rpcmethod_GetUser_(Bridge_method_names[48], options.suffix_for_stats(),::grpc::internal::RpcMethod::NORMAL_RPC, channel)
|
||||
, rpcmethod_SetUserSplitMode_(Bridge_method_names[49], options.suffix_for_stats(),::grpc::internal::RpcMethod::NORMAL_RPC, channel)
|
||||
, rpcmethod_LogoutUser_(Bridge_method_names[50], options.suffix_for_stats(),::grpc::internal::RpcMethod::NORMAL_RPC, channel)
|
||||
, rpcmethod_RemoveUser_(Bridge_method_names[51], options.suffix_for_stats(),::grpc::internal::RpcMethod::NORMAL_RPC, channel)
|
||||
, rpcmethod_ConfigureUserAppleMail_(Bridge_method_names[52], options.suffix_for_stats(),::grpc::internal::RpcMethod::NORMAL_RPC, channel)
|
||||
, rpcmethod_StartEventStream_(Bridge_method_names[53], options.suffix_for_stats(),::grpc::internal::RpcMethod::SERVER_STREAMING, channel)
|
||||
, rpcmethod_StopEventStream_(Bridge_method_names[54], options.suffix_for_stats(),::grpc::internal::RpcMethod::NORMAL_RPC, channel)
|
||||
{}
|
||||
|
||||
::grpc::Status Bridge::Stub::AddLogEntry(::grpc::ClientContext* context, const ::grpc::AddLogEntryRequest& request, ::google::protobuf::Empty* response) {
|
||||
@ -670,6 +672,29 @@ void Bridge::Stub::async::ReportBug(::grpc::ClientContext* context, const ::grpc
|
||||
return result;
|
||||
}
|
||||
|
||||
::grpc::Status Bridge::Stub::ForceLauncher(::grpc::ClientContext* context, const ::google::protobuf::StringValue& request, ::google::protobuf::Empty* response) {
|
||||
return ::grpc::internal::BlockingUnaryCall< ::google::protobuf::StringValue, ::google::protobuf::Empty, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(channel_.get(), rpcmethod_ForceLauncher_, context, request, response);
|
||||
}
|
||||
|
||||
void Bridge::Stub::async::ForceLauncher(::grpc::ClientContext* context, const ::google::protobuf::StringValue* request, ::google::protobuf::Empty* response, std::function<void(::grpc::Status)> f) {
|
||||
::grpc::internal::CallbackUnaryCall< ::google::protobuf::StringValue, ::google::protobuf::Empty, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(stub_->channel_.get(), stub_->rpcmethod_ForceLauncher_, context, request, response, std::move(f));
|
||||
}
|
||||
|
||||
void Bridge::Stub::async::ForceLauncher(::grpc::ClientContext* context, const ::google::protobuf::StringValue* request, ::google::protobuf::Empty* response, ::grpc::ClientUnaryReactor* reactor) {
|
||||
::grpc::internal::ClientCallbackUnaryFactory::Create< ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(stub_->channel_.get(), stub_->rpcmethod_ForceLauncher_, context, request, response, reactor);
|
||||
}
|
||||
|
||||
::grpc::ClientAsyncResponseReader< ::google::protobuf::Empty>* Bridge::Stub::PrepareAsyncForceLauncherRaw(::grpc::ClientContext* context, const ::google::protobuf::StringValue& request, ::grpc::CompletionQueue* cq) {
|
||||
return ::grpc::internal::ClientAsyncResponseReaderHelper::Create< ::google::protobuf::Empty, ::google::protobuf::StringValue, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(channel_.get(), cq, rpcmethod_ForceLauncher_, context, request);
|
||||
}
|
||||
|
||||
::grpc::ClientAsyncResponseReader< ::google::protobuf::Empty>* Bridge::Stub::AsyncForceLauncherRaw(::grpc::ClientContext* context, const ::google::protobuf::StringValue& request, ::grpc::CompletionQueue* cq) {
|
||||
auto* result =
|
||||
this->PrepareAsyncForceLauncherRaw(context, request, cq);
|
||||
result->StartCall();
|
||||
return result;
|
||||
}
|
||||
|
||||
::grpc::Status Bridge::Stub::Login(::grpc::ClientContext* context, const ::grpc::LoginRequest& request, ::google::protobuf::Empty* response) {
|
||||
return ::grpc::internal::BlockingUnaryCall< ::grpc::LoginRequest, ::google::protobuf::Empty, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(channel_.get(), rpcmethod_Login_, context, request, response);
|
||||
}
|
||||
@ -1610,12 +1635,12 @@ Bridge::Service::Service() {
|
||||
AddMethod(new ::grpc::internal::RpcServiceMethod(
|
||||
Bridge_method_names[23],
|
||||
::grpc::internal::RpcMethod::NORMAL_RPC,
|
||||
new ::grpc::internal::RpcMethodHandler< Bridge::Service, ::grpc::LoginRequest, ::google::protobuf::Empty, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(
|
||||
new ::grpc::internal::RpcMethodHandler< Bridge::Service, ::google::protobuf::StringValue, ::google::protobuf::Empty, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(
|
||||
[](Bridge::Service* service,
|
||||
::grpc::ServerContext* ctx,
|
||||
const ::grpc::LoginRequest* req,
|
||||
const ::google::protobuf::StringValue* req,
|
||||
::google::protobuf::Empty* resp) {
|
||||
return service->Login(ctx, req, resp);
|
||||
return service->ForceLauncher(ctx, req, resp);
|
||||
}, this)));
|
||||
AddMethod(new ::grpc::internal::RpcServiceMethod(
|
||||
Bridge_method_names[24],
|
||||
@ -1625,7 +1650,7 @@ Bridge::Service::Service() {
|
||||
::grpc::ServerContext* ctx,
|
||||
const ::grpc::LoginRequest* req,
|
||||
::google::protobuf::Empty* resp) {
|
||||
return service->Login2FA(ctx, req, resp);
|
||||
return service->Login(ctx, req, resp);
|
||||
}, this)));
|
||||
AddMethod(new ::grpc::internal::RpcServiceMethod(
|
||||
Bridge_method_names[25],
|
||||
@ -1635,11 +1660,21 @@ Bridge::Service::Service() {
|
||||
::grpc::ServerContext* ctx,
|
||||
const ::grpc::LoginRequest* req,
|
||||
::google::protobuf::Empty* resp) {
|
||||
return service->Login2Passwords(ctx, req, resp);
|
||||
return service->Login2FA(ctx, req, resp);
|
||||
}, this)));
|
||||
AddMethod(new ::grpc::internal::RpcServiceMethod(
|
||||
Bridge_method_names[26],
|
||||
::grpc::internal::RpcMethod::NORMAL_RPC,
|
||||
new ::grpc::internal::RpcMethodHandler< Bridge::Service, ::grpc::LoginRequest, ::google::protobuf::Empty, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(
|
||||
[](Bridge::Service* service,
|
||||
::grpc::ServerContext* ctx,
|
||||
const ::grpc::LoginRequest* req,
|
||||
::google::protobuf::Empty* resp) {
|
||||
return service->Login2Passwords(ctx, req, resp);
|
||||
}, this)));
|
||||
AddMethod(new ::grpc::internal::RpcServiceMethod(
|
||||
Bridge_method_names[27],
|
||||
::grpc::internal::RpcMethod::NORMAL_RPC,
|
||||
new ::grpc::internal::RpcMethodHandler< Bridge::Service, ::grpc::LoginAbortRequest, ::google::protobuf::Empty, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(
|
||||
[](Bridge::Service* service,
|
||||
::grpc::ServerContext* ctx,
|
||||
@ -1648,7 +1683,7 @@ Bridge::Service::Service() {
|
||||
return service->LoginAbort(ctx, req, resp);
|
||||
}, this)));
|
||||
AddMethod(new ::grpc::internal::RpcServiceMethod(
|
||||
Bridge_method_names[27],
|
||||
Bridge_method_names[28],
|
||||
::grpc::internal::RpcMethod::NORMAL_RPC,
|
||||
new ::grpc::internal::RpcMethodHandler< Bridge::Service, ::google::protobuf::Empty, ::google::protobuf::Empty, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(
|
||||
[](Bridge::Service* service,
|
||||
@ -1658,7 +1693,7 @@ Bridge::Service::Service() {
|
||||
return service->CheckUpdate(ctx, req, resp);
|
||||
}, this)));
|
||||
AddMethod(new ::grpc::internal::RpcServiceMethod(
|
||||
Bridge_method_names[28],
|
||||
Bridge_method_names[29],
|
||||
::grpc::internal::RpcMethod::NORMAL_RPC,
|
||||
new ::grpc::internal::RpcMethodHandler< Bridge::Service, ::google::protobuf::Empty, ::google::protobuf::Empty, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(
|
||||
[](Bridge::Service* service,
|
||||
@ -1668,7 +1703,7 @@ Bridge::Service::Service() {
|
||||
return service->InstallUpdate(ctx, req, resp);
|
||||
}, this)));
|
||||
AddMethod(new ::grpc::internal::RpcServiceMethod(
|
||||
Bridge_method_names[29],
|
||||
Bridge_method_names[30],
|
||||
::grpc::internal::RpcMethod::NORMAL_RPC,
|
||||
new ::grpc::internal::RpcMethodHandler< Bridge::Service, ::google::protobuf::BoolValue, ::google::protobuf::Empty, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(
|
||||
[](Bridge::Service* service,
|
||||
@ -1678,7 +1713,7 @@ Bridge::Service::Service() {
|
||||
return service->SetIsAutomaticUpdateOn(ctx, req, resp);
|
||||
}, this)));
|
||||
AddMethod(new ::grpc::internal::RpcServiceMethod(
|
||||
Bridge_method_names[30],
|
||||
Bridge_method_names[31],
|
||||
::grpc::internal::RpcMethod::NORMAL_RPC,
|
||||
new ::grpc::internal::RpcMethodHandler< Bridge::Service, ::google::protobuf::Empty, ::google::protobuf::BoolValue, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(
|
||||
[](Bridge::Service* service,
|
||||
@ -1688,7 +1723,7 @@ Bridge::Service::Service() {
|
||||
return service->IsAutomaticUpdateOn(ctx, req, resp);
|
||||
}, this)));
|
||||
AddMethod(new ::grpc::internal::RpcServiceMethod(
|
||||
Bridge_method_names[31],
|
||||
Bridge_method_names[32],
|
||||
::grpc::internal::RpcMethod::NORMAL_RPC,
|
||||
new ::grpc::internal::RpcMethodHandler< Bridge::Service, ::google::protobuf::Empty, ::google::protobuf::BoolValue, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(
|
||||
[](Bridge::Service* service,
|
||||
@ -1698,7 +1733,7 @@ Bridge::Service::Service() {
|
||||
return service->IsCacheOnDiskEnabled(ctx, req, resp);
|
||||
}, this)));
|
||||
AddMethod(new ::grpc::internal::RpcServiceMethod(
|
||||
Bridge_method_names[32],
|
||||
Bridge_method_names[33],
|
||||
::grpc::internal::RpcMethod::NORMAL_RPC,
|
||||
new ::grpc::internal::RpcMethodHandler< Bridge::Service, ::google::protobuf::Empty, ::google::protobuf::StringValue, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(
|
||||
[](Bridge::Service* service,
|
||||
@ -1708,7 +1743,7 @@ Bridge::Service::Service() {
|
||||
return service->DiskCachePath(ctx, req, resp);
|
||||
}, this)));
|
||||
AddMethod(new ::grpc::internal::RpcServiceMethod(
|
||||
Bridge_method_names[33],
|
||||
Bridge_method_names[34],
|
||||
::grpc::internal::RpcMethod::NORMAL_RPC,
|
||||
new ::grpc::internal::RpcMethodHandler< Bridge::Service, ::grpc::ChangeLocalCacheRequest, ::google::protobuf::Empty, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(
|
||||
[](Bridge::Service* service,
|
||||
@ -1718,7 +1753,7 @@ Bridge::Service::Service() {
|
||||
return service->ChangeLocalCache(ctx, req, resp);
|
||||
}, this)));
|
||||
AddMethod(new ::grpc::internal::RpcServiceMethod(
|
||||
Bridge_method_names[34],
|
||||
Bridge_method_names[35],
|
||||
::grpc::internal::RpcMethod::NORMAL_RPC,
|
||||
new ::grpc::internal::RpcMethodHandler< Bridge::Service, ::google::protobuf::BoolValue, ::google::protobuf::Empty, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(
|
||||
[](Bridge::Service* service,
|
||||
@ -1728,7 +1763,7 @@ Bridge::Service::Service() {
|
||||
return service->SetIsDoHEnabled(ctx, req, resp);
|
||||
}, this)));
|
||||
AddMethod(new ::grpc::internal::RpcServiceMethod(
|
||||
Bridge_method_names[35],
|
||||
Bridge_method_names[36],
|
||||
::grpc::internal::RpcMethod::NORMAL_RPC,
|
||||
new ::grpc::internal::RpcMethodHandler< Bridge::Service, ::google::protobuf::Empty, ::google::protobuf::BoolValue, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(
|
||||
[](Bridge::Service* service,
|
||||
@ -1738,7 +1773,7 @@ Bridge::Service::Service() {
|
||||
return service->IsDoHEnabled(ctx, req, resp);
|
||||
}, this)));
|
||||
AddMethod(new ::grpc::internal::RpcServiceMethod(
|
||||
Bridge_method_names[36],
|
||||
Bridge_method_names[37],
|
||||
::grpc::internal::RpcMethod::NORMAL_RPC,
|
||||
new ::grpc::internal::RpcMethodHandler< Bridge::Service, ::google::protobuf::BoolValue, ::google::protobuf::Empty, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(
|
||||
[](Bridge::Service* service,
|
||||
@ -1748,7 +1783,7 @@ Bridge::Service::Service() {
|
||||
return service->SetUseSslForSmtp(ctx, req, resp);
|
||||
}, this)));
|
||||
AddMethod(new ::grpc::internal::RpcServiceMethod(
|
||||
Bridge_method_names[37],
|
||||
Bridge_method_names[38],
|
||||
::grpc::internal::RpcMethod::NORMAL_RPC,
|
||||
new ::grpc::internal::RpcMethodHandler< Bridge::Service, ::google::protobuf::Empty, ::google::protobuf::BoolValue, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(
|
||||
[](Bridge::Service* service,
|
||||
@ -1758,7 +1793,7 @@ Bridge::Service::Service() {
|
||||
return service->UseSslForSmtp(ctx, req, resp);
|
||||
}, this)));
|
||||
AddMethod(new ::grpc::internal::RpcServiceMethod(
|
||||
Bridge_method_names[38],
|
||||
Bridge_method_names[39],
|
||||
::grpc::internal::RpcMethod::NORMAL_RPC,
|
||||
new ::grpc::internal::RpcMethodHandler< Bridge::Service, ::google::protobuf::Empty, ::google::protobuf::StringValue, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(
|
||||
[](Bridge::Service* service,
|
||||
@ -1768,7 +1803,7 @@ Bridge::Service::Service() {
|
||||
return service->Hostname(ctx, req, resp);
|
||||
}, this)));
|
||||
AddMethod(new ::grpc::internal::RpcServiceMethod(
|
||||
Bridge_method_names[39],
|
||||
Bridge_method_names[40],
|
||||
::grpc::internal::RpcMethod::NORMAL_RPC,
|
||||
new ::grpc::internal::RpcMethodHandler< Bridge::Service, ::google::protobuf::Empty, ::google::protobuf::Int32Value, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(
|
||||
[](Bridge::Service* service,
|
||||
@ -1778,7 +1813,7 @@ Bridge::Service::Service() {
|
||||
return service->ImapPort(ctx, req, resp);
|
||||
}, this)));
|
||||
AddMethod(new ::grpc::internal::RpcServiceMethod(
|
||||
Bridge_method_names[40],
|
||||
Bridge_method_names[41],
|
||||
::grpc::internal::RpcMethod::NORMAL_RPC,
|
||||
new ::grpc::internal::RpcMethodHandler< Bridge::Service, ::google::protobuf::Empty, ::google::protobuf::Int32Value, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(
|
||||
[](Bridge::Service* service,
|
||||
@ -1788,7 +1823,7 @@ Bridge::Service::Service() {
|
||||
return service->SmtpPort(ctx, req, resp);
|
||||
}, this)));
|
||||
AddMethod(new ::grpc::internal::RpcServiceMethod(
|
||||
Bridge_method_names[41],
|
||||
Bridge_method_names[42],
|
||||
::grpc::internal::RpcMethod::NORMAL_RPC,
|
||||
new ::grpc::internal::RpcMethodHandler< Bridge::Service, ::grpc::ChangePortsRequest, ::google::protobuf::Empty, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(
|
||||
[](Bridge::Service* service,
|
||||
@ -1798,7 +1833,7 @@ Bridge::Service::Service() {
|
||||
return service->ChangePorts(ctx, req, resp);
|
||||
}, this)));
|
||||
AddMethod(new ::grpc::internal::RpcServiceMethod(
|
||||
Bridge_method_names[42],
|
||||
Bridge_method_names[43],
|
||||
::grpc::internal::RpcMethod::NORMAL_RPC,
|
||||
new ::grpc::internal::RpcMethodHandler< Bridge::Service, ::google::protobuf::Int32Value, ::google::protobuf::BoolValue, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(
|
||||
[](Bridge::Service* service,
|
||||
@ -1808,7 +1843,7 @@ Bridge::Service::Service() {
|
||||
return service->IsPortFree(ctx, req, resp);
|
||||
}, this)));
|
||||
AddMethod(new ::grpc::internal::RpcServiceMethod(
|
||||
Bridge_method_names[43],
|
||||
Bridge_method_names[44],
|
||||
::grpc::internal::RpcMethod::NORMAL_RPC,
|
||||
new ::grpc::internal::RpcMethodHandler< Bridge::Service, ::google::protobuf::Empty, ::grpc::AvailableKeychainsResponse, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(
|
||||
[](Bridge::Service* service,
|
||||
@ -1818,7 +1853,7 @@ Bridge::Service::Service() {
|
||||
return service->AvailableKeychains(ctx, req, resp);
|
||||
}, this)));
|
||||
AddMethod(new ::grpc::internal::RpcServiceMethod(
|
||||
Bridge_method_names[44],
|
||||
Bridge_method_names[45],
|
||||
::grpc::internal::RpcMethod::NORMAL_RPC,
|
||||
new ::grpc::internal::RpcMethodHandler< Bridge::Service, ::google::protobuf::StringValue, ::google::protobuf::Empty, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(
|
||||
[](Bridge::Service* service,
|
||||
@ -1828,7 +1863,7 @@ Bridge::Service::Service() {
|
||||
return service->SetCurrentKeychain(ctx, req, resp);
|
||||
}, this)));
|
||||
AddMethod(new ::grpc::internal::RpcServiceMethod(
|
||||
Bridge_method_names[45],
|
||||
Bridge_method_names[46],
|
||||
::grpc::internal::RpcMethod::NORMAL_RPC,
|
||||
new ::grpc::internal::RpcMethodHandler< Bridge::Service, ::google::protobuf::Empty, ::google::protobuf::StringValue, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(
|
||||
[](Bridge::Service* service,
|
||||
@ -1838,7 +1873,7 @@ Bridge::Service::Service() {
|
||||
return service->CurrentKeychain(ctx, req, resp);
|
||||
}, this)));
|
||||
AddMethod(new ::grpc::internal::RpcServiceMethod(
|
||||
Bridge_method_names[46],
|
||||
Bridge_method_names[47],
|
||||
::grpc::internal::RpcMethod::NORMAL_RPC,
|
||||
new ::grpc::internal::RpcMethodHandler< Bridge::Service, ::google::protobuf::Empty, ::grpc::UserListResponse, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(
|
||||
[](Bridge::Service* service,
|
||||
@ -1848,7 +1883,7 @@ Bridge::Service::Service() {
|
||||
return service->GetUserList(ctx, req, resp);
|
||||
}, this)));
|
||||
AddMethod(new ::grpc::internal::RpcServiceMethod(
|
||||
Bridge_method_names[47],
|
||||
Bridge_method_names[48],
|
||||
::grpc::internal::RpcMethod::NORMAL_RPC,
|
||||
new ::grpc::internal::RpcMethodHandler< Bridge::Service, ::google::protobuf::StringValue, ::grpc::User, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(
|
||||
[](Bridge::Service* service,
|
||||
@ -1858,7 +1893,7 @@ Bridge::Service::Service() {
|
||||
return service->GetUser(ctx, req, resp);
|
||||
}, this)));
|
||||
AddMethod(new ::grpc::internal::RpcServiceMethod(
|
||||
Bridge_method_names[48],
|
||||
Bridge_method_names[49],
|
||||
::grpc::internal::RpcMethod::NORMAL_RPC,
|
||||
new ::grpc::internal::RpcMethodHandler< Bridge::Service, ::grpc::UserSplitModeRequest, ::google::protobuf::Empty, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(
|
||||
[](Bridge::Service* service,
|
||||
@ -1868,7 +1903,7 @@ Bridge::Service::Service() {
|
||||
return service->SetUserSplitMode(ctx, req, resp);
|
||||
}, this)));
|
||||
AddMethod(new ::grpc::internal::RpcServiceMethod(
|
||||
Bridge_method_names[49],
|
||||
Bridge_method_names[50],
|
||||
::grpc::internal::RpcMethod::NORMAL_RPC,
|
||||
new ::grpc::internal::RpcMethodHandler< Bridge::Service, ::google::protobuf::StringValue, ::google::protobuf::Empty, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(
|
||||
[](Bridge::Service* service,
|
||||
@ -1878,7 +1913,7 @@ Bridge::Service::Service() {
|
||||
return service->LogoutUser(ctx, req, resp);
|
||||
}, this)));
|
||||
AddMethod(new ::grpc::internal::RpcServiceMethod(
|
||||
Bridge_method_names[50],
|
||||
Bridge_method_names[51],
|
||||
::grpc::internal::RpcMethod::NORMAL_RPC,
|
||||
new ::grpc::internal::RpcMethodHandler< Bridge::Service, ::google::protobuf::StringValue, ::google::protobuf::Empty, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(
|
||||
[](Bridge::Service* service,
|
||||
@ -1888,7 +1923,7 @@ Bridge::Service::Service() {
|
||||
return service->RemoveUser(ctx, req, resp);
|
||||
}, this)));
|
||||
AddMethod(new ::grpc::internal::RpcServiceMethod(
|
||||
Bridge_method_names[51],
|
||||
Bridge_method_names[52],
|
||||
::grpc::internal::RpcMethod::NORMAL_RPC,
|
||||
new ::grpc::internal::RpcMethodHandler< Bridge::Service, ::grpc::ConfigureAppleMailRequest, ::google::protobuf::Empty, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(
|
||||
[](Bridge::Service* service,
|
||||
@ -1898,7 +1933,7 @@ Bridge::Service::Service() {
|
||||
return service->ConfigureUserAppleMail(ctx, req, resp);
|
||||
}, this)));
|
||||
AddMethod(new ::grpc::internal::RpcServiceMethod(
|
||||
Bridge_method_names[52],
|
||||
Bridge_method_names[53],
|
||||
::grpc::internal::RpcMethod::SERVER_STREAMING,
|
||||
new ::grpc::internal::ServerStreamingHandler< Bridge::Service, ::grpc::EventStreamRequest, ::grpc::StreamEvent>(
|
||||
[](Bridge::Service* service,
|
||||
@ -1908,7 +1943,7 @@ Bridge::Service::Service() {
|
||||
return service->StartEventStream(ctx, req, writer);
|
||||
}, this)));
|
||||
AddMethod(new ::grpc::internal::RpcServiceMethod(
|
||||
Bridge_method_names[53],
|
||||
Bridge_method_names[54],
|
||||
::grpc::internal::RpcMethod::NORMAL_RPC,
|
||||
new ::grpc::internal::RpcMethodHandler< Bridge::Service, ::google::protobuf::Empty, ::google::protobuf::Empty, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(
|
||||
[](Bridge::Service* service,
|
||||
@ -2083,6 +2118,13 @@ Bridge::Service::~Service() {
|
||||
return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
|
||||
}
|
||||
|
||||
::grpc::Status Bridge::Service::ForceLauncher(::grpc::ServerContext* context, const ::google::protobuf::StringValue* request, ::google::protobuf::Empty* response) {
|
||||
(void) context;
|
||||
(void) request;
|
||||
(void) response;
|
||||
return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
|
||||
}
|
||||
|
||||
::grpc::Status Bridge::Service::Login(::grpc::ServerContext* context, const ::grpc::LoginRequest* request, ::google::protobuf::Empty* response) {
|
||||
(void) context;
|
||||
(void) request;
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@ -1466,7 +1466,7 @@ const char descriptor_table_protodef_bridge_2eproto[] PROTOBUF_SECTION_VARIABLE(
|
||||
"CACHE_UNAVAILABLE_ERROR\020\000\022\031\n\025CACHE_CANT_"
|
||||
"MOVE_ERROR\020\001\022\r\n\tDISK_FULL\020\002*A\n\025MailSetti"
|
||||
"ngsErrorType\022\023\n\017IMAP_PORT_ISSUE\020\000\022\023\n\017SMT"
|
||||
"P_PORT_ISSUE\020\0012\371\034\n\006Bridge\022\?\n\013AddLogEntry"
|
||||
"P_PORT_ISSUE\020\0012\300\035\n\006Bridge\022\?\n\013AddLogEntry"
|
||||
"\022\030.grpc.AddLogEntryRequest\032\026.google.prot"
|
||||
"obuf.Empty\022:\n\010GuiReady\022\026.google.protobuf"
|
||||
".Empty\032\026.google.protobuf.Empty\0226\n\004Quit\022\026"
|
||||
@ -1506,61 +1506,63 @@ const char descriptor_table_protodef_bridge_2eproto[] PROTOBUF_SECTION_VARIABLE(
|
||||
"lClient\022\026.google.protobuf.Empty\032\034.google"
|
||||
".protobuf.StringValue\022;\n\tReportBug\022\026.grp"
|
||||
"c.ReportBugRequest\032\026.google.protobuf.Emp"
|
||||
"ty\0223\n\005Login\022\022.grpc.LoginRequest\032\026.google"
|
||||
".protobuf.Empty\0226\n\010Login2FA\022\022.grpc.Login"
|
||||
"Request\032\026.google.protobuf.Empty\022=\n\017Login"
|
||||
"2Passwords\022\022.grpc.LoginRequest\032\026.google."
|
||||
"protobuf.Empty\022=\n\nLoginAbort\022\027.grpc.Logi"
|
||||
"nAbortRequest\032\026.google.protobuf.Empty\022=\n"
|
||||
"\013CheckUpdate\022\026.google.protobuf.Empty\032\026.g"
|
||||
"oogle.protobuf.Empty\022\?\n\rInstallUpdate\022\026."
|
||||
"google.protobuf.Empty\032\026.google.protobuf."
|
||||
"Empty\022L\n\026SetIsAutomaticUpdateOn\022\032.google"
|
||||
".protobuf.BoolValue\032\026.google.protobuf.Em"
|
||||
"pty\022I\n\023IsAutomaticUpdateOn\022\026.google.prot"
|
||||
"obuf.Empty\032\032.google.protobuf.BoolValue\022J"
|
||||
"\n\024IsCacheOnDiskEnabled\022\026.google.protobuf"
|
||||
".Empty\032\032.google.protobuf.BoolValue\022E\n\rDi"
|
||||
"skCachePath\022\026.google.protobuf.Empty\032\034.go"
|
||||
"ogle.protobuf.StringValue\022I\n\020ChangeLocal"
|
||||
"Cache\022\035.grpc.ChangeLocalCacheRequest\032\026.g"
|
||||
"oogle.protobuf.Empty\022E\n\017SetIsDoHEnabled\022"
|
||||
"\032.google.protobuf.BoolValue\032\026.google.pro"
|
||||
"tobuf.Empty\022B\n\014IsDoHEnabled\022\026.google.pro"
|
||||
"tobuf.Empty\032\032.google.protobuf.BoolValue\022"
|
||||
"F\n\020SetUseSslForSmtp\022\032.google.protobuf.Bo"
|
||||
"olValue\032\026.google.protobuf.Empty\022C\n\rUseSs"
|
||||
"lForSmtp\022\026.google.protobuf.Empty\032\032.googl"
|
||||
"e.protobuf.BoolValue\022@\n\010Hostname\022\026.googl"
|
||||
"e.protobuf.Empty\032\034.google.protobuf.Strin"
|
||||
"gValue\022\?\n\010ImapPort\022\026.google.protobuf.Emp"
|
||||
"ty\032\033.google.protobuf.Int32Value\022\?\n\010SmtpP"
|
||||
"ort\022\026.google.protobuf.Empty\032\033.google.pro"
|
||||
"tobuf.Int32Value\022\?\n\013ChangePorts\022\030.grpc.C"
|
||||
"hangePortsRequest\032\026.google.protobuf.Empt"
|
||||
"y\022E\n\nIsPortFree\022\033.google.protobuf.Int32V"
|
||||
"alue\032\032.google.protobuf.BoolValue\022N\n\022Avai"
|
||||
"lableKeychains\022\026.google.protobuf.Empty\032 "
|
||||
".grpc.AvailableKeychainsResponse\022J\n\022SetC"
|
||||
"urrentKeychain\022\034.google.protobuf.StringV"
|
||||
"alue\032\026.google.protobuf.Empty\022G\n\017CurrentK"
|
||||
"eychain\022\026.google.protobuf.Empty\032\034.google"
|
||||
".protobuf.StringValue\022=\n\013GetUserList\022\026.g"
|
||||
"oogle.protobuf.Empty\032\026.grpc.UserListResp"
|
||||
"onse\0223\n\007GetUser\022\034.google.protobuf.String"
|
||||
"Value\032\n.grpc.User\022F\n\020SetUserSplitMode\022\032."
|
||||
"grpc.UserSplitModeRequest\032\026.google.proto"
|
||||
"buf.Empty\022B\n\nLogoutUser\022\034.google.protobu"
|
||||
"f.StringValue\032\026.google.protobuf.Empty\022B\n"
|
||||
"\nRemoveUser\022\034.google.protobuf.StringValu"
|
||||
"e\032\026.google.protobuf.Empty\022Q\n\026ConfigureUs"
|
||||
"erAppleMail\022\037.grpc.ConfigureAppleMailReq"
|
||||
"uest\032\026.google.protobuf.Empty\022A\n\020StartEve"
|
||||
"ntStream\022\030.grpc.EventStreamRequest\032\021.grp"
|
||||
"c.StreamEvent0\001\022A\n\017StopEventStream\022\026.goo"
|
||||
"gle.protobuf.Empty\032\026.google.protobuf.Emp"
|
||||
"tyB6Z4github.com/ProtonMail/proton-bridg"
|
||||
"e/v2/internal/grpcb\006proto3"
|
||||
"ty\022E\n\rForceLauncher\022\034.google.protobuf.St"
|
||||
"ringValue\032\026.google.protobuf.Empty\0223\n\005Log"
|
||||
"in\022\022.grpc.LoginRequest\032\026.google.protobuf"
|
||||
".Empty\0226\n\010Login2FA\022\022.grpc.LoginRequest\032\026"
|
||||
".google.protobuf.Empty\022=\n\017Login2Password"
|
||||
"s\022\022.grpc.LoginRequest\032\026.google.protobuf."
|
||||
"Empty\022=\n\nLoginAbort\022\027.grpc.LoginAbortReq"
|
||||
"uest\032\026.google.protobuf.Empty\022=\n\013CheckUpd"
|
||||
"ate\022\026.google.protobuf.Empty\032\026.google.pro"
|
||||
"tobuf.Empty\022\?\n\rInstallUpdate\022\026.google.pr"
|
||||
"otobuf.Empty\032\026.google.protobuf.Empty\022L\n\026"
|
||||
"SetIsAutomaticUpdateOn\022\032.google.protobuf"
|
||||
".BoolValue\032\026.google.protobuf.Empty\022I\n\023Is"
|
||||
"AutomaticUpdateOn\022\026.google.protobuf.Empt"
|
||||
"y\032\032.google.protobuf.BoolValue\022J\n\024IsCache"
|
||||
"OnDiskEnabled\022\026.google.protobuf.Empty\032\032."
|
||||
"google.protobuf.BoolValue\022E\n\rDiskCachePa"
|
||||
"th\022\026.google.protobuf.Empty\032\034.google.prot"
|
||||
"obuf.StringValue\022I\n\020ChangeLocalCache\022\035.g"
|
||||
"rpc.ChangeLocalCacheRequest\032\026.google.pro"
|
||||
"tobuf.Empty\022E\n\017SetIsDoHEnabled\022\032.google."
|
||||
"protobuf.BoolValue\032\026.google.protobuf.Emp"
|
||||
"ty\022B\n\014IsDoHEnabled\022\026.google.protobuf.Emp"
|
||||
"ty\032\032.google.protobuf.BoolValue\022F\n\020SetUse"
|
||||
"SslForSmtp\022\032.google.protobuf.BoolValue\032\026"
|
||||
".google.protobuf.Empty\022C\n\rUseSslForSmtp\022"
|
||||
"\026.google.protobuf.Empty\032\032.google.protobu"
|
||||
"f.BoolValue\022@\n\010Hostname\022\026.google.protobu"
|
||||
"f.Empty\032\034.google.protobuf.StringValue\022\?\n"
|
||||
"\010ImapPort\022\026.google.protobuf.Empty\032\033.goog"
|
||||
"le.protobuf.Int32Value\022\?\n\010SmtpPort\022\026.goo"
|
||||
"gle.protobuf.Empty\032\033.google.protobuf.Int"
|
||||
"32Value\022\?\n\013ChangePorts\022\030.grpc.ChangePort"
|
||||
"sRequest\032\026.google.protobuf.Empty\022E\n\nIsPo"
|
||||
"rtFree\022\033.google.protobuf.Int32Value\032\032.go"
|
||||
"ogle.protobuf.BoolValue\022N\n\022AvailableKeyc"
|
||||
"hains\022\026.google.protobuf.Empty\032 .grpc.Ava"
|
||||
"ilableKeychainsResponse\022J\n\022SetCurrentKey"
|
||||
"chain\022\034.google.protobuf.StringValue\032\026.go"
|
||||
"ogle.protobuf.Empty\022G\n\017CurrentKeychain\022\026"
|
||||
".google.protobuf.Empty\032\034.google.protobuf"
|
||||
".StringValue\022=\n\013GetUserList\022\026.google.pro"
|
||||
"tobuf.Empty\032\026.grpc.UserListResponse\0223\n\007G"
|
||||
"etUser\022\034.google.protobuf.StringValue\032\n.g"
|
||||
"rpc.User\022F\n\020SetUserSplitMode\022\032.grpc.User"
|
||||
"SplitModeRequest\032\026.google.protobuf.Empty"
|
||||
"\022B\n\nLogoutUser\022\034.google.protobuf.StringV"
|
||||
"alue\032\026.google.protobuf.Empty\022B\n\nRemoveUs"
|
||||
"er\022\034.google.protobuf.StringValue\032\026.googl"
|
||||
"e.protobuf.Empty\022Q\n\026ConfigureUserAppleMa"
|
||||
"il\022\037.grpc.ConfigureAppleMailRequest\032\026.go"
|
||||
"ogle.protobuf.Empty\022A\n\020StartEventStream\022"
|
||||
"\030.grpc.EventStreamRequest\032\021.grpc.StreamE"
|
||||
"vent0\001\022A\n\017StopEventStream\022\026.google.proto"
|
||||
"buf.Empty\032\026.google.protobuf.EmptyB6Z4git"
|
||||
"hub.com/ProtonMail/proton-bridge/v2/inte"
|
||||
"rnal/grpcb\006proto3"
|
||||
;
|
||||
static const ::_pbi::DescriptorTable* const descriptor_table_bridge_2eproto_deps[2] = {
|
||||
&::descriptor_table_google_2fprotobuf_2fempty_2eproto,
|
||||
@ -1568,7 +1570,7 @@ static const ::_pbi::DescriptorTable* const descriptor_table_bridge_2eproto_deps
|
||||
};
|
||||
static ::_pbi::once_flag descriptor_table_bridge_2eproto_once;
|
||||
const ::_pbi::DescriptorTable descriptor_table_bridge_2eproto = {
|
||||
false, false, 9226, descriptor_table_protodef_bridge_2eproto,
|
||||
false, false, 9297, descriptor_table_protodef_bridge_2eproto,
|
||||
"bridge.proto",
|
||||
&descriptor_table_bridge_2eproto_once, descriptor_table_bridge_2eproto_deps, 2, 57,
|
||||
schemas, file_default_instances, TableStruct_bridge_2eproto::offsets,
|
||||
|
||||
@ -59,7 +59,7 @@ void Overseer::startWorker(bool autorelease) const
|
||||
|
||||
worker_->moveToThread(thread_);
|
||||
connect(thread_, &QThread::started, worker_, &Worker::run);
|
||||
connect(worker_, &Worker::finished, [&]() { thread_->quit(); }); // for unkwown reason, connect to the QThread::quit slot does not work...
|
||||
connect(worker_, &Worker::finished, [&]() {thread_->quit(); }); // Safety, normally the thread already properly quits.
|
||||
connect(worker_, &Worker::error, [&]() { thread_->quit(); });
|
||||
|
||||
if (autorelease)
|
||||
|
||||
@ -18,7 +18,7 @@
|
||||
// Code generated by protoc-gen-go. DO NOT EDIT.
|
||||
// versions:
|
||||
// protoc-gen-go v1.28.0
|
||||
// protoc v3.21.2
|
||||
// protoc v3.21.3
|
||||
// source: bridge.proto
|
||||
|
||||
package grpc
|
||||
@ -4122,7 +4122,7 @@ var file_bridge_proto_rawDesc = []byte{
|
||||
0x73, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x13, 0x0a, 0x0f, 0x49, 0x4d,
|
||||
0x41, 0x50, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x49, 0x53, 0x53, 0x55, 0x45, 0x10, 0x00, 0x12,
|
||||
0x13, 0x0a, 0x0f, 0x53, 0x4d, 0x54, 0x50, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x49, 0x53, 0x53,
|
||||
0x55, 0x45, 0x10, 0x01, 0x32, 0xf9, 0x1c, 0x0a, 0x06, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x12,
|
||||
0x55, 0x45, 0x10, 0x01, 0x32, 0xc0, 0x1d, 0x0a, 0x06, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x12,
|
||||
0x3f, 0x0a, 0x0b, 0x41, 0x64, 0x64, 0x4c, 0x6f, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x18,
|
||||
0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x41, 0x64, 0x64, 0x4c, 0x6f, 0x67, 0x45, 0x6e, 0x74, 0x72,
|
||||
0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
|
||||
@ -4221,143 +4221,148 @@ var file_bridge_proto_rawDesc = []byte{
|
||||
0x65, 0x70, 0x6f, 0x72, 0x74, 0x42, 0x75, 0x67, 0x12, 0x16, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e,
|
||||
0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x42, 0x75, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
|
||||
0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
|
||||
0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x33, 0x0a, 0x05, 0x4c, 0x6f, 0x67, 0x69,
|
||||
0x6e, 0x12, 0x12, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65,
|
||||
0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70,
|
||||
0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x36, 0x0a,
|
||||
0x08, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x32, 0x46, 0x41, 0x12, 0x12, 0x2e, 0x67, 0x72, 0x70, 0x63,
|
||||
0x2e, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e,
|
||||
0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e,
|
||||
0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x3d, 0x0a, 0x0f, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x32, 0x50,
|
||||
0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x73, 0x12, 0x12, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e,
|
||||
0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x45, 0x0a, 0x0d, 0x46, 0x6f, 0x72, 0x63,
|
||||
0x65, 0x4c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x65, 0x72, 0x12, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
|
||||
0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69,
|
||||
0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
|
||||
0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12,
|
||||
0x33, 0x0a, 0x05, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x12, 0x12, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e,
|
||||
0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67,
|
||||
0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45,
|
||||
0x6d, 0x70, 0x74, 0x79, 0x12, 0x3d, 0x0a, 0x0a, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x41, 0x62, 0x6f,
|
||||
0x72, 0x74, 0x12, 0x17, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x41,
|
||||
0x62, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f,
|
||||
0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d,
|
||||
0x70, 0x74, 0x79, 0x12, 0x3d, 0x0a, 0x0b, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x55, 0x70, 0x64, 0x61,
|
||||
0x74, 0x65, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
|
||||
0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f,
|
||||
0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70,
|
||||
0x74, 0x79, 0x12, 0x3f, 0x0a, 0x0d, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x55, 0x70, 0x64,
|
||||
0x61, 0x74, 0x65, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f,
|
||||
0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x16, 0x2e, 0x67, 0x6f,
|
||||
0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d,
|
||||
0x70, 0x74, 0x79, 0x12, 0x4c, 0x0a, 0x16, 0x53, 0x65, 0x74, 0x49, 0x73, 0x41, 0x75, 0x74, 0x6f,
|
||||
0x6d, 0x61, 0x74, 0x69, 0x63, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x6e, 0x12, 0x1a, 0x2e,
|
||||
0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e,
|
||||
0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
|
||||
0x6d, 0x70, 0x74, 0x79, 0x12, 0x36, 0x0a, 0x08, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x32, 0x46, 0x41,
|
||||
0x12, 0x12, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x71,
|
||||
0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,
|
||||
0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x3d, 0x0a, 0x0f,
|
||||
0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x32, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x73, 0x12,
|
||||
0x12, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75,
|
||||
0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f,
|
||||
0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x3d, 0x0a, 0x0a, 0x4c,
|
||||
0x6f, 0x67, 0x69, 0x6e, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x12, 0x17, 0x2e, 0x67, 0x72, 0x70, 0x63,
|
||||
0x2e, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65,
|
||||
0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
|
||||
0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x3d, 0x0a, 0x0b, 0x43, 0x68,
|
||||
0x65, 0x63, 0x6b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
|
||||
0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74,
|
||||
0x79, 0x12, 0x49, 0x0a, 0x13, 0x49, 0x73, 0x41, 0x75, 0x74, 0x6f, 0x6d, 0x61, 0x74, 0x69, 0x63,
|
||||
0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x6e, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
|
||||
0x79, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
|
||||
0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x3f, 0x0a, 0x0d, 0x49, 0x6e, 0x73,
|
||||
0x74, 0x61, 0x6c, 0x6c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f,
|
||||
0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70,
|
||||
0x74, 0x79, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
|
||||
0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x4c, 0x0a, 0x16, 0x53, 0x65,
|
||||
0x74, 0x49, 0x73, 0x41, 0x75, 0x74, 0x6f, 0x6d, 0x61, 0x74, 0x69, 0x63, 0x55, 0x70, 0x64, 0x61,
|
||||
0x74, 0x65, 0x4f, 0x6e, 0x12, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,
|
||||
0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65,
|
||||
0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
|
||||
0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x49, 0x0a, 0x13, 0x49, 0x73, 0x41, 0x75,
|
||||
0x74, 0x6f, 0x6d, 0x61, 0x74, 0x69, 0x63, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x6e, 0x12,
|
||||
0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
|
||||
0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
|
||||
0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61,
|
||||
0x6c, 0x75, 0x65, 0x12, 0x4a, 0x0a, 0x14, 0x49, 0x73, 0x43, 0x61, 0x63, 0x68, 0x65, 0x4f, 0x6e,
|
||||
0x44, 0x69, 0x73, 0x6b, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x16, 0x2e, 0x67, 0x6f,
|
||||
0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d,
|
||||
0x70, 0x74, 0x79, 0x1a, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f,
|
||||
0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12,
|
||||
0x45, 0x0a, 0x0d, 0x44, 0x69, 0x73, 0x6b, 0x43, 0x61, 0x63, 0x68, 0x65, 0x50, 0x61, 0x74, 0x68,
|
||||
0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
|
||||
0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
|
||||
0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e,
|
||||
0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x49, 0x0a, 0x10, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65,
|
||||
0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x43, 0x61, 0x63, 0x68, 0x65, 0x12, 0x1d, 0x2e, 0x67, 0x72, 0x70,
|
||||
0x63, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x43, 0x61, 0x63,
|
||||
0x68, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
|
||||
0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74,
|
||||
0x79, 0x12, 0x45, 0x0a, 0x0f, 0x53, 0x65, 0x74, 0x49, 0x73, 0x44, 0x6f, 0x48, 0x45, 0x6e, 0x61,
|
||||
0x62, 0x6c, 0x65, 0x64, 0x12, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,
|
||||
0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65,
|
||||
0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
|
||||
0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x42, 0x0a, 0x0c, 0x49, 0x73, 0x44, 0x6f,
|
||||
0x48, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
|
||||
0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79,
|
||||
0x1a, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
|
||||
0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x4a, 0x0a, 0x14,
|
||||
0x49, 0x73, 0x43, 0x61, 0x63, 0x68, 0x65, 0x4f, 0x6e, 0x44, 0x69, 0x73, 0x6b, 0x45, 0x6e, 0x61,
|
||||
0x62, 0x6c, 0x65, 0x64, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,
|
||||
0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x1a, 0x2e, 0x67,
|
||||
0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42,
|
||||
0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x45, 0x0a, 0x0d, 0x44, 0x69, 0x73, 0x6b,
|
||||
0x43, 0x61, 0x63, 0x68, 0x65, 0x50, 0x61, 0x74, 0x68, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
|
||||
0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74,
|
||||
0x79, 0x1a, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
|
||||
0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12,
|
||||
0x49, 0x0a, 0x10, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x43, 0x61,
|
||||
0x63, 0x68, 0x65, 0x12, 0x1d, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67,
|
||||
0x65, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x43, 0x61, 0x63, 0x68, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65,
|
||||
0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
|
||||
0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x45, 0x0a, 0x0f, 0x53, 0x65,
|
||||
0x74, 0x49, 0x73, 0x44, 0x6f, 0x48, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x1a, 0x2e,
|
||||
0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x46, 0x0a, 0x10,
|
||||
0x53, 0x65, 0x74, 0x55, 0x73, 0x65, 0x53, 0x73, 0x6c, 0x46, 0x6f, 0x72, 0x53, 0x6d, 0x74, 0x70,
|
||||
0x12, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
|
||||
0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x1a, 0x16, 0x2e, 0x67,
|
||||
0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45,
|
||||
0x6d, 0x70, 0x74, 0x79, 0x12, 0x43, 0x0a, 0x0d, 0x55, 0x73, 0x65, 0x53, 0x73, 0x6c, 0x46, 0x6f,
|
||||
0x72, 0x53, 0x6d, 0x74, 0x70, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70,
|
||||
0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x1a, 0x2e,
|
||||
0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e,
|
||||
0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
|
||||
0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x40, 0x0a, 0x08, 0x48, 0x6f, 0x73,
|
||||
0x74, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70,
|
||||
0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x1c, 0x2e,
|
||||
0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e,
|
||||
0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x3f, 0x0a, 0x08, 0x49,
|
||||
0x6d, 0x61, 0x70, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
|
||||
0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a,
|
||||
0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
|
||||
0x66, 0x2e, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x3f, 0x0a, 0x08,
|
||||
0x53, 0x6d, 0x74, 0x70, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
|
||||
0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79,
|
||||
0x1a, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
|
||||
0x75, 0x66, 0x2e, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x3f, 0x0a,
|
||||
0x0b, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x73, 0x12, 0x18, 0x2e, 0x67,
|
||||
0x72, 0x70, 0x63, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x73, 0x52,
|
||||
0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
|
||||
0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x45,
|
||||
0x0a, 0x0a, 0x49, 0x73, 0x50, 0x6f, 0x72, 0x74, 0x46, 0x72, 0x65, 0x65, 0x12, 0x1b, 0x2e, 0x67,
|
||||
0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x49,
|
||||
0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x1a, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
|
||||
0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c,
|
||||
0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x4e, 0x0a, 0x12, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62,
|
||||
0x6c, 0x65, 0x4b, 0x65, 0x79, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x73, 0x12, 0x16, 0x2e, 0x67, 0x6f,
|
||||
0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d,
|
||||
0x70, 0x74, 0x79, 0x1a, 0x20, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x41, 0x76, 0x61, 0x69, 0x6c,
|
||||
0x61, 0x62, 0x6c, 0x65, 0x4b, 0x65, 0x79, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x73, 0x52, 0x65, 0x73,
|
||||
0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4a, 0x0a, 0x12, 0x53, 0x65, 0x74, 0x43, 0x75, 0x72, 0x72,
|
||||
0x65, 0x6e, 0x74, 0x4b, 0x65, 0x79, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x12, 0x1c, 0x2e, 0x67, 0x6f,
|
||||
0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74,
|
||||
0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
|
||||
0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74,
|
||||
0x79, 0x12, 0x42, 0x0a, 0x0c, 0x49, 0x73, 0x44, 0x6f, 0x48, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65,
|
||||
0x64, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
|
||||
0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
|
||||
0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c,
|
||||
0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x46, 0x0a, 0x10, 0x53, 0x65, 0x74, 0x55, 0x73, 0x65, 0x53,
|
||||
0x73, 0x6c, 0x46, 0x6f, 0x72, 0x53, 0x6d, 0x74, 0x70, 0x12, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
|
||||
0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c,
|
||||
0x56, 0x61, 0x6c, 0x75, 0x65, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70,
|
||||
0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x43, 0x0a,
|
||||
0x0d, 0x55, 0x73, 0x65, 0x53, 0x73, 0x6c, 0x46, 0x6f, 0x72, 0x53, 0x6d, 0x74, 0x70, 0x12, 0x16,
|
||||
0x79, 0x12, 0x47, 0x0a, 0x0f, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x4b, 0x65, 0x79, 0x63,
|
||||
0x68, 0x61, 0x69, 0x6e, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,
|
||||
0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x1c, 0x2e, 0x67,
|
||||
0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53,
|
||||
0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x3d, 0x0a, 0x0b, 0x47, 0x65,
|
||||
0x74, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
|
||||
0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74,
|
||||
0x79, 0x1a, 0x16, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x69, 0x73,
|
||||
0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x33, 0x0a, 0x07, 0x47, 0x65, 0x74,
|
||||
0x55, 0x73, 0x65, 0x72, 0x12, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,
|
||||
0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c,
|
||||
0x75, 0x65, 0x1a, 0x0a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x12, 0x46,
|
||||
0x0a, 0x10, 0x53, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x53, 0x70, 0x6c, 0x69, 0x74, 0x4d, 0x6f,
|
||||
0x64, 0x65, 0x12, 0x1a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x53, 0x70,
|
||||
0x6c, 0x69, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16,
|
||||
0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
|
||||
0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
|
||||
0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c,
|
||||
0x75, 0x65, 0x12, 0x40, 0x0a, 0x08, 0x48, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16,
|
||||
0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
|
||||
0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
|
||||
0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56,
|
||||
0x61, 0x6c, 0x75, 0x65, 0x12, 0x3f, 0x0a, 0x08, 0x49, 0x6d, 0x61, 0x70, 0x50, 0x6f, 0x72, 0x74,
|
||||
0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
|
||||
0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
|
||||
0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x49, 0x6e, 0x74, 0x33, 0x32,
|
||||
0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x3f, 0x0a, 0x08, 0x53, 0x6d, 0x74, 0x70, 0x50, 0x6f, 0x72,
|
||||
0x74, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
|
||||
0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
|
||||
0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x49, 0x6e, 0x74, 0x33,
|
||||
0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x3f, 0x0a, 0x0b, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65,
|
||||
0x50, 0x6f, 0x72, 0x74, 0x73, 0x12, 0x18, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x68, 0x61,
|
||||
0x6e, 0x67, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
|
||||
0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
|
||||
0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x45, 0x0a, 0x0a, 0x49, 0x73, 0x50, 0x6f, 0x72,
|
||||
0x74, 0x46, 0x72, 0x65, 0x65, 0x12, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70,
|
||||
0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c,
|
||||
0x75, 0x65, 0x1a, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
|
||||
0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x4e,
|
||||
0x0a, 0x12, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x4b, 0x65, 0x79, 0x63, 0x68,
|
||||
0x61, 0x69, 0x6e, 0x73, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,
|
||||
0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x20, 0x2e, 0x67,
|
||||
0x72, 0x70, 0x63, 0x2e, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x4b, 0x65, 0x79,
|
||||
0x63, 0x68, 0x61, 0x69, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4a,
|
||||
0x0a, 0x12, 0x53, 0x65, 0x74, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x4b, 0x65, 0x79, 0x63,
|
||||
0x68, 0x61, 0x69, 0x6e, 0x12, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,
|
||||
0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x42, 0x0a, 0x0a, 0x4c, 0x6f, 0x67, 0x6f, 0x75, 0x74,
|
||||
0x55, 0x73, 0x65, 0x72, 0x12, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,
|
||||
0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c,
|
||||
0x75, 0x65, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
|
||||
0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x47, 0x0a, 0x0f, 0x43, 0x75,
|
||||
0x72, 0x72, 0x65, 0x6e, 0x74, 0x4b, 0x65, 0x79, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x12, 0x16, 0x2e,
|
||||
0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e,
|
||||
0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70,
|
||||
0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61,
|
||||
0x6c, 0x75, 0x65, 0x12, 0x3d, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x69,
|
||||
0x73, 0x74, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
|
||||
0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x16, 0x2e, 0x67, 0x72, 0x70,
|
||||
0x63, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
|
||||
0x73, 0x65, 0x12, 0x33, 0x0a, 0x07, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x12, 0x1c, 0x2e,
|
||||
0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e,
|
||||
0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x1a, 0x0a, 0x2e, 0x67, 0x72,
|
||||
0x70, 0x63, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x12, 0x46, 0x0a, 0x10, 0x53, 0x65, 0x74, 0x55, 0x73,
|
||||
0x65, 0x72, 0x53, 0x70, 0x6c, 0x69, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x1a, 0x2e, 0x67, 0x72,
|
||||
0x70, 0x63, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x53, 0x70, 0x6c, 0x69, 0x74, 0x4d, 0x6f, 0x64, 0x65,
|
||||
0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
|
||||
0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12,
|
||||
0x42, 0x0a, 0x0a, 0x4c, 0x6f, 0x67, 0x6f, 0x75, 0x74, 0x55, 0x73, 0x65, 0x72, 0x12, 0x1c, 0x2e,
|
||||
0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e,
|
||||
0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x1a, 0x16, 0x2e, 0x67, 0x6f,
|
||||
0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d,
|
||||
0x70, 0x74, 0x79, 0x12, 0x42, 0x0a, 0x0a, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x55, 0x73, 0x65,
|
||||
0x72, 0x12, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
|
||||
0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x1a,
|
||||
0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x42, 0x0a, 0x0a, 0x52, 0x65,
|
||||
0x6d, 0x6f, 0x76, 0x65, 0x55, 0x73, 0x65, 0x72, 0x12, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
|
||||
0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e,
|
||||
0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
|
||||
0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x51,
|
||||
0x0a, 0x16, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x55, 0x73, 0x65, 0x72, 0x41,
|
||||
0x70, 0x70, 0x6c, 0x65, 0x4d, 0x61, 0x69, 0x6c, 0x12, 0x1f, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e,
|
||||
0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x4d, 0x61,
|
||||
0x69, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
|
||||
0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74,
|
||||
0x79, 0x12, 0x41, 0x0a, 0x10, 0x53, 0x74, 0x61, 0x72, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x53,
|
||||
0x74, 0x72, 0x65, 0x61, 0x6d, 0x12, 0x18, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x45, 0x76, 0x65,
|
||||
0x6e, 0x74, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
|
||||
0x11, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x45, 0x76, 0x65,
|
||||
0x6e, 0x74, 0x30, 0x01, 0x12, 0x41, 0x0a, 0x0f, 0x53, 0x74, 0x6f, 0x70, 0x45, 0x76, 0x65, 0x6e,
|
||||
0x74, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
|
||||
0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a,
|
||||
0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
|
||||
0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x51, 0x0a, 0x16, 0x43, 0x6f, 0x6e, 0x66, 0x69,
|
||||
0x67, 0x75, 0x72, 0x65, 0x55, 0x73, 0x65, 0x72, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x4d, 0x61, 0x69,
|
||||
0x6c, 0x12, 0x1f, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75,
|
||||
0x72, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x4d, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65,
|
||||
0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
|
||||
0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x41, 0x0a, 0x10, 0x53, 0x74,
|
||||
0x61, 0x72, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x12, 0x18,
|
||||
0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x72, 0x65, 0x61,
|
||||
0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x11, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e,
|
||||
0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x30, 0x01, 0x12, 0x41, 0x0a,
|
||||
0x0f, 0x53, 0x74, 0x6f, 0x70, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d,
|
||||
0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
|
||||
0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
|
||||
0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79,
|
||||
0x42, 0x36, 0x5a, 0x34, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x50,
|
||||
0x72, 0x6f, 0x74, 0x6f, 0x6e, 0x4d, 0x61, 0x69, 0x6c, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x6e,
|
||||
0x2d, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x2f, 0x76, 0x32, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72,
|
||||
0x6e, 0x61, 0x6c, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
|
||||
0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x42, 0x36, 0x5a, 0x34, 0x67, 0x69, 0x74, 0x68, 0x75,
|
||||
0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x6e, 0x4d, 0x61, 0x69, 0x6c,
|
||||
0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x6e, 0x2d, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x2f, 0x76,
|
||||
0x32, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x62,
|
||||
0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
|
||||
}
|
||||
|
||||
var (
|
||||
@ -4517,93 +4522,95 @@ var file_bridge_proto_depIdxs = []int32{
|
||||
62, // 71: grpc.Bridge.ColorSchemeName:input_type -> google.protobuf.Empty
|
||||
62, // 72: grpc.Bridge.CurrentEmailClient:input_type -> google.protobuf.Empty
|
||||
6, // 73: grpc.Bridge.ReportBug:input_type -> grpc.ReportBugRequest
|
||||
7, // 74: grpc.Bridge.Login:input_type -> grpc.LoginRequest
|
||||
7, // 75: grpc.Bridge.Login2FA:input_type -> grpc.LoginRequest
|
||||
7, // 76: grpc.Bridge.Login2Passwords:input_type -> grpc.LoginRequest
|
||||
8, // 77: grpc.Bridge.LoginAbort:input_type -> grpc.LoginAbortRequest
|
||||
62, // 78: grpc.Bridge.CheckUpdate:input_type -> google.protobuf.Empty
|
||||
62, // 79: grpc.Bridge.InstallUpdate:input_type -> google.protobuf.Empty
|
||||
63, // 80: grpc.Bridge.SetIsAutomaticUpdateOn:input_type -> google.protobuf.BoolValue
|
||||
62, // 81: grpc.Bridge.IsAutomaticUpdateOn:input_type -> google.protobuf.Empty
|
||||
62, // 82: grpc.Bridge.IsCacheOnDiskEnabled:input_type -> google.protobuf.Empty
|
||||
62, // 83: grpc.Bridge.DiskCachePath:input_type -> google.protobuf.Empty
|
||||
9, // 84: grpc.Bridge.ChangeLocalCache:input_type -> grpc.ChangeLocalCacheRequest
|
||||
63, // 85: grpc.Bridge.SetIsDoHEnabled:input_type -> google.protobuf.BoolValue
|
||||
62, // 86: grpc.Bridge.IsDoHEnabled:input_type -> google.protobuf.Empty
|
||||
63, // 87: grpc.Bridge.SetUseSslForSmtp:input_type -> google.protobuf.BoolValue
|
||||
62, // 88: grpc.Bridge.UseSslForSmtp:input_type -> google.protobuf.Empty
|
||||
62, // 89: grpc.Bridge.Hostname:input_type -> google.protobuf.Empty
|
||||
62, // 90: grpc.Bridge.ImapPort:input_type -> google.protobuf.Empty
|
||||
62, // 91: grpc.Bridge.SmtpPort:input_type -> google.protobuf.Empty
|
||||
10, // 92: grpc.Bridge.ChangePorts:input_type -> grpc.ChangePortsRequest
|
||||
65, // 93: grpc.Bridge.IsPortFree:input_type -> google.protobuf.Int32Value
|
||||
62, // 94: grpc.Bridge.AvailableKeychains:input_type -> google.protobuf.Empty
|
||||
64, // 95: grpc.Bridge.SetCurrentKeychain:input_type -> google.protobuf.StringValue
|
||||
62, // 96: grpc.Bridge.CurrentKeychain:input_type -> google.protobuf.Empty
|
||||
62, // 97: grpc.Bridge.GetUserList:input_type -> google.protobuf.Empty
|
||||
64, // 98: grpc.Bridge.GetUser:input_type -> google.protobuf.StringValue
|
||||
13, // 99: grpc.Bridge.SetUserSplitMode:input_type -> grpc.UserSplitModeRequest
|
||||
64, // 100: grpc.Bridge.LogoutUser:input_type -> google.protobuf.StringValue
|
||||
64, // 101: grpc.Bridge.RemoveUser:input_type -> google.protobuf.StringValue
|
||||
15, // 102: grpc.Bridge.ConfigureUserAppleMail:input_type -> grpc.ConfigureAppleMailRequest
|
||||
16, // 103: grpc.Bridge.StartEventStream:input_type -> grpc.EventStreamRequest
|
||||
62, // 104: grpc.Bridge.StopEventStream:input_type -> google.protobuf.Empty
|
||||
62, // 105: grpc.Bridge.AddLogEntry:output_type -> google.protobuf.Empty
|
||||
62, // 106: grpc.Bridge.GuiReady:output_type -> google.protobuf.Empty
|
||||
62, // 107: grpc.Bridge.Quit:output_type -> google.protobuf.Empty
|
||||
62, // 108: grpc.Bridge.Restart:output_type -> google.protobuf.Empty
|
||||
63, // 109: grpc.Bridge.ShowOnStartup:output_type -> google.protobuf.BoolValue
|
||||
63, // 110: grpc.Bridge.ShowSplashScreen:output_type -> google.protobuf.BoolValue
|
||||
63, // 111: grpc.Bridge.IsFirstGuiStart:output_type -> google.protobuf.BoolValue
|
||||
62, // 112: grpc.Bridge.SetIsAutostartOn:output_type -> google.protobuf.Empty
|
||||
63, // 113: grpc.Bridge.IsAutostartOn:output_type -> google.protobuf.BoolValue
|
||||
62, // 114: grpc.Bridge.SetIsBetaEnabled:output_type -> google.protobuf.Empty
|
||||
63, // 115: grpc.Bridge.IsBetaEnabled:output_type -> google.protobuf.BoolValue
|
||||
64, // 116: grpc.Bridge.GoOs:output_type -> google.protobuf.StringValue
|
||||
62, // 117: grpc.Bridge.TriggerReset:output_type -> google.protobuf.Empty
|
||||
64, // 118: grpc.Bridge.Version:output_type -> google.protobuf.StringValue
|
||||
64, // 119: grpc.Bridge.LogsPath:output_type -> google.protobuf.StringValue
|
||||
64, // 120: grpc.Bridge.LicensePath:output_type -> google.protobuf.StringValue
|
||||
64, // 121: grpc.Bridge.ReleaseNotesPageLink:output_type -> google.protobuf.StringValue
|
||||
64, // 122: grpc.Bridge.DependencyLicensesLink:output_type -> google.protobuf.StringValue
|
||||
64, // 123: grpc.Bridge.LandingPageLink:output_type -> google.protobuf.StringValue
|
||||
62, // 124: grpc.Bridge.SetColorSchemeName:output_type -> google.protobuf.Empty
|
||||
64, // 125: grpc.Bridge.ColorSchemeName:output_type -> google.protobuf.StringValue
|
||||
64, // 126: grpc.Bridge.CurrentEmailClient:output_type -> google.protobuf.StringValue
|
||||
62, // 127: grpc.Bridge.ReportBug:output_type -> google.protobuf.Empty
|
||||
62, // 128: grpc.Bridge.Login:output_type -> google.protobuf.Empty
|
||||
62, // 129: grpc.Bridge.Login2FA:output_type -> google.protobuf.Empty
|
||||
62, // 130: grpc.Bridge.Login2Passwords:output_type -> google.protobuf.Empty
|
||||
62, // 131: grpc.Bridge.LoginAbort:output_type -> google.protobuf.Empty
|
||||
62, // 132: grpc.Bridge.CheckUpdate:output_type -> google.protobuf.Empty
|
||||
62, // 133: grpc.Bridge.InstallUpdate:output_type -> google.protobuf.Empty
|
||||
62, // 134: grpc.Bridge.SetIsAutomaticUpdateOn:output_type -> google.protobuf.Empty
|
||||
63, // 135: grpc.Bridge.IsAutomaticUpdateOn:output_type -> google.protobuf.BoolValue
|
||||
63, // 136: grpc.Bridge.IsCacheOnDiskEnabled:output_type -> google.protobuf.BoolValue
|
||||
64, // 137: grpc.Bridge.DiskCachePath:output_type -> google.protobuf.StringValue
|
||||
62, // 138: grpc.Bridge.ChangeLocalCache:output_type -> google.protobuf.Empty
|
||||
62, // 139: grpc.Bridge.SetIsDoHEnabled:output_type -> google.protobuf.Empty
|
||||
63, // 140: grpc.Bridge.IsDoHEnabled:output_type -> google.protobuf.BoolValue
|
||||
62, // 141: grpc.Bridge.SetUseSslForSmtp:output_type -> google.protobuf.Empty
|
||||
63, // 142: grpc.Bridge.UseSslForSmtp:output_type -> google.protobuf.BoolValue
|
||||
64, // 143: grpc.Bridge.Hostname:output_type -> google.protobuf.StringValue
|
||||
65, // 144: grpc.Bridge.ImapPort:output_type -> google.protobuf.Int32Value
|
||||
65, // 145: grpc.Bridge.SmtpPort:output_type -> google.protobuf.Int32Value
|
||||
62, // 146: grpc.Bridge.ChangePorts:output_type -> google.protobuf.Empty
|
||||
63, // 147: grpc.Bridge.IsPortFree:output_type -> google.protobuf.BoolValue
|
||||
11, // 148: grpc.Bridge.AvailableKeychains:output_type -> grpc.AvailableKeychainsResponse
|
||||
62, // 149: grpc.Bridge.SetCurrentKeychain:output_type -> google.protobuf.Empty
|
||||
64, // 150: grpc.Bridge.CurrentKeychain:output_type -> google.protobuf.StringValue
|
||||
14, // 151: grpc.Bridge.GetUserList:output_type -> grpc.UserListResponse
|
||||
12, // 152: grpc.Bridge.GetUser:output_type -> grpc.User
|
||||
62, // 153: grpc.Bridge.SetUserSplitMode:output_type -> google.protobuf.Empty
|
||||
62, // 154: grpc.Bridge.LogoutUser:output_type -> google.protobuf.Empty
|
||||
62, // 155: grpc.Bridge.RemoveUser:output_type -> google.protobuf.Empty
|
||||
62, // 156: grpc.Bridge.ConfigureUserAppleMail:output_type -> google.protobuf.Empty
|
||||
17, // 157: grpc.Bridge.StartEventStream:output_type -> grpc.StreamEvent
|
||||
62, // 158: grpc.Bridge.StopEventStream:output_type -> google.protobuf.Empty
|
||||
105, // [105:159] is the sub-list for method output_type
|
||||
51, // [51:105] is the sub-list for method input_type
|
||||
64, // 74: grpc.Bridge.ForceLauncher:input_type -> google.protobuf.StringValue
|
||||
7, // 75: grpc.Bridge.Login:input_type -> grpc.LoginRequest
|
||||
7, // 76: grpc.Bridge.Login2FA:input_type -> grpc.LoginRequest
|
||||
7, // 77: grpc.Bridge.Login2Passwords:input_type -> grpc.LoginRequest
|
||||
8, // 78: grpc.Bridge.LoginAbort:input_type -> grpc.LoginAbortRequest
|
||||
62, // 79: grpc.Bridge.CheckUpdate:input_type -> google.protobuf.Empty
|
||||
62, // 80: grpc.Bridge.InstallUpdate:input_type -> google.protobuf.Empty
|
||||
63, // 81: grpc.Bridge.SetIsAutomaticUpdateOn:input_type -> google.protobuf.BoolValue
|
||||
62, // 82: grpc.Bridge.IsAutomaticUpdateOn:input_type -> google.protobuf.Empty
|
||||
62, // 83: grpc.Bridge.IsCacheOnDiskEnabled:input_type -> google.protobuf.Empty
|
||||
62, // 84: grpc.Bridge.DiskCachePath:input_type -> google.protobuf.Empty
|
||||
9, // 85: grpc.Bridge.ChangeLocalCache:input_type -> grpc.ChangeLocalCacheRequest
|
||||
63, // 86: grpc.Bridge.SetIsDoHEnabled:input_type -> google.protobuf.BoolValue
|
||||
62, // 87: grpc.Bridge.IsDoHEnabled:input_type -> google.protobuf.Empty
|
||||
63, // 88: grpc.Bridge.SetUseSslForSmtp:input_type -> google.protobuf.BoolValue
|
||||
62, // 89: grpc.Bridge.UseSslForSmtp:input_type -> google.protobuf.Empty
|
||||
62, // 90: grpc.Bridge.Hostname:input_type -> google.protobuf.Empty
|
||||
62, // 91: grpc.Bridge.ImapPort:input_type -> google.protobuf.Empty
|
||||
62, // 92: grpc.Bridge.SmtpPort:input_type -> google.protobuf.Empty
|
||||
10, // 93: grpc.Bridge.ChangePorts:input_type -> grpc.ChangePortsRequest
|
||||
65, // 94: grpc.Bridge.IsPortFree:input_type -> google.protobuf.Int32Value
|
||||
62, // 95: grpc.Bridge.AvailableKeychains:input_type -> google.protobuf.Empty
|
||||
64, // 96: grpc.Bridge.SetCurrentKeychain:input_type -> google.protobuf.StringValue
|
||||
62, // 97: grpc.Bridge.CurrentKeychain:input_type -> google.protobuf.Empty
|
||||
62, // 98: grpc.Bridge.GetUserList:input_type -> google.protobuf.Empty
|
||||
64, // 99: grpc.Bridge.GetUser:input_type -> google.protobuf.StringValue
|
||||
13, // 100: grpc.Bridge.SetUserSplitMode:input_type -> grpc.UserSplitModeRequest
|
||||
64, // 101: grpc.Bridge.LogoutUser:input_type -> google.protobuf.StringValue
|
||||
64, // 102: grpc.Bridge.RemoveUser:input_type -> google.protobuf.StringValue
|
||||
15, // 103: grpc.Bridge.ConfigureUserAppleMail:input_type -> grpc.ConfigureAppleMailRequest
|
||||
16, // 104: grpc.Bridge.StartEventStream:input_type -> grpc.EventStreamRequest
|
||||
62, // 105: grpc.Bridge.StopEventStream:input_type -> google.protobuf.Empty
|
||||
62, // 106: grpc.Bridge.AddLogEntry:output_type -> google.protobuf.Empty
|
||||
62, // 107: grpc.Bridge.GuiReady:output_type -> google.protobuf.Empty
|
||||
62, // 108: grpc.Bridge.Quit:output_type -> google.protobuf.Empty
|
||||
62, // 109: grpc.Bridge.Restart:output_type -> google.protobuf.Empty
|
||||
63, // 110: grpc.Bridge.ShowOnStartup:output_type -> google.protobuf.BoolValue
|
||||
63, // 111: grpc.Bridge.ShowSplashScreen:output_type -> google.protobuf.BoolValue
|
||||
63, // 112: grpc.Bridge.IsFirstGuiStart:output_type -> google.protobuf.BoolValue
|
||||
62, // 113: grpc.Bridge.SetIsAutostartOn:output_type -> google.protobuf.Empty
|
||||
63, // 114: grpc.Bridge.IsAutostartOn:output_type -> google.protobuf.BoolValue
|
||||
62, // 115: grpc.Bridge.SetIsBetaEnabled:output_type -> google.protobuf.Empty
|
||||
63, // 116: grpc.Bridge.IsBetaEnabled:output_type -> google.protobuf.BoolValue
|
||||
64, // 117: grpc.Bridge.GoOs:output_type -> google.protobuf.StringValue
|
||||
62, // 118: grpc.Bridge.TriggerReset:output_type -> google.protobuf.Empty
|
||||
64, // 119: grpc.Bridge.Version:output_type -> google.protobuf.StringValue
|
||||
64, // 120: grpc.Bridge.LogsPath:output_type -> google.protobuf.StringValue
|
||||
64, // 121: grpc.Bridge.LicensePath:output_type -> google.protobuf.StringValue
|
||||
64, // 122: grpc.Bridge.ReleaseNotesPageLink:output_type -> google.protobuf.StringValue
|
||||
64, // 123: grpc.Bridge.DependencyLicensesLink:output_type -> google.protobuf.StringValue
|
||||
64, // 124: grpc.Bridge.LandingPageLink:output_type -> google.protobuf.StringValue
|
||||
62, // 125: grpc.Bridge.SetColorSchemeName:output_type -> google.protobuf.Empty
|
||||
64, // 126: grpc.Bridge.ColorSchemeName:output_type -> google.protobuf.StringValue
|
||||
64, // 127: grpc.Bridge.CurrentEmailClient:output_type -> google.protobuf.StringValue
|
||||
62, // 128: grpc.Bridge.ReportBug:output_type -> google.protobuf.Empty
|
||||
62, // 129: grpc.Bridge.ForceLauncher:output_type -> google.protobuf.Empty
|
||||
62, // 130: grpc.Bridge.Login:output_type -> google.protobuf.Empty
|
||||
62, // 131: grpc.Bridge.Login2FA:output_type -> google.protobuf.Empty
|
||||
62, // 132: grpc.Bridge.Login2Passwords:output_type -> google.protobuf.Empty
|
||||
62, // 133: grpc.Bridge.LoginAbort:output_type -> google.protobuf.Empty
|
||||
62, // 134: grpc.Bridge.CheckUpdate:output_type -> google.protobuf.Empty
|
||||
62, // 135: grpc.Bridge.InstallUpdate:output_type -> google.protobuf.Empty
|
||||
62, // 136: grpc.Bridge.SetIsAutomaticUpdateOn:output_type -> google.protobuf.Empty
|
||||
63, // 137: grpc.Bridge.IsAutomaticUpdateOn:output_type -> google.protobuf.BoolValue
|
||||
63, // 138: grpc.Bridge.IsCacheOnDiskEnabled:output_type -> google.protobuf.BoolValue
|
||||
64, // 139: grpc.Bridge.DiskCachePath:output_type -> google.protobuf.StringValue
|
||||
62, // 140: grpc.Bridge.ChangeLocalCache:output_type -> google.protobuf.Empty
|
||||
62, // 141: grpc.Bridge.SetIsDoHEnabled:output_type -> google.protobuf.Empty
|
||||
63, // 142: grpc.Bridge.IsDoHEnabled:output_type -> google.protobuf.BoolValue
|
||||
62, // 143: grpc.Bridge.SetUseSslForSmtp:output_type -> google.protobuf.Empty
|
||||
63, // 144: grpc.Bridge.UseSslForSmtp:output_type -> google.protobuf.BoolValue
|
||||
64, // 145: grpc.Bridge.Hostname:output_type -> google.protobuf.StringValue
|
||||
65, // 146: grpc.Bridge.ImapPort:output_type -> google.protobuf.Int32Value
|
||||
65, // 147: grpc.Bridge.SmtpPort:output_type -> google.protobuf.Int32Value
|
||||
62, // 148: grpc.Bridge.ChangePorts:output_type -> google.protobuf.Empty
|
||||
63, // 149: grpc.Bridge.IsPortFree:output_type -> google.protobuf.BoolValue
|
||||
11, // 150: grpc.Bridge.AvailableKeychains:output_type -> grpc.AvailableKeychainsResponse
|
||||
62, // 151: grpc.Bridge.SetCurrentKeychain:output_type -> google.protobuf.Empty
|
||||
64, // 152: grpc.Bridge.CurrentKeychain:output_type -> google.protobuf.StringValue
|
||||
14, // 153: grpc.Bridge.GetUserList:output_type -> grpc.UserListResponse
|
||||
12, // 154: grpc.Bridge.GetUser:output_type -> grpc.User
|
||||
62, // 155: grpc.Bridge.SetUserSplitMode:output_type -> google.protobuf.Empty
|
||||
62, // 156: grpc.Bridge.LogoutUser:output_type -> google.protobuf.Empty
|
||||
62, // 157: grpc.Bridge.RemoveUser:output_type -> google.protobuf.Empty
|
||||
62, // 158: grpc.Bridge.ConfigureUserAppleMail:output_type -> google.protobuf.Empty
|
||||
17, // 159: grpc.Bridge.StartEventStream:output_type -> grpc.StreamEvent
|
||||
62, // 160: grpc.Bridge.StopEventStream:output_type -> google.protobuf.Empty
|
||||
106, // [106:161] is the sub-list for method output_type
|
||||
51, // [51:106] is the sub-list for method input_type
|
||||
51, // [51:51] is the sub-list for extension type_name
|
||||
51, // [51:51] is the sub-list for extension extendee
|
||||
0, // [0:51] is the sub-list for field type_name
|
||||
|
||||
@ -53,6 +53,7 @@ service Bridge {
|
||||
rpc ColorSchemeName(google.protobuf.Empty) returns (google.protobuf.StringValue); // TODO Color scheme should probably entirely be managed by the client.
|
||||
rpc CurrentEmailClient(google.protobuf.Empty) returns (google.protobuf.StringValue);
|
||||
rpc ReportBug(ReportBugRequest) returns (google.protobuf.Empty);
|
||||
rpc ForceLauncher(google.protobuf.StringValue) returns (google.protobuf.Empty);
|
||||
|
||||
// login
|
||||
rpc Login(LoginRequest) returns (google.protobuf.Empty);
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
|
||||
// versions:
|
||||
// - protoc-gen-go-grpc v1.2.0
|
||||
// - protoc v3.21.2
|
||||
// - protoc v3.21.3
|
||||
// source: bridge.proto
|
||||
|
||||
package grpc
|
||||
@ -48,6 +48,7 @@ type BridgeClient interface {
|
||||
ColorSchemeName(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*wrapperspb.StringValue, error)
|
||||
CurrentEmailClient(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*wrapperspb.StringValue, error)
|
||||
ReportBug(ctx context.Context, in *ReportBugRequest, opts ...grpc.CallOption) (*emptypb.Empty, error)
|
||||
ForceLauncher(ctx context.Context, in *wrapperspb.StringValue, opts ...grpc.CallOption) (*emptypb.Empty, error)
|
||||
// login
|
||||
Login(ctx context.Context, in *LoginRequest, opts ...grpc.CallOption) (*emptypb.Empty, error)
|
||||
Login2FA(ctx context.Context, in *LoginRequest, opts ...grpc.CallOption) (*emptypb.Empty, error)
|
||||
@ -303,6 +304,15 @@ func (c *bridgeClient) ReportBug(ctx context.Context, in *ReportBugRequest, opts
|
||||
return out, nil
|
||||
}
|
||||
|
||||
func (c *bridgeClient) ForceLauncher(ctx context.Context, in *wrapperspb.StringValue, opts ...grpc.CallOption) (*emptypb.Empty, error) {
|
||||
out := new(emptypb.Empty)
|
||||
err := c.cc.Invoke(ctx, "/grpc.Bridge/ForceLauncher", in, out, opts...)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return out, nil
|
||||
}
|
||||
|
||||
func (c *bridgeClient) Login(ctx context.Context, in *LoginRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) {
|
||||
out := new(emptypb.Empty)
|
||||
err := c.cc.Invoke(ctx, "/grpc.Bridge/Login", in, out, opts...)
|
||||
@ -633,6 +643,7 @@ type BridgeServer interface {
|
||||
ColorSchemeName(context.Context, *emptypb.Empty) (*wrapperspb.StringValue, error)
|
||||
CurrentEmailClient(context.Context, *emptypb.Empty) (*wrapperspb.StringValue, error)
|
||||
ReportBug(context.Context, *ReportBugRequest) (*emptypb.Empty, error)
|
||||
ForceLauncher(context.Context, *wrapperspb.StringValue) (*emptypb.Empty, error)
|
||||
// login
|
||||
Login(context.Context, *LoginRequest) (*emptypb.Empty, error)
|
||||
Login2FA(context.Context, *LoginRequest) (*emptypb.Empty, error)
|
||||
@ -747,6 +758,9 @@ func (UnimplementedBridgeServer) CurrentEmailClient(context.Context, *emptypb.Em
|
||||
func (UnimplementedBridgeServer) ReportBug(context.Context, *ReportBugRequest) (*emptypb.Empty, error) {
|
||||
return nil, status.Errorf(codes.Unimplemented, "method ReportBug not implemented")
|
||||
}
|
||||
func (UnimplementedBridgeServer) ForceLauncher(context.Context, *wrapperspb.StringValue) (*emptypb.Empty, error) {
|
||||
return nil, status.Errorf(codes.Unimplemented, "method ForceLauncher not implemented")
|
||||
}
|
||||
func (UnimplementedBridgeServer) Login(context.Context, *LoginRequest) (*emptypb.Empty, error) {
|
||||
return nil, status.Errorf(codes.Unimplemented, "method Login not implemented")
|
||||
}
|
||||
@ -1267,6 +1281,24 @@ func _Bridge_ReportBug_Handler(srv interface{}, ctx context.Context, dec func(in
|
||||
return interceptor(ctx, in, info, handler)
|
||||
}
|
||||
|
||||
func _Bridge_ForceLauncher_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
|
||||
in := new(wrapperspb.StringValue)
|
||||
if err := dec(in); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if interceptor == nil {
|
||||
return srv.(BridgeServer).ForceLauncher(ctx, in)
|
||||
}
|
||||
info := &grpc.UnaryServerInfo{
|
||||
Server: srv,
|
||||
FullMethod: "/grpc.Bridge/ForceLauncher",
|
||||
}
|
||||
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
|
||||
return srv.(BridgeServer).ForceLauncher(ctx, req.(*wrapperspb.StringValue))
|
||||
}
|
||||
return interceptor(ctx, in, info, handler)
|
||||
}
|
||||
|
||||
func _Bridge_Login_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
|
||||
in := new(LoginRequest)
|
||||
if err := dec(in); err != nil {
|
||||
@ -1927,6 +1959,10 @@ var Bridge_ServiceDesc = grpc.ServiceDesc{
|
||||
MethodName: "ReportBug",
|
||||
Handler: _Bridge_ReportBug_Handler,
|
||||
},
|
||||
{
|
||||
MethodName: "ForceLauncher",
|
||||
Handler: _Bridge_ForceLauncher_Handler,
|
||||
},
|
||||
{
|
||||
MethodName: "Login",
|
||||
Handler: _Bridge_Login_Handler,
|
||||
|
||||
@ -335,7 +335,7 @@ func (s *Service) waitForUserChangeDone(done <-chan string, userID string) {
|
||||
}
|
||||
|
||||
func (s *Service) restart() {
|
||||
s.log.Error("Restart is not implemented") // TO-DO GODT-1671 implement restart.
|
||||
s.restarter.SetToRestart()
|
||||
}
|
||||
|
||||
func (s *Service) triggerReset() {
|
||||
|
||||
@ -92,11 +92,14 @@ func (s *Service) Quit(ctx context.Context, empty *emptypb.Empty) (*emptypb.Empt
|
||||
|
||||
// Restart implement the Restart gRPC service call.
|
||||
func (s *Service) Restart(context.Context, *emptypb.Empty) (*emptypb.Empty, error) {
|
||||
s.log.Info("Restart") // TO-DO-GODT-1671 handle restart.
|
||||
s.log.Info("Restart")
|
||||
go func() {
|
||||
defer s.panicHandler.HandlePanic()
|
||||
|
||||
s.restart()
|
||||
}()
|
||||
|
||||
return nil, ErrNotImplemented
|
||||
return &emptypb.Empty{}, nil
|
||||
}
|
||||
|
||||
func (s *Service) ShowOnStartup(context.Context, *emptypb.Empty) (*wrapperspb.BoolValue, error) {
|
||||
@ -192,7 +195,7 @@ func (s *Service) TriggerReset(context.Context, *emptypb.Empty) (*emptypb.Empty,
|
||||
defer s.panicHandler.HandlePanic()
|
||||
s.triggerReset()
|
||||
}()
|
||||
return nil, ErrNotImplemented
|
||||
return &emptypb.Empty{}, nil
|
||||
}
|
||||
|
||||
func (s *Service) Version(context.Context, *emptypb.Empty) (*wrapperspb.StringValue, error) {
|
||||
@ -291,6 +294,15 @@ func (s *Service) ReportBug(_ context.Context, report *ReportBugRequest) (*empty
|
||||
return &emptypb.Empty{}, nil
|
||||
}
|
||||
|
||||
func (s *Service) ForceLauncher(_ context.Context, launcher *wrapperspb.StringValue) (*emptypb.Empty, error) {
|
||||
s.log.WithField("launcher", launcher.Value).Info("ForceLauncher")
|
||||
go func() {
|
||||
defer s.panicHandler.HandlePanic()
|
||||
s.restarter.ForceLauncher(launcher.Value)
|
||||
}()
|
||||
return &emptypb.Empty{}, nil
|
||||
}
|
||||
|
||||
func (s *Service) Login(_ context.Context, login *LoginRequest) (*emptypb.Empty, error) {
|
||||
s.log.WithField("username", login.Username).Info("Login")
|
||||
go func() {
|
||||
|
||||
@ -32,6 +32,7 @@ type PanicHandler interface {
|
||||
// Restarter allows the app to set itself to restart next time it is closed.
|
||||
type Restarter interface {
|
||||
SetToRestart()
|
||||
ForceLauncher(string)
|
||||
}
|
||||
|
||||
type NoEncConfirmator interface {
|
||||
|
||||
@ -38,6 +38,7 @@ import (
|
||||
type Locations struct {
|
||||
userConfig, userCache string
|
||||
configName string
|
||||
configGuiName string
|
||||
}
|
||||
|
||||
// New returns a new locations object.
|
||||
@ -46,6 +47,7 @@ func New(provider Provider, configName string) *Locations {
|
||||
userConfig: provider.UserConfig(),
|
||||
userCache: provider.UserCache(),
|
||||
configName: configName,
|
||||
configGuiName: configName + "-gui",
|
||||
}
|
||||
}
|
||||
|
||||
@ -54,6 +56,11 @@ func (l *Locations) GetLockFile() string {
|
||||
return filepath.Join(l.userCache, l.configName+".lock")
|
||||
}
|
||||
|
||||
// GetGuiLockFile returns the path to the lock file (e.g. ~/.cache/<company>/<app>/<app>.lock).
|
||||
func (l *Locations) GetGuiLockFile() string {
|
||||
return filepath.Join(l.userCache, l.configGuiName+".lock")
|
||||
}
|
||||
|
||||
// GetLicenseFilePath returns path to liense file.
|
||||
func (l *Locations) GetLicenseFilePath() string {
|
||||
path := l.getLicenseFilePath()
|
||||
@ -210,6 +217,7 @@ func (l *Locations) Clear() error {
|
||||
l.userCache,
|
||||
).Except(
|
||||
l.GetLockFile(),
|
||||
l.GetGuiLockFile(),
|
||||
l.getUpdatesPath(),
|
||||
).Do()
|
||||
}
|
||||
@ -226,6 +234,7 @@ func (l *Locations) ClearUpdates() error {
|
||||
func (l *Locations) Clean() error {
|
||||
return files.Remove(l.userCache).Except(
|
||||
l.GetLockFile(),
|
||||
l.GetGuiLockFile(),
|
||||
l.getLogsPath(),
|
||||
l.getCachePath(),
|
||||
l.getUpdatesPath(),
|
||||
|
||||
Reference in New Issue
Block a user