Merge branch '4696'
This commit is contained in:
commit
ed37eeca51
|
@ -1140,12 +1140,14 @@ class InternalCommands:
|
||||||
controlFile.close()
|
controlFile.close()
|
||||||
|
|
||||||
targetBin = '%s/%s/usr/bin' % (debDir, package)
|
targetBin = '%s/%s/usr/bin' % (debDir, package)
|
||||||
|
targetPlugin = '%s/%s/usr/lib/synergy/plugins' % (debDir, package)
|
||||||
targetShare = '%s/%s/usr/share' % (debDir, package)
|
targetShare = '%s/%s/usr/share' % (debDir, package)
|
||||||
targetApplications = "%s/applications" % targetShare
|
targetApplications = "%s/applications" % targetShare
|
||||||
targetIcons = "%s/icons" % targetShare
|
targetIcons = "%s/icons" % targetShare
|
||||||
targetDocs = "%s/doc/%s" % (targetShare, self.project)
|
targetDocs = "%s/doc/%s" % (targetShare, self.project)
|
||||||
|
|
||||||
os.makedirs(targetBin)
|
os.makedirs(targetBin)
|
||||||
|
os.makedirs(targetPlugin)
|
||||||
os.makedirs(targetApplications)
|
os.makedirs(targetApplications)
|
||||||
os.makedirs(targetIcons)
|
os.makedirs(targetIcons)
|
||||||
os.makedirs(targetDocs)
|
os.makedirs(targetDocs)
|
||||||
|
@ -1163,6 +1165,17 @@ class InternalCommands:
|
||||||
if err != 0:
|
if err != 0:
|
||||||
raise Exception('strip failed: ' + str(err))
|
raise Exception('strip failed: ' + str(err))
|
||||||
|
|
||||||
|
pluginDir = "%s/plugins" % binDir
|
||||||
|
|
||||||
|
pluginFiles = [ 'libns.so']
|
||||||
|
for f in pluginFiles:
|
||||||
|
shutil.copy("%s/%s" % (pluginDir, f), targetPlugin)
|
||||||
|
target = "%s/%s" % (targetPlugin, f)
|
||||||
|
os.chmod(target, 0o0644)
|
||||||
|
err = os.system("strip " + target)
|
||||||
|
if err != 0:
|
||||||
|
raise Exception('strip failed: ' + str(err))
|
||||||
|
|
||||||
shutil.copy("%s/synergy.desktop" % resDir, targetApplications)
|
shutil.copy("%s/synergy.desktop" % resDir, targetApplications)
|
||||||
shutil.copy("%s/synergy.ico" % resDir, targetIcons)
|
shutil.copy("%s/synergy.ico" % resDir, targetIcons)
|
||||||
|
|
||||||
|
|
|
@ -20,6 +20,7 @@ source=%{_topdir}/../..
|
||||||
mkdir -p %{buildroot}/%{_datarootdir}/applications
|
mkdir -p %{buildroot}/%{_datarootdir}/applications
|
||||||
mkdir -p %{buildroot}/%{_datarootdir}/icons
|
mkdir -p %{buildroot}/%{_datarootdir}/icons
|
||||||
mkdir -p %{buildroot}/%{_bindir}
|
mkdir -p %{buildroot}/%{_bindir}
|
||||||
|
mkdir -p %{buildroot}/%{_bindir}/../lib/synergy/plugins
|
||||||
|
|
||||||
cp $source/bin/synergy %{buildroot}%{_bindir}
|
cp $source/bin/synergy %{buildroot}%{_bindir}
|
||||||
cp $source/bin/synergyc %{buildroot}%{_bindir}
|
cp $source/bin/synergyc %{buildroot}%{_bindir}
|
||||||
|
@ -28,6 +29,7 @@ cp $source/bin/synergyd %{buildroot}%{_bindir}
|
||||||
cp $source/bin/syntool %{buildroot}%{_bindir}
|
cp $source/bin/syntool %{buildroot}%{_bindir}
|
||||||
cp $source/res/synergy.desktop %{buildroot}%{_datarootdir}/applications
|
cp $source/res/synergy.desktop %{buildroot}%{_datarootdir}/applications
|
||||||
cp $source/res/synergy.ico %{buildroot}%{_datarootdir}/icons
|
cp $source/res/synergy.ico %{buildroot}%{_datarootdir}/icons
|
||||||
|
cp $source/bin/plugins/* %{buildroot}%{_bindir}/../lib/synergy/plugins
|
||||||
|
|
||||||
%files
|
%files
|
||||||
%defattr(755,root,root,-)
|
%defattr(755,root,root,-)
|
||||||
|
@ -38,6 +40,7 @@ cp $source/res/synergy.ico %{buildroot}%{_datarootdir}/icons
|
||||||
%{_bindir}/syntool
|
%{_bindir}/syntool
|
||||||
%attr(644,-,-) %{_datarootdir}/applications/synergy.desktop
|
%attr(644,-,-) %{_datarootdir}/applications/synergy.desktop
|
||||||
%attr(644,-,-) %{_datarootdir}/icons/synergy.ico
|
%attr(644,-,-) %{_datarootdir}/icons/synergy.ico
|
||||||
|
%attr(644,-,-) %{_bindir}/../lib/synergy/plugins/*
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
* Thu Mar 20 2014 Nick Bolton <nick@synergy-project.org>
|
* Thu Mar 20 2014 Nick Bolton <nick@synergy-project.org>
|
||||||
|
|
|
@ -52,12 +52,14 @@ SOURCES += src/main.cpp \
|
||||||
src/DataDownloader.cpp \
|
src/DataDownloader.cpp \
|
||||||
src/AddClientDialog.cpp \
|
src/AddClientDialog.cpp \
|
||||||
src/CommandProcess.cpp \
|
src/CommandProcess.cpp \
|
||||||
src/WebClient.cpp \
|
|
||||||
src/PluginWizardPage.cpp \
|
src/PluginWizardPage.cpp \
|
||||||
src/PluginManager.cpp \
|
src/PluginManager.cpp \
|
||||||
src/CoreInterface.cpp \
|
src/CoreInterface.cpp \
|
||||||
src/Fingerprint.cpp \
|
src/Fingerprint.cpp \
|
||||||
src/SslCertificate.cpp
|
src/SslCertificate.cpp \
|
||||||
|
src/FileSysClient.cpp \
|
||||||
|
src/Plugin.cpp \
|
||||||
|
src/WebClient.cpp
|
||||||
HEADERS += src/MainWindow.h \
|
HEADERS += src/MainWindow.h \
|
||||||
src/AboutDialog.h \
|
src/AboutDialog.h \
|
||||||
src/ServerConfig.h \
|
src/ServerConfig.h \
|
||||||
|
@ -94,14 +96,17 @@ HEADERS += src/MainWindow.h \
|
||||||
src/DataDownloader.h \
|
src/DataDownloader.h \
|
||||||
src/AddClientDialog.h \
|
src/AddClientDialog.h \
|
||||||
src/CommandProcess.h \
|
src/CommandProcess.h \
|
||||||
src/WebClient.h \
|
|
||||||
src/EditionType.h \
|
src/EditionType.h \
|
||||||
src/PluginWizardPage.h \
|
src/PluginWizardPage.h \
|
||||||
src/ProcessorArch.h \
|
src/ProcessorArch.h \
|
||||||
src/PluginManager.h \
|
src/PluginManager.h \
|
||||||
src/CoreInterface.h \
|
src/CoreInterface.h \
|
||||||
src/Fingerprint.h \
|
src/Fingerprint.h \
|
||||||
src/SslCertificate.h
|
src/SslCertificate.h \
|
||||||
|
src/LocalFilesystemClient.h \
|
||||||
|
src/FileSysClient.h \
|
||||||
|
src/Plugin.h \
|
||||||
|
src/WebClient.h
|
||||||
RESOURCES += res/Synergy.qrc
|
RESOURCES += res/Synergy.qrc
|
||||||
RC_FILE = res/win/Synergy.rc
|
RC_FILE = res/win/Synergy.rc
|
||||||
macx {
|
macx {
|
||||||
|
|
|
@ -39,6 +39,12 @@ QString CoreInterface::getProfileDir()
|
||||||
return run(args);
|
return run(args);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QString CoreInterface::getInstalledDir()
|
||||||
|
{
|
||||||
|
QStringList args("--get-installed-dir");
|
||||||
|
return run(args);
|
||||||
|
}
|
||||||
|
|
||||||
QString CoreInterface::getArch()
|
QString CoreInterface::getArch()
|
||||||
{
|
{
|
||||||
QStringList args("--get-arch");
|
QStringList args("--get-arch");
|
||||||
|
|
|
@ -26,6 +26,7 @@ public:
|
||||||
|
|
||||||
QString getPluginDir();
|
QString getPluginDir();
|
||||||
QString getProfileDir();
|
QString getProfileDir();
|
||||||
|
QString getInstalledDir();
|
||||||
QString getArch();
|
QString getArch();
|
||||||
QString run(const QStringList& args, const QString& input = "");
|
QString run(const QStringList& args, const QString& input = "");
|
||||||
};
|
};
|
||||||
|
|
|
@ -0,0 +1,54 @@
|
||||||
|
/*
|
||||||
|
* synergy -- mouse and keyboard sharing utility
|
||||||
|
* Copyright (C) 2015 Synergy Si, Std.
|
||||||
|
*
|
||||||
|
* 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 "FileSysClient.h"
|
||||||
|
|
||||||
|
#include "EditionType.h"
|
||||||
|
#include "QUtility.h"
|
||||||
|
|
||||||
|
#include <QDir>
|
||||||
|
#include <QProcess>
|
||||||
|
#include <QMessageBox>
|
||||||
|
#include <QCoreApplication>
|
||||||
|
#include <stdexcept>
|
||||||
|
|
||||||
|
void FileSysClient::queryPluginList()
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
isDone(false);
|
||||||
|
QString extension = "*" + Plugin::getOsSpecificExt();
|
||||||
|
QStringList nameFilter(extension);
|
||||||
|
|
||||||
|
QString installDir(m_CoreInterface.getInstalledDir()
|
||||||
|
.append(QDir::separator())
|
||||||
|
.append(Plugin::getOsSpecificInstallerLocation()));
|
||||||
|
|
||||||
|
QString searchDirectory(installDir);
|
||||||
|
QDir directory(searchDirectory);
|
||||||
|
m_PluginList = directory.entryList(nameFilter);
|
||||||
|
isDone(true);
|
||||||
|
}
|
||||||
|
catch (std::exception& e)
|
||||||
|
{
|
||||||
|
isDone(true);
|
||||||
|
emit error(tr( "An error occurred while trying to load the "
|
||||||
|
"plugin list. Please contact the help desk, and "
|
||||||
|
"provide the following details.\n\n%1").arg(e.what()));
|
||||||
|
}
|
||||||
|
emit queryPluginDone();
|
||||||
|
return;
|
||||||
|
}
|
|
@ -0,0 +1,63 @@
|
||||||
|
/*
|
||||||
|
* synergy -- mouse and keyboard sharing utility
|
||||||
|
* Copyright (C) 2015 Synergy Si, Std.
|
||||||
|
*
|
||||||
|
* 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 FileSysClient_H
|
||||||
|
#define FileSysClient_H
|
||||||
|
|
||||||
|
#include <QString>
|
||||||
|
#include <QStringList>
|
||||||
|
#include <QObject>
|
||||||
|
|
||||||
|
#include "Plugin.h"
|
||||||
|
#include "CoreInterface.h"
|
||||||
|
|
||||||
|
class QMessageBox;
|
||||||
|
class QWidget;
|
||||||
|
class QStringList;
|
||||||
|
|
||||||
|
class FileSysClient : public QObject
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
public:
|
||||||
|
QStringList& getPluginList() { return m_PluginList; }
|
||||||
|
bool isDone() { return done; }
|
||||||
|
int count() { return copyCount; }
|
||||||
|
|
||||||
|
public slots:
|
||||||
|
void queryPluginList();
|
||||||
|
|
||||||
|
signals:
|
||||||
|
void error(QString e);
|
||||||
|
void queryPluginDone();
|
||||||
|
|
||||||
|
private:
|
||||||
|
void isDone(bool b) { done = b; }
|
||||||
|
QString request(const QString& email,
|
||||||
|
const QString& password,
|
||||||
|
QStringList& args);
|
||||||
|
Plugin plugin;
|
||||||
|
void count(int i) { copyCount = i; }
|
||||||
|
|
||||||
|
private:
|
||||||
|
int copyCount;
|
||||||
|
bool done;
|
||||||
|
QStringList m_PluginList;
|
||||||
|
CoreInterface m_CoreInterface;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // FileSysClient_H
|
|
@ -0,0 +1,73 @@
|
||||||
|
/*
|
||||||
|
* synergy -- mouse and keyboard sharing utility
|
||||||
|
* Copyright (C) 2015 Synergy Si 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 "Plugin.h"
|
||||||
|
|
||||||
|
#include "CoreInterface.h"
|
||||||
|
|
||||||
|
static const char kBaseUrl[] = "http://synergy-project.org/files";
|
||||||
|
static const char kDefaultVersion[] = "1.1";
|
||||||
|
static const char kWinPackagePlatform32[] = "Windows-x86";
|
||||||
|
static const char kWinPackagePlatform64[] = "Windows-x64";
|
||||||
|
static const char kMacPackagePlatform[] = "MacOSX%1-i386";
|
||||||
|
static const char kLinuxPackagePlatformDeb32[] = "Linux-i686-deb";
|
||||||
|
static const char kLinuxPackagePlatformDeb64[] = "Linux-x86_64-deb";
|
||||||
|
static const char kLinuxPackagePlatformRpm32[] = "Linux-i686-rpm";
|
||||||
|
static const char kLinuxPackagePlatformRpm64[] = "Linux-x86_64-rpm";
|
||||||
|
|
||||||
|
#if defined(Q_OS_WIN)
|
||||||
|
static const char kWinPluginExt[] = ".dll";
|
||||||
|
static const char kInstallerPluginLocation[] = "Plugins";
|
||||||
|
#elif defined(Q_OS_MAC)
|
||||||
|
static const char kMacPluginPrefix[] = "lib";
|
||||||
|
static const char kMacPluginExt[] = ".dylib";
|
||||||
|
static const char kInstallerPluginLocation[] = "plugins"; // TODO: Fix for mac
|
||||||
|
#else
|
||||||
|
static const char kLinuxPluginPrefix[] = "lib";
|
||||||
|
static const char kLinuxPluginExt[] = ".so";
|
||||||
|
// /usr/bin becomes /usr/bin/../lib/syn...
|
||||||
|
static const char kInstallerPluginLocation[] = "../lib/synergy/plugins";
|
||||||
|
#endif
|
||||||
|
|
||||||
|
QString Plugin::getOsSpecificExt()
|
||||||
|
{
|
||||||
|
|
||||||
|
#if defined(Q_OS_WIN)
|
||||||
|
return kWinPluginExt;
|
||||||
|
#elif defined(Q_OS_MAC)
|
||||||
|
return kMacPluginExt;
|
||||||
|
#else
|
||||||
|
return kLinuxPluginExt;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
QString Plugin::getOsSpecificName(const QString& pluginName)
|
||||||
|
{
|
||||||
|
QString result = pluginName;
|
||||||
|
#if defined(Q_OS_WIN)
|
||||||
|
result.append(getOsSpecificExt());
|
||||||
|
#elif defined(Q_OS_MAC)
|
||||||
|
result = kMacPluginPrefix + pluginName + getOsSpecificExt();
|
||||||
|
#else
|
||||||
|
result = kLinuxPluginPrefix + pluginName + getOsSpecificExt();
|
||||||
|
#endif
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
QString Plugin::getOsSpecificInstallerLocation() {
|
||||||
|
return kInstallerPluginLocation;
|
||||||
|
}
|
|
@ -0,0 +1,53 @@
|
||||||
|
/*
|
||||||
|
* synergy -- mouse and keyboard sharing utility
|
||||||
|
* Copyright (C) 2015 Synergy Si 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 PLUGIN_H
|
||||||
|
#define PLUGIN_H
|
||||||
|
|
||||||
|
#include <QString>
|
||||||
|
#include <QStringList>
|
||||||
|
#include <QObject>
|
||||||
|
|
||||||
|
#include "SslCertificate.h"
|
||||||
|
#include "CoreInterface.h"
|
||||||
|
#include "DataDownloader.h"
|
||||||
|
|
||||||
|
class Plugin : public QObject
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
public:
|
||||||
|
//Plugin();
|
||||||
|
//~PluginManager();
|
||||||
|
|
||||||
|
static QString getOsSpecificName(const QString& pluginName);
|
||||||
|
static QString getOsSpecificExt();
|
||||||
|
static QString getOsSpecificLocation();
|
||||||
|
static QString getOsSpecificInstallerLocation();
|
||||||
|
static QString getOsSpecificUserLocation();
|
||||||
|
|
||||||
|
public slots:
|
||||||
|
|
||||||
|
private:
|
||||||
|
// CoreInterface m_CoreInterface;
|
||||||
|
|
||||||
|
signals:
|
||||||
|
|
||||||
|
private:
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // PLUGIN_H
|
|
@ -23,37 +23,25 @@
|
||||||
#include "QUtility.h"
|
#include "QUtility.h"
|
||||||
#include "ProcessorArch.h"
|
#include "ProcessorArch.h"
|
||||||
#include "Fingerprint.h"
|
#include "Fingerprint.h"
|
||||||
|
#include "Plugin.h"
|
||||||
|
|
||||||
|
#include <QTextStream>
|
||||||
|
|
||||||
#include <QFile>
|
#include <QFile>
|
||||||
#include <QDir>
|
#include <QDir>
|
||||||
#include <QProcess>
|
#include <QProcess>
|
||||||
#include <QCoreApplication>
|
#include <QCoreApplication>
|
||||||
|
|
||||||
static const char kBaseUrl[] = "http://synergy-project.org/files";
|
PluginManager::PluginManager() :
|
||||||
static const char kDefaultVersion[] = "1.1";
|
m_FileSysPluginList()
|
||||||
static const char kWinPackagePlatform32[] = "Windows-x86";
|
|
||||||
static const char kWinPackagePlatform64[] = "Windows-x64";
|
|
||||||
static const char kMacPackagePlatform[] = "MacOSX%1-i386";
|
|
||||||
static const char kLinuxPackagePlatformDeb32[] = "Linux-i686-deb";
|
|
||||||
static const char kLinuxPackagePlatformDeb64[] = "Linux-x86_64-deb";
|
|
||||||
static const char kLinuxPackagePlatformRpm32[] = "Linux-i686-rpm";
|
|
||||||
static const char kLinuxPackagePlatformRpm64[] = "Linux-x86_64-rpm";
|
|
||||||
|
|
||||||
#if defined(Q_OS_WIN)
|
|
||||||
static const char kWinPluginExt[] = ".dll";
|
|
||||||
|
|
||||||
#elif defined(Q_OS_MAC)
|
|
||||||
static const char kMacPluginPrefix[] = "lib";
|
|
||||||
static const char kMacPluginExt[] = ".dylib";
|
|
||||||
#else
|
|
||||||
static const char kLinuxPluginPrefix[] = "lib";
|
|
||||||
static const char kLinuxPluginExt[] = ".so";
|
|
||||||
#endif
|
|
||||||
|
|
||||||
PluginManager::PluginManager(QStringList pluginList) :
|
|
||||||
m_PluginList(pluginList),
|
|
||||||
m_DownloadIndex(-1)
|
|
||||||
{
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void PluginManager::initFromFileSys(QStringList pluginList)
|
||||||
|
{
|
||||||
|
m_FileSysPluginList.clear();
|
||||||
|
m_FileSysPluginList.append(pluginList);
|
||||||
|
|
||||||
m_PluginDir = m_CoreInterface.getPluginDir();
|
m_PluginDir = m_CoreInterface.getPluginDir();
|
||||||
if (m_PluginDir.isEmpty()) {
|
if (m_PluginDir.isEmpty()) {
|
||||||
emit error(tr("Failed to get plugin directory."));
|
emit error(tr("Failed to get plugin directory."));
|
||||||
|
@ -63,6 +51,11 @@ PluginManager::PluginManager(QStringList pluginList) :
|
||||||
if (m_ProfileDir.isEmpty()) {
|
if (m_ProfileDir.isEmpty()) {
|
||||||
emit error(tr("Failed to get profile directory."));
|
emit error(tr("Failed to get profile directory."));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
m_InstalledDir = m_CoreInterface.getInstalledDir();
|
||||||
|
if (m_InstalledDir.isEmpty()) {
|
||||||
|
emit error(tr("Failed to get installed directory."));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
PluginManager::~PluginManager()
|
PluginManager::~PluginManager()
|
||||||
|
@ -73,7 +66,7 @@ bool PluginManager::exist(QString name)
|
||||||
{
|
{
|
||||||
CoreInterface coreInterface;
|
CoreInterface coreInterface;
|
||||||
QString PluginDir = coreInterface.getPluginDir();
|
QString PluginDir = coreInterface.getPluginDir();
|
||||||
QString pluginName = getPluginOsSpecificName(name);
|
QString pluginName = Plugin::getOsSpecificName(name);
|
||||||
QString filename;
|
QString filename;
|
||||||
filename.append(PluginDir);
|
filename.append(PluginDir);
|
||||||
filename.append(QDir::separator()).append(pluginName);
|
filename.append(QDir::separator()).append(pluginName);
|
||||||
|
@ -86,160 +79,72 @@ bool PluginManager::exist(QString name)
|
||||||
return exist;
|
return exist;
|
||||||
}
|
}
|
||||||
|
|
||||||
void PluginManager::downloadPlugins()
|
void PluginManager::copyPlugins()
|
||||||
{
|
{
|
||||||
if (m_DataDownloader.isFinished()) {
|
|
||||||
if (!savePlugin()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (m_DownloadIndex != m_PluginList.size() - 1) {
|
|
||||||
emit downloadNext();
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
emit downloadFinished();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
m_DownloadIndex++;
|
|
||||||
|
|
||||||
if (m_DownloadIndex < m_PluginList.size()) {
|
|
||||||
QUrl url;
|
|
||||||
QString pluginUrl = getPluginUrl(m_PluginList.at(m_DownloadIndex));
|
|
||||||
if (pluginUrl.isEmpty()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
url.setUrl(pluginUrl);
|
|
||||||
|
|
||||||
connect(&m_DataDownloader, SIGNAL(isComplete()), this, SLOT(downloadPlugins()));
|
|
||||||
|
|
||||||
m_DataDownloader.download(url);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
bool PluginManager::savePlugin()
|
|
||||||
{
|
|
||||||
// create the path if not exist
|
|
||||||
QDir dir(m_PluginDir);
|
|
||||||
if (!dir.exists()) {
|
|
||||||
dir.mkpath(".");
|
|
||||||
}
|
|
||||||
|
|
||||||
QString filename = m_PluginDir;
|
|
||||||
QString pluginName = m_PluginList.at(m_DownloadIndex);
|
|
||||||
pluginName = getPluginOsSpecificName(pluginName);
|
|
||||||
filename.append(QDir::separator()).append(pluginName);
|
|
||||||
|
|
||||||
QFile file(filename);
|
|
||||||
if (!file.open(QIODevice::WriteOnly)) {
|
|
||||||
emit error(
|
|
||||||
tr("Failed to download plugin '%1' to: %2\n%3")
|
|
||||||
.arg(m_PluginList.at(m_DownloadIndex))
|
|
||||||
.arg(m_PluginDir)
|
|
||||||
.arg(file.errorString()));
|
|
||||||
|
|
||||||
file.close();
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
file.write(m_DataDownloader.data());
|
|
||||||
file.close();
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
QString PluginManager::getPluginUrl(const QString& pluginName)
|
|
||||||
{
|
|
||||||
QString archName;
|
|
||||||
|
|
||||||
#if defined(Q_OS_WIN)
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
QString coreArch = m_CoreInterface.getArch();
|
// Get the Directory where plugins are put on installation
|
||||||
if (coreArch.startsWith("x86")) {
|
// If it doesn't exist, there is nothing to do
|
||||||
archName = kWinPackagePlatform32;
|
QString srcDirName(m_InstalledDir.append(QDir::separator())
|
||||||
}
|
.append(Plugin::getOsSpecificInstallerLocation()));
|
||||||
else if (coreArch.startsWith("x64")) {
|
|
||||||
archName = kWinPackagePlatform64;
|
QDir srcDir(srcDirName);
|
||||||
}
|
if (!srcDir.exists()) {
|
||||||
}
|
emit info(
|
||||||
catch (...) {
|
tr("No plugins found to copy from %1")
|
||||||
emit error(tr("Could not get Windows architecture type."));
|
.arg(srcDirName));
|
||||||
return "";
|
emit copyFinished();
|
||||||
}
|
}
|
||||||
|
|
||||||
#elif defined(Q_OS_MAC)
|
// Get the directory where Plugins are installed into Synergy
|
||||||
|
// If it doesn't exist make it
|
||||||
|
QString destDirName = m_PluginDir;
|
||||||
|
|
||||||
QString macVersion = "1010";
|
QDir destDir(destDirName);
|
||||||
#if __MAC_OS_X_VERSION_MIN_REQUIRED <= 1090 // 10.9
|
if (!destDir.exists()) {
|
||||||
macVersion = "109";
|
destDir.mkpath(".");
|
||||||
#elif __MAC_OS_X_VERSION_MIN_REQUIRED <= 1080 // 10.8
|
}
|
||||||
macVersion = "108";
|
// Run through the list of plugins and copy them
|
||||||
#elif __MAC_OS_X_VERSION_MIN_REQUIRED <= 1070 // 10.7
|
for ( int i = 0 ; i < m_FileSysPluginList.size() ; i++ ) {
|
||||||
emit error(tr("Plugins not supported on this Mac OS X version."));
|
// Get a file entry for the plugin using the full path
|
||||||
return "";
|
QFile file(srcDirName + QDir::separator() + m_FileSysPluginList.at(i));
|
||||||
#endif
|
|
||||||
|
|
||||||
archName = QString(kMacPackagePlatform).arg(macVersion);
|
// construct the destination file name
|
||||||
|
QString newName(destDirName + QDir::separator() + m_FileSysPluginList.at(i));
|
||||||
|
|
||||||
#else
|
// Check to see if the plugin already exists
|
||||||
|
QFile newFile(newName);
|
||||||
QString program("dpkg");
|
if(newFile.exists()) {
|
||||||
QStringList args;
|
// If it does, delete it. TODO: Check to see if same and leave
|
||||||
args << "-s" << "synergy";
|
newFile.remove();
|
||||||
|
}
|
||||||
QProcess process;
|
// make a copy of the plugin in the new location
|
||||||
process.setReadChannel(QProcess::StandardOutput);
|
#if defined(Q_OS_WIN)
|
||||||
process.start(program, args);
|
bool result = file.copy(newName);
|
||||||
bool success = process.waitForStarted();
|
#else
|
||||||
|
bool result = file.link(newName);
|
||||||
bool isDeb = (success && process.waitForFinished() & (process.exitCode() == 0));
|
#endif
|
||||||
|
if ( !result ) {
|
||||||
int arch = getProcessorArch();
|
emit error(
|
||||||
if (arch == kProcessorArchLinux32) {
|
tr("Failed to copy plugin '%1' to: %2\n%3")
|
||||||
if (isDeb) {
|
.arg(m_FileSysPluginList.at(i))
|
||||||
archName = kLinuxPackagePlatformDeb32;
|
.arg(newName)
|
||||||
|
.arg(file.errorString()));
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
archName = kLinuxPackagePlatformRpm32;
|
emit info(
|
||||||
|
tr("Copying '%1' plugin (%2/%3)...")
|
||||||
|
.arg(m_FileSysPluginList.at(i))
|
||||||
|
.arg(i+1)
|
||||||
|
.arg(m_FileSysPluginList.size()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (arch == kProcessorArchLinux64) {
|
|
||||||
if (isDeb) {
|
|
||||||
archName = kLinuxPackagePlatformDeb64;
|
|
||||||
}
|
}
|
||||||
else {
|
catch (std::exception& e)
|
||||||
archName = kLinuxPackagePlatformRpm64;
|
{
|
||||||
|
emit error(tr( "An error occurred while trying to copy the "
|
||||||
|
"plugin list. Please contact the help desk, and "
|
||||||
|
"provide the following details.\n\n%1").arg(e.what()));
|
||||||
}
|
}
|
||||||
}
|
emit copyFinished();
|
||||||
else {
|
return;
|
||||||
emit error(tr("Could not get Linux architecture type."));
|
|
||||||
return "";
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
QString result = QString("%1/plugins/%2/%3/%4/%5")
|
|
||||||
.arg(kBaseUrl)
|
|
||||||
.arg(pluginName)
|
|
||||||
.arg(kDefaultVersion)
|
|
||||||
.arg(archName)
|
|
||||||
.arg(getPluginOsSpecificName(pluginName));
|
|
||||||
|
|
||||||
qDebug() << result;
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
QString PluginManager::getPluginOsSpecificName(const QString& pluginName)
|
|
||||||
{
|
|
||||||
QString result = pluginName;
|
|
||||||
#if defined(Q_OS_WIN)
|
|
||||||
result.append(kWinPluginExt);
|
|
||||||
#elif defined(Q_OS_MAC)
|
|
||||||
result = kMacPluginPrefix + pluginName + kMacPluginExt;
|
|
||||||
#else
|
|
||||||
result = kLinuxPluginPrefix + pluginName + kLinuxPluginExt;
|
|
||||||
#endif
|
|
||||||
return result;
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -25,44 +25,46 @@
|
||||||
#include "SslCertificate.h"
|
#include "SslCertificate.h"
|
||||||
#include "CoreInterface.h"
|
#include "CoreInterface.h"
|
||||||
#include "DataDownloader.h"
|
#include "DataDownloader.h"
|
||||||
|
#include "Plugin.h"
|
||||||
|
|
||||||
class PluginManager : public QObject
|
class PluginManager : public QObject
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
public:
|
public:
|
||||||
PluginManager(QStringList pluginList);
|
PluginManager();
|
||||||
~PluginManager();
|
~PluginManager();
|
||||||
|
|
||||||
int downloadIndex() { return m_DownloadIndex; }
|
void initFromWeb(QStringList pluginList);
|
||||||
|
void initFromFileSys(QStringList pluginList);
|
||||||
|
|
||||||
|
int pluginCount() { return m_FileSysPluginList.count(); }
|
||||||
|
|
||||||
static bool exist(QString name);
|
static bool exist(QString name);
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
void downloadPlugins();
|
void copyPlugins();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
bool savePlugin();
|
|
||||||
QString getPluginUrl(const QString& pluginName);
|
QString getPluginUrl(const QString& pluginName);
|
||||||
bool runProgram(
|
bool runProgram(
|
||||||
const QString& program,
|
const QString& program,
|
||||||
const QStringList& args,
|
const QStringList& args,
|
||||||
const QStringList& env);
|
const QStringList& env);
|
||||||
|
|
||||||
static QString getPluginOsSpecificName(const QString& pluginName);
|
//static QString getPluginOsSpecificName(const QString& pluginName);
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void error(QString e);
|
void error(QString e);
|
||||||
void info(QString i);
|
void info(QString i);
|
||||||
void downloadNext();
|
void updateCopyStatus(int);
|
||||||
void downloadFinished();
|
void copyFinished();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QStringList m_PluginList;
|
QStringList m_FileSysPluginList;
|
||||||
QString m_PluginDir;
|
QString m_PluginDir;
|
||||||
QString m_ProfileDir;
|
QString m_ProfileDir;
|
||||||
int m_DownloadIndex;
|
QString m_InstalledDir;
|
||||||
DataDownloader m_DataDownloader;
|
|
||||||
CoreInterface m_CoreInterface;
|
CoreInterface m_CoreInterface;
|
||||||
SslCertificate m_SslCertificate;
|
SslCertificate m_SslCertificate;
|
||||||
};
|
};
|
||||||
|
|
|
@ -19,6 +19,7 @@
|
||||||
#include "ui_PluginWizardPageBase.h"
|
#include "ui_PluginWizardPageBase.h"
|
||||||
|
|
||||||
#include "SslCertificate.h"
|
#include "SslCertificate.h"
|
||||||
|
#include "FileSysClient.h"
|
||||||
#include "WebClient.h"
|
#include "WebClient.h"
|
||||||
#include "PluginManager.h"
|
#include "PluginManager.h"
|
||||||
|
|
||||||
|
@ -28,8 +29,7 @@
|
||||||
PluginWizardPage::PluginWizardPage(AppConfig& appConfig, QWidget *parent) :
|
PluginWizardPage::PluginWizardPage(AppConfig& appConfig, QWidget *parent) :
|
||||||
QWizardPage(parent),
|
QWizardPage(parent),
|
||||||
m_Finished(false),
|
m_Finished(false),
|
||||||
m_pWebClient(NULL),
|
m_pFileSysClient(NULL),
|
||||||
m_pPluginManager(NULL),
|
|
||||||
m_pSslCertificate(NULL),
|
m_pSslCertificate(NULL),
|
||||||
m_AppConfig(appConfig)
|
m_AppConfig(appConfig)
|
||||||
{
|
{
|
||||||
|
@ -44,12 +44,8 @@ PluginWizardPage::PluginWizardPage(AppConfig& appConfig, QWidget *parent) :
|
||||||
|
|
||||||
PluginWizardPage::~PluginWizardPage()
|
PluginWizardPage::~PluginWizardPage()
|
||||||
{
|
{
|
||||||
if (m_pWebClient != NULL) {
|
if (m_pFileSysClient != NULL) {
|
||||||
delete m_pWebClient;
|
delete m_pFileSysClient;
|
||||||
}
|
|
||||||
|
|
||||||
if (m_pPluginManager != NULL) {
|
|
||||||
delete m_pPluginManager;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
delete m_pSslCertificate;
|
delete m_pSslCertificate;
|
||||||
|
@ -75,27 +71,16 @@ void PluginWizardPage::showError(QString error)
|
||||||
|
|
||||||
void PluginWizardPage::queryPluginDone()
|
void PluginWizardPage::queryPluginDone()
|
||||||
{
|
{
|
||||||
QStringList pluginList = m_pWebClient->getPluginList();
|
QStringList pluginList = m_pFileSysClient->getPluginList();
|
||||||
if (pluginList.isEmpty()) {
|
if (pluginList.isEmpty()) {
|
||||||
updateStatus(tr("Setup complete."));
|
updateStatus(tr("Setup complete."));
|
||||||
showFinished();
|
showFinished();
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
downloadPlugins();
|
copyPlugins();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void PluginWizardPage::updateDownloadStatus()
|
|
||||||
{
|
|
||||||
QStringList pluginList = m_pWebClient->getPluginList();
|
|
||||||
int index = m_pPluginManager->downloadIndex();
|
|
||||||
updateStatus(
|
|
||||||
tr("Downloading '%1' plugin (%2/%3)...")
|
|
||||||
.arg(pluginList.at(index + 1))
|
|
||||||
.arg(index + 2)
|
|
||||||
.arg(pluginList.size()));
|
|
||||||
}
|
|
||||||
|
|
||||||
void PluginWizardPage::finished()
|
void PluginWizardPage::finished()
|
||||||
{
|
{
|
||||||
// TODO: we should check if ns plugin exists
|
// TODO: we should check if ns plugin exists
|
||||||
|
@ -130,33 +115,29 @@ void PluginWizardPage::updateStatus(QString info)
|
||||||
m_pLabelStatus->setText(info);
|
m_pLabelStatus->setText(info);
|
||||||
}
|
}
|
||||||
|
|
||||||
void PluginWizardPage::downloadPlugins()
|
void PluginWizardPage::copyPlugins()
|
||||||
{
|
{
|
||||||
QStringList pluginList = m_pWebClient->getPluginList();
|
QStringList pluginList = m_pFileSysClient->getPluginList();
|
||||||
m_pPluginManager = new PluginManager(pluginList);
|
m_PluginManager.initFromFileSys(pluginList);
|
||||||
|
|
||||||
m_pThread = new QThread;
|
m_pThread = new QThread;
|
||||||
|
|
||||||
connect(m_pPluginManager,
|
connect(&m_PluginManager,
|
||||||
SIGNAL(error(QString)),
|
SIGNAL(error(QString)),
|
||||||
this,
|
this,
|
||||||
SLOT(showError(QString)));
|
SLOT(showError(QString)));
|
||||||
|
|
||||||
connect(m_pPluginManager,
|
connect(&m_PluginManager,
|
||||||
SIGNAL(info(QString)),
|
SIGNAL(info(QString)),
|
||||||
this,
|
this,
|
||||||
SLOT(updateStatus(QString)));
|
SLOT(updateStatus(QString)));
|
||||||
|
|
||||||
connect(m_pPluginManager,
|
connect(&m_PluginManager,
|
||||||
SIGNAL(downloadNext()),
|
SIGNAL(copyFinished()),
|
||||||
this,
|
|
||||||
SLOT(updateDownloadStatus()));
|
|
||||||
|
|
||||||
connect(m_pPluginManager,
|
|
||||||
SIGNAL(downloadFinished()),
|
|
||||||
this,
|
this,
|
||||||
SLOT(generateCertificate()));
|
SLOT(generateCertificate()));
|
||||||
|
|
||||||
connect(m_pPluginManager,
|
connect(&m_PluginManager,
|
||||||
SIGNAL(error(QString)),
|
SIGNAL(error(QString)),
|
||||||
m_pThread,
|
m_pThread,
|
||||||
SLOT(quit()));
|
SLOT(quit()));
|
||||||
|
@ -167,16 +148,14 @@ void PluginWizardPage::downloadPlugins()
|
||||||
SLOT(deleteLater()));
|
SLOT(deleteLater()));
|
||||||
|
|
||||||
updateStatus(
|
updateStatus(
|
||||||
tr("Downloading plugin: %1 (1/%2)")
|
tr("Copying plugins..."));
|
||||||
.arg(pluginList.at(0))
|
|
||||||
.arg(pluginList.size()));
|
|
||||||
|
|
||||||
m_pPluginManager->moveToThread(m_pThread);
|
m_PluginManager.moveToThread(m_pThread);
|
||||||
m_pThread->start();
|
m_pThread->start();
|
||||||
|
|
||||||
QMetaObject::invokeMethod(
|
QMetaObject::invokeMethod(
|
||||||
m_pPluginManager,
|
&m_PluginManager,
|
||||||
"downloadPlugins",
|
"copyPlugins",
|
||||||
Qt::QueuedConnection);
|
Qt::QueuedConnection);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -195,7 +174,7 @@ bool PluginWizardPage::isComplete() const
|
||||||
void PluginWizardPage::initializePage()
|
void PluginWizardPage::initializePage()
|
||||||
{
|
{
|
||||||
QWizardPage::initializePage();
|
QWizardPage::initializePage();
|
||||||
if (m_pWebClient == NULL) {
|
if (m_pFileSysClient == NULL) {
|
||||||
if (m_Email.isEmpty() ||
|
if (m_Email.isEmpty() ||
|
||||||
m_Password.isEmpty()) {
|
m_Password.isEmpty()) {
|
||||||
updateStatus(tr("Setup complete."));
|
updateStatus(tr("Setup complete."));
|
||||||
|
@ -205,38 +184,38 @@ void PluginWizardPage::initializePage()
|
||||||
|
|
||||||
m_pLabelSpinning->show();
|
m_pLabelSpinning->show();
|
||||||
|
|
||||||
|
m_pFileSysClient = new FileSysClient();
|
||||||
m_pWebClient = new WebClient();
|
m_pWebClient = new WebClient();
|
||||||
m_pWebClient->setEmail(m_Email);
|
m_pWebClient->setEmail(m_Email);
|
||||||
m_pWebClient->setPassword(m_Password);
|
m_pWebClient->setPassword(m_Password);
|
||||||
|
|
||||||
QThread* thread = new QThread;
|
QThread* thread = new QThread;
|
||||||
|
|
||||||
connect(m_pWebClient,
|
connect(m_pFileSysClient,
|
||||||
SIGNAL(error(QString)),
|
SIGNAL(error(QString)),
|
||||||
this,
|
this,
|
||||||
SLOT(showError(QString)));
|
SLOT(showError(QString)));
|
||||||
|
|
||||||
connect(m_pWebClient,
|
connect(m_pFileSysClient,
|
||||||
SIGNAL(queryPluginDone()),
|
SIGNAL(queryPluginDone()),
|
||||||
this,
|
this,
|
||||||
SLOT(queryPluginDone()));
|
SLOT(queryPluginDone()));
|
||||||
|
|
||||||
connect(m_pWebClient,
|
connect(m_pFileSysClient,
|
||||||
SIGNAL(queryPluginDone()),
|
SIGNAL(queryPluginDone()),
|
||||||
thread,
|
thread,
|
||||||
SLOT(quit()));
|
SLOT(quit()));
|
||||||
|
|
||||||
connect(m_pWebClient,
|
connect(m_pFileSysClient,
|
||||||
SIGNAL(error(QString)),
|
SIGNAL(error(QString)),
|
||||||
thread,
|
thread,
|
||||||
SLOT(quit()));
|
SLOT(quit()));
|
||||||
|
|
||||||
connect(thread, SIGNAL(finished()), thread, SLOT(deleteLater()));
|
connect(thread, SIGNAL(finished()), thread, SLOT(deleteLater()));
|
||||||
|
|
||||||
m_pWebClient->moveToThread(thread);
|
m_pFileSysClient->moveToThread(thread);
|
||||||
thread->start();
|
thread->start();
|
||||||
|
|
||||||
updateStatus(tr("Getting plugin list..."));
|
QMetaObject::invokeMethod(m_pFileSysClient, "queryPluginList", Qt::QueuedConnection);
|
||||||
QMetaObject::invokeMethod(m_pWebClient, "queryPluginList", Qt::QueuedConnection);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -21,10 +21,11 @@
|
||||||
#include "AppConfig.h"
|
#include "AppConfig.h"
|
||||||
|
|
||||||
#include "ui_PluginWizardPageBase.h"
|
#include "ui_PluginWizardPageBase.h"
|
||||||
|
#include "PluginManager.h"
|
||||||
#include <QWizardPage>
|
#include <QWizardPage>
|
||||||
|
|
||||||
|
class FileSysClient;
|
||||||
class WebClient;
|
class WebClient;
|
||||||
class PluginManager;
|
|
||||||
class SslCertificate;
|
class SslCertificate;
|
||||||
|
|
||||||
class PluginWizardPage : public QWizardPage, public Ui::PluginWizardPage {
|
class PluginWizardPage : public QWizardPage, public Ui::PluginWizardPage {
|
||||||
|
@ -49,12 +50,11 @@ protected slots:
|
||||||
void showError(QString error);
|
void showError(QString error);
|
||||||
void updateStatus(QString info);
|
void updateStatus(QString info);
|
||||||
void queryPluginDone();
|
void queryPluginDone();
|
||||||
void updateDownloadStatus();
|
|
||||||
void finished();
|
void finished();
|
||||||
void generateCertificate();
|
void generateCertificate();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void downloadPlugins();
|
void copyPlugins();
|
||||||
void showFinished();
|
void showFinished();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
@ -62,7 +62,8 @@ private:
|
||||||
QString m_Email;
|
QString m_Email;
|
||||||
QString m_Password;
|
QString m_Password;
|
||||||
WebClient* m_pWebClient;
|
WebClient* m_pWebClient;
|
||||||
PluginManager* m_pPluginManager;
|
FileSysClient* m_pFileSysClient;
|
||||||
|
PluginManager m_PluginManager;
|
||||||
SslCertificate* m_pSslCertificate;
|
SslCertificate* m_pSslCertificate;
|
||||||
QThread* m_pThread;
|
QThread* m_pThread;
|
||||||
AppConfig& m_AppConfig;
|
AppConfig& m_AppConfig;
|
||||||
|
|
|
@ -92,9 +92,9 @@ std::string
|
||||||
ArchFileUnix::getInstalledDirectory()
|
ArchFileUnix::getInstalledDirectory()
|
||||||
{
|
{
|
||||||
#if WINAPI_XWINDOWS
|
#if WINAPI_XWINDOWS
|
||||||
return "/bin";
|
return "/usr/bin";
|
||||||
#else
|
#else
|
||||||
return "";
|
return "/Applications/Synergy.app/Contents/MacOS";
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -69,7 +69,12 @@ ArchPluginWindows::load()
|
||||||
String filename = synergy::string::removeFileExt(*it);
|
String filename = synergy::string::removeFileExt(*it);
|
||||||
m_pluginTable.insert(std::make_pair(filename, lib));
|
m_pluginTable.insert(std::make_pair(filename, lib));
|
||||||
|
|
||||||
LOG((CLOG_DEBUG "loaded plugin: %s", (*it).c_str()));
|
char * version = (char*)invoke( filename.c_str(),"version",NULL);
|
||||||
|
if (version == NULL) {
|
||||||
|
version = "Pre-1.7.4";
|
||||||
|
}
|
||||||
|
|
||||||
|
LOG((CLOG_DEBUG "loaded plugin: %s (%s)", (*it).c_str(),version));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -24,6 +24,7 @@
|
||||||
|
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
|
|
||||||
|
const char * kSynergyVers = VERSION;
|
||||||
SecureSocket* g_secureSocket = NULL;
|
SecureSocket* g_secureSocket = NULL;
|
||||||
SecureListenSocket* g_secureListenSocket = NULL;
|
SecureListenSocket* g_secureListenSocket = NULL;
|
||||||
Arch* g_arch = NULL;
|
Arch* g_arch = NULL;
|
||||||
|
@ -86,6 +87,9 @@ invoke(const char* command, void** args)
|
||||||
g_secureListenSocket = NULL;
|
g_secureListenSocket = NULL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else if(strcmp(command, "version") == 0) {
|
||||||
|
return (void*) kSynergyVers;
|
||||||
|
}
|
||||||
|
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
|
@ -180,6 +180,10 @@ ArgParser::parseToolArgs(ToolArgs& args, int argc, const char* const* argv)
|
||||||
args.m_getPluginList = true;
|
args.m_getPluginList = true;
|
||||||
return 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-plugin-dir", 0)) {
|
else if (isArg(i, argc, argv, NULL, "--get-plugin-dir", 0)) {
|
||||||
args.m_getPluginDir = true;
|
args.m_getPluginDir = true;
|
||||||
return true;
|
return true;
|
||||||
|
|
|
@ -74,6 +74,9 @@ ToolApp::run(int argc, char** argv)
|
||||||
else if (m_args.m_getPluginList) {
|
else if (m_args.m_getPluginList) {
|
||||||
getPluginList();
|
getPluginList();
|
||||||
}
|
}
|
||||||
|
else if (m_args.m_getInstalledDir) {
|
||||||
|
std::cout << ARCH->getInstalledDirectory() << std::endl;
|
||||||
|
}
|
||||||
else if (m_args.m_getPluginDir) {
|
else if (m_args.m_getPluginDir) {
|
||||||
std::cout << ARCH->getPluginDirectory() << std::endl;
|
std::cout << ARCH->getPluginDirectory() << std::endl;
|
||||||
}
|
}
|
||||||
|
|
|
@ -22,6 +22,7 @@ ToolArgs::ToolArgs() :
|
||||||
m_loginAuthenticate(false),
|
m_loginAuthenticate(false),
|
||||||
m_getPluginList(false),
|
m_getPluginList(false),
|
||||||
m_getPluginDir(false),
|
m_getPluginDir(false),
|
||||||
|
m_getInstalledDir(false),
|
||||||
m_getProfileDir(false)
|
m_getProfileDir(false)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
|
@ -28,6 +28,7 @@ public:
|
||||||
bool m_loginAuthenticate;
|
bool m_loginAuthenticate;
|
||||||
bool m_getPluginList;
|
bool m_getPluginList;
|
||||||
bool m_getPluginDir;
|
bool m_getPluginDir;
|
||||||
|
bool m_getInstalledDir;
|
||||||
bool m_getProfileDir;
|
bool m_getProfileDir;
|
||||||
bool m_getArch;
|
bool m_getArch;
|
||||||
};
|
};
|
||||||
|
|
|
@ -27,6 +27,7 @@
|
||||||
<Feature Id="ProductFeature" Title="$(var.Name)">
|
<Feature Id="ProductFeature" Title="$(var.Name)">
|
||||||
<ComponentGroupRef Id="ProductComponents" />
|
<ComponentGroupRef Id="ProductComponents" />
|
||||||
<ComponentGroupRef Id="OpenSslComponents" />
|
<ComponentGroupRef Id="OpenSslComponents" />
|
||||||
|
<ComponentGroupRef Id="PluginsComponents" />
|
||||||
<MergeRef Id="CRT" />
|
<MergeRef Id="CRT" />
|
||||||
</Feature>
|
</Feature>
|
||||||
|
|
||||||
|
@ -69,6 +70,7 @@
|
||||||
<Directory Id="INSTALLFOLDER" Name="$(var.Name)">
|
<Directory Id="INSTALLFOLDER" Name="$(var.Name)">
|
||||||
<Merge Id="CRT" Language="0" SourceFile="$(var.CRT)" DiskId="1" />
|
<Merge Id="CRT" Language="0" SourceFile="$(var.CRT)" DiskId="1" />
|
||||||
<Directory Id="OpenSslDir" Name="OpenSSL" />
|
<Directory Id="OpenSslDir" Name="OpenSSL" />
|
||||||
|
<Directory Id="PluginsDir" Name="Plugins" />
|
||||||
</Directory>
|
</Directory>
|
||||||
</Directory>
|
</Directory>
|
||||||
<Directory Id="ProgramMenuFolder" />
|
<Directory Id="ProgramMenuFolder" />
|
||||||
|
@ -130,5 +132,12 @@
|
||||||
<File Source="$(var.ResPath)/openssl/synergy.conf" />
|
<File Source="$(var.ResPath)/openssl/synergy.conf" />
|
||||||
</Component>
|
</Component>
|
||||||
</ComponentGroup>
|
</ComponentGroup>
|
||||||
|
|
||||||
|
<ComponentGroup Id="PluginsComponents" Directory="PluginsDir">
|
||||||
|
<Component Id="Plugins" Guid="0AB05500-0D04-4932-9B07-EDDA052796E2">
|
||||||
|
<File Source="$(var.BinPath)/plugins/ns.dll" />
|
||||||
|
</Component>
|
||||||
|
</ComponentGroup>
|
||||||
|
|
||||||
</Fragment>
|
</Fragment>
|
||||||
</Wix>
|
</Wix>
|
||||||
|
|
Loading…
Reference in New Issue