From 60c7e512f2d74253e77ba46861071a6d49e2741b Mon Sep 17 00:00:00 2001 From: sithlord48 Date: Thu, 28 Nov 2024 07:51:24 -0500 Subject: [PATCH] refactor: use enum for secure sockets based on barrier: 57769cf --- src/lib/net/SecureListenSocket.cpp | 10 +++++++--- src/lib/net/SecureListenSocket.h | 10 +++++++++- src/lib/net/SecureSocket.cpp | 13 +++++++++---- src/lib/net/SecureSocket.h | 13 +++++++++++-- src/lib/net/TCPSocketFactory.cpp | 4 ++-- 5 files changed, 38 insertions(+), 12 deletions(-) diff --git a/src/lib/net/SecureListenSocket.cpp b/src/lib/net/SecureListenSocket.cpp index 31fe398b4..834053426 100644 --- a/src/lib/net/SecureListenSocket.cpp +++ b/src/lib/net/SecureListenSocket.cpp @@ -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) { diff --git a/src/lib/net/SecureListenSocket.h b/src/lib/net/SecureListenSocket.h index 53c8c9a7c..a47c997fc 100644 --- a/src/lib/net/SecureListenSocket.h +++ b/src/lib/net/SecureListenSocket.h @@ -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; }; diff --git a/src/lib/net/SecureSocket.cpp b/src/lib/net/SecureSocket.cpp index 281427ad0..fe4026bef 100644 --- a/src/lib/net/SecureSocket.cpp +++ b/src/lib/net/SecureSocket.cpp @@ -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} { } diff --git a/src/lib/net/SecureSocket.h b/src/lib/net/SecureSocket.h index 556cbf5ba..0206e4c4d 100644 --- a/src/lib/net/SecureSocket.h +++ b/src/lib/net/SecureSocket.h @@ -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 @@ -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; }; diff --git a/src/lib/net/TCPSocketFactory.cpp b/src/lib/net/TCPSocketFactory.cpp index 2a4f2a502..29d5e50b3 100644 --- a/src/lib/net/TCPSocketFactory.cpp +++ b/src/lib/net/TCPSocketFactory.cpp @@ -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); }