forked from qt-creator/qt-creator
Move setupSshEnvironment() into SshConnectionParameters
As we are going to remove SshRemoteProcess. Change-Id: I07cf246791f1adb6cfc454935d7e330c2f1d4dc7 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: hjk <hjk@qt.io>
This commit is contained in:
@@ -26,7 +26,7 @@
|
|||||||
#include "sftptransfer.h"
|
#include "sftptransfer.h"
|
||||||
|
|
||||||
#include "sshlogging_p.h"
|
#include "sshlogging_p.h"
|
||||||
#include "sshremoteprocess.h"
|
#include "sshconnection.h"
|
||||||
#include "sshsettings.h"
|
#include "sshsettings.h"
|
||||||
|
|
||||||
#include <QDir>
|
#include <QDir>
|
||||||
@@ -37,6 +37,7 @@
|
|||||||
|
|
||||||
#include <utils/algorithm.h>
|
#include <utils/algorithm.h>
|
||||||
#include <utils/commandline.h>
|
#include <utils/commandline.h>
|
||||||
|
#include <utils/qtcprocess.h>
|
||||||
|
|
||||||
using namespace Utils;
|
using namespace Utils;
|
||||||
|
|
||||||
@@ -109,7 +110,7 @@ SftpTransfer::SftpTransfer(const FilesToTransfer &files, Internal::FileTransferT
|
|||||||
const QStringList &connectionArgs)
|
const QStringList &connectionArgs)
|
||||||
: d(new SftpTransferPrivate)
|
: d(new SftpTransferPrivate)
|
||||||
{
|
{
|
||||||
SshRemoteProcess::setupSshEnvironment(&d->sftpProc);
|
SshConnectionParameters::setupSshEnvironment(&d->sftpProc);
|
||||||
d->files = files;
|
d->files = files;
|
||||||
d->transferType = type;
|
d->transferType = type;
|
||||||
d->errorHandlingMode = errorHandlingMode;
|
d->errorHandlingMode = errorHandlingMode;
|
||||||
|
@@ -104,6 +104,26 @@ QStringList SshConnectionParameters::connectionOptions(const FilePath &binary) c
|
|||||||
return args;
|
return args;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool SshConnectionParameters::setupSshEnvironment(QtcProcess *process)
|
||||||
|
{
|
||||||
|
Environment env = process->hasEnvironment() ? process->environment()
|
||||||
|
: Environment::systemEnvironment();
|
||||||
|
const bool hasDisplay = env.hasKey("DISPLAY") && (env.value("DISPLAY") != QString(":0"));
|
||||||
|
if (SshSettings::askpassFilePath().exists()) {
|
||||||
|
env.set("SSH_ASKPASS", SshSettings::askpassFilePath().toUserOutput());
|
||||||
|
|
||||||
|
// OpenSSH only uses the askpass program if DISPLAY is set, regardless of the platform.
|
||||||
|
if (!env.hasKey("DISPLAY"))
|
||||||
|
env.set("DISPLAY", ":0");
|
||||||
|
}
|
||||||
|
process->setEnvironment(env);
|
||||||
|
|
||||||
|
// Otherwise, ssh will ignore SSH_ASKPASS and read from /dev/tty directly.
|
||||||
|
process->setDisableUnixTerminal();
|
||||||
|
return hasDisplay;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
static inline bool equals(const SshConnectionParameters &p1, const SshConnectionParameters &p2)
|
static inline bool equals(const SshConnectionParameters &p1, const SshConnectionParameters &p2)
|
||||||
{
|
{
|
||||||
return p1.url == p2.url
|
return p1.url == p2.url
|
||||||
@@ -129,7 +149,7 @@ struct SshConnection::SshConnectionPrivate
|
|||||||
SshConnectionPrivate(const SshConnectionParameters &sshParameters)
|
SshConnectionPrivate(const SshConnectionParameters &sshParameters)
|
||||||
: connParams(sshParameters)
|
: connParams(sshParameters)
|
||||||
{
|
{
|
||||||
SshRemoteProcess::setupSshEnvironment(&masterProcess);
|
SshConnectionParameters::setupSshEnvironment(&masterProcess);
|
||||||
}
|
}
|
||||||
|
|
||||||
QString fullProcessError()
|
QString fullProcessError()
|
||||||
|
@@ -38,6 +38,8 @@
|
|||||||
|
|
||||||
#include <memory>
|
#include <memory>
|
||||||
|
|
||||||
|
namespace Utils { class QtcProcess; }
|
||||||
|
|
||||||
namespace QSsh {
|
namespace QSsh {
|
||||||
class SshRemoteProcess;
|
class SshRemoteProcess;
|
||||||
|
|
||||||
@@ -73,6 +75,8 @@ public:
|
|||||||
int timeout = 0; // In seconds.
|
int timeout = 0; // In seconds.
|
||||||
AuthenticationType authenticationType = AuthenticationTypeAll;
|
AuthenticationType authenticationType = AuthenticationTypeAll;
|
||||||
SshHostKeyCheckingMode hostKeyCheckingMode = SshHostKeyCheckingAllowNoMatch;
|
SshHostKeyCheckingMode hostKeyCheckingMode = SshHostKeyCheckingAllowNoMatch;
|
||||||
|
|
||||||
|
static bool setupSshEnvironment(Utils::QtcProcess *process);
|
||||||
};
|
};
|
||||||
|
|
||||||
QSSH_EXPORT bool operator==(const SshConnectionParameters &p1, const SshConnectionParameters &p2);
|
QSSH_EXPORT bool operator==(const SshConnectionParameters &p1, const SshConnectionParameters &p2);
|
||||||
|
@@ -25,6 +25,7 @@
|
|||||||
|
|
||||||
#include "sshremoteprocess.h"
|
#include "sshremoteprocess.h"
|
||||||
|
|
||||||
|
#include "sshconnection.h"
|
||||||
#include "sshlogging_p.h"
|
#include "sshlogging_p.h"
|
||||||
#include "sshsettings.h"
|
#include "sshsettings.h"
|
||||||
|
|
||||||
@@ -54,7 +55,7 @@ namespace QSsh {
|
|||||||
SshRemoteProcess::SshRemoteProcess(const QString &command, const QStringList &connectionArgs)
|
SshRemoteProcess::SshRemoteProcess(const QString &command, const QStringList &connectionArgs)
|
||||||
: QtcProcess()
|
: QtcProcess()
|
||||||
{
|
{
|
||||||
setupSshEnvironment(this);
|
SshConnectionParameters::setupSshEnvironment(this);
|
||||||
m_remoteCommand = command;
|
m_remoteCommand = command;
|
||||||
m_connectionArgs = connectionArgs;
|
m_connectionArgs = connectionArgs;
|
||||||
}
|
}
|
||||||
@@ -112,23 +113,4 @@ CommandLine SshRemoteProcess::fullLocalCommandLine(bool inTerminal) const
|
|||||||
return cmd;
|
return cmd;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool SshRemoteProcess::setupSshEnvironment(QtcProcess *process)
|
|
||||||
{
|
|
||||||
Environment env = process->hasEnvironment() ? process->environment()
|
|
||||||
: Environment::systemEnvironment();
|
|
||||||
const bool hasDisplay = env.hasKey("DISPLAY") && (env.value("DISPLAY") != QString(":0"));
|
|
||||||
if (SshSettings::askpassFilePath().exists()) {
|
|
||||||
env.set("SSH_ASKPASS", SshSettings::askpassFilePath().toUserOutput());
|
|
||||||
|
|
||||||
// OpenSSH only uses the askpass program if DISPLAY is set, regardless of the platform.
|
|
||||||
if (!env.hasKey("DISPLAY"))
|
|
||||||
env.set("DISPLAY", ":0");
|
|
||||||
}
|
|
||||||
process->setEnvironment(env);
|
|
||||||
|
|
||||||
// Otherwise, ssh will ignore SSH_ASKPASS and read from /dev/tty directly.
|
|
||||||
process->setDisableUnixTerminal();
|
|
||||||
return hasDisplay;
|
|
||||||
}
|
|
||||||
|
|
||||||
} // namespace QSsh
|
} // namespace QSsh
|
||||||
|
@@ -46,8 +46,6 @@ public:
|
|||||||
|
|
||||||
Utils::CommandLine fullLocalCommandLine(bool inTerminal = false) const;
|
Utils::CommandLine fullLocalCommandLine(bool inTerminal = false) const;
|
||||||
|
|
||||||
static bool setupSshEnvironment(Utils::QtcProcess *process);
|
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void emitFinished() override;
|
void emitFinished() override;
|
||||||
|
|
||||||
|
@@ -42,7 +42,6 @@
|
|||||||
#include <projectexplorer/runcontrol.h>
|
#include <projectexplorer/runcontrol.h>
|
||||||
|
|
||||||
#include <ssh/sshconnection.h>
|
#include <ssh/sshconnection.h>
|
||||||
#include <ssh/sshremoteprocess.h>
|
|
||||||
#include <ssh/sshsettings.h>
|
#include <ssh/sshsettings.h>
|
||||||
|
|
||||||
#include <utils/algorithm.h>
|
#include <utils/algorithm.h>
|
||||||
@@ -189,7 +188,7 @@ void SshSharedConnection::connectToHost()
|
|||||||
}
|
}
|
||||||
|
|
||||||
m_masterProcess.reset(new QtcProcess);
|
m_masterProcess.reset(new QtcProcess);
|
||||||
SshRemoteProcess::setupSshEnvironment(m_masterProcess.get());
|
SshConnectionParameters::setupSshEnvironment(m_masterProcess.get());
|
||||||
m_timer.setSingleShot(true);
|
m_timer.setSingleShot(true);
|
||||||
connect(&m_timer, &QTimer::timeout, this, &SshSharedConnection::autoDestructRequested);
|
connect(&m_timer, &QTimer::timeout, this, &SshSharedConnection::autoDestructRequested);
|
||||||
connect(m_masterProcess.get(), &QtcProcess::readyReadStandardOutput, [this] {
|
connect(m_masterProcess.get(), &QtcProcess::readyReadStandardOutput, [this] {
|
||||||
@@ -759,7 +758,7 @@ void SshProcessInterfacePrivate::doStart()
|
|||||||
m_process.setTerminalMode(q->m_setup.m_terminalMode);
|
m_process.setTerminalMode(q->m_setup.m_terminalMode);
|
||||||
m_process.setWriteData(q->m_setup.m_writeData);
|
m_process.setWriteData(q->m_setup.m_writeData);
|
||||||
// TODO: what about other fields from m_setup?
|
// TODO: what about other fields from m_setup?
|
||||||
SshRemoteProcess::setupSshEnvironment(&m_process);
|
SshConnectionParameters::setupSshEnvironment(&m_process);
|
||||||
if (!m_sshParameters.x11DisplayName.isEmpty()) {
|
if (!m_sshParameters.x11DisplayName.isEmpty()) {
|
||||||
Environment env = m_process.environment();
|
Environment env = m_process.environment();
|
||||||
// Note: it seems this is no-op when shared connection is used.
|
// Note: it seems this is no-op when shared connection is used.
|
||||||
@@ -831,7 +830,7 @@ public:
|
|||||||
setSshParameters(parameters);
|
setSshParameters(parameters);
|
||||||
m_shell.reset(new QtcProcess);
|
m_shell.reset(new QtcProcess);
|
||||||
|
|
||||||
SshRemoteProcess::setupSshEnvironment(m_shell.get());
|
SshConnectionParameters::setupSshEnvironment(m_shell.get());
|
||||||
|
|
||||||
const FilePath sshPath = SshSettings::sshFilePath();
|
const FilePath sshPath = SshSettings::sshFilePath();
|
||||||
CommandLine cmd { sshPath };
|
CommandLine cmd { sshPath };
|
||||||
|
@@ -29,12 +29,12 @@
|
|||||||
#include "rsyncdeploystep.h"
|
#include "rsyncdeploystep.h"
|
||||||
|
|
||||||
#include <projectexplorer/devicesupport/deviceusedportsgatherer.h>
|
#include <projectexplorer/devicesupport/deviceusedportsgatherer.h>
|
||||||
#include <utils/port.h>
|
|
||||||
#include <utils/qtcassert.h>
|
|
||||||
#include <ssh/sftptransfer.h>
|
#include <ssh/sftptransfer.h>
|
||||||
#include <ssh/sshremoteprocess.h>
|
|
||||||
#include <ssh/sshconnection.h>
|
#include <ssh/sshconnection.h>
|
||||||
#include <ssh/sshconnectionmanager.h>
|
#include <ssh/sshconnectionmanager.h>
|
||||||
|
#include <utils/port.h>
|
||||||
|
#include <utils/qtcassert.h>
|
||||||
|
#include <utils/qtcprocess.h>
|
||||||
|
|
||||||
using namespace ProjectExplorer;
|
using namespace ProjectExplorer;
|
||||||
using namespace QSsh;
|
using namespace QSsh;
|
||||||
@@ -72,7 +72,7 @@ GenericLinuxDeviceTester::GenericLinuxDeviceTester(QObject *parent)
|
|||||||
&GenericLinuxDeviceTester::handleUnameFinished);
|
&GenericLinuxDeviceTester::handleUnameFinished);
|
||||||
connect(&d->rsyncProcess, &QtcProcess::done, this,
|
connect(&d->rsyncProcess, &QtcProcess::done, this,
|
||||||
&GenericLinuxDeviceTester::handleRsyncFinished);
|
&GenericLinuxDeviceTester::handleRsyncFinished);
|
||||||
SshRemoteProcess::setupSshEnvironment(&d->rsyncProcess);
|
SshConnectionParameters::setupSshEnvironment(&d->rsyncProcess);
|
||||||
}
|
}
|
||||||
|
|
||||||
GenericLinuxDeviceTester::~GenericLinuxDeviceTester()
|
GenericLinuxDeviceTester::~GenericLinuxDeviceTester()
|
||||||
|
@@ -33,7 +33,6 @@
|
|||||||
#include <projectexplorer/runconfigurationaspects.h>
|
#include <projectexplorer/runconfigurationaspects.h>
|
||||||
#include <projectexplorer/target.h>
|
#include <projectexplorer/target.h>
|
||||||
#include <ssh/sshconnection.h>
|
#include <ssh/sshconnection.h>
|
||||||
#include <ssh/sshremoteprocess.h>
|
|
||||||
#include <ssh/sshsettings.h>
|
#include <ssh/sshsettings.h>
|
||||||
#include <utils/algorithm.h>
|
#include <utils/algorithm.h>
|
||||||
#include <utils/qtcprocess.h>
|
#include <utils/qtcprocess.h>
|
||||||
@@ -50,7 +49,7 @@ class RsyncDeployService : public AbstractRemoteLinuxDeployService
|
|||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
public:
|
public:
|
||||||
RsyncDeployService(QObject *parent = nullptr) : AbstractRemoteLinuxDeployService(parent)
|
RsyncDeployService(QObject *parent = nullptr) : AbstractRemoteLinuxDeployService(parent)
|
||||||
{ SshRemoteProcess::setupSshEnvironment(&m_rsync); }
|
{ SshConnectionParameters::setupSshEnvironment(&m_rsync); }
|
||||||
|
|
||||||
void setDeployableFiles(const QList<DeployableFile> &files) { m_deployableFiles = files; }
|
void setDeployableFiles(const QList<DeployableFile> &files) { m_deployableFiles = files; }
|
||||||
void setIgnoreMissingFiles(bool ignore) { m_ignoreMissingFiles = ignore; }
|
void setIgnoreMissingFiles(bool ignore) { m_ignoreMissingFiles = ignore; }
|
||||||
|
@@ -27,6 +27,8 @@
|
|||||||
|
|
||||||
#include <ssh/sshremoteprocess.h>
|
#include <ssh/sshremoteprocess.h>
|
||||||
|
|
||||||
|
#include <utils/qtcprocess.h>
|
||||||
|
|
||||||
#include <QCoreApplication>
|
#include <QCoreApplication>
|
||||||
#include <QFile>
|
#include <QFile>
|
||||||
#include <QSocketNotifier>
|
#include <QSocketNotifier>
|
||||||
|
Reference in New Issue
Block a user