Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
LEFEBVREJP email
rsm
Commits
c1e01c96
Commit
c1e01c96
authored
Jan 17, 2020
by
LEFEBVREJP email
Browse files
Added additional SessionWorker documentation. Started on SessionController.
parent
b494459a
Pipeline
#86903
failed
Changes
5
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
rsmcore/CMakeLists.txt
View file @
c1e01c96
...
...
@@ -2,9 +2,11 @@ TRIBITS_SUBPACKAGE(core)
SET
(
HEADERS
sessionworker.hh
sessioncontroller.hh
)
SET
(
SOURCES
sessionworker.cc
sessioncontroller.cc
)
QT5_WRAP_CPP
(
MOC_FILES
...
...
rsmcore/sessioncontroller.cc
0 → 100644
View file @
c1e01c96
#include
"rsmcore/sessioncontroller.hh"
#include
"rsmcore/sessionworker.hh"
#include
<QThread>
namespace
rsm
{
class
SessionControllerImpl
{
public:
SessionWorker
*
worker
;
QThread
*
thread
;
SessionControllerImpl
()
{
worker
=
new
SessionWorker
();
thread
=
new
QThread
();
worker
->
moveToThread
(
thread
);
}
// SessionControllerImpl constructor
~
SessionControllerImpl
()
{
if
(
worker
!=
nullptr
)
{
delete
worker
;
}
if
(
thread
!=
nullptr
)
{
if
(
thread
->
isRunning
())
{
thread
->
quit
();
thread
->
wait
();
delete
thread
;
}
}
}
// SessionControllerImpl destructor
};
// class SessionControllerImpl
}
// namespace rsm
\ No newline at end of file
rsmcore/sessioncontroller.hh
0 → 100644
View file @
c1e01c96
#ifndef RSM_RSMCORE_SESSIONCONTROLLER_HH_
#define RSM_RSMCORE_SESSIONCONTROLLER_HH_
#include
<QObject>
#include
"rsmcore/declspec.hh"
namespace
rsm
{
/** Forward declaration of private implementation */
class
SessionControllerImpl
;
class
RSM_PUBLIC
SessionController
:
public
QObject
{
Q_OBJECT
private:
// Private implementation
SessionControllerImpl
*
p
;
public:
SessionController
(
QObject
*
parent
=
nullptr
);
~
SessionController
();
};
// class SessionController
}
// namespace rsm
#endif
/* RSM_RSMCORE_SESSIONCONTROLLER_HH_ */
rsmcore/sessionworker.hh
View file @
c1e01c96
...
...
@@ -7,6 +7,7 @@
namespace
rsm
{
/** Forward declaration of private implementation */
class
SessionWorkerImpl
;
class
RSM_PUBLIC
SessionWorker
:
public
QObject
{
...
...
@@ -99,18 +100,86 @@ class RSM_PUBLIC SessionWorker : public QObject
void
requestExec
(
QString
command
);
signals:
/**
* @brief getServerPublicKeyFailed
* Signal is emitted when the remote host does not have or provide a public
* key. Recommended to disconnect from session
*/
void
getServerPublicKeyFailed
();
/**
* @brief hostUnknown
* Signal is emitted when the remote host's public key is not in known_hosts
* on this client. Recommend prompt for user action/acceptance of host.
* @param host_hash
*/
void
hostUnknown
(
QString
host_hash
);
/**
* @brief hostPublicKeyChanged
* Signal is emitted when the host is known, but the key differs from that in
* known_hosts. This could be a man-in-the-middle attack. Recommended
* disconnect from session.
* @param host_hash
*/
void
hostPublicKeyChanged
(
QString
host_hash
);
/**
* @brief hostPublicKeyUnavailable
* Signal is emitted when the remote host does not have a public key.
* Recommended to disconnect from session.
*/
void
hostPublicKeyUnavailable
();
/**
* @brief knownHostError
* This signal is emitted when an unknown error occurs retrieving known_hosts.
* @param message
*/
void
knownHostError
(
QString
message
);
/**
* @brief updateKnownHostsFailed
* Signal is emitted upon accepting public key update that fails to update
* client known_hosts.
*/
void
updateKnownHostsFailed
();
/**
* @brief authenticationError
* Signal is emitted when the user's authentication method password/pubkey
* fails.
* @param message
*/
void
authenticationError
(
QString
message
);
/**
* @brief authenticationSucceeded
* Signal is emitted indicating successful authentication again remote host.
*/
void
authenticationSucceeded
();
/**
* @brief passwordRequested
* Signal is emitted when public key authentication fails and password is
* asked for. Recommend prompt user for password and
* authenticateWithPassword().
*/
void
passwordRequested
();
/**
* @brief loginBannerIssued
* Signal is emitted after authentication has succeeded and if a banner is
* available on the remote host.
* @param message
*/
void
loginBannerIssued
(
QString
message
);
/**
* @brief execOutputReady
* Signal is emitted if a requestExec was performed with standard output.
*/
void
execOutputReady
();
/**
* @brief execFailed
* Signal is emitted if requestExec fails in someway.
* @param message
*/
void
execFailed
(
QString
message
);
/**
* @brief execFinished
* Signal is emitted when requestExec() has completed.
*/
void
execFinished
();
};
// class SessionWorker
...
...
rsmcore/tests/tstSession.cc
View file @
c1e01c96
...
...
@@ -3,7 +3,7 @@
#include
"rsmcore/sessionworker.hh"
using
namespace
rsm
;
TEST
(
RSM
,
Session
)
TEST
(
RSM
,
Session
Worker
)
{
SessionWorker
session
(
"apollo"
);
session
.
setLogVerbosity
(
SessionWorker
::
Verbosity
::
None
);
...
...
@@ -12,6 +12,7 @@ TEST(RSM, Session)
session
.
connect
();
// 1) hand-shake with host
session
.
verifyKnownHost
();
// 2) verify host is known/acceptable
session
.
authenticate
();
// 3) process authentication
session
.
requestExec
(
"ls -la"
);
QByteArray
ls_la
=
session
.
readExecOutput
();
session
.
requestExec
(
"ls modulefiles"
);
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment