diff options
Diffstat (limited to 'dev/msyncclient.c')
-rw-r--r-- | dev/msyncclient.c | 180 |
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; -} |