summaryrefslogtreecommitdiffstats
path: root/dev/lckdclient.c
diff options
context:
space:
mode:
Diffstat (limited to 'dev/lckdclient.c')
-rw-r--r--dev/lckdclient.c163
1 files changed, 0 insertions, 163 deletions
diff --git a/dev/lckdclient.c b/dev/lckdclient.c
deleted file mode 100644
index 08d798f..0000000
--- a/dev/lckdclient.c
+++ /dev/null
@@ -1,163 +0,0 @@
-/*
- * lckdclient.c
- * Rudimentary command line interface to the Lockdown protocol
- *
- * Copyright (c) 2008 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 <stdlib.h>
-#include <string.h>
-#include <readline/readline.h>
-#include <readline/history.h>
-
-#include <libimobiledevice/libimobiledevice.h>
-#include <libimobiledevice/lockdown.h>
-
-static char** get_tokens(const char *str)
-{
- char *strcp = strdup(str);
- char *p;
- char res_max = 8;
- char **result = NULL;
- int cnt = 0;
-
- p = strtok(strcp, " ");
- if (!p) {
- result = (char**)malloc(2 * sizeof(char*));
- result[0] = strdup(str);
- result[1] = NULL;
- return result;
- }
-
- result = (char**)malloc(res_max * sizeof(char*));
- memset(result, 0, res_max * sizeof(char*));
-
- while (p) {
- if (cnt >= res_max) {
- res_max += 8;
- result = (char**)realloc(result, res_max * sizeof(char*));
- }
- result[cnt] = strdup(p);
- cnt++;
- p = strtok(NULL, " ");
- }
-
- if (cnt >= res_max) {
- res_max += 1;
- result = (char**)realloc(result, res_max * sizeof(char*));
- result[cnt] = NULL;
- }
-
- return result;
-}
-
-static void strfreev(char **strs)
-{
- int i = 0;
- while (strs && strs[i]) {
- free(strs[i]);
- i++;
- }
- free(strs);
-}
-
-int main(int argc, char *argv[])
-{
- lockdownd_client_t client = NULL;
- idevice_t phone = NULL;
-
- idevice_set_debug_level(1);
-
- if (IDEVICE_E_SUCCESS != idevice_new(&phone, NULL)) {
- printf("No device found, is it plugged in?\n");
- return -1;
- }
-
- char *udid = NULL;
- if (IDEVICE_E_SUCCESS == idevice_get_udid(phone, &udid)) {
- printf("DeviceUniqueID : %s\n", udid);
- }
- if (udid)
- free(udid);
-
- if (LOCKDOWN_E_SUCCESS != lockdownd_client_new_with_handshake(phone, &client, "lckdclient")) {
- idevice_free(phone);
- return -1;
- }
-
- using_history();
- int loop = 1;
- while (loop) {
- char *cmd = readline("> ");
- if (cmd) {
-
- char **args = get_tokens(cmd);
-
- int len = 0;
- while (args && args[len]) {
- len++;
- }
-
- if (len > 0) {
- add_history(cmd);
- if (!strcmp(*args, "quit"))
- loop = 0;
-
- if (!strcmp(*args, "get") && len >= 2) {
- plist_t value = NULL;
- if (LOCKDOWN_E_SUCCESS == lockdownd_get_value(client, len == 3 ? *(args + 1):NULL, len == 3 ? *(args + 2):*(args + 1), &value))
- {
- char *xml = NULL;
- uint32_t length;
- plist_to_xml(value, &xml, &length);
- printf("Success : value = %s\n", xml);
- free(xml);
- }
- else
- printf("Error\n");
-
- if (value)
- plist_free(value);
- }
-
- if (!strcmp(*args, "start") && len == 2) {
- lockdownd_service_descriptor_t service = NULL;
- if(LOCKDOWN_E_SUCCESS == lockdownd_start_service(client, *(args + 1), &service)) {
- printf("started service %s on port %i\n", *(args + 1), service->port);
- if (service) {
- lockdownd_service_descriptor_free(service);
- service = NULL;
- }
- }
- else
- {
- printf("failed to start service %s on device.\n", *(args + 1));
- }
- }
- }
- strfreev(args);
- }
- free(cmd);
- cmd = NULL;
- }
- clear_history();
- lockdownd_client_free(client);
- idevice_free(phone);
-
- return 0;
-}