diff options
| -rw-r--r-- | dev/main.c | 40 | ||||
| -rw-r--r-- | include/Makefile.am | 2 | ||||
| -rw-r--r-- | include/libiphone/libiphone.h | 33 | ||||
| -rw-r--r-- | include/libiphone/notification_proxy.h | 46 | ||||
| -rw-r--r-- | src/NotificationProxy.c | 39 | ||||
| -rw-r--r-- | src/NotificationProxy.h | 7 | 
6 files changed, 80 insertions, 87 deletions
| @@ -26,6 +26,7 @@  #include <libiphone/libiphone.h>  #include <libiphone/afc.h> +#include <libiphone/notification_proxy.h>  #include "../src/utils.h"  void notifier(const char *notification) @@ -38,16 +39,16 @@ void notifier(const char *notification)  void perform_notification(iphone_device_t phone, iphone_lckd_client_t control, const char *notification)  {  	int nport = 0; -	iphone_np_client_t np; +	np_client_t np;  	iphone_lckd_start_service(control, "com.apple.mobile.notification_proxy", &nport);  	if (nport) {  		printf("::::::::::::::: np was started ::::::::::::\n"); -		iphone_np_new_client(phone, nport, &np); +		np_new_client(phone, nport, &np);  		if (np) {  			printf("::::::::: PostNotification %s\n", notification); -			iphone_np_post_notification(np, notification); -			iphone_np_free_client(np); +			np_post_notification(np, notification); +			np_free_client(np);  		}  	} else {  		printf("::::::::::::::: np was NOT started ::::::::::::\n"); @@ -61,7 +62,7 @@ int main(int argc, char *argv[])  	iphone_lckd_client_t control = NULL;  	iphone_device_t phone = NULL;  	uint64_t lockfile = 0; -	iphone_np_client_t gnp = NULL; +	np_client_t gnp = NULL;  	if (argc > 1 && !strcasecmp(argv[1], "--debug")) {  		iphone_set_debug(1); @@ -104,7 +105,7 @@ int main(int argc, char *argv[])  			iphone_lckd_start_service(control, "com.apple.mobile.notification_proxy", &npp);  			if (npp) {  				printf("Notification Proxy started.\n"); -				iphone_np_new_client(phone, npp, &gnp); +				np_new_client(phone, npp, &gnp);  			} else {  				printf("ERROR: Notification proxy could not be started.\n");  			} @@ -115,8 +116,8 @@ int main(int argc, char *argv[])  					NP_SYNC_RESUME_REQUEST,  					NULL  				}; -				iphone_np_observe_notifications(gnp, nspec); -				iphone_np_set_notify_callback(gnp, notifier); +				np_observe_notifications(gnp, nspec); +				np_set_notify_callback(gnp, notifier);  			}  			perform_notification(phone, control, NP_SYNC_WILL_START); @@ -219,28 +220,7 @@ int main(int argc, char *argv[])  		if (gnp && lockfile) {  			char *noti; -			/* -			noti = NULL; -			iphone_np_get_notification(gnp, ¬i); -			if (noti) { -				printf("------> received notification '%s'\n", noti); -				free(noti); -			}*/ -  			printf("XXX sleeping\n"); -			/*for (i = 0; i < 5; i++) { -				noti = NULL; -				printf("--- getting notification\n"); -				iphone_np_get_notification(gnp, ¬i); -				if (noti) { -					printf("------> received notification '%s'\n", noti); -					free(noti); -				} else { -					printf("---- no notification\n"); -				} -				sleep(1); -			} -			*/  			sleep(5);  			//perform_notification(phone, control, NP_SYNC_DID_FINISH); @@ -253,7 +233,7 @@ int main(int argc, char *argv[])  		}  		if (gnp) { -			iphone_np_free_client(gnp); +			np_free_client(gnp);  			gnp = NULL;  		} diff --git a/include/Makefile.am b/include/Makefile.am index 4c17261..d8ae1e4 100644 --- a/include/Makefile.am +++ b/include/Makefile.am @@ -1 +1 @@ -nobase_include_HEADERS = libiphone/libiphone.h libiphone/afc.h +nobase_include_HEADERS = libiphone/libiphone.h libiphone/afc.h libiphone/notification_proxy.h diff --git a/include/libiphone/libiphone.h b/include/libiphone/libiphone.h index 3f5d86c..456f000 100644 --- a/include/libiphone/libiphone.h +++ b/include/libiphone/libiphone.h @@ -63,9 +63,6 @@ typedef struct iphone_lckd_client_int *iphone_lckd_client_t;  struct iphone_msync_client_int;  typedef struct iphone_msync_client_int *iphone_msync_client_t; -struct iphone_np_client_int; -typedef struct iphone_np_client_int *iphone_np_client_t; -  //debug related functions  #define DBGMASK_ALL        0xFFFF  #define DBGMASK_NONE       0x0000 @@ -102,36 +99,6 @@ iphone_error_t iphone_msync_free_client(iphone_msync_client_t client);  iphone_error_t iphone_msync_recv(iphone_msync_client_t client, plist_t * plist);  iphone_error_t iphone_msync_send(iphone_msync_client_t client, plist_t plist); -// NotificationProxy related -// notifications for use with post_notification (client --> device) -#define NP_SYNC_WILL_START      "com.apple.itunes-mobdev.syncWillStart" -#define NP_SYNC_DID_START       "com.apple.itunes-mobdev.syncDidStart" -#define NP_SYNC_DID_FINISH      "com.apple.itunes-mobdev.syncDidFinish" - -// notifications for use with observe_notification (device --> client) -#define NP_SYNC_CANCEL_REQUEST  "com.apple.itunes-client.syncCancelRequest" -#define NP_SYNC_SUSPEND_REQUEST "com.apple.itunes-client.syncSuspendRequest" -#define NP_SYNC_RESUME_REQUEST  "com.apple.itunes-client.syncResumeRequest" -#define NP_PHONE_NUMBER_CHANGED "com.apple.mobile.lockdown.phone_number_changed" -#define NP_DEVICE_NAME_CHANGED  "com.apple.mobile.lockdown.device_name_changed" -#define NP_ATTEMPTACTIVATION    "com.apple.springboard.attemptactivation" -#define NP_DS_DOMAIN_CHANGED    "com.apple.mobile.data_sync.domain_changed" -#define NP_APP_INSTALLED        "com.apple.mobile.application_installed" -#define NP_APP_UNINSTALLED      "com.apple.mobile.application_uninstalled" - -iphone_error_t iphone_np_new_client ( iphone_device_t device, int dst_port, iphone_np_client_t *client ); -iphone_error_t iphone_np_free_client ( iphone_np_client_t client ); - -iphone_error_t iphone_np_post_notification ( iphone_np_client_t client, const char *notification ); - -iphone_error_t iphone_np_observe_notification ( iphone_np_client_t client, const char *notification ); -iphone_error_t iphone_np_observe_notifications ( iphone_np_client_t client, const char **notification_spec ); -iphone_error_t iphone_np_get_notification ( iphone_np_client_t client, char **notification ); - -typedef void (*iphone_np_notify_cb_t) ( const char *notification ); - -iphone_error_t iphone_np_set_notify_callback ( iphone_np_client_t client, iphone_np_notify_cb_t notify_cb ); -  #ifdef __cplusplus  }  #endif diff --git a/include/libiphone/notification_proxy.h b/include/libiphone/notification_proxy.h new file mode 100644 index 0000000..9412b4f --- /dev/null +++ b/include/libiphone/notification_proxy.h @@ -0,0 +1,46 @@ +#ifndef NOTIFICATION_PROXY_H +#define NOTIFICATION_PROXY_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include <libiphone/libiphone.h> + +struct np_client_int; +typedef struct np_client_int *np_client_t; + +// NotificationProxy related +// notifications for use with post_notification (client --> device) +#define NP_SYNC_WILL_START      "com.apple.itunes-mobdev.syncWillStart" +#define NP_SYNC_DID_START       "com.apple.itunes-mobdev.syncDidStart" +#define NP_SYNC_DID_FINISH      "com.apple.itunes-mobdev.syncDidFinish" + +// notifications for use with observe_notification (device --> client) +#define NP_SYNC_CANCEL_REQUEST  "com.apple.itunes-client.syncCancelRequest" +#define NP_SYNC_SUSPEND_REQUEST "com.apple.itunes-client.syncSuspendRequest" +#define NP_SYNC_RESUME_REQUEST  "com.apple.itunes-client.syncResumeRequest" +#define NP_PHONE_NUMBER_CHANGED "com.apple.mobile.lockdown.phone_number_changed" +#define NP_DEVICE_NAME_CHANGED  "com.apple.mobile.lockdown.device_name_changed" +#define NP_ATTEMPTACTIVATION    "com.apple.springboard.attemptactivation" +#define NP_DS_DOMAIN_CHANGED    "com.apple.mobile.data_sync.domain_changed" +#define NP_APP_INSTALLED        "com.apple.mobile.application_installed" +#define NP_APP_UNINSTALLED      "com.apple.mobile.application_uninstalled" + +iphone_error_t np_new_client ( iphone_device_t device, int dst_port, np_client_t *client ); +iphone_error_t np_free_client ( np_client_t client ); + +iphone_error_t np_post_notification ( np_client_t client, const char *notification ); + +iphone_error_t np_observe_notification ( np_client_t client, const char *notification ); +iphone_error_t np_observe_notifications ( np_client_t client, const char **notification_spec ); + +typedef void (*np_notify_cb_t) ( const char *notification ); + +iphone_error_t np_set_notify_callback ( np_client_t client, np_notify_cb_t notify_cb ); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/src/NotificationProxy.c b/src/NotificationProxy.c index 6fc048c..374420c 100644 --- a/src/NotificationProxy.c +++ b/src/NotificationProxy.c @@ -25,18 +25,19 @@  #include <arpa/inet.h>  #include <plist/plist.h>  #include "NotificationProxy.h" +#include "iphone.h"  #include "utils.h"  struct np_thread { -	iphone_np_client_t client; -	iphone_np_notify_cb_t cbfunc; +	np_client_t client; +	np_notify_cb_t cbfunc;  };  /** Locks an NP client, done for thread safety stuff.   *   * @param client The NP   */ -static void np_lock(iphone_np_client_t client) +static void np_lock(np_client_t client)  {  	log_debug_msg("NP: Locked\n");  	g_mutex_lock(client->mutex); @@ -46,7 +47,7 @@ static void np_lock(iphone_np_client_t client)   *    * @param client The NP   */ -static void np_unlock(iphone_np_client_t client) +static void np_unlock(np_client_t client)  {  	log_debug_msg("NP: Unlocked\n");  	g_mutex_unlock(client->mutex); @@ -61,7 +62,7 @@ static void np_unlock(iphone_np_client_t client)   *   * @return IPHONE_E_SUCCESS or an error code.   */ -static iphone_error_t np_plist_send(iphone_np_client_t client, plist_t dict) +static iphone_error_t np_plist_send(np_client_t client, plist_t dict)  {  	char *XML_content = NULL;  	uint32_t length = 0; @@ -108,7 +109,7 @@ static iphone_error_t np_plist_send(iphone_np_client_t client, plist_t dict)   *    * @return A handle to the newly-connected client or NULL upon error.   */ -iphone_error_t iphone_np_new_client ( iphone_device_t device, int dst_port, iphone_np_client_t *client ) +iphone_error_t np_new_client ( iphone_device_t device, int dst_port, np_client_t *client )  {  	//makes sure thread environment is available  	if (!g_thread_supported()) @@ -123,7 +124,7 @@ iphone_error_t iphone_np_new_client ( iphone_device_t device, int dst_port, ipho  		return IPHONE_E_UNKNOWN_ERROR; //ret;  	} -	iphone_np_client_t client_loc = (iphone_np_client_t) malloc(sizeof(struct iphone_np_client_int)); +	np_client_t client_loc = (np_client_t) malloc(sizeof(struct np_client_int));  	client_loc->sfd = sfd;  	client_loc->mutex = g_mutex_new(); @@ -138,7 +139,7 @@ iphone_error_t iphone_np_new_client ( iphone_device_t device, int dst_port, ipho   *    * @param client The client to disconnect.   */ -iphone_error_t iphone_np_free_client ( iphone_np_client_t client ) +iphone_error_t np_free_client ( np_client_t client )  {  	if (!client)  		return IPHONE_E_INVALID_ARG; @@ -166,7 +167,7 @@ iphone_error_t iphone_np_free_client ( iphone_np_client_t client )   * @param client The client to send to   * @param notification The notification message to send   */ -iphone_error_t iphone_np_post_notification( iphone_np_client_t client, const char *notification ) +iphone_error_t np_post_notification( np_client_t client, const char *notification )  {  	if (!client || !notification) {  		return IPHONE_E_INVALID_ARG; @@ -202,7 +203,7 @@ iphone_error_t iphone_np_post_notification( iphone_np_client_t client, const cha   * @param client The client to send to   * @param notification The notifications that should be observed.   */ -iphone_error_t iphone_np_observe_notification( iphone_np_client_t client, const char *notification ) +iphone_error_t np_observe_notification( np_client_t client, const char *notification )  {  	if (!client || !notification) {  		return IPHONE_E_INVALID_ARG; @@ -245,7 +246,7 @@ iphone_error_t iphone_np_observe_notification( iphone_np_client_t client, const   *  terminating NULL entry. However this parameter can be NULL; in this case,   *  the default set of notifications will be used.   */ -iphone_error_t iphone_np_observe_notifications( iphone_np_client_t client, const char **notification_spec ) +iphone_error_t np_observe_notifications( np_client_t client, const char **notification_spec )  {  	int i = 0;  	iphone_error_t res = IPHONE_E_UNKNOWN_ERROR; @@ -260,7 +261,7 @@ iphone_error_t iphone_np_observe_notifications( iphone_np_client_t client, const  	}  	while (notifications[i]) { -		res = iphone_np_observe_notification(client, notifications[i]); +		res = np_observe_notification(client, notifications[i]);  		if (res != IPHONE_E_SUCCESS) {  			break;  		} @@ -281,10 +282,10 @@ iphone_error_t iphone_np_observe_notifications( iphone_np_client_t client, const   *         IPHONE_E_TIMEOUT if nothing has been received,   *         or an error value if an error occured.   * - * @note You probably want to check out iphone_np_set_notify_callback - * @see iphone_np_set_notify_callback + * @note You probably want to check out np_set_notify_callback + * @see np_set_notify_callback   */ -iphone_error_t iphone_np_get_notification( iphone_np_client_t client, char **notification ) +static iphone_error_t np_get_notification( np_client_t client, char **notification )  {  	uint32_t bytes = 0;  	iphone_error_t res; @@ -382,7 +383,7 @@ iphone_error_t iphone_np_get_notification( iphone_np_client_t client, char **not  /**   * Internally used thread function.   */ -gpointer iphone_np_notifier( gpointer arg ) +gpointer np_notifier( gpointer arg )  {  	char *notification = NULL;  	struct np_thread *npt = (struct np_thread*)arg; @@ -391,7 +392,7 @@ gpointer iphone_np_notifier( gpointer arg )  	log_debug_msg("%s: starting callback.\n", __func__);  	while (npt->client->sfd >= 0) { -		iphone_np_get_notification(npt->client, ¬ification); +		np_get_notification(npt->client, ¬ification);  		if (notification) {  			npt->cbfunc(notification);  			free(notification); @@ -419,7 +420,7 @@ gpointer iphone_np_notifier( gpointer arg )   * @return IPHONE_E_SUCCESS when the callback was successfully registered,   *         or an error value when an error occured.   */ -iphone_error_t iphone_np_set_notify_callback( iphone_np_client_t client, iphone_np_notify_cb_t notify_cb ) +iphone_error_t np_set_notify_callback( np_client_t client, np_notify_cb_t notify_cb )  {  	if (!client) {  		return IPHONE_E_INVALID_ARG; @@ -442,7 +443,7 @@ iphone_error_t iphone_np_set_notify_callback( iphone_np_client_t client, iphone_  			npt->client = client;  			npt->cbfunc = notify_cb; -			client->notifier = g_thread_create(iphone_np_notifier, npt, TRUE, NULL); +			client->notifier = g_thread_create(np_notifier, npt, TRUE, NULL);  			if (client->notifier) {  				res = IPHONE_E_SUCCESS;  			} diff --git a/src/NotificationProxy.h b/src/NotificationProxy.h index afae98a..a10cde4 100644 --- a/src/NotificationProxy.h +++ b/src/NotificationProxy.h @@ -18,12 +18,11 @@   * 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 "libiphone/libiphone.h" -#include "iphone.h" +#include "libiphone/notification_proxy.h"  #include <glib.h> -struct iphone_np_client_int { +struct np_client_int {  	int sfd;  	GMutex *mutex;  	GThread *notifier; @@ -42,4 +41,4 @@ static const char *np_default_notifications[10] = {  	NULL  }; -gpointer iphone_np_notifier( gpointer arg ); +gpointer np_notifier( gpointer arg ); | 
