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