remove syntool, CoreInterface, and WebClient
This commit is contained in:
		
							parent
							
								
									ea025f5958
								
							
						
					
					
						commit
						1be86a9248
					
				|  | @ -16,7 +16,6 @@ | ||||||
| 
 | 
 | ||||||
| add_subdirectory(barrierc) | add_subdirectory(barrierc) | ||||||
| add_subdirectory(barriers) | add_subdirectory(barriers) | ||||||
| add_subdirectory(syntool) |  | ||||||
| 
 | 
 | ||||||
| if (WIN32) | if (WIN32) | ||||||
| 	add_subdirectory(barrierd) | 	add_subdirectory(barrierd) | ||||||
|  |  | ||||||
|  | @ -1,27 +0,0 @@ | ||||||
| # barrier -- mouse and keyboard sharing utility |  | ||||||
| # Copyright (C) 2014-2016 Symless Ltd. |  | ||||||
| #  |  | ||||||
| # This package is free software; you can redistribute it and/or |  | ||||||
| # modify it under the terms of the GNU General Public License |  | ||||||
| # found in the file LICENSE that should have accompanied this file. |  | ||||||
| #  |  | ||||||
| # This package is distributed in the hope that it will be useful, |  | ||||||
| # but WITHOUT ANY WARRANTY; without even the implied warranty of |  | ||||||
| # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the |  | ||||||
| # GNU General Public License for more details. |  | ||||||
| # |  | ||||||
| # You should have received a copy of the GNU General Public License |  | ||||||
| # along with this program.  If not, see <http://www.gnu.org/licenses/>. |  | ||||||
| 
 |  | ||||||
| file(GLOB headers "*.h") |  | ||||||
| file(GLOB sources "*.cpp") |  | ||||||
| 
 |  | ||||||
| add_executable(syntool ${sources}) |  | ||||||
| target_link_libraries(syntool |  | ||||||
|     synlib arch base client common io ipc mt net platform server ${libs} ${OPENSSL_LIBS}) |  | ||||||
| 
 |  | ||||||
| if (${CMAKE_SYSTEM_NAME} MATCHES "Darwin") |  | ||||||
|     install (TARGETS syntool DESTINATION ${BARRIER_BUNDLE_BINARY_DIR}) |  | ||||||
| elseif (${CMAKE_SYSTEM_NAME} MATCHES "Linux") |  | ||||||
|     install (TARGETS syntool DESTINATION bin) |  | ||||||
| endif() |  | ||||||
|  | @ -1,31 +0,0 @@ | ||||||
| /*
 |  | ||||||
|  * barrier -- mouse and keyboard sharing utility |  | ||||||
|  * Copyright (C) 2014-2016 Symless Ltd. |  | ||||||
|  *  |  | ||||||
|  * This package is free software; you can redistribute it and/or |  | ||||||
|  * modify it under the terms of the GNU General Public License |  | ||||||
|  * found in the file LICENSE that should have accompanied this file. |  | ||||||
|  *  |  | ||||||
|  * This package is distributed in the hope that it will be useful, |  | ||||||
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of |  | ||||||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the |  | ||||||
|  * GNU General Public License for more details. |  | ||||||
|  * |  | ||||||
|  * You should have received a copy of the GNU General Public License |  | ||||||
|  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 |  | ||||||
|  */ |  | ||||||
| 
 |  | ||||||
| #include "barrier/ToolApp.h" |  | ||||||
| #include "arch/Arch.h" |  | ||||||
| 
 |  | ||||||
| int |  | ||||||
| main(int argc, char** argv)  |  | ||||||
| { |  | ||||||
| #if SYSAPI_WIN32 |  | ||||||
|     // record window instance for tray icon, etc
 |  | ||||||
|     ArchMiscWindows::setInstanceWin32(GetModuleHandle(NULL)); |  | ||||||
| #endif |  | ||||||
| 
 |  | ||||||
|     ToolApp app; |  | ||||||
|     return app.run(argc, argv); |  | ||||||
| } |  | ||||||
|  | @ -1,96 +0,0 @@ | ||||||
| /*
 |  | ||||||
|  * barrier -- mouse and keyboard sharing utility |  | ||||||
|  * Copyright (C) 2015-2016 Symless Ltd. |  | ||||||
|  * |  | ||||||
|  * This package is free software; you can redistribute it and/or |  | ||||||
|  * modify it under the terms of the GNU General Public License |  | ||||||
|  * found in the file LICENSE that should have accompanied this file. |  | ||||||
|  * |  | ||||||
|  * This package is distributed in the hope that it will be useful, |  | ||||||
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of |  | ||||||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the |  | ||||||
|  * GNU General Public License for more details. |  | ||||||
|  * |  | ||||||
|  * You should have received a copy of the GNU General Public License |  | ||||||
|  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 |  | ||||||
|  */ |  | ||||||
| 
 |  | ||||||
