Rabbit Remote Control 0.1.0-bate8
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
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
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 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 const QString Name() override
Name.
virtual int SetParameter(CParameterTerminalBase *pPara)
Set parameter pointer.
virtual CParameterTerminalBase * GetParameter() const
Get parameters.
virtual CSecurityLevel::Levels GetSecurityLevel() const
Get Security Level.
Definition Operate.cpp:129
Q_INVOKABLE CPlugin * GetPlugin() const
Get plugin.
Definition Operate.cpp:219
CParameterPlugin * GetGlobalParameters()
Get CParameterPlugin.
Plugin interface.
Definition Plugin.h:15
virtual const QString DisplayName() const
The plugin display name.
Definition Plugin.cpp:76
virtual const QString Description() const =0
Plugin description.
Security level.
Definition Stats.h:79