diff options
Diffstat (limited to 'tools/idevicebackup2.c')
| -rw-r--r-- | tools/idevicebackup2.c | 25 |
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 | ||
| 94 | static int backup_domain_changed = 0; | 95 | static 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); |