| #include "CoreInterface.h" |  | ||||||
| 
 |  | ||||||
| #include "CommandProcess.h" |  | ||||||
| #include "QUtility.h" |  | ||||||
| 
 |  | ||||||
| #include <QCoreApplication> |  | ||||||
| #include <QProcess> |  | ||||||
| #include <QtGlobal> |  | ||||||
| #include <QDir> |  | ||||||
| #include <stdexcept> |  | ||||||
| 
 |  | ||||||
| static const char kCoreBinary[] = "syntool"; |  | ||||||
| 
 |  | ||||||
| #ifdef Q_WS_WIN |  | ||||||
| static const char kSerialKeyFilename[] = "Barrier.subkey"; |  | ||||||
| #else |  | ||||||
| static const char kSerialKeyFilename[] = ".barrier.subkey"; |  | ||||||
| #endif |  | ||||||
| 
 |  | ||||||
| CoreInterface::CoreInterface() |  | ||||||
| { |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| QString CoreInterface::getProfileDir() |  | ||||||
| { |  | ||||||
|     QStringList args("--get-profile-dir"); |  | ||||||
|     return run(args); |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| QString CoreInterface::getInstalledDir() |  | ||||||
| { |  | ||||||
|     QStringList args("--get-installed-dir"); |  | ||||||
|     return run(args); |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| QString CoreInterface::getArch() |  | ||||||
| { |  | ||||||
|     QStringList args("--get-arch"); |  | ||||||
|     return run(args); |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| QString CoreInterface::getSerialKeyFilePath() |  | ||||||
| { |  | ||||||
|     QString filename = getProfileDir() + QDir::separator() + kSerialKeyFilename; |  | ||||||
|     return filename; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| QString CoreInterface::notifyUpdate (QString const& fromVersion, |  | ||||||
|                                       QString const& toVersion, |  | ||||||
|                                       QString const& serialKey) { |  | ||||||
|     QStringList args("--notify-update"); |  | ||||||
|     QString input(fromVersion + ":" + toVersion + ":" + serialKey); |  | ||||||
|     input.append("\n"); |  | ||||||
|     return run(args, input); |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| QString CoreInterface::notifyActivation(const QString& identity) |  | ||||||
| { |  | ||||||
|     QStringList args("--notify-activation"); |  | ||||||
| 
 |  | ||||||
|     QString input(identity + ":" + hash(getFirstMacAddress())); |  | ||||||
|     QString os= getOSInformation(); |  | ||||||
|     if (!os.isEmpty()) { |  | ||||||
|         input.append(":").append(os); |  | ||||||
|     } |  | ||||||
|     input.append("\n"); |  | ||||||
| 
 |  | ||||||
|     return run(args, input); |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| QString CoreInterface::run(const QStringList& args, const QString& input) |  | ||||||
| { |  | ||||||
|     QString program( |  | ||||||
|         QCoreApplication::applicationDirPath() |  | ||||||
|         + "/" + kCoreBinary); |  | ||||||
| 
 |  | ||||||
|     CommandProcess commandProcess(program, args, input); |  | ||||||
|     return commandProcess.run(); |  | ||||||
| } |  | ||||||
|  | @ -1,36 +0,0 @@ | ||||||
| /*
 |  | ||||||
|  * barrier -- mouse and keyboard sharing utility |  | ||||||
|  * Copyright (C) 2015-2016 Symless Ltd. |  | ||||||
|  * |  | ||||||
|  * This package is free software; you can redistribute it and/or |  | ||||||
|  * modify it under the terms of the GNU General Public License |  | ||||||
|  * found in the file LICENSE that should have accompanied this file. |  | ||||||
|  * |  | ||||||
|  * This package is distributed in the hope that it will be useful, |  | ||||||
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of |  | ||||||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the |  | ||||||
|  * GNU General Public License for more details. |  | ||||||
|  * |  | ||||||
|  * You should have received a copy of the GNU General Public License |  | ||||||
|  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 |  | ||||||
|  */ |  | ||||||
| 
 |  | ||||||
| #pragma once |  | ||||||
| 
 |  | ||||||
| #include <QString> |  | ||||||
| 
 |  | ||||||
| class CoreInterface |  | ||||||
| { |  | ||||||
| public: |  | ||||||
|     CoreInterface(); |  | ||||||
| 
 |  | ||||||
|     QString getProfileDir(); |  | ||||||
|     QString getInstalledDir(); |  | ||||||
|     QString getArch(); |  | ||||||
|     QString getSerialKeyFilePath(); |  | ||||||
|     QString notifyActivation(const QString& identity); |  | ||||||
|     QString notifyUpdate (QString const& fromVersion, |  | ||||||
|                            QString const& toVersion, |  | ||||||
|                            QString const& serialKey); |  | ||||||
|     QString run(const QStringList& args, const QString& input = ""); |  | ||||||
| }; |  | ||||||
|  | @ -1,83 +0,0 @@ | ||||||
| /*
 |  | ||||||
|  * barrier -- mouse and keyboard sharing utility |  | ||||||
|  * Copyright (C) 2015-2016 Symless Ltd. |  | ||||||
|  * |  | ||||||
|  * This package is free software; you can redistribute it and/or |  | ||||||
|  * modify it under the terms of the GNU General Public License |  | ||||||
|  * found in the file LICENSE that should have accompanied this file. |  | ||||||
|  * |  | ||||||
|  * This package is distributed in the hope that it will be useful, |  | ||||||
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of |  | ||||||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the |  | ||||||
|  * GNU General Public License for more details. |  | ||||||
|  * |  | ||||||
|  * You should have received a copy of the GNU General Public License |  | ||||||
|  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 |  | ||||||
|  */ |  | ||||||
| 
 |  | ||||||
| #include "WebClient.h" |  | ||||||
| 
 |  | ||||||
| #include "QUtility.h" |  | ||||||
| 
 |  | ||||||
| #include <QProcess> |  | ||||||
| #include <QMessageBox> |  | ||||||
| #include <QCoreApplication> |  | ||||||
| #include <stdexcept> |  | ||||||
| 
 |  | ||||||
| bool  |  | ||||||
| WebClient::getEdition (int& edition, QString& errorOut) { |  | ||||||
|     QString responseJson = request(); |  | ||||||
|      |  | ||||||
|     /* TODO: This is horrible and should be ripped out as soon as we move 
 |  | ||||||
|      *         to Qt 5. See issue #5630 |  | ||||||
|      */ |  | ||||||
| 
 |  | ||||||
|     QRegExp resultRegex(".*\"result\".*:.*(true|false).*"); |  | ||||||
|     if (resultRegex.exactMatch (responseJson)) { |  | ||||||
|         QString boolString = resultRegex.cap(1); |  | ||||||
|         if (boolString == "true") { |  | ||||||
|             QRegExp editionRegex(".*\"edition\".*:.*\"([^\"]+)\".*"); |  | ||||||
|             if (editionRegex.exactMatch(responseJson)) { |  | ||||||
|                 QString e = editionRegex.cap(1); |  | ||||||
|                 edition = e.toInt(); |  | ||||||
|                 return true; |  | ||||||
|             } else { |  | ||||||
|                 throw std::runtime_error ("Unrecognised server response."); |  | ||||||
|             } |  | ||||||
|         } else { |  | ||||||
|             errorOut = tr("Login failed. Invalid email address or password."); |  | ||||||
|             return false; |  | ||||||
|         } |  | ||||||
|     } else { |  | ||||||
|         QRegExp errorRegex(".*\"error\".*:.*\"([^\"]+)\".*"); |  | ||||||
|         if (errorRegex.exactMatch (responseJson)) { |  | ||||||
|             errorOut = errorRegex.cap(1).replace("\\n", "\n"); |  | ||||||
|             return false; |  | ||||||
|         } else { |  | ||||||
|             throw std::runtime_error ("Unrecognised server response."); |  | ||||||
|         } |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| bool |  | ||||||
| WebClient::setEmail (QString email, QString& errorOut) { |  | ||||||
|     if (email.isEmpty()) { |  | ||||||
|         errorOut = tr("Your email address cannot be left blank."); |  | ||||||
|         return false; |  | ||||||
|     } |  | ||||||
|     m_Email = email; |  | ||||||
|     return true; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| bool |  | ||||||
| WebClient::setPassword (QString password, QString&) { |  | ||||||
|     m_Password = password; |  | ||||||
|     return true; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| QString |  | ||||||
| WebClient::request() { |  | ||||||
|     QStringList args("--login-auth"); |  | ||||||
|     QString credentials (m_Email + ":" + hash(m_Password) + "\n"); |  | ||||||
|     return m_CoreInterface.run (args, credentials); |  | ||||||
| } |  | ||||||
|  | @ -1,49 +0,0 @@ | ||||||
| /*
 |  | ||||||
|  * barrier -- mouse and keyboard sharing utility |  | ||||||
|  * Copyright (C) 2015-2016 Symless Ltd. |  | ||||||
|  * |  | ||||||
|  * This package is free software; you can redistribute it and/or |  | ||||||
|  * modify it under the terms of the GNU General Public License |  | ||||||
|  * found in the file LICENSE that should have accompanied this file. |  | ||||||
|  * |  | ||||||
|  * This package is distributed in the hope that it will be useful, |  | ||||||
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of |  | ||||||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the |  | ||||||
|  * GNU General Public License for more details. |  | ||||||
|  * |  | ||||||
|  * You should have received a copy of the GNU General Public License |  | ||||||
|  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 |  | ||||||
|  */ |  | ||||||
| 
 |  | ||||||
| #ifndef WEBCLIENT_H |  | ||||||
| #define WEBCLIENT_H |  | ||||||
| 
 |  | ||||||
| #include <QString> |  | ||||||
| #include <QObject> |  | ||||||
| 
 |  | ||||||
| #include "CoreInterface.h" |  | ||||||
| 
 |  | ||||||
| class QMessageBox; |  | ||||||
| class QWidget; |  | ||||||
| class QStringList; |  | ||||||
| 
 |  | ||||||
| class WebClient : public QObject |  | ||||||
| { |  | ||||||
|     Q_OBJECT |  | ||||||
| 
 |  | ||||||
| public: |  | ||||||
|     bool getEdition (int& edition, QString& errorOut); |  | ||||||
|     bool setEmail (QString email, QString& errorOut); |  | ||||||
|     bool setPassword (QString password, QString& errorOut); |  | ||||||
| signals: |  | ||||||
|     void error(QString e); |  | ||||||
| 
 |  | ||||||
| private: |  | ||||||
|     QString request(); |  | ||||||
|      |  | ||||||
|     QString m_Email; |  | ||||||
|     QString m_Password; |  | ||||||
|     CoreInterface m_CoreInterface; |  | ||||||
| }; |  | ||||||
| 
 |  | ||||||
| #endif // WEBCLIENT_H
 |  | ||||||
|  | @ -21,7 +21,6 @@ | ||||||
| #include "barrier/App.h" | #include "barrier/App.h" | ||||||
| #include "barrier/ServerArgs.h" | #include "barrier/ServerArgs.h" | ||||||
| #include "barrier/ClientArgs.h" | #include "barrier/ClientArgs.h" | ||||||
| #include "barrier/ToolArgs.h" |  | ||||||
| #include "barrier/ArgsBase.h" | #include "barrier/ArgsBase.h" | ||||||
| #include "base/Log.h" | #include "base/Log.h" | ||||||
| #include "base/String.h" | #include "base/String.h" | ||||||
|  | @ -171,46 +170,6 @@ ArgParser::parsePlatformArg(ArgsBase& argsBase, const int& argc, const char* con | ||||||
| #endif | #endif | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| bool |  | ||||||
| ArgParser::parseToolArgs(ToolArgs& args, int argc, const char* const* argv) |  | ||||||
| { |  | ||||||
|     for (int i = 1; i < argc; ++i) { |  | ||||||
|         if (isArg(i, argc, argv, NULL, "--get-active-desktop", 0)) { |  | ||||||
|             args.m_printActiveDesktopName = true; |  | ||||||
|             return true; |  | ||||||
|         } |  | ||||||
|         else if (isArg(i, argc, argv, NULL, "--login-auth", 0)) { |  | ||||||
|             args.m_loginAuthenticate = true; |  | ||||||
|             return true; |  | ||||||
|         } |  | ||||||
|         else if (isArg(i, argc, argv, NULL, "--get-installed-dir", 0)) { |  | ||||||
|             args.m_getInstalledDir = true; |  | ||||||
|             return true; |  | ||||||
|         } |  | ||||||
|         else if (isArg(i, argc, argv, NULL, "--get-profile-dir", 0)) { |  | ||||||
|             args.m_getProfileDir = true; |  | ||||||
|             return true; |  | ||||||
|         } |  | ||||||
|         else if (isArg(i, argc, argv, NULL, "--get-arch", 0)) { |  | ||||||
|             args.m_getArch = true; |  | ||||||
|             return true; |  | ||||||
|         } |  | ||||||
|         else if (isArg(i, argc, argv, NULL, "--notify-activation", 0)) { |  | ||||||
|             args.m_notifyActivation = true; |  | ||||||
|             return true; |  | ||||||
|         } |  | ||||||
|         else if (isArg(i, argc, argv, NULL, "--notify-update", 0)) { |  | ||||||
|             args.m_notifyUpdate = true; |  | ||||||
|             return true; |  | ||||||
|         } |  | ||||||
|         else { |  | ||||||
|             return false; |  | ||||||
|         } |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     return false; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| bool | bool | ||||||
| ArgParser::parseGenericArgs(int argc, const char* const* argv, int& i) | ArgParser::parseGenericArgs(int argc, const char* const* argv, int& i) | ||||||
| { | { | ||||||
|  |  | ||||||
|  | @ -22,7 +22,6 @@ | ||||||
| 
 | 
 | ||||||
| class ServerArgs; | class ServerArgs; | ||||||
| class ClientArgs; | class ClientArgs; | ||||||
| class ToolArgs; |  | ||||||
| class ArgsBase; | class ArgsBase; | ||||||
| class App; | class App; | ||||||
| 
 | 
 | ||||||
|  | @ -34,7 +33,6 @@ public: | ||||||
|     bool                parseServerArgs(ServerArgs& args, int argc, const char* const* argv); |     bool                parseServerArgs(ServerArgs& args, int argc, const char* const* argv); | ||||||
|     bool                parseClientArgs(ClientArgs& 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                parsePlatformArg(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                parseGenericArgs(int argc, const char* const* argv, int& i); | ||||||
|     bool                parseDeprecatedArgs(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(ArgsBase& argsBase) { m_argsBase = &argsBase; } | ||||||
|  |  | ||||||
|  | @ -1,205 +0,0 @@ | ||||||
| /*
 |  | ||||||
|  * barrier -- mouse and keyboard sharing utility |  | ||||||
|  * Copyright (C) 2014-2016 Symless Ltd. |  | ||||||
|  * |  | ||||||
|  * This package is free software; you can redistribute it and/or |  | ||||||
|  * modify it under the terms of the GNU General Public License |  | ||||||
|  * found in the file LICENSE that should have accompanied this file. |  | ||||||
|  * |  | ||||||
|  * This package is distributed in the hope that it will be useful, |  | ||||||
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of |  | ||||||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the |  | ||||||
|  * GNU General Public License for more details. |  | ||||||
|  * |  | ||||||
|  * You should have received a copy of the GNU General Public License |  | ||||||
|  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 |  | ||||||
|  */ |  | ||||||
| 
 |  | ||||||
| #include "barrier/ToolApp.h" |  | ||||||
| 
 |  | ||||||
| #include "barrier/ArgParser.h" |  | ||||||
| #include "arch/Arch.h" |  | ||||||
| #include "base/Log.h" |  | ||||||
| #include "base/String.h" |  | ||||||
| 
 |  | ||||||
| #include <iostream> |  | ||||||
| #include <sstream> |  | ||||||
| 
 |  | ||||||
| #if SYSAPI_WIN32 |  | ||||||
| #include "platform/MSWindowsSession.h" |  | ||||||
| #endif |  | ||||||
| 
 |  | ||||||
| #define JSON_URL "https://symless.com/account/json/"
 |  | ||||||
| 
 |  | ||||||
| enum { |  | ||||||
|     kErrorOk, |  | ||||||
|     kErrorArgs, |  | ||||||
|     kErrorException, |  | ||||||
|     kErrorUnknown |  | ||||||
| }; |  | ||||||
| 
 |  | ||||||
| UInt32 |  | ||||||
| ToolApp::run(int argc, char** argv) |  | ||||||
| { |  | ||||||
|     if (argc <= 1) { |  | ||||||
|         std::cerr << "no args" << std::endl; |  | ||||||
|         return kErrorArgs; |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     try { |  | ||||||
|         ArgParser argParser(this); |  | ||||||
|         bool result = argParser.parseToolArgs(m_args, argc, argv); |  | ||||||
| 
 |  | ||||||
|         if (!result) { |  | ||||||
|             m_bye(kExitArgs); |  | ||||||
|         } |  | ||||||
| 
 |  | ||||||
|         if (m_args.m_printActiveDesktopName) { |  | ||||||
| #if SYSAPI_WIN32 |  | ||||||
|             MSWindowsSession session; |  | ||||||
|             String name = session.getActiveDesktopName(); |  | ||||||
|             if (name.empty()) { |  | ||||||
|                 LOG((CLOG_CRIT "failed to get active desktop name")); |  | ||||||
|                 return kExitFailed; |  | ||||||
|             } |  | ||||||
|             else { |  | ||||||
|                 String output = barrier::string::sprintf("activeDesktop:%s", name.c_str()); |  | ||||||
|                 LOG((CLOG_INFO "%s", output.c_str())); |  | ||||||
|             } |  | ||||||
| #endif |  | ||||||
|         } |  | ||||||
|         else if (m_args.m_loginAuthenticate) { |  | ||||||
|             loginAuth(); |  | ||||||
|         } |  | ||||||
|         else if (m_args.m_getInstalledDir) { |  | ||||||
|             std::cout << ARCH->getInstalledDirectory() << std::endl; |  | ||||||
|         } |  | ||||||
|         else if (m_args.m_getProfileDir) { |  | ||||||
|             std::cout << ARCH->getProfileDirectory() << std::endl; |  | ||||||
|         } |  | ||||||
|         else if (m_args.m_getArch) { |  | ||||||
|             std::cout << ARCH->getPlatformName() << std::endl; |  | ||||||
|         } |  | ||||||
|         else if (m_args.m_notifyUpdate) { |  | ||||||
|             notifyUpdate(); |  | ||||||
|         } |  | ||||||
|         else if (m_args.m_notifyActivation) { |  | ||||||
|             notifyActivation(); |  | ||||||
|         } |  | ||||||
|         else { |  | ||||||
|             throw XBarrier("Nothing to do"); |  | ||||||
|         } |  | ||||||
|     } |  | ||||||
|     catch (std::exception& e) { |  | ||||||
|         LOG((CLOG_CRIT "An error occurred: %s\n", e.what())); |  | ||||||
|         return kExitFailed; |  | ||||||
|     } |  | ||||||
|     catch (...) { |  | ||||||
|         LOG((CLOG_CRIT "An unknown error occurred.\n")); |  | ||||||
|         return kExitFailed; |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
| #if WINAPI_XWINDOWS |  | ||||||
|     // HACK: avoid sigsegv on linux
 |  | ||||||
|     m_bye(kErrorOk); |  | ||||||
| #endif |  | ||||||
| 
 |  | ||||||
|     return kErrorOk; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| void |  | ||||||
| ToolApp::help() |  | ||||||
| { |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| void |  | ||||||
| ToolApp::loginAuth() |  | ||||||
| { |  | ||||||
|     String credentials; |  | ||||||
|     std::cin >> credentials; |  | ||||||
| 
 |  | ||||||
|     std::vector<String> parts = barrier::string::splitString(credentials, ':'); |  | ||||||
|     size_t count = parts.size(); |  | ||||||
| 
 |  | ||||||
|     if (count == 2 ) { |  | ||||||
|         String email = parts[0]; |  | ||||||
|         String password = parts[1]; |  | ||||||
| 
 |  | ||||||
|         std::stringstream ss; |  | ||||||
|         ss << JSON_URL << "auth/"; |  | ||||||
|         ss << "?email=" << ARCH->internet().urlEncode(email); |  | ||||||
|         ss << "&password=" << password; |  | ||||||
| 
 |  | ||||||
|         std::cout << ARCH->internet().get(ss.str()) << std::endl; |  | ||||||
|     } |  | ||||||
|     else { |  | ||||||
|         throw XBarrier("Invalid credentials."); |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| void |  | ||||||
| ToolApp::notifyUpdate() |  | ||||||
| { |  | ||||||
|     String data; |  | ||||||
|     std::cin >> data; |  | ||||||
| 
 |  | ||||||
|     std::vector<String> parts = barrier::string::splitString(data, ':'); |  | ||||||
|     size_t count = parts.size(); |  | ||||||
| 
 |  | ||||||
|     if (count == 3) { |  | ||||||
|         std::stringstream ss; |  | ||||||
|         ss << JSON_URL << "notify/update"; |  | ||||||
|         ss << "?from=" << parts[0]; |  | ||||||
|         ss << "&to=" << parts[1]; |  | ||||||
| 
 |  | ||||||
|         std::cout << ARCH->internet().get(ss.str()) << std::endl; |  | ||||||
|     } |  | ||||||
|     else { |  | ||||||
|         throw XBarrier("Invalid update data."); |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| void |  | ||||||
| ToolApp::notifyActivation() |  | ||||||
| { |  | ||||||
|     String info; |  | ||||||
|     std::cin >> info; |  | ||||||
| 
 |  | ||||||
|     std::vector<String> parts = barrier::string::splitString(info, ':'); |  | ||||||
|     size_t count = parts.size(); |  | ||||||
| 
 |  | ||||||
|     if (count == 3 || count == 4) { |  | ||||||
|         String action = parts[0]; |  | ||||||
|         String identity = parts[1]; |  | ||||||
|         String macHash = parts[2]; |  | ||||||
|         String os; |  | ||||||
| 
 |  | ||||||
|         if (count == 4) { |  | ||||||
|             os = parts[3]; |  | ||||||
|         } |  | ||||||
|         else { |  | ||||||
|             os = ARCH->getOSName(); |  | ||||||
|         } |  | ||||||
| 
 |  | ||||||
|         std::stringstream ss; |  | ||||||
|         ss <<  JSON_URL << "notify/"; |  | ||||||
|         ss << "?action=" << action; |  | ||||||
|         ss << "&identity=" << ARCH->internet().urlEncode(identity); |  | ||||||
|         ss << "&mac=" << ARCH->internet().urlEncode(macHash); |  | ||||||
|         ss << "&os=" << ARCH->internet().urlEncode(ARCH->getOSName()); |  | ||||||
|         ss << "&arch=" << ARCH->internet().urlEncode(ARCH->getPlatformName()); |  | ||||||
| 
 |  | ||||||
|         try { |  | ||||||
|             std::cout << ARCH->internet().get(ss.str()) << std::endl; |  | ||||||
|         } |  | ||||||
|         catch (std::exception& e) { |  | ||||||
|             LOG((CLOG_NOTE "An error occurred during notification: %s\n", e.what())); |  | ||||||
|         } |  | ||||||
|         catch (...) { |  | ||||||
|             LOG((CLOG_NOTE "An unknown error occurred during notification.\n")); |  | ||||||
|         } |  | ||||||
|     } |  | ||||||
|     else { |  | ||||||
|         LOG((CLOG_NOTE "notification failed")); |  | ||||||
|     } |  | ||||||
| } |  | ||||||
|  | @ -1,37 +0,0 @@ | ||||||
| /*
 |  | ||||||
|  * barrier -- mouse and keyboard sharing utility |  | ||||||
|  * Copyright (C) 2014-2016 Symless Ltd. |  | ||||||
|  *  |  | ||||||
|  * This package is free software; you can redistribute it and/or |  | ||||||
|  * modify it under the terms of the GNU General Public License |  | ||||||
|  * found in the file LICENSE that should have accompanied this file. |  | ||||||
|  *  |  | ||||||
|  * This package is distributed in the hope that it will be useful, |  | ||||||
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of |  | ||||||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the |  | ||||||
|  * GNU General Public License for more details. |  | ||||||
|  * |  | ||||||
|  * You should have received a copy of the GNU General Public License |  | ||||||
|  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 |  | ||||||
|  */ |  | ||||||
| 
 |  | ||||||
| #pragma once |  | ||||||
| 
 |  | ||||||
| #include "barrier/App.h" |  | ||||||
| #include "barrier/ToolArgs.h" |  | ||||||
| #include "common/basic_types.h" |  | ||||||
| 
 |  | ||||||
| class ToolApp : public MinimalApp  |  | ||||||
| { |  | ||||||
| public: |  | ||||||
|     UInt32                run(int argc, char** argv); |  | ||||||
|     void                help(); |  | ||||||
| 
 |  | ||||||
| private: |  | ||||||
|     void                loginAuth(); |  | ||||||
|     void                notifyActivation(); |  | ||||||
|     void                notifyUpdate(); |  | ||||||
| 
 |  | ||||||
| private: |  | ||||||
|     ToolArgs            m_args; |  | ||||||
| }; |  | ||||||
|  | @ -1,29 +0,0 @@ | ||||||
| /*
 |  | ||||||
|  * barrier -- mouse and keyboard sharing utility |  | ||||||
|  * Copyright (C) 2014-2016 Symless Ltd. |  | ||||||
|  *  |  | ||||||
|  * This package is free software; you can redistribute it and/or |  | ||||||
|  * modify it under the terms of the GNU General Public License |  | ||||||
|  * found in the file LICENSE that should have accompanied this file. |  | ||||||
|  *  |  | ||||||
|  * This package is distributed in the hope that it will be useful, |  | ||||||
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of |  | ||||||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the |  | ||||||
|  * GNU General Public License for more details. |  | ||||||
|  * |  | ||||||
|  * You should have received a copy of the GNU General Public License |  | ||||||
|  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 |  | ||||||
|  */ |  | ||||||
| 
 |  | ||||||
| #include "barrier/ToolArgs.h" |  | ||||||
| 
 |  | ||||||
| ToolArgs::ToolArgs() : |  | ||||||
|     m_printActiveDesktopName(false), |  | ||||||
|     m_loginAuthenticate(false), |  | ||||||
|     m_getInstalledDir(false), |  | ||||||
|     m_getProfileDir(false), |  | ||||||
|     m_getArch(false), |  | ||||||
|     m_notifyActivation(false), |  | ||||||
|     m_notifyUpdate(false) |  | ||||||
| { |  | ||||||
| } |  | ||||||
|  | @ -1,34 +0,0 @@ | ||||||
| /*
 |  | ||||||
|  * barrier -- mouse and keyboard sharing utility |  | ||||||
|  * Copyright (C) 2014-2016 Symless Ltd. |  | ||||||
|  *  |  | ||||||
|  * This package is free software; you can redistribute it and/or |  | ||||||
|  * modify it under the terms of the GNU General Public License |  | ||||||
|  * found in the file LICENSE that should have accompanied this file. |  | ||||||
|  *  |  | ||||||
|  * This package is distributed in the hope that it will be useful, |  | ||||||
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of |  | ||||||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the |  | ||||||
|  * GNU General Public License for more details. |  | ||||||
|  * |  | ||||||
|  * You should have received a copy of the GNU General Public License |  | ||||||
|  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 |  | ||||||
|  */ |  | ||||||
| 
 |  | ||||||
| #pragma once |  | ||||||
| 
 |  | ||||||
| #include "base/String.h" |  | ||||||
| 
 |  | ||||||
| class ToolArgs { |  | ||||||
| public: |  | ||||||
|     ToolArgs(); |  | ||||||
| 
 |  | ||||||
| public: |  | ||||||
|     bool                m_printActiveDesktopName; |  | ||||||
|     bool                m_loginAuthenticate; |  | ||||||
|     bool                m_getInstalledDir; |  | ||||||
|     bool                m_getProfileDir; |  | ||||||
|     bool                m_getArch; |  | ||||||
|     bool                m_notifyActivation; |  | ||||||
|     bool                m_notifyUpdate; |  | ||||||
| }; |  | ||||||
		Loading…
	
		Reference in New Issue
	
	 walker0643
						walker0643