refactor: use enum for secure sockets
based on barrier: 57769cf
This commit is contained in:
parent
e996471e37
commit
60c7e512f2
5 changed files with 38 additions and 12 deletions
|
|
@ -1,5 +1,6 @@
|
||||||
/*
|
/*
|
||||||
* Deskflow -- mouse and keyboard sharing utility
|
* Deskflow -- mouse and keyboard sharing utility
|
||||||
|
* SPDX-FileCopyrightText: (C) 2025 Deskflow Developers
|
||||||
* SPDX-FileCopyrightText: (C) 2015 - 2016 Symless Ltd.
|
* SPDX-FileCopyrightText: (C) 2015 - 2016 Symless Ltd.
|
||||||
* SPDX-License-Identifier: GPL-2.0-only WITH LicenseRef-OpenSSL-Exception
|
* SPDX-License-Identifier: GPL-2.0-only WITH LicenseRef-OpenSSL-Exception
|
||||||
*/
|
*/
|
||||||
|
|
@ -25,9 +26,12 @@ static const char s_certificateFileExt[] = {"pem"};
|
||||||
//
|
//
|
||||||
|
|
||||||
SecureListenSocket::SecureListenSocket(
|
SecureListenSocket::SecureListenSocket(
|
||||||
IEventQueue *events, SocketMultiplexer *socketMultiplexer, IArchNetwork::EAddressFamily family
|
IEventQueue *events, SocketMultiplexer *socketMultiplexer, IArchNetwork::EAddressFamily family,
|
||||||
|
SecurityLevel securityLevel
|
||||||
)
|
)
|
||||||
: TCPListenSocket(events, socketMultiplexer, family)
|
: TCPListenSocket(events, socketMultiplexer, family),
|
||||||
|
m_securityLevel{securityLevel}
|
||||||
|
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -35,7 +39,7 @@ IDataSocket *SecureListenSocket::accept()
|
||||||
{
|
{
|
||||||
SecureSocket *socket = NULL;
|
SecureSocket *socket = NULL;
|
||||||
try {
|
try {
|
||||||
socket = new SecureSocket(m_events, m_socketMultiplexer, ARCH->acceptSocket(m_socket, NULL));
|
socket = new SecureSocket(m_events, m_socketMultiplexer, ARCH->acceptSocket(m_socket, NULL), m_securityLevel);
|
||||||
socket->initSsl(true);
|
socket->initSsl(true);
|
||||||
|
|
||||||
if (socket != NULL) {
|
if (socket != NULL) {
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
/*
|
/*
|
||||||
* Deskflow -- mouse and keyboard sharing utility
|
* Deskflow -- mouse and keyboard sharing utility
|
||||||
|
* SPDX-FileCopyrightText: (C) 2025 Deskflow Developers
|
||||||
* SPDX-FileCopyrightText: (C) 2015 - 2016 Symless Ltd.
|
* SPDX-FileCopyrightText: (C) 2015 - 2016 Symless Ltd.
|
||||||
* SPDX-License-Identifier: GPL-2.0-only WITH LicenseRef-OpenSSL-Exception
|
* SPDX-License-Identifier: GPL-2.0-only WITH LicenseRef-OpenSSL-Exception
|
||||||
*/
|
*/
|
||||||
|
|
@ -7,6 +8,7 @@
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include "common/stdset.h"
|
#include "common/stdset.h"
|
||||||
|
#include "net/SecurityLevel.h"
|
||||||
#include "net/TCPListenSocket.h"
|
#include "net/TCPListenSocket.h"
|
||||||
|
|
||||||
class IEventQueue;
|
class IEventQueue;
|
||||||
|
|
@ -16,8 +18,14 @@ class IDataSocket;
|
||||||
class SecureListenSocket : public TCPListenSocket
|
class SecureListenSocket : public TCPListenSocket
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
SecureListenSocket(IEventQueue *events, SocketMultiplexer *socketMultiplexer, IArchNetwork::EAddressFamily family);
|
SecureListenSocket(
|
||||||
|
IEventQueue *events, SocketMultiplexer *socketMultiplexer, IArchNetwork::EAddressFamily family,
|
||||||
|
SecurityLevel securityLevel = SecurityLevel::PlainText
|
||||||
|
);
|
||||||
|
|
||||||
// IListenSocket overrides
|
// IListenSocket overrides
|
||||||
virtual IDataSocket *accept();
|
virtual IDataSocket *accept();
|
||||||
|
|
||||||
|
private:
|
||||||
|
const SecurityLevel m_securityLevel;
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -51,20 +51,25 @@ struct Ssl
|
||||||
};
|
};
|
||||||
|
|
||||||
SecureSocket::SecureSocket(
|
SecureSocket::SecureSocket(
|
||||||
IEventQueue *events, SocketMultiplexer *socketMultiplexer, IArchNetwork::EAddressFamily family
|
IEventQueue *events, SocketMultiplexer *socketMultiplexer, IArchNetwork::EAddressFamily family,
|
||||||
|
SecurityLevel securityLevel
|
||||||
)
|
)
|
||||||
: TCPSocket(events, socketMultiplexer, family),
|
: TCPSocket(events, socketMultiplexer, family),
|
||||||
m_ssl(nullptr),
|
m_ssl(nullptr),
|
||||||
m_secureReady(false),
|
m_secureReady(false),
|
||||||
m_fatal(false)
|
m_fatal(false),
|
||||||
|
m_securityLevel{securityLevel}
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
SecureSocket::SecureSocket(IEventQueue *events, SocketMultiplexer *socketMultiplexer, ArchSocket socket)
|
SecureSocket::SecureSocket(
|
||||||
|
IEventQueue *events, SocketMultiplexer *socketMultiplexer, ArchSocket socket, SecurityLevel securityLevel
|
||||||
|
)
|
||||||
: TCPSocket(events, socketMultiplexer, socket),
|
: TCPSocket(events, socketMultiplexer, socket),
|
||||||
m_ssl(nullptr),
|
m_ssl(nullptr),
|
||||||
m_secureReady(false),
|
m_secureReady(false),
|
||||||
m_fatal(false)
|
m_fatal(false),
|
||||||
|
m_securityLevel{securityLevel}
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,13 @@
|
||||||
/*
|
/*
|
||||||
* Deskflow -- mouse and keyboard sharing utility
|
* Deskflow -- mouse and keyboard sharing utility
|
||||||
|
* SPDX-FileCopyrightText: (C) 2025 Deskflow Developers
|
||||||
* SPDX-FileCopyrightText: (C) 2015 - 2016 Symless Ltd.
|
* SPDX-FileCopyrightText: (C) 2015 - 2016 Symless Ltd.
|
||||||
* SPDX-License-Identifier: GPL-2.0-only WITH LicenseRef-OpenSSL-Exception
|
* SPDX-License-Identifier: GPL-2.0-only WITH LicenseRef-OpenSSL-Exception
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
|
#include "net/SecurityLevel.h"
|
||||||
#include "net/TCPSocket.h"
|
#include "net/TCPSocket.h"
|
||||||
#include "net/XSocket.h"
|
#include "net/XSocket.h"
|
||||||
#include <mutex>
|
#include <mutex>
|
||||||
|
|
@ -23,8 +25,14 @@ A secure socket using SSL.
|
||||||
class SecureSocket : public TCPSocket
|
class SecureSocket : public TCPSocket
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
SecureSocket(IEventQueue *events, SocketMultiplexer *socketMultiplexer, IArchNetwork::EAddressFamily family);
|
SecureSocket(
|
||||||
SecureSocket(IEventQueue *events, SocketMultiplexer *socketMultiplexer, ArchSocket socket);
|
IEventQueue *events, SocketMultiplexer *socketMultiplexer, IArchNetwork::EAddressFamily family,
|
||||||
|
SecurityLevel securityLevel = SecurityLevel::Encrypted
|
||||||
|
);
|
||||||
|
SecureSocket(
|
||||||
|
IEventQueue *events, SocketMultiplexer *socketMultiplexer, ArchSocket socket,
|
||||||
|
SecurityLevel securityLevel = SecurityLevel::Encrypted
|
||||||
|
);
|
||||||
SecureSocket(SecureSocket const &) = delete;
|
SecureSocket(SecureSocket const &) = delete;
|
||||||
SecureSocket(SecureSocket &&) = delete;
|
SecureSocket(SecureSocket &&) = delete;
|
||||||
~SecureSocket();
|
~SecureSocket();
|
||||||
|
|
@ -84,4 +92,5 @@ private:
|
||||||
Ssl *m_ssl;
|
Ssl *m_ssl;
|
||||||
bool m_secureReady;
|
bool m_secureReady;
|
||||||
bool m_fatal;
|
bool m_fatal;
|
||||||
|
SecurityLevel m_securityLevel = SecurityLevel::Encrypted;
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -33,7 +33,7 @@ TCPSocketFactory::~TCPSocketFactory()
|
||||||
IDataSocket *TCPSocketFactory::create(IArchNetwork::EAddressFamily family, SecurityLevel securityLevel) const
|
IDataSocket *TCPSocketFactory::create(IArchNetwork::EAddressFamily family, SecurityLevel securityLevel) const
|
||||||
{
|
{
|
||||||
if (securityLevel != SecurityLevel::PlainText) {
|
if (securityLevel != SecurityLevel::PlainText) {
|
||||||
SecureSocket *secureSocket = new SecureSocket(m_events, m_socketMultiplexer, family);
|
SecureSocket *secureSocket = new SecureSocket(m_events, m_socketMultiplexer, family, securityLevel);
|
||||||
secureSocket->initSsl(false);
|
secureSocket->initSsl(false);
|
||||||
return secureSocket;
|
return secureSocket;
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -45,7 +45,7 @@ IListenSocket *TCPSocketFactory::createListen(IArchNetwork::EAddressFamily famil
|
||||||
{
|
{
|
||||||
IListenSocket *socket = NULL;
|
IListenSocket *socket = NULL;
|
||||||
if (securityLevel != SecurityLevel::PlainText) {
|
if (securityLevel != SecurityLevel::PlainText) {
|
||||||
socket = new SecureListenSocket(m_events, m_socketMultiplexer, family);
|
socket = new SecureListenSocket(m_events, m_socketMultiplexer, family, securityLevel);
|
||||||
} else {
|
} else {
|
||||||
socket = new TCPListenSocket(m_events, m_socketMultiplexer, family);
|
socket = new TCPListenSocket(m_events, m_socketMultiplexer, family);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue