summaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authorGravatar Martin Szulecki2013-09-21 01:51:42 +0200
committerGravatar Martin Szulecki2013-09-21 01:51:42 +0200
commit1d9f34fb5fa49c31ee30bdc4c98dc9a43bc5afb2 (patch)
treede4a2cf96f85a1f79f67afc33ce6703011ef50b1 /tools
parent0eaa1c53598054ec586108f2dec8b391dc0ac473 (diff)
downloadlibimobiledevice-1d9f34fb5fa49c31ee30bdc4c98dc9a43bc5afb2.tar.gz
libimobiledevice-1d9f34fb5fa49c31ee30bdc4c98dc9a43bc5afb2.tar.bz2
idevicebackup2: Add experimental support for using backups in the cloud
Diffstat (limited to 'tools')
-rw-r--r--tools/idevicebackup2.c25
1 files changed, 22 insertions, 3 deletions
diff --git a/tools/idevicebackup2.c b/tools/idevicebackup2.c
index 47de171..b62a77b 100644
--- a/tools/idevicebackup2.c
+++ b/tools/idevicebackup2.c
@@ -88,7 +88,8 @@ enum cmd_flags {
88 CMD_FLAG_ENCRYPTION_ENABLE = (1 << 6), 88 CMD_FLAG_ENCRYPTION_ENABLE = (1 << 6),
89 CMD_FLAG_ENCRYPTION_DISABLE = (1 << 7), 89 CMD_FLAG_ENCRYPTION_DISABLE = (1 << 7),
90 CMD_FLAG_ENCRYPTION_CHANGEPW = (1 << 8), 90 CMD_FLAG_ENCRYPTION_CHANGEPW = (1 << 8),
91 CMD_FLAG_FORCE_FULL_BACKUP = (1 << 9) 91 CMD_FLAG_FORCE_FULL_BACKUP = (1 << 9),
92 CMD_FLAG_ENABLE_CLOUD_BACKUP = (1 << 10)
92}; 93};
93 94
94static int backup_domain_changed = 0; 95static int backup_domain_changed = 0;
@@ -1280,6 +1281,7 @@ static void print_usage(int argc, char **argv)
1280 printf(" -u, --udid UDID\ttarget specific device by its 40-digit device UDID\n"); 1281 printf(" -u, --udid UDID\ttarget specific device by its 40-digit device UDID\n");
1281 printf(" -s, --source UDID\tuse backup data from device specified by UDID\n"); 1282 printf(" -s, --source UDID\tuse backup data from device specified by UDID\n");
1282 printf(" -i, --interactive\trequest passwords interactively\n"); 1283 printf(" -i, --interactive\trequest passwords interactively\n");
1284 printf(" -c, --cloud\t\tUse cloud storage using iCloud account of device\n");
1283 printf(" -h, --help\t\tprints usage information\n"); 1285 printf(" -h, --help\t\tprints usage information\n");
1284 printf("\n"); 1286 printf("\n");
1285} 1287}
@@ -1377,6 +1379,9 @@ int main(int argc, char *argv[])
1377 backup_password = strdup(argv[i]); 1379 backup_password = strdup(argv[i]);
1378 continue; 1380 continue;
1379 } 1381 }
1382 else if (!strcmp(argv[i], "-c") || !strcmp(argv[i], "--cloud")) {
1383 cmd_flags |= CMD_FLAG_ENABLE_CLOUD_BACKUP;
1384 }
1380 else if (!strcmp(argv[i], "--full")) { 1385 else if (!strcmp(argv[i], "--full")) {
1381 cmd_flags |= CMD_FLAG_FORCE_FULL_BACKUP; 1386 cmd_flags |= CMD_FLAG_FORCE_FULL_BACKUP;
1382 } 1387 }
@@ -1400,9 +1405,9 @@ int main(int argc, char *argv[])
1400 return -1; 1405 return -1;
1401 } 1406 }
1402 if (!strcmp(argv[i], "on")) { 1407 if (!strcmp(argv[i], "on")) {
1403 cmd_flags |= CMD_FLAG_ENCRYPTION_ENABLE; 1408 cmd_flags |= CMD_FLAG_ENCRYPTION_ENABLE;
1404 } else if (!strcmp(argv[i], "off")) { 1409 } else if (!strcmp(argv[i], "off")) {
1405 cmd_flags |= CMD_FLAG_ENCRYPTION_DISABLE; 1410 cmd_flags |= CMD_FLAG_ENCRYPTION_DISABLE;
1406 } else { 1411 } else {
1407 printf("Invalid argument '%s' for encryption command; must be either 'on' or 'off'.\n", argv[i]); 1412 printf("Invalid argument '%s' for encryption command; must be either 'on' or 'off'.\n", argv[i]);
1408 } 1413 }
@@ -1648,6 +1653,20 @@ int main(int argc, char *argv[])
1648 } 1653 }
1649 } 1654 }
1650 1655
1656 opts = plist_new_dict();
1657 if (cmd_flags & CMD_FLAG_ENABLE_CLOUD_BACKUP) {
1658 PRINT_VERBOSE(1, "Enabling cloud backup for device...\n");
1659 } else {
1660 PRINT_VERBOSE(1, "Disabling cloud backup for device...\n");
1661 }
1662 plist_dict_insert_item(opts, "CloudBackupState", plist_new_bool(cmd & CMD_FLAG_ENABLE_CLOUD_BACKUP ? 1: 0));
1663 err = mobilebackup2_send_request(mobilebackup2, "EnableCloudBackup", udid, source_udid, opts);
1664 plist_free(opts);
1665 if (err != MOBILEBACKUP2_E_SUCCESS) {
1666 printf("Error setting cloud backup state on device, error code %d\n", err);
1667 cmd = CMD_LEAVE;
1668 }
1669
1651 uint64_t lockfile = 0; 1670 uint64_t lockfile = 0;
1652 if (cmd == CMD_BACKUP) { 1671 if (cmd == CMD_BACKUP) {
1653 do_post_notification(device, NP_SYNC_WILL_START); 1672 do_post_notification(device, NP_SYNC_WILL_START);