Rabbit Remote Control 0.1.0-alpha
Loading...
Searching...
No Matches
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
56COperateSSH::SecurityLevel COperateSSH::GetSecurityLevel()
57{
58 return SecurityLevel::Secure;
59}
60
61void COperateSSH::slotReceiveData(const QByteArray &data)
62{
63 //qDebug(log) << Q_FUNC_INFO << data.length();
64 WriteTerminal(data.data(), data.length());
65}
66
67const QString COperateSSH::Id()
68{
69 QString szId = COperate::Id();
70 if(GetParameter()) {
71 if(GetParameter()->GetName().isEmpty()) {
72 auto &sshNet = m_Parameters.m_SSH.m_Net;
73 if(!sshNet.GetHost().isEmpty())
74 szId += "_" + sshNet.GetHost()
75 + "_" + QString::number(sshNet.GetPort());
76 } else
77 szId += "_" + GetParameter()->GetName();
78 }
79 static QRegularExpression exp("[-@:/#%!^&* \\.]");
80 szId = szId.replace(exp, "_");
81 return szId;
82}
83
84const QString COperateSSH::Name()
85{
86 QString szName = m_Parameters.GetName();
87
88 if(szName.isEmpty()) {
89 auto &sshNet = m_Parameters.m_SSH.m_Net;
90 if(!sshNet.GetHost().isEmpty()) {
91 if(m_Parameters.GetGlobalParameters()
92 && m_Parameters.GetGlobalParameters()->GetShowProtocolPrefix()
93 && !Protocol().isEmpty())
94 szName = Protocol() + ":";
95 szName += sshNet.GetHost()
96 + ":" + QString::number(sshNet.GetPort());
97 }
98 }
99
100 if(szName.isEmpty())
101 szName = COperateTerminal::Name();
102 return szName;
103}
104
106{
107 QString szDescription;
108 if(!Name().isEmpty())
109 szDescription = tr("Name: ") + Name() + "\n";
110
111 if(!GetTypeName().isEmpty())
112 szDescription += tr("Type: ") + GetTypeName() + "\n";
113
114 if(!Protocol().isEmpty()) {
115 szDescription += tr("Protocol: ") + Protocol();
116#ifdef DEBUG
117 if(!GetPlugin()->DisplayName().isEmpty())
118 szDescription += " - " + GetPlugin()->DisplayName();
119#endif
120 szDescription += "\n";
121 }
122
123 auto &sshNet = m_Parameters.m_SSH.m_Net;
124 if(!sshNet.GetHost().isEmpty())
125 szDescription += tr("Server address: ") + sshNet.GetHost()
126 + ":" + QString::number(sshNet.GetPort()) + "\n";
127
128 if(GetSecurityLevel() != SecurityLevel::No)
129 szDescription += tr("Security level: ") + GetSecurityLevelString() + "\n";
130
131 if(!GetPlugin()->Description().isEmpty())
132 szDescription += tr("Description: ") + GetPlugin()->Description();
133
134 return szDescription;
135}
136
Backend interface.
Definition Backend.h:42
virtual int Clean() override
Clean parameters and resource.
virtual const QString Name() override
Name.
virtual int Initial() override
Initial parameters and resource.
virtual CBackend * InstanceBackend() override
New CBackend.
virtual const QString Id() override
Identity.
virtual QDialog * OnOpenDialogSettings(QWidget *parent) override
Open settgins dialog.
virtual const QString Description() override
Description.
Terminal operate interface.
virtual int Initial() override
Initial parameters and resource.
virtual CParameterTerminalBase * GetParameter()
Get parameters.
virtual const QString Name() override
Name.
virtual int SetParameter(CParameterTerminalBase *pPara)
Set parameter pointer.
virtual const QString Protocol() const
Protocol.
Definition Operate.cpp:71
Q_INVOKABLE CPlugin * GetPlugin() const
Get plugin.
Definition Operate.cpp:259
virtual const QString Id()
Identity.
Definition Operate.cpp:33
virtual const QString GetTypeName() const
Get type name.
Definition Operate.cpp:76
CParameterPlugin * GetGlobalParameters()
Get CParameterPlugin.
Plugin interface.
Definition Plugin.h:15
virtual const QString DisplayName() const
The plugin display name.
Definition Plugin.cpp:73
virtual const QString Description() const =0
Plugin description.