123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298 |
- #ifndef SSHCONNECTION_H
- #define SSHCONNECTION_H
- #include "ssherrors.h"
- #include "sshhostkeydatabase.h"
- #include "ssh_global.h"
- #include <QByteArray>
- #include <QFlags>
- #include <QMetaType>
- #include <QObject>
- #include <QSharedPointer>
- #include <QString>
- #include <QHostAddress>
- #include <QUrl>
- namespace QSsh {
- class SftpChannel;
- class SshDirectTcpIpTunnel;
- class SshRemoteProcess;
- class SshTcpIpForwardServer;
- namespace Internal {
- class SshConnectionPrivate;
- }
- enum SshConnectionOption {
-
- SshIgnoreDefaultProxy = 0x1,
-
- SshEnableStrictConformanceChecks = 0x2,
-
- SshLowDelaySocket = 0x4
- };
- Q_DECLARE_FLAGS(SshConnectionOptions, SshConnectionOption)
- enum SshHostKeyCheckingMode {
-
- SshHostKeyCheckingNone,
-
- SshHostKeyCheckingStrict,
-
- SshHostKeyCheckingAllowNoMatch,
-
- SshHostKeyCheckingAllowMismatch
- };
- class QSSH_EXPORT SshConnectionParameters
- {
- public:
-
- enum AuthenticationType {
- AuthenticationTypePassword,
- AuthenticationTypePublicKey,
-
-
-
- AuthenticationTypeKeyboardInteractive,
-
-
- AuthenticationTypeTryAllPasswordBasedMethods,
-
- AuthenticationTypeAgent,
- };
- SshConnectionParameters();
-
- QString host() const { return url.host(); }
-
- int port() const { return url.port(); }
-
- QString userName() const { return url.userName(); }
-
- QString password() const { return url.password(); }
-
- void setHost(const QString &host) { url.setHost(host); }
-
- void setPort(int port) { url.setPort(port); }
-
- void setUserName(const QString &name) { url.setUserName(name); }
-
- void setPassword(const QString &password) { url.setPassword(password); }
- QUrl url;
- QString privateKeyFile;
- int timeout;
- AuthenticationType authenticationType;
- SshConnectionOptions options;
- SshHostKeyCheckingMode hostKeyCheckingMode;
- SshHostKeyDatabasePtr hostKeyDatabase;
- };
- QSSH_EXPORT bool operator==(const SshConnectionParameters &p1, const SshConnectionParameters &p2);
- QSSH_EXPORT bool operator!=(const SshConnectionParameters &p1, const SshConnectionParameters &p2);
- class QSSH_EXPORT SshConnectionInfo
- {
- public:
- SshConnectionInfo() : localPort(0), peerPort(0) {}
- SshConnectionInfo(const QHostAddress &la, quint16 lp, const QHostAddress &pa, quint16 pp)
- : localAddress(la), localPort(lp), peerAddress(pa), peerPort(pp) {}
- QHostAddress localAddress;
- quint16 localPort;
- QHostAddress peerAddress;
- quint16 peerPort;
- };
- class QSSH_EXPORT SshConnection : public QObject
- {
- Q_OBJECT
- public:
-
- enum State { Unconnected, Connecting, Connected };
-
- explicit SshConnection(const SshConnectionParameters &serverInfo, QObject *parent = nullptr);
- void connectToHost();
- void disconnectFromHost();
-
- State state() const;
-
- SshError errorState() const;
- QString errorString() const;
- SshConnectionParameters connectionParameters() const;
- SshConnectionInfo connectionInfo() const;
- ~SshConnection();
-
- QSharedPointer<SshRemoteProcess> createRemoteProcess(const QByteArray &command);
-
- QSharedPointer<SshRemoteProcess> createRemoteShell();
- QSharedPointer<SftpChannel> createSftpChannel();
- QSharedPointer<SshDirectTcpIpTunnel> createDirectTunnel(const QString &originatingHost,
- quint16 originatingPort, const QString &remoteHost, quint16 remotePort);
- QSharedPointer<SshTcpIpForwardServer> createForwardServer(const QString &remoteHost,
- quint16 remotePort);
-
- int closeAllChannels();
- int channelCount() const;
- const QByteArray &hostKeyFingerprint() const;
-
- QString x11DisplayName() const;
- signals:
-
- void connected();
-
- void disconnected();
-
- void dataAvailable(const QString &message);
-
- void error(QSsh::SshError);
- private:
- Internal::SshConnectionPrivate *d;
- };
- }
- Q_DECLARE_METATYPE(QSsh::SshConnectionParameters::AuthenticationType)
- #endif
|