玉兔远程控制 0.1.0-bate8
载入中...
搜索中...
未找到
OperateSSH.cpp
1// Author: Kang Lin <kl222@126.com>
2
3#include <QLoggingCategory>
4
5#include "OperateSSH.h"
6#include "DlgSettingsSSH.h"
7#include "BackendSSH.h"
8#include "Plugin.h"
9
10#undef SetPort
11static Q_LOGGING_CATEGORY(log, "Plugin.SSH.Operate")
12
14 : COperateTerminal(parent)
15{
16 qDebug(log) << Q_FUNC_INFO;
17 auto &net = m_Parameters.m_SSH.m_Net;
18 net.SetPort(22);
19 QList<CParameterUser::TYPE> lstType;
20 lstType << CParameterUser::TYPE::UserPassword
21 << CParameterUser::TYPE::PublicKey;
22 net.m_User.SetType(lstType);
23 bool check = connect(this, SIGNAL(sigReceiveData(const QByteArray&)),
24 this, SLOT(slotReceiveData(const QByteArray&)));
25 Q_ASSERT(check);
26}
27
28COperateSSH::~COperateSSH()
29{
30 qDebug(log) << Q_FUNC_INFO;
31}
32
34{
35 int nRet = 0;
37 if(nRet) return nRet;
38 return SetParameter(&m_Parameters);
39}
40
42{
43 return 0;
44}
45
46QDialog *COperateSSH::OnOpenDialogSettings(QWidget *parent)
47{
48 return new CDlgSettingsSSH(&m_Parameters, parent);
49}
50
52{
53 return new CBackendSSH(this);
54}
55
56void COperateSSH::slotReceiveData(const QByteArray &data)
57{
58 //qDebug(log) << Q_FUNC_INFO << data.length();
59 WriteTerminal(data.data(), data.length());
60}
61
62const QString COperateSSH::Id()
63{
64 QString szId = COperate::Id();
65 if(GetParameter()) {
66 if(GetParameter()->GetName().isEmpty()) {
67 auto &sshNet = m_Parameters.m_SSH.m_Net;
68 if(!sshNet.GetHost().isEmpty())
69 szId += "_" + sshNet.GetHost()
70 + "_" + QString::number(sshNet.GetPort());
71 } else
72 szId += "_" + GetParameter()->GetName();
73 }
74 static QRegularExpression exp("[-@:/#%!^&* \\.]");
75 szId = szId.replace(exp, "_");
76 return szId;
77}
78
79const QString COperateSSH::Name()
80{
81 QString szName = m_Parameters.GetName();
82
83 if(szName.isEmpty()) {
84 auto &sshNet = m_Parameters.m_SSH.m_Net;
85 if(!sshNet.GetHost().isEmpty()) {
86 if(m_Parameters.GetGlobalParameters()
87 && (GetParameter()->GetGlobalParameters()->GetNameStyles()
88 & CParameterPlugin::NameStyle::Protocol)
89 && !Protocol().isEmpty())
90 szName = Protocol() + ":";
91 szName += sshNet.GetHost()
92 + ":" + QString::number(sshNet.GetPort());
93 }
94 }
95
96 if(szName.isEmpty())
97 szName = COperateTerminal::Name();
98
99 QString szSecurityLevel;
101 if((GetParameter()->GetGlobalParameters()->GetNameStyles()
102 & CParameterPlugin::NameStyle::SecurityLevel)
103 && !(GetSecurityLevel() & CSecurityLevel::Level::No)
104 && !sl.GetUnicodeIcon().isEmpty())
105 szSecurityLevel = sl.GetUnicodeIcon().left(2);
106
107 return szSecurityLevel + szName;
108}
109
111{
112 QString szDescription;
113 if(!Name().isEmpty())
114 szDescription = tr("Name: ") + Name() + "\n";
115
116 if(!GetTypeName().isEmpty())
117 szDescription += tr("Type: ") + GetTypeName() + "\n";
118
119 if(!Protocol().isEmpty()) {
120 szDescription += tr("Protocol: ") + Protocol();
121#ifdef DEBUG
122 if(!GetPlugin()->DisplayName().isEmpty())
123 szDescription += " - " + GetPlugin()->DisplayName();
124#endif
125 szDescription += "\n";
126 }
127
128 auto &sshNet = m_Parameters.m_SSH.m_Net;
129 if(!sshNet.GetHost().isEmpty())
130 szDescription += tr("Server address: ") + sshNet.GetHost()
131 + ":" + QString::number(sshNet.GetPort()) + "\n";
132
134 if(!(GetSecurityLevel() & CSecurityLevel::Level::No)) {
135 szDescription += tr("Security level: ");
136 if(!sl.GetUnicodeIcon().isEmpty())
137 szDescription += sl.GetUnicodeIcon() + " ";
138 szDescription += sl.GetString() + "\n";
139 }
140
141 if(!GetPlugin()->Description().isEmpty())
142 szDescription += tr("Description: ") + GetPlugin()->Description();
143
144 return szDescription;
145}
146
后端接口。它由协议插件实现。 它默认启动一个定时器来开启一个非 Qt 事件循环(就是普通的循环处理)。 详见: Start()、 slotTimeOut()、 OnProcess() 。 当然,它仍然支...
Definition Backend.h:42
virtual int Clean() override
Clean parameters and resource
virtual const QString Name() override
名称
virtual int Initial() override
Initial parameters and resource
virtual CBackend * InstanceBackend() override
新建后端实例。它的所有者是调用者, 如果调用者不再使用它,调用者必须负责释放它。
virtual const QString Id() override
标识
virtual QDialog * OnOpenDialogSettings(QWidget *parent) override
得到设置对话框
virtual const QString Description() override
描述
终端操作接口
virtual int Initial() override
Initial parameters and resource
virtual const QString Name() override
名称
virtual int SetParameter(CParameterTerminalBase *pPara)
设置参数指针
virtual CParameterTerminalBase * GetParameter() const
Get parameters
virtual CSecurityLevel::Levels GetSecurityLevel() const
Get Security Level
Definition Operate.cpp:129
virtual const QString Protocol() const
协议
Definition Operate.cpp:81
Q_INVOKABLE CPlugin * GetPlugin() const
Get plugin
Definition Operate.cpp:219
virtual const QString Id()
标识
Definition Operate.cpp:36
virtual const QString GetTypeName() const
类型名
Definition Operate.cpp:86
CParameterPlugin * GetGlobalParameters()
Get CParameterPlugin
插件接口
Definition Plugin.h:15
virtual const QString DisplayName() const
在界面上显示的名称
Definition Plugin.cpp:76
virtual const QString Description() const =0
描述
安全级别
Definition Stats.h:79