summaryrefslogtreecommitdiffstats
path: root/dev/msyncclient.c
diff options
context:
space:
mode:
Diffstat (limited to 'dev/msyncclient.c')
-rw-r--r--dev/msyncclient.c180
1 files changed, 0 insertions, 180 deletions
diff --git a/dev/msyncclient.c b/dev/msyncclient.c
deleted file mode 100644
index b9e39e6..0000000
--- a/dev/msyncclient.c
+++ /dev/null
@@ -1,180 +0,0 @@
-/*
- * msyncclient.c
- * Rudimentary interface to the MobileSync service.
- *
- * Copyright (c) 2009 Jonathan Beck All Rights Reserved.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library 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
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-#include <stdio.h>
-#include <string.h>
-#include <errno.h>
-
-#include <libimobiledevice/libimobiledevice.h>
-#include <libimobiledevice/lockdown.h>
-#include <libimobiledevice/mobilesync.h>
-
-static char check_string(plist_t node, char* string)
-{
- char ret = 1;
- char* msg = NULL;
- plist_type type = plist_get_node_type(node);
- if (PLIST_STRING == type) {
- plist_get_string_val(node, &msg);
- }
- if (PLIST_STRING != type || strcmp(msg, string)) {
- printf("%s: ERROR: MobileSync client did not find %s !\n", __func__, string);
- ret = 0;
- }
- free(msg);
- msg = NULL;
- return ret;
-}
-
-static mobilesync_error_t mobilesync_get_all_contacts(mobilesync_client_t client)
-{
- if (!client)
- return MOBILESYNC_E_INVALID_ARG;
-
- mobilesync_error_t ret = MOBILESYNC_E_UNKNOWN_ERROR;
- plist_t array = NULL;
-
- array = plist_new_array();
- plist_array_append_item(array, plist_new_string("SDMessageSyncDataClassWithDevice"));
- plist_array_append_item(array, plist_new_string("com.apple.Contacts"));
- plist_array_append_item(array, plist_new_string("---"));
- plist_array_append_item(array, plist_new_string("2009-01-09 18:03:58 +0100"));
- plist_array_append_item(array, plist_new_uint(106));
- plist_array_append_item(array, plist_new_string("___EmptyParameterString___"));
-
- ret = mobilesync_send(client, array);
- plist_free(array);
- array = NULL;
-
- ret = mobilesync_receive(client, &array);
-
- plist_free(array);
- array = NULL;
-
- array = plist_new_array();
- plist_array_append_item(array, plist_new_string("SDMessageGetAllRecordsFromDevice"));
- plist_array_append_item(array, plist_new_string("com.apple.Contacts"));
-
- ret = mobilesync_send(client, array);
- plist_free(array);
- array = NULL;
-
- ret = mobilesync_receive(client, &array);
-
- plist_t contact_node;
- plist_t switch_node;
-
- contact_node = plist_array_get_item(array, 0);
- switch_node = plist_array_get_item(array, 0);
-
- while (NULL == switch_node
- && check_string(contact_node, "com.apple.Contacts")
- && check_string(switch_node, "SDMessageDeviceReadyToReceiveChanges")) {
-
- plist_free(array);
- array = NULL;
-
- array = plist_new_array();
- plist_array_append_item(array, plist_new_string("SDMessageAcknowledgeChangesFromDevice"));
- plist_array_append_item(array, plist_new_string("com.apple.Contacts"));
-
- ret = mobilesync_send(client, array);
- plist_free(array);
- array = NULL;
-
- ret = mobilesync_receive(client, &array);
-
- contact_node = plist_array_get_item(array, 0);
- switch_node = plist_array_get_item(array, 0);
- }
-
- array = plist_new_array();
- plist_array_append_item(array, plist_new_string("DLMessagePing"));
- plist_array_append_item(array, plist_new_string("Preparing to get changes for device"));
-
- ret = mobilesync_send(client, array);
- plist_free(array);
- array = NULL;
-
- array = plist_new_array();
- plist_array_append_item(array, plist_new_string("SDMessageProcessChanges"));
- plist_array_append_item(array, plist_new_string("com.apple.Contacts"));
- plist_array_append_item(array, plist_new_dict());
- plist_array_append_item(array, plist_new_bool(0));
-
- plist_t dict = plist_new_dict();
- plist_array_append_item(array, dict);
- plist_t array2 = plist_new_array();
- plist_dict_insert_item(dict, "SyncDeviceLinkEntityNamesKey", array2);
- plist_array_append_item(array2, plist_new_string("com.apple.contacts.Contact"));
- plist_array_append_item(array2, plist_new_string("com.apple.contacts.Group"));
- plist_dict_insert_item(dict, "SyncDeviceLinkAllRecordsOfPulledEntityTypeSentKey", plist_new_bool(0));
-
- ret = mobilesync_send(client, array);
- plist_free(array);
- array = NULL;
-
- ret = mobilesync_receive(client, &array);
- plist_free(array);
- array = NULL;
-
- return ret;
-}
-
-int main(int argc, char *argv[])
-{
- uint16_t port = 0;
- lockdownd_client_t client = NULL;
- idevice_t phone = NULL;
-
- if (argc > 1 && !strcasecmp(argv[1], "--debug"))
- idevice_set_debug_level(1);
-
- if (IDEVICE_E_SUCCESS != idevice_new(&phone, NULL)) {
- printf("No device found, is it plugged in?\n");
- return -1;
- }
-
- if (LOCKDOWN_E_SUCCESS != lockdownd_client_new_with_handshake(phone, &client, "msyncclient")) {
- idevice_free(phone);
- return -1;
- }
-
- lockdownd_start_service(client, "com.apple.mobilesync", &port);
-
- if (port) {
- mobilesync_client_t msync = NULL;
- mobilesync_client_new(phone, port, &msync);
- if (msync) {
- mobilesync_get_all_contacts(msync);
- mobilesync_client_free(msync);
- }
- } else {
- printf("Start service failure.\n");
- }
-
- printf("All done.\n");
-
- lockdownd_client_free(client);
- idevice_free(phone);
-
- return 0;
-}