#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 <jamie@symless.com>
This commit is contained in:
parent
28d376e7f0
commit
6684b8b09f
26 changed files with 250 additions and 180 deletions
|
|
@ -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),
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
};
|
||||
|
|
|
|||
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -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),
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
};
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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 <file> 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" \
|
||||
|
|
|
|||
|
|
@ -29,8 +29,8 @@
|
|||
#ifdef WINAPI_MSWINDOWS
|
||||
#include <VersionHelpers.h>
|
||||
#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;
|
||||
|
|
|
|||
|
|
@ -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<String>& 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;
|
||||
};
|
||||
|
|
|
|||
|
|
@ -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 <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#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() {
|
||||
//
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -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 <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#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<class T> static inline void destroy(T*& p) { delete p; p = 0; }
|
||||
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
#endif //SYNERGY_CORE_ARGSBASE_H
|
||||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -15,9 +15,17 @@
|
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include "synergy/ClientArgs.h"
|
||||
#include "ClientArgs.h"
|
||||
|
||||
ClientArgs::ClientArgs() :
|
||||
m_yscroll(0)
|
||||
{
|
||||
}
|
||||
namespace lib {
|
||||
namespace synergy {
|
||||
|
||||
ClientArgs::~ClientArgs() {
|
||||
|
||||
}
|
||||
|
||||
ClientArgs::ClientArgs() {
|
||||
m_classType = kClient;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -15,16 +15,28 @@
|
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#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
|
||||
|
|
@ -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<int>(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
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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),
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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 <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -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 <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#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
|
||||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -42,7 +42,7 @@ TEST(ClientArgsParsingTests, parseClientArgs_yScrollArg_setYScroll)
|
|||
NiceMock<MockArgParser> 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<MockArgParser> 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<MockArgParser> 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<MockArgParser> 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"};
|
||||
|
||||
|
|
|
|||
|
|
@ -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<MockApp> 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<MockApp> 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);
|
||||
|
|
|
|||
|
|
@ -42,7 +42,7 @@ TEST(ServerArgsParsingTests, parseServerArgs_addressArg_setSynergyAddress)
|
|||
NiceMock<MockArgParser> 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<MockArgParser> 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" };
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue