Removed remnants of synmacph tool #4398

This commit is contained in:
Nick Bolton 2015-03-02 17:50:42 +00:00
parent f5cac2846e
commit c05d7fad36
6 changed files with 1 additions and 225 deletions

View File

@ -817,12 +817,6 @@ class InternalCommands:
shutil.copy(targetDir + "/synergys", bundleBinDir)
shutil.copy(targetDir + "/syntool", bundleBinDir)
if self.macSdk == "10.9":
launchServicesDir = dir + "/Synergy.app/Contents/Library/LaunchServices/"
if not os.path.exists(launchServicesDir):
os.makedirs(launchServicesDir)
shutil.copy(targetDir + "/synmacph", launchServicesDir)
if self.enableMakeGui:
self.loadConfig()

View File

@ -90,8 +90,6 @@ HEADERS += src/MainWindow.h \
RESOURCES += res/Synergy.qrc
RC_FILE = res/win/Synergy.rc
macx {
HEADERS += src/AXDatabaseCleaner.h
OBJECTIVE_SOURCES += src/AXDatabaseCleaner.mm
QMAKE_INFO_PLIST = res/mac/Info.plist
TARGET = Synergy
QSYNERGY_ICON.files = res/mac/Synergy.icns

View File

@ -17,9 +17,5 @@
<key>CFBundleIdentifier</key>
<string>synergy</string>
<key>SMPrivilegedExecutables</key>
<dict>
<key>synmacph</key>
<string>anchor apple generic and identifier &quot;synmacph&quot; and (certificate leaf[field.1.2.840.113635.100.6.1.9] /* exists */ or certificate 1[field.1.2.840.113635.100.6.2.6] /* exists */ and certificate leaf[field.1.2.840.113635.100.6.1.13] /* exists */ and certificate leaf[subject.OU] = SP58PFWX5L)</string>
</dict>
</dict>
</plist>

View File

@ -1,42 +0,0 @@
/*
* synergy -- mouse and keyboard sharing utility
* Copyright (C) 2014 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 COPYING 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 <AvailabilityInternal.h>
// HACK: ideally this file should not be included in project,
// if it is below marvericks, but it seems that .pro can't
// specify mac version
#if __MAC_OS_X_VERSION_MIN_REQUIRED >= 1090
class AXDatabaseCleaner {
public:
AXDatabaseCleaner();
~AXDatabaseCleaner();
bool loadPrivilegeHelper();
bool xpcConnect();
bool privilegeCommand(const char* command);
private:
class Private;
Private* m_private;
bool m_waitForResponse;
};
#endif

View File

@ -1,166 +0,0 @@
/*
* synergy -- mouse and keyboard sharing utility
* Copyright (C) 2014 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 COPYING 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/>.
*/
#import "AXDatabaseCleaner.h"
#if __MAC_OS_X_VERSION_MIN_REQUIRED >= 1090
#import <Cocoa/Cocoa.h>
#if __MAC_OS_X_VERSION_MIN_REQUIRED >= 1060
#import <ServiceManagement/ServiceManagement.h>
#endif
#import <Security/Authorization.h>
#import <QMessageBox>
#import <QTime>
const NSString* const label = @"synmacph";
class AXDatabaseCleaner::Private {
public:
NSAutoreleasePool* autoReleasePool;
AuthorizationRef authRef;
xpc_connection_t xpcConnection;
};
AXDatabaseCleaner::AXDatabaseCleaner()
{
m_private = new Private;
m_private->autoReleasePool = [[NSAutoreleasePool alloc] init];
m_waitForResponse = false;
}
AXDatabaseCleaner::~AXDatabaseCleaner()
{
[m_private->autoReleasePool release];
delete m_private;
}
bool AXDatabaseCleaner::loadPrivilegeHelper()
{
#if __MAC_OS_X_VERSION_MIN_REQUIRED >= 1090 // mavericks
OSStatus status = AuthorizationCreate(NULL, kAuthorizationEmptyEnvironment, kAuthorizationFlagDefaults, &m_private->authRef);
if (status != errAuthorizationSuccess) {
assert(NO);
m_private->authRef = NULL;
}
AuthorizationItem authItem = {kSMRightBlessPrivilegedHelper, 0, NULL, 0};
AuthorizationRights authRights = {1, &authItem};
AuthorizationFlags flags = kAuthorizationFlagDefaults
| kAuthorizationFlagInteractionAllowed
| kAuthorizationFlagPreAuthorize
| kAuthorizationFlagExtendRights;
BOOL result = NO;
NSError* error = nil;
status = AuthorizationCopyRights(m_private->authRef, &authRights, kAuthorizationEmptyEnvironment, flags, NULL);
if (status != errAuthorizationSuccess) {
error = [NSError errorWithDomain:NSOSStatusErrorDomain code:status userInfo:nil];
}
else {
CFErrorRef cfError;
result = (BOOL)SMJobBless(kSMDomainSystemLaunchd, (CFStringRef)label, m_private->authRef, &cfError);
if (!result) {
error = CFBridgingRelease(cfError);
}
}
if (!result) {
assert(error != nil);
NSLog(@"bless error: domain= %@ / code= %d", [error domain], (int) [error code]);
return false;
}
return true;
}
bool AXDatabaseCleaner::xpcConnect()
{
const char *cStr = [label cStringUsingEncoding:NSASCIIStringEncoding];
m_private->xpcConnection = xpc_connection_create_mach_service(
cStr,
NULL,
XPC_CONNECTION_MACH_SERVICE_PRIVILEGED);
if (!m_private->xpcConnection) {
NSLog(@"failed to create xpc connection");
return false;
}
xpc_connection_set_event_handler(m_private->xpcConnection, ^(xpc_object_t event) {
xpc_type_t type = xpc_get_type(event);
if (type == XPC_TYPE_ERROR) {
if (event == XPC_ERROR_CONNECTION_INTERRUPTED) {
NSLog(@"xpc connection interupted");
}
else if (event == XPC_ERROR_CONNECTION_INVALID) {
NSLog(@"xpc connection invalid, releasing");
xpc_release(m_private->xpcConnection);
}
else {
NSLog(@"unexpected xpc connection error");
}
}
else {
NSLog(@"unexpected xpc connection event");
}
});
xpc_connection_resume(m_private->xpcConnection);
return true;
}
bool AXDatabaseCleaner::privilegeCommand(const char* command)
{
xpc_object_t message = xpc_dictionary_create(NULL, NULL, 0);
xpc_dictionary_set_string(message, "request", command);
m_waitForResponse = true;
xpc_connection_send_message_with_reply(
m_private->xpcConnection,
message,
dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0),
^(xpc_object_t event) {
const char* response = xpc_dictionary_get_string(event, "reply");
NSLog(@"reply from helper tool: %s", response);
m_waitForResponse = false;
});
QTime time = QTime::currentTime();
time.start();
while (m_waitForResponse) {
sleep(1);
if (time.elapsed() > 10000) {
QMessageBox::critical(NULL, "Synergy",
QObject::tr("No response from helper tool.Restart Synergy may solve this problem."));
return false;
}
}
#endif
return true;
}
#endif

View File

@ -32,10 +32,6 @@
#if defined(Q_OS_MAC)
#include <Carbon/Carbon.h>
#if __MAC_OS_X_VERSION_MIN_REQUIRED >= 1090
#include "AXDatabaseCleaner.h"
#endif
#endif
class QThreadImpl : public QThread