From 6684b8b09f7a2ebe10fd9157341a1542e6b2e84b Mon Sep 17 00:00:00 2001 From: Jamie Newbon Date: Mon, 27 Jul 2020 13:29:58 +0100 Subject: [PATCH] #6734 Added new cmd option --tls-cert - Moved ArgsBase, ClientArgs, and ServerArgs to own namespace - Added some Documentation to Args classes Signed-off-by: Jamie Newbon --- src/lib/client/Client.cpp | 2 +- src/lib/client/Client.h | 4 +- src/lib/net/SecureListenSocket.cpp | 14 +++- src/lib/server/Server.cpp | 2 +- src/lib/server/Server.h | 4 +- src/lib/synergy/App.cpp | 4 +- src/lib/synergy/App.h | 9 +- src/lib/synergy/ArgParser.cpp | 13 +-- src/lib/synergy/ArgParser.h | 26 +++--- src/lib/synergy/ArgsBase.cpp | 44 ++-------- src/lib/synergy/ArgsBase.h | 84 ++++++++++++------- src/lib/synergy/ClientApp.cpp | 2 +- src/lib/synergy/ClientApp.h | 8 +- src/lib/synergy/ClientArgs.cpp | 18 ++-- src/lib/synergy/ClientArgs.h | 30 +++++-- src/lib/synergy/DaemonApp.cpp | 19 ++--- src/lib/synergy/IApp.h | 9 +- src/lib/synergy/ServerApp.cpp | 2 +- src/lib/synergy/ServerApp.h | 8 +- src/lib/synergy/ServerArgs.cpp | 22 +++-- src/lib/synergy/ServerArgs.h | 38 ++++++--- src/test/integtests/net/NetworkTests.cpp | 24 +++--- src/test/unittests/synergy/ArgParserTests.cpp | 2 +- .../synergy/ClientArgsParsingTests.cpp | 8 +- .../synergy/GenericArgsParsingTests.cpp | 30 +++---- .../synergy/ServerArgsParsingTests.cpp | 4 +- 26 files changed, 250 insertions(+), 180 deletions(-) diff --git a/src/lib/client/Client.cpp b/src/lib/client/Client.cpp index 661bd4ba6..0f287125f 100644 --- a/src/lib/client/Client.cpp +++ b/src/lib/client/Client.cpp @@ -56,7 +56,7 @@ Client::Client( const String& name, const NetworkAddress& address, ISocketFactory* socketFactory, synergy::Screen* screen, - ClientArgs const& args) : + lib::synergy::ClientArgs const& args) : m_mock(false), m_name(name), m_serverAddress(address), diff --git a/src/lib/client/Client.h b/src/lib/client/Client.h index cb46e69bb..6f30ed408 100644 --- a/src/lib/client/Client.h +++ b/src/lib/client/Client.h @@ -59,7 +59,7 @@ public: */ Client(IEventQueue* events, const String& name, const NetworkAddress& address, ISocketFactory* socketFactory, - synergy::Screen* screen, ClientArgs const& args); + synergy::Screen* screen, lib::synergy::ClientArgs const& args); ~Client(); @@ -222,7 +222,7 @@ private: Thread* m_writeToDropDirThread; TCPSocket* m_socket; bool m_useSecureNetwork; - ClientArgs m_args; bool m_enableClipboard; size_t m_maximumClipboardSize; + lib::synergy::ClientArgs m_args; }; diff --git a/src/lib/net/SecureListenSocket.cpp b/src/lib/net/SecureListenSocket.cpp index a3e6447f2..dc3098e87 100644 --- a/src/lib/net/SecureListenSocket.cpp +++ b/src/lib/net/SecureListenSocket.cpp @@ -22,6 +22,8 @@ #include "net/SocketMultiplexer.h" #include "net/TSocketMultiplexerMethodJob.h" #include "arch/XArch.h" +#include "synergy/ArgParser.h" +#include "synergy/ArgsBase.h" static const char s_certificateDir[] = { "SSL" }; static const char s_certificateFilename[] = { "Synergy.pem" }; @@ -53,10 +55,16 @@ SecureListenSocket::accept() setListeningJob(); } + //default location of the TLS cert file in users dir String certificateFilename = synergy::string::sprintf("%s/%s/%s", - ARCH->getProfileDirectory().c_str(), - s_certificateDir, - s_certificateFilename); + ARCH->getProfileDirectory().c_str(), + s_certificateDir, + s_certificateFilename); + + //if the tls cert option is set use that for the certificate file + if (!ArgParser::argsBase().m_tlsCertFile.empty()) { + certificateFilename = ArgParser::argsBase().m_tlsCertFile; + } bool loaded = socket->loadCertificates(certificateFilename); if (!loaded) { diff --git a/src/lib/server/Server.cpp b/src/lib/server/Server.cpp index 2d7a2da3f..92faaf316 100644 --- a/src/lib/server/Server.cpp +++ b/src/lib/server/Server.cpp @@ -62,7 +62,7 @@ Server::Server( PrimaryClient* primaryClient, synergy::Screen* screen, IEventQueue* events, - ServerArgs const& args) : + lib::synergy::ServerArgs const& args) : m_mock(false), m_primaryClient(primaryClient), m_active(primaryClient), diff --git a/src/lib/server/Server.h b/src/lib/server/Server.h index 508337026..1a524cba7 100644 --- a/src/lib/server/Server.h +++ b/src/lib/server/Server.h @@ -107,7 +107,7 @@ public: ownership of \p primaryClient. */ Server(Config& config, PrimaryClient* primaryClient, - synergy::Screen* screen, IEventQueue* events, ServerArgs const& args); + synergy::Screen* screen, IEventQueue* events, lib::synergy::ServerArgs const& args); ~Server(); #ifdef TEST_ENV @@ -481,5 +481,5 @@ private: bool m_waitDragInfoThread; ClientListener* m_clientListener; - ServerArgs m_args; + lib::synergy::ServerArgs m_args; }; diff --git a/src/lib/synergy/App.cpp b/src/lib/synergy/App.cpp index 78511608b..93b39bf62 100644 --- a/src/lib/synergy/App.cpp +++ b/src/lib/synergy/App.cpp @@ -58,7 +58,7 @@ App* App::s_instance = nullptr; // App // -App::App(IEventQueue* events, CreateTaskBarReceiverFunc createTaskBarReceiver, ArgsBase* args) : +App::App(IEventQueue* events, CreateTaskBarReceiverFunc createTaskBarReceiver, lib::synergy::ArgsBase* args) : m_bye(&exit), m_taskBarReceiver(NULL), m_suspended(false), @@ -266,7 +266,7 @@ App::runEventsLoop(void*) // MinimalApp::MinimalApp() : - App(NULL, NULL, new ArgsBase()) + App(NULL, NULL, new lib::synergy::ArgsBase()) { m_arch.init(); setEvents(m_events); diff --git a/src/lib/synergy/App.h b/src/lib/synergy/App.h index 078786f90..5218a5fe9 100644 --- a/src/lib/synergy/App.h +++ b/src/lib/synergy/App.h @@ -43,11 +43,11 @@ typedef IArchTaskBarReceiver* (*CreateTaskBarReceiverFunc)(const BufferedLogOutp class App : public IApp { public: - App(IEventQueue* events, CreateTaskBarReceiverFunc createTaskBarReceiver, ArgsBase* args); + App(IEventQueue* events, CreateTaskBarReceiverFunc createTaskBarReceiver, lib::synergy::ArgsBase* args); virtual ~App(); // Returns args that are common between server and client. - ArgsBase& argsBase() const { return *m_args; } + lib::synergy::ArgsBase& argsBase() const { return *m_args; } // Prints the current compiled version. virtual void version(); @@ -113,7 +113,7 @@ protected: IEventQueue* m_events; private: - ArgsBase* m_args; + lib::synergy::ArgsBase* m_args; static App* s_instance; FileLogOutputter* m_fileLog; CreateTaskBarReceiverFunc m_createTaskBarReceiver; @@ -164,7 +164,8 @@ private: " -l --log write log messages to file.\n" \ " --no-tray disable the system tray icon.\n" \ " --enable-drag-drop enable file drag & drop.\n" \ - " --enable-crypto enable the crypto (ssl) plugin.\n" + " --enable-crypto enable the crypto (ssl) plugin.\n" \ + " --tls-cert specify the path to the tls certificate file.\n" #define HELP_COMMON_INFO_2 \ " -h, --help display this help and exit.\n" \ diff --git a/src/lib/synergy/ArgParser.cpp b/src/lib/synergy/ArgParser.cpp index 8690f4557..388140167 100644 --- a/src/lib/synergy/ArgParser.cpp +++ b/src/lib/synergy/ArgParser.cpp @@ -29,8 +29,8 @@ #ifdef WINAPI_MSWINDOWS #include #endif - -ArgsBase* ArgParser::m_argsBase = NULL; + +lib::synergy::ArgsBase* ArgParser::m_argsBase = NULL; ArgParser::ArgParser(App* app) : m_app(app) @@ -38,7 +38,7 @@ ArgParser::ArgParser(App* app) : } bool -ArgParser::parseServerArgs(ServerArgs& args, int argc, const char* const* argv) +ArgParser::parseServerArgs(lib::synergy::ServerArgs& args, int argc, const char* const* argv) { setArgsBase(args); updateCommonArgs(argv); @@ -78,7 +78,7 @@ ArgParser::parseServerArgs(ServerArgs& args, int argc, const char* const* argv) } bool -ArgParser::parseClientArgs(ClientArgs& args, int argc, const char* const* argv) +ArgParser::parseClientArgs(lib::synergy::ClientArgs& args, int argc, const char* const* argv) { setArgsBase(args); updateCommonArgs(argv); @@ -130,7 +130,7 @@ ArgParser::parseClientArgs(ClientArgs& args, int argc, const char* const* argv) } bool -ArgParser::parsePlatformArg(ArgsBase& argsBase, const int& argc, const char* const* argv, int& i) +ArgParser::parsePlatformArg(lib::synergy::ArgsBase& argsBase, const int& argc, const char* const* argv, int& i) { #if WINAPI_MSWINDOWS if (isArg(i, argc, argv, NULL, "--service")) { @@ -290,6 +290,9 @@ ArgParser::parseGenericArgs(int argc, const char* const* argv, int& i) else if (isArg(i, argc, argv, NULL, "--plugin-dir", 1)) { argsBase().m_pluginDirectory = argv[++i]; } + else if (isArg(i, argc, argv, NULL, "--tls-cert", 1)) { + argsBase().m_tlsCertFile = argv[++i]; + } else { // option not supported here return false; diff --git a/src/lib/synergy/ArgParser.h b/src/lib/synergy/ArgParser.h index 4fc8a2630..1f5543dbd 100644 --- a/src/lib/synergy/ArgParser.h +++ b/src/lib/synergy/ArgParser.h @@ -20,10 +20,15 @@ #include "base/String.h" #include "common/stdvector.h" -class ServerArgs; -class ClientArgs; +namespace lib { + namespace synergy { + class ArgsBase; + class ServerArgs; + class ClientArgs; + } +} + class ToolArgs; -class ArgsBase; class App; class ArgParser { @@ -31,13 +36,13 @@ class ArgParser { public: ArgParser(App* app); - bool parseServerArgs(ServerArgs& args, int argc, const char* const* argv); - bool parseClientArgs(ClientArgs& args, int argc, const char* const* argv); - bool parsePlatformArg(ArgsBase& argsBase, const int& argc, const char* const* argv, int& i); + bool parseServerArgs(lib::synergy::ServerArgs& args, int argc, const char* const* argv); + bool parseClientArgs(lib::synergy::ClientArgs& args, int argc, const char* const* argv); + bool parsePlatformArg(lib::synergy::ArgsBase& argsBase, const int& argc, const char* const* argv, int& i); bool parseToolArgs(ToolArgs& args, int argc, const char* const* argv); bool parseGenericArgs(int argc, const char* const* argv, int& i); bool parseDeprecatedArgs(int argc, const char* const* argv, int& i); - void setArgsBase(ArgsBase& argsBase) { m_argsBase = &argsBase; } + void setArgsBase(lib::synergy::ArgsBase& argsBase) { m_argsBase = &argsBase; } static bool isArg(int argi, int argc, const char* const* argv, const char* name1, const char* name2, @@ -50,14 +55,15 @@ public: static String assembleCommand(std::vector& argsArray, String ignoreArg = "", int parametersRequired = 0); + static lib::synergy::ArgsBase& argsBase() { return *m_argsBase; } + private: void updateCommonArgs(const char* const* argv); bool checkUnexpectedArgs(); - - static ArgsBase& argsBase() { return *m_argsBase; } + private: App* m_app; - static ArgsBase* m_argsBase; + static lib::synergy::ArgsBase* m_argsBase; }; diff --git a/src/lib/synergy/ArgsBase.cpp b/src/lib/synergy/ArgsBase.cpp index a2d70f5bb..0f474a2e9 100644 --- a/src/lib/synergy/ArgsBase.cpp +++ b/src/lib/synergy/ArgsBase.cpp @@ -1,6 +1,6 @@ /* * synergy -- mouse and keyboard sharing utility - * Copyright (C) 2012-2016 Symless Ltd. + * Copyright (C) 2012-2020 Symless Ltd. * Copyright (C) 2012 Nick Bolton * * This package is free software; you can redistribute it and/or @@ -16,38 +16,12 @@ * along with this program. If not, see . */ -#include "synergy/ArgsBase.h" +#include "ArgsBase.h" -ArgsBase::ArgsBase() : -#if SYSAPI_WIN32 -m_daemon(false), // daemon mode not supported on windows (use --service) -m_debugServiceWait(false), -m_pauseOnExit(false), -m_stopOnDeskSwitch(false), -#else -m_daemon(true), // backward compatibility for unix (daemon by default) -#endif -#if WINAPI_XWINDOWS -m_disableXInitThreads(false), -#endif -m_backend(false), -m_restartable(true), -m_noHooks(false), -m_pname(NULL), -m_logFilter(NULL), -m_logFile(NULL), -m_display(NULL), -m_disableTray(false), -m_enableIpc(false), -m_enableDragDrop(false), -m_shouldExit(false), -m_synergyAddress(), -m_enableCrypto(false), -m_profileDirectory(""), -m_pluginDirectory("") -{ -} - -ArgsBase::~ArgsBase() -{ -} +namespace lib { + namespace synergy { + ArgsBase::~ArgsBase() { + // + } + } +} \ No newline at end of file diff --git a/src/lib/synergy/ArgsBase.h b/src/lib/synergy/ArgsBase.h index 6ae0e3d0f..48fe10017 100644 --- a/src/lib/synergy/ArgsBase.h +++ b/src/lib/synergy/ArgsBase.h @@ -1,6 +1,6 @@ /* * synergy -- mouse and keyboard sharing utility - * Copyright (C) 2012-2016 Symless Ltd. + * Copyright (C) 2012-2020 Symless Ltd. * Copyright (C) 2012 Nick Bolton * * This package is free software; you can redistribute it and/or @@ -16,39 +16,65 @@ * along with this program. If not, see . */ -#pragma once + +#ifndef SYNERGY_CORE_ARGSBASE_H +#define SYNERGY_CORE_ARGSBASE_H #include "base/String.h" -class ArgsBase { -public: - ArgsBase(); - virtual ~ArgsBase(); +namespace lib { + namespace synergy { + /** + * @brief This is the base Argument class that will store the generic + * arguments passed into the applications this will be derived + * from and expanded to include application specific arguments + */ + class ArgsBase { + public: + ArgsBase() = default; + virtual ~ArgsBase(); + + /// @brief This sets the type of the derived class + enum Type { kBase, kServer, kClient }; + + Type m_classType = kBase; /// @brief Stores what type of object this is + + bool m_daemon = true; /// @brief Should run as a daemon + bool m_backend = false; /// @brief //TODO Unsure what this is used for + bool m_restartable = true; /// @brief Should the app restart automatically + bool m_noHooks = false; /// @brief Should the app use hooks + const char* m_pname = nullptr; /// @brief The filename of the running process + const char* m_logFilter = nullptr; /// @brief The logging level of the application + const char* m_logFile = nullptr; /// @brief The full path to the logfile + const char* m_display = nullptr; /// @brief Contains the X-Server display to use + String m_name; /// @brief The name of the current computer + bool m_disableTray = false; /// @brief Should the app add a tray icon + bool m_enableIpc = false; /// @brief Tell the client to talk through IPC to the daemon + bool m_enableDragDrop = false; /// @brief Should drag drop support be enabled + + bool m_shouldExit = false; /// @brief Will cause the application to exit when set to true + String m_synergyAddress; /// @brief Bind to this address //TODO This really should be a ServerArgs + bool m_enableCrypto = false; /// @brief Should the connections be TLS encrypted + String m_profileDirectory; /// @brief The profile DIR to use for the application + String m_pluginDirectory; /// @brief //TODO Plugins? Get set in ARCH but doesn't seem to get used + String m_tlsCertFile; /// @brief Contains the location of the TLS certificate file -public: - bool m_daemon; - bool m_backend; - bool m_restartable; - bool m_noHooks; - const char* m_pname; - const char* m_logFilter; - const char* m_logFile; - const char* m_display; - String m_name; - bool m_disableTray; - bool m_enableIpc; - bool m_enableDragDrop; #if SYSAPI_WIN32 - bool m_debugServiceWait; - bool m_pauseOnExit; - bool m_stopOnDeskSwitch; + bool m_debugServiceWait = false; + bool m_pauseOnExit = false; + bool m_stopOnDeskSwitch = false; #endif #if WINAPI_XWINDOWS - bool m_disableXInitThreads; + bool m_disableXInitThreads = false; #endif - bool m_shouldExit; - String m_synergyAddress; - bool m_enableCrypto; - String m_profileDirectory; - String m_pluginDirectory; -}; + + protected: + + /// @brief deletes pointers and sets the value to null + template static inline void destroy(T*& p) { delete p; p = 0; } + + }; + } +} + +#endif //SYNERGY_CORE_ARGSBASE_H \ No newline at end of file diff --git a/src/lib/synergy/ClientApp.cpp b/src/lib/synergy/ClientApp.cpp index 1accbad3f..8582b8ccc 100644 --- a/src/lib/synergy/ClientApp.cpp +++ b/src/lib/synergy/ClientApp.cpp @@ -63,7 +63,7 @@ #define RETRY_TIME 1.0 ClientApp::ClientApp(IEventQueue* events, CreateTaskBarReceiverFunc createTaskBarReceiver) : - App(events, createTaskBarReceiver, new ClientArgs()), + App(events, createTaskBarReceiver, new lib::synergy::ClientArgs()), m_client(NULL), m_clientScreen(NULL), m_serverAddress(NULL) diff --git a/src/lib/synergy/ClientApp.h b/src/lib/synergy/ClientApp.h index 24fa20c33..71b8d222f 100644 --- a/src/lib/synergy/ClientApp.h +++ b/src/lib/synergy/ClientApp.h @@ -25,7 +25,11 @@ class Event; class Client; class NetworkAddress; class Thread; -class ClientArgs; +namespace lib { + namespace synergy { + class ClientArgs; + } +} class ClientApp : public App { public: @@ -39,7 +43,7 @@ public: void help(); // Returns arguments that are common and for client. - ClientArgs& args() const { return (ClientArgs&)argsBase(); } + lib::synergy::ClientArgs& args() const { return (lib::synergy::ClientArgs&)argsBase(); } const char* daemonName() const; const char* daemonInfo() const; diff --git a/src/lib/synergy/ClientArgs.cpp b/src/lib/synergy/ClientArgs.cpp index 03ffd746a..67f75b46d 100644 --- a/src/lib/synergy/ClientArgs.cpp +++ b/src/lib/synergy/ClientArgs.cpp @@ -15,9 +15,17 @@ * along with this program. If not, see . */ -#include "synergy/ClientArgs.h" +#include "ClientArgs.h" -ClientArgs::ClientArgs() : - m_yscroll(0) -{ -} +namespace lib { + namespace synergy { + + ClientArgs::~ClientArgs() { + + } + + ClientArgs::ClientArgs() { + m_classType = kClient; + } + } +} \ No newline at end of file diff --git a/src/lib/synergy/ClientArgs.h b/src/lib/synergy/ClientArgs.h index 93a7307a8..c43a726f0 100644 --- a/src/lib/synergy/ClientArgs.h +++ b/src/lib/synergy/ClientArgs.h @@ -15,16 +15,28 @@ * along with this program. If not, see . */ -#pragma once +#ifndef SYNERGY_CORE_CLIENTARGS_H +#define SYNERGY_CORE_CLIENTARGS_H -#include "synergy/ArgsBase.h" +#include "ArgsBase.h" -class NetworkAddress; -class ClientArgs : public ArgsBase { -public: - ClientArgs(); +namespace lib { + namespace synergy { + class ClientArgs : public ArgsBase { -public: - int m_yscroll; -}; + /// Public functions + public: + ClientArgs(); + + ~ClientArgs() override; + + public: + int m_yscroll = 0; + + private: + + }; + } +} +#endif //SYNERGY_CORE_CLIENTARGS_H \ No newline at end of file diff --git a/src/lib/synergy/DaemonApp.cpp b/src/lib/synergy/DaemonApp.cpp index 65582c464..7d09fb311 100644 --- a/src/lib/synergy/DaemonApp.cpp +++ b/src/lib/synergy/DaemonApp.cpp @@ -308,24 +308,23 @@ DaemonApp::handleIpcMessage(const Event& e, void*) ArgParser::splitCommandString(command, argsArray); ArgParser argParser(NULL); const char** argv = argParser.getArgv(argsArray); - ServerArgs serverArgs; - ClientArgs clientArgs; + int argc = static_cast(argsArray.size()); - bool server = argsArray[0].find("synergys") != String::npos ? true : false; - ArgsBase* argBase = NULL; + bool server = argsArray[0].find("synergys") != String::npos; + if (server) { - argParser.parseServerArgs(serverArgs, argc, argv); - argBase = &serverArgs; + auto serverArgs = new lib::synergy::ServerArgs(); + argParser.parseServerArgs(*serverArgs, argc, argv); + } else { - argParser.parseClientArgs(clientArgs, argc, argv); - argBase = &clientArgs; + auto clientArgs = new lib::synergy::ClientArgs(); + argParser.parseClientArgs(*clientArgs, argc, argv); } delete[] argv; - - String logLevel(argBase->m_logFilter); + String logLevel(ArgParser::argsBase().m_logFilter); if (!logLevel.empty()) { try { // change log level based on that in the command string diff --git a/src/lib/synergy/IApp.h b/src/lib/synergy/IApp.h index 6dc6f8442..82a07c841 100644 --- a/src/lib/synergy/IApp.h +++ b/src/lib/synergy/IApp.h @@ -22,8 +22,13 @@ typedef int (*StartupFunc)(int, char**); +namespace lib { + namespace synergy { + class ArgsBase; + } +} + class ILogOutputter; -class ArgsBase; class IArchTaskBarReceiver; namespace synergy { class Screen; } class IEventQueue; @@ -32,7 +37,7 @@ class IApp : public IInterface { public: virtual void setByeFunc(void(*bye)(int)) = 0; - virtual ArgsBase& argsBase() const = 0; + virtual lib::synergy::ArgsBase& argsBase() const = 0; virtual int standardStartup(int argc, char** argv) = 0; virtual int runInner(int argc, char** argv, ILogOutputter* outputter, StartupFunc startup) = 0; virtual void startNode() = 0; diff --git a/src/lib/synergy/ServerApp.cpp b/src/lib/synergy/ServerApp.cpp index 726e05abb..3c83510f6 100644 --- a/src/lib/synergy/ServerApp.cpp +++ b/src/lib/synergy/ServerApp.cpp @@ -65,7 +65,7 @@ // ServerApp::ServerApp(IEventQueue* events, CreateTaskBarReceiverFunc createTaskBarReceiver) : - App(events, createTaskBarReceiver, new ServerArgs()), + App(events, createTaskBarReceiver, new lib::synergy::ServerArgs()), m_server(NULL), m_serverState(kUninitialized), m_serverScreen(NULL), diff --git a/src/lib/synergy/ServerApp.h b/src/lib/synergy/ServerApp.h index 59f9f65a7..c36281729 100644 --- a/src/lib/synergy/ServerApp.h +++ b/src/lib/synergy/ServerApp.h @@ -45,7 +45,11 @@ class ClientListener; class EventQueueTimer; class ILogOutputter; class IEventQueue; -class ServerArgs; +namespace lib { + namespace synergy{ + class ServerArgs; + } +} class ServerApp : public App { public: @@ -59,7 +63,7 @@ public: void help(); // Returns arguments that are common and for server. - ServerArgs& args() const { return (ServerArgs&)argsBase(); } + lib::synergy::ServerArgs& args() const { return (lib::synergy::ServerArgs&)argsBase(); } const char* daemonName() const; const char* daemonInfo() const; diff --git a/src/lib/synergy/ServerArgs.cpp b/src/lib/synergy/ServerArgs.cpp index 9d8052c6c..af28dfd39 100644 --- a/src/lib/synergy/ServerArgs.cpp +++ b/src/lib/synergy/ServerArgs.cpp @@ -1,6 +1,6 @@ /* * synergy -- mouse and keyboard sharing utility - * Copyright (C) 2014-2016 Symless Ltd. + * Copyright (C) 2014-2020 Symless Ltd. * * This package is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License @@ -15,12 +15,20 @@ * along with this program. If not, see . */ -#include "synergy/ServerArgs.h" +#include "ServerArgs.h" -ServerArgs::ServerArgs() : - m_configFile(), - m_serial(), - m_config(NULL) -{ +namespace lib { + namespace synergy { + + ServerArgs::~ServerArgs() { + destroy(m_config); + } + + + ServerArgs::ServerArgs() { + m_classType = kServer; + } + } } + diff --git a/src/lib/synergy/ServerArgs.h b/src/lib/synergy/ServerArgs.h index 4c91e5681..eadcfebce 100644 --- a/src/lib/synergy/ServerArgs.h +++ b/src/lib/synergy/ServerArgs.h @@ -1,6 +1,6 @@ /* * synergy -- mouse and keyboard sharing utility - * Copyright (C) 2014-2016 Symless Ltd. + * Copyright (C) 2014-2020 Symless Ltd. * * This package is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License @@ -15,20 +15,32 @@ * along with this program. If not, see . */ -#pragma once +#ifndef SYNERGY_CORE_SERVERARGS_H +#define SYNERGY_CORE_SERVERARGS_H -#include "synergy/ArgsBase.h" +#include "ArgsBase.h" #include "shared/SerialKey.h" +#include "server/Config.h" -class NetworkAddress; -class Config; +namespace lib { + namespace synergy { + class ServerArgs : public ArgsBase { + /// Public Functions + public: + ServerArgs(); + ~ServerArgs() override; -class ServerArgs : public ArgsBase { -public: - ServerArgs(); + /// Public variables + public: + String m_configFile = ""; /// @brief Contains the path to the config file + SerialKey m_serial; /// @brief Contains the serial number and license info + Config* m_config = nullptr; /// @brief Contains the Parsed Configuration settings -public: - String m_configFile; - SerialKey m_serial; - Config* m_config; -}; + /// Private Functions + private: + + + }; + } +} +#endif //SYNERGY_CORE_SERVERARGS_H \ No newline at end of file diff --git a/src/test/integtests/net/NetworkTests.cpp b/src/test/integtests/net/NetworkTests.cpp index 996ead1a4..936214a4e 100644 --- a/src/test/integtests/net/NetworkTests.cpp +++ b/src/test/integtests/net/NetworkTests.cpp @@ -128,8 +128,8 @@ TEST_F(NetworkTests, sendToClient_mockData) ON_CALL(serverConfig, isScreen(_)).WillByDefault(Return(true)); ON_CALL(serverConfig, getInputFilter()).WillByDefault(Return(&serverInputFilter)); - - ServerArgs serverArgs; + + lib::synergy::ServerArgs serverArgs; serverArgs.m_enableDragDrop = true; Server server(serverConfig, &primaryClient, &serverScreen, &m_events, serverArgs); server.m_mock = true; @@ -144,7 +144,7 @@ TEST_F(NetworkTests, sendToClient_mockData) ON_CALL(clientScreen, getCursorPos(_, _)).WillByDefault(Invoke(getCursorPos)); - ClientArgs clientArgs; + lib::synergy::ClientArgs clientArgs; clientArgs.m_enableDragDrop = true; clientArgs.m_enableCrypto = false; Client client(&m_events, "stub", serverAddress, clientSocketFactory, &clientScreen, clientArgs); @@ -186,8 +186,8 @@ TEST_F(NetworkTests, sendToClient_mockFile) ON_CALL(serverConfig, isScreen(_)).WillByDefault(Return(true)); ON_CALL(serverConfig, getInputFilter()).WillByDefault(Return(&serverInputFilter)); - - ServerArgs serverArgs; + + lib::synergy::ServerArgs serverArgs; serverArgs.m_enableDragDrop = true; Server server(serverConfig, &primaryClient, &serverScreen, &m_events, serverArgs); server.m_mock = true; @@ -202,7 +202,7 @@ TEST_F(NetworkTests, sendToClient_mockFile) ON_CALL(clientScreen, getCursorPos(_, _)).WillByDefault(Invoke(getCursorPos)); - ClientArgs clientArgs; + lib::synergy::ClientArgs clientArgs; clientArgs.m_enableDragDrop = true; clientArgs.m_enableCrypto = false; Client client(&m_events, "stub", serverAddress, clientSocketFactory, &clientScreen, clientArgs); @@ -238,8 +238,8 @@ TEST_F(NetworkTests, sendToServer_mockData) ON_CALL(serverConfig, isScreen(_)).WillByDefault(Return(true)); ON_CALL(serverConfig, getInputFilter()).WillByDefault(Return(&serverInputFilter)); - - ServerArgs serverArgs; + + lib::synergy::ServerArgs serverArgs; serverArgs.m_enableDragDrop = true; Server server(serverConfig, &primaryClient, &serverScreen, &m_events, serverArgs); server.m_mock = true; @@ -253,7 +253,7 @@ TEST_F(NetworkTests, sendToServer_mockData) ON_CALL(clientScreen, getShape(_, _, _, _)).WillByDefault(Invoke(getScreenShape)); ON_CALL(clientScreen, getCursorPos(_, _)).WillByDefault(Invoke(getCursorPos)); - ClientArgs clientArgs; + lib::synergy::ClientArgs clientArgs; clientArgs.m_enableDragDrop = true; clientArgs.m_enableCrypto = false; Client client(&m_events, "stub", serverAddress, clientSocketFactory, &clientScreen, clientArgs); @@ -295,8 +295,8 @@ TEST_F(NetworkTests, sendToServer_mockFile) ON_CALL(serverConfig, isScreen(_)).WillByDefault(Return(true)); ON_CALL(serverConfig, getInputFilter()).WillByDefault(Return(&serverInputFilter)); - - ServerArgs serverArgs; + + lib::synergy::ServerArgs serverArgs; serverArgs.m_enableDragDrop = true; Server server(serverConfig, &primaryClient, &serverScreen, &m_events, serverArgs); server.m_mock = true; @@ -310,7 +310,7 @@ TEST_F(NetworkTests, sendToServer_mockFile) ON_CALL(clientScreen, getShape(_, _, _, _)).WillByDefault(Invoke(getScreenShape)); ON_CALL(clientScreen, getCursorPos(_, _)).WillByDefault(Invoke(getCursorPos)); - ClientArgs clientArgs; + lib::synergy::ClientArgs clientArgs; clientArgs.m_enableDragDrop = true; clientArgs.m_enableCrypto = false; Client client(&m_events, "stub", serverAddress, clientSocketFactory, &clientScreen, clientArgs); diff --git a/src/test/unittests/synergy/ArgParserTests.cpp b/src/test/unittests/synergy/ArgParserTests.cpp index 504b690ed..b984e613b 100644 --- a/src/test/unittests/synergy/ArgParserTests.cpp +++ b/src/test/unittests/synergy/ArgParserTests.cpp @@ -46,7 +46,7 @@ TEST(ArgParserTests, isArg_missingArgs_returnFalse) const int argc = 2; const char* argv[argc] = { "stub", "-t" }; ArgParser argParser(NULL); - ArgsBase argsBase; + lib::synergy::ArgsBase argsBase; argParser.setArgsBase(argsBase); bool result = ArgParser::isArg(i, argc, argv, "-t", NULL, 1); diff --git a/src/test/unittests/synergy/ClientArgsParsingTests.cpp b/src/test/unittests/synergy/ClientArgsParsingTests.cpp index 7a4f9473b..6d1ee3d72 100644 --- a/src/test/unittests/synergy/ClientArgsParsingTests.cpp +++ b/src/test/unittests/synergy/ClientArgsParsingTests.cpp @@ -42,7 +42,7 @@ TEST(ClientArgsParsingTests, parseClientArgs_yScrollArg_setYScroll) NiceMock argParser; ON_CALL(argParser, parseGenericArgs(_, _, _)).WillByDefault(Invoke(client_stubParseGenericArgs)); ON_CALL(argParser, checkUnexpectedArgs()).WillByDefault(Invoke(client_stubCheckUnexpectedArgs)); - ClientArgs clientArgs; + lib::synergy::ClientArgs clientArgs; const int argc = 3; const char* kYScrollCmd[argc] = { "stub", "--yscroll", "1" }; @@ -56,7 +56,7 @@ TEST(ClientArgsParsingTests, parseClientArgs_addressArg_setSynergyAddress) NiceMock argParser; ON_CALL(argParser, parseGenericArgs(_, _, _)).WillByDefault(Invoke(client_stubParseGenericArgs)); ON_CALL(argParser, checkUnexpectedArgs()).WillByDefault(Invoke(client_stubCheckUnexpectedArgs)); - ClientArgs clientArgs; + lib::synergy::ClientArgs clientArgs; const int argc = 2; const char* kAddressCmd[argc] = { "stub", "mock_address" }; @@ -71,7 +71,7 @@ TEST(ClientArgsParsingTests, parseClientArgs_noAddressArg_returnFalse) NiceMock argParser; ON_CALL(argParser, parseGenericArgs(_, _, _)).WillByDefault(Invoke(client_stubParseGenericArgs)); ON_CALL(argParser, checkUnexpectedArgs()).WillByDefault(Invoke(client_stubCheckUnexpectedArgs)); - ClientArgs clientArgs; + lib::synergy::ClientArgs clientArgs; const int argc = 1; const char* kNoAddressCmd[argc] = { "stub" }; @@ -85,7 +85,7 @@ TEST(ClientArgsParsingTests, parseClientArgs_unrecognizedArg_returnFalse) NiceMock argParser; ON_CALL(argParser, parseGenericArgs(_, _, _)).WillByDefault(Invoke(client_stubParseGenericArgs)); ON_CALL(argParser, checkUnexpectedArgs()).WillByDefault(Invoke(client_stubCheckUnexpectedArgs)); - ClientArgs clientArgs; + lib::synergy::ClientArgs clientArgs; const int argc = 3; const char* kUnrecognizedCmd[argc] = { "stub", "mock_arg", "mock_address"}; diff --git a/src/test/unittests/synergy/GenericArgsParsingTests.cpp b/src/test/unittests/synergy/GenericArgsParsingTests.cpp index e2fa954a5..bb1ec77b0 100644 --- a/src/test/unittests/synergy/GenericArgsParsingTests.cpp +++ b/src/test/unittests/synergy/GenericArgsParsingTests.cpp @@ -48,7 +48,7 @@ TEST(GenericArgsParsingTests, parseGenericArgs_logLevelCmd_setLogLevel) const char* kLogLevelCmd[argc] = { "stub", "--debug", "DEBUG" }; ArgParser argParser(NULL); - ArgsBase argsBase; + lib::synergy::ArgsBase argsBase; argParser.setArgsBase(argsBase); argParser.parseGenericArgs(argc, kLogLevelCmd, i); @@ -66,7 +66,7 @@ TEST(GenericArgsParsingTests, parseGenericArgs_logFileCmd_saveLogFilename) const char* kLogFileCmd[argc] = { "stub", "--log", "mock_filename" }; ArgParser argParser(NULL); - ArgsBase argsBase; + lib::synergy::ArgsBase argsBase; argParser.setArgsBase(argsBase); argParser.parseGenericArgs(argc, kLogFileCmd, i); @@ -84,7 +84,7 @@ TEST(GenericArgsParsingTests, parseGenericArgs_logFileCmdWithSpace_saveLogFilena const char* kLogFileCmdWithSpace[argc] = { "stub", "--log", "mo ck_filename" }; ArgParser argParser(NULL); - ArgsBase argsBase; + lib::synergy::ArgsBase argsBase; argParser.setArgsBase(argsBase); argParser.parseGenericArgs(argc, kLogFileCmdWithSpace, i); @@ -102,7 +102,7 @@ TEST(GenericArgsParsingTests, parseGenericArgs_noDeamonCmd_daemonFalse) const char* kNoDeamonCmd[argc] = { "stub", "-f" }; ArgParser argParser(NULL); - ArgsBase argsBase; + lib::synergy::ArgsBase argsBase; argParser.setArgsBase(argsBase); argParser.parseGenericArgs(argc, kNoDeamonCmd, i); @@ -118,7 +118,7 @@ TEST(GenericArgsParsingTests, parseGenericArgs_deamonCmd_daemonTrue) const char* kDeamonCmd[argc] = { "stub", "--daemon" }; ArgParser argParser(NULL); - ArgsBase argsBase; + lib::synergy::ArgsBase argsBase; argParser.setArgsBase(argsBase); argParser.parseGenericArgs(argc, kDeamonCmd, i); @@ -134,7 +134,7 @@ TEST(GenericArgsParsingTests, parseGenericArgs_nameCmd_saveName) const char* kNameCmd[argc] = { "stub", "--name", "mock" }; ArgParser argParser(NULL); - ArgsBase argsBase; + lib::synergy::ArgsBase argsBase; argParser.setArgsBase(argsBase); argParser.parseGenericArgs(argc, kNameCmd, i); @@ -150,7 +150,7 @@ TEST(GenericArgsParsingTests, parseGenericArgs_noRestartCmd_restartFalse) const char* kNoRestartCmd[argc] = { "stub", "--no-restart" }; ArgParser argParser(NULL); - ArgsBase argsBase; + lib::synergy::ArgsBase argsBase; argParser.setArgsBase(argsBase); argParser.parseGenericArgs(argc, kNoRestartCmd, i); @@ -166,7 +166,7 @@ TEST(GenericArgsParsingTests, parseGenericArgs_restartCmd_restartTrue) const char* kRestartCmd[argc] = { "stub", "--restart" }; ArgParser argParser(NULL); - ArgsBase argsBase; + lib::synergy::ArgsBase argsBase; argParser.setArgsBase(argsBase); argParser.parseGenericArgs(argc, kRestartCmd, i); @@ -182,7 +182,7 @@ TEST(GenericArgsParsingTests, parseGenericArgs_backendCmd_backendTrue) const char* kBackendCmd[argc] = { "stub", "-z" }; ArgParser argParser(NULL); - ArgsBase argsBase; + lib::synergy::ArgsBase argsBase; argParser.setArgsBase(argsBase); argParser.parseGenericArgs(argc, kBackendCmd, i); @@ -198,7 +198,7 @@ TEST(GenericArgsParsingTests, parseGenericArgs_noHookCmd_noHookTrue) const char* kNoHookCmd[argc] = { "stub", "--no-hooks" }; ArgParser argParser(NULL); - ArgsBase argsBase; + lib::synergy::ArgsBase argsBase; argParser.setArgsBase(argsBase); argParser.parseGenericArgs(argc, kNoHookCmd, i); @@ -216,7 +216,7 @@ TEST(GenericArgsParsingTests, parseGenericArgs_helpCmd_showHelp) NiceMock app; ArgParser argParser(&app); - ArgsBase argsBase; + lib::synergy::ArgsBase argsBase; argParser.setArgsBase(argsBase); ON_CALL(app, help()).WillByDefault(Invoke(showMockHelp)); @@ -236,7 +236,7 @@ TEST(GenericArgsParsingTests, parseGenericArgs_versionCmd_showVersion) NiceMock app; ArgParser argParser(&app); - ArgsBase argsBase; + lib::synergy::ArgsBase argsBase; argParser.setArgsBase(argsBase); ON_CALL(app, version()).WillByDefault(Invoke(showMockVersion)); @@ -253,7 +253,7 @@ TEST(GenericArgsParsingTests, parseGenericArgs_noTrayCmd_disableTrayTrue) const char* kNoTrayCmd[argc] = { "stub", "--no-tray" }; ArgParser argParser(NULL); - ArgsBase argsBase; + lib::synergy::ArgsBase argsBase; argParser.setArgsBase(argsBase); argParser.parseGenericArgs(argc, kNoTrayCmd, i); @@ -269,7 +269,7 @@ TEST(GenericArgsParsingTests, parseGenericArgs_ipcCmd_enableIpcTrue) const char* kIpcCmd[argc] = { "stub", "--ipc" }; ArgParser argParser(NULL); - ArgsBase argsBase; + lib::synergy::ArgsBase argsBase; argParser.setArgsBase(argsBase); argParser.parseGenericArgs(argc, kIpcCmd, i); @@ -304,7 +304,7 @@ TEST(GenericArgsParsingTests, parseGenericArgs_dragDropCmdOnLinux_enableDragDrop const char* kDragDropCmd[argc] = { "stub", "--enable-drag-drop" }; ArgParser argParser(NULL); - ArgsBase argsBase; + lib::synergy::ArgsBase argsBase; argParser.setArgsBase(argsBase); argParser.parseGenericArgs(argc, kDragDropCmd, i); diff --git a/src/test/unittests/synergy/ServerArgsParsingTests.cpp b/src/test/unittests/synergy/ServerArgsParsingTests.cpp index cb330cb6e..cc6e9a1d2 100644 --- a/src/test/unittests/synergy/ServerArgsParsingTests.cpp +++ b/src/test/unittests/synergy/ServerArgsParsingTests.cpp @@ -42,7 +42,7 @@ TEST(ServerArgsParsingTests, parseServerArgs_addressArg_setSynergyAddress) NiceMock argParser; ON_CALL(argParser, parseGenericArgs(_, _, _)).WillByDefault(Invoke(server_stubParseGenericArgs)); ON_CALL(argParser, checkUnexpectedArgs()).WillByDefault(Invoke(server_stubCheckUnexpectedArgs)); - ServerArgs serverArgs; + lib::synergy::ServerArgs serverArgs; const int argc = 3; const char* kAddressCmd[argc] = { "stub", "--address", "mock_address" }; @@ -56,7 +56,7 @@ TEST(ServerArgsParsingTests, parseServerArgs_configArg_setConfigFile) NiceMock argParser; ON_CALL(argParser, parseGenericArgs(_, _, _)).WillByDefault(Invoke(server_stubParseGenericArgs)); ON_CALL(argParser, checkUnexpectedArgs()).WillByDefault(Invoke(server_stubCheckUnexpectedArgs)); - ServerArgs serverArgs; + lib::synergy::ServerArgs serverArgs; const int argc = 3; const char* kConfigCmd[argc] = { "stub", "--config", "mock_configFile" };