玉兔远程控制 0.0.36
载入中...
搜索中...
未找到
ChannelSSHTunnel.h
1// Author: Kang Lin <kl222@126.com>
2
3#ifndef CCHANNELSSHTUNNEL_H
4#define CCHANNELSSHTUNNEL_H
5
6#pragma once
7
8#include <QSharedPointer>
9#include <QSocketNotifier>
10#include <QMutex>
11
12#include "libssh/libssh.h"
13#include "libssh/callbacks.h"
14
15#include "Channel.h"
16#include "ParameterSSHTunnel.h"
17#include "Event.h"
18#include "Connect.h"
19
30class CLIENT_EXPORT CChannelSSHTunnel : public CChannel
31{
32 Q_OBJECT
33
34public:
35 explicit CChannelSSHTunnel(CParameterSSHTunnel* parameter,
36 CParameterNet* remote,
37 CConnect *pConnect,
38 bool bWakeUp = true,
39 QObject *parent = nullptr);
40 virtual ~CChannelSSHTunnel();
41
42 // QIODevice interface
43public:
44 virtual bool open(OpenMode mode) override;
45 virtual void close() override;
46
47 virtual QString GetDetails() override;
48 int Process();
49 virtual int WakeUp();
50 virtual int DoWait(bool bWrite, int timeout);
51 int GetSocket();
52
53 // QIODevice interface
54protected:
55 virtual qint64 readData(char *data, qint64 maxlen) override;
56 virtual qint64 writeData(const char *data, qint64 len) override;
57
58private:
59 int verifyKnownhost(ssh_session session);
60 int authentication(
61 ssh_session session,
62 const QString szUser,
63 const QString szPassword,
64 const QString szPassphrase,
65 const int nMethod = SSH_AUTH_METHOD_PASSWORD);
66 int authenticationPublicKey(
67 ssh_session session,
68 const QString szUser,
69 const QString szPublicKeyFile,
70 const QString szPrivateKeyFile,
71 const QString szPassphrase);
72 int forward(ssh_session session);
73
74 static void cb_log(ssh_session session,
75 int priority,
76 const char *message,
77 void *userdata);
78
79protected:
80 ssh_session m_Session;
81 ssh_channel m_Channel;
82
83private:
84 CConnect *m_pConnect;
85 ssh_pcap_file m_pcapFile;
86 CParameterSSHTunnel* m_pParameter;
87 CParameterNet* m_pRemoteNet;
88 /*
89 QSocketNotifier* m_pSocketRead;
90 QSocketNotifier* m_pSocketWrite;
91 QSocketNotifier* m_pSocketException;
92 */
93 Channel::CEvent* m_pEvent;
94};
95
96#endif // CCHANNELSSHTUNNEL_H
通道接口类。此类默认实现一个 TCP 的通道。
Definition Channel.h:25
virtual bool open(OpenMode mode) override
Definition Channel.cpp:88
virtual QString GetDetails()
依赖信息
Definition Channel.cpp:125
连接接口。它由协议插件实现。 它默认启动一个定时器来开启一个非 Qt 事件循环(就是普通的循环处理)。 详见: Connect()、 slotTimeOut()、 OnProcess() 。 当然,它仍...
Definition Connect.h:45
网络连接参数接口。此类仅在插件内有效。 其界面为 CParameterNetUI