diff options
author | Wilmer van der Gaast <wilmer@gaast.net> | 2010-07-17 12:34:24 +0100 |
---|---|---|
committer | Wilmer van der Gaast <wilmer@gaast.net> | 2010-07-17 12:34:24 +0100 |
commit | d0527c1845ed1230bbc3b0f94b8643cd8f9fddc3 (patch) | |
tree | 1fc7cae0b3c49031a524707d34b7d6f599330099 /protocols/purple/purple.c | |
parent | 177ffd7da1570485698f6c105374e86c4471c94a (diff) |
libpurple: Handle incoming authorization requests.
Diffstat (limited to 'protocols/purple/purple.c')
-rw-r--r-- | protocols/purple/purple.c | 58 |
1 files changed, 44 insertions, 14 deletions
diff --git a/protocols/purple/purple.c b/protocols/purple/purple.c index 2935609b..4729794d 100644 --- a/protocols/purple/purple.c +++ b/protocols/purple/purple.c @@ -883,20 +883,22 @@ static void *prplcb_request_action( const char *title, const char *primary, cons return pqad; } +/* static void prplcb_request_test() { fprintf( stderr, "bla\n" ); } +*/ static PurpleRequestUiOps bee_request_uiops = { - prplcb_request_test, - prplcb_request_test, + NULL, + NULL, prplcb_request_action, - prplcb_request_test, - prplcb_request_test, - prplcb_request_test, - prplcb_request_test, + NULL, + NULL, + NULL, + NULL, }; static void prplcb_privacy_permit_added( PurpleAccount *account, const char *name ) @@ -1047,17 +1049,45 @@ static PurpleNotifyUiOps bee_notify_uiops = prplcb_notify_userinfo, }; +static void *prplcb_account_request_authorize( PurpleAccount *account, const char *remote_user, + const char *id, const char *alias, const char *message, gboolean on_list, + PurpleAccountRequestAuthorizationCb authorize_cb, PurpleAccountRequestAuthorizationCb deny_cb, void *user_data ) +{ + struct im_connection *ic = purple_ic_by_pa( account ); + char *q; + + if( alias ) + q = g_strdup_printf( "%s (%s) wants to add you to his/her contact " + "list. (%s)", alias, remote_user, message ); + else + q = g_strdup_printf( "%s wants to add you to his/her contact " + "list. (%s)", remote_user, message ); + + imcb_ask_with_free( ic, q, user_data, authorize_cb, deny_cb, NULL ); + g_free( q ); +} + +static PurpleAccountUiOps bee_account_uiops = +{ + NULL, + NULL, + NULL, + prplcb_account_request_authorize, + NULL, +}; + extern PurpleXferUiOps bee_xfer_uiops; static void purple_ui_init() { - purple_blist_set_ui_ops( &bee_blist_uiops ); purple_connections_set_ui_ops( &bee_conn_uiops ); + purple_blist_set_ui_ops( &bee_blist_uiops ); purple_conversations_set_ui_ops( &bee_conv_uiops ); purple_request_set_ui_ops( &bee_request_uiops ); + purple_privacy_set_ui_ops( &bee_privacy_uiops ); purple_notify_set_ui_ops( &bee_notify_uiops ); + purple_accounts_set_ui_ops( &bee_account_uiops ); purple_xfers_set_ui_ops( &bee_xfer_uiops ); - purple_privacy_set_ui_ops( &bee_privacy_uiops ); if( getenv( "BITLBEE_DEBUG" ) ) purple_debug_set_ui_ops( &bee_debug_uiops ); @@ -1076,10 +1106,10 @@ void purple_initmodule() exit( 1 ); } - purple_util_set_user_dir("/tmp"); - purple_debug_set_enabled(FALSE); - purple_core_set_ui_ops(&bee_core_uiops); - purple_eventloop_set_ui_ops(&glib_eventloops); + purple_util_set_user_dir( "/tmp" ); + purple_debug_set_enabled( FALSE ); + purple_core_set_ui_ops( &bee_core_uiops ); + purple_eventloop_set_ui_ops( &glib_eventloops ); if( !purple_core_init( "BitlBee") ) { /* Initializing the core failed. Terminate. */ @@ -1088,7 +1118,7 @@ void purple_initmodule() } /* This seems like stateful shit we don't want... */ - purple_set_blist(purple_blist_new()); + purple_set_blist( purple_blist_new() ); purple_blist_load(); /* Meh? */ @@ -1119,7 +1149,7 @@ void purple_initmodule() funcs.chat_join = purple_chat_join; funcs.transfer_request = purple_transfer_request; - help = g_string_new("BitlBee libpurple module supports the following IM protocols:\n"); + help = g_string_new( "BitlBee libpurple module supports the following IM protocols:\n" ); /* Add a protocol entry to BitlBee's structures for every protocol supported by this libpurple instance. */ |