/*------------------------------------------------------------------------ * Enable the user to change their PIN. * * @param action The action object */ static void mxit_change_pin_action( PurplePluginAction* action ) { PurpleConnection* gc = (PurpleConnection*) action->context; PurpleRequestFields* fields = NULL; PurpleRequestFieldGroup* group = NULL; PurpleRequestField* field = NULL; purple_debug_info( MXIT_PLUGIN_ID, "mxit_change_pin_action\n" ); fields = purple_request_fields_new(); group = purple_request_field_group_new( NULL ); purple_request_fields_add_group( fields, group ); /* pin */ field = purple_request_field_string_new( "pin", _( "PIN" ), purple_connection_get_password( gc ), FALSE ); purple_request_field_string_set_masked( field, TRUE ); purple_request_field_group_add_field( group, field ); /* verify pin */ field = purple_request_field_string_new( "pin2", _( "Verify PIN" ), purple_connection_get_password( gc ), FALSE ); purple_request_field_string_set_masked( field, TRUE ); purple_request_field_group_add_field( group, field ); /* (reference: "libpurple/request.h") */ purple_request_fields( gc, _( "Change PIN" ), _( "Change MXit PIN" ), NULL, fields, _( "Set" ), G_CALLBACK( mxit_change_pin_cb ), _( "Cancel" ), NULL, purple_request_cpar_from_connection(gc), gc ); }
void auth_token_captcha_input_cb(PurpleUtilFetchUrlData *url_data, gpointer user_data, const gchar *url_text, gsize len, const gchar *error_message) { PurpleAccount *account; PurpleRequestFields *fields; PurpleRequestFieldGroup *group; PurpleRequestField *field; qq_buddy_opt_req *opt_req = (qq_buddy_opt_req *)user_data; gchar *end_of_headers, *p; guint header_len, content_len; g_return_if_fail(opt_req && opt_req->gc && opt_req->uid>0 ); g_return_if_fail(url_text && len>0); account = purple_connection_get_account(opt_req->gc); end_of_headers = strstr(url_text, "\r\n\r\n"); if (end_of_headers) { header_len = (end_of_headers + 4 - url_text); } p = find_header_content(url_text, header_len, "\nContent-Length: ", sizeof("\nContent-Length: ") - 1); if (p) { sscanf(p, "%" G_GSIZE_FORMAT, &content_len); } else { purple_debug_error("QQ", "can not parse http header, maybe it's chunked!"); } p = find_header_content(url_text, header_len, "\ngetqqsession: ", sizeof("\ngetqqsession: ") - 1); if (!p) purple_debug_error("QQ", "can not find qqsession in http header!"); opt_req->session_len = strstr(p, "\r\n")-p; opt_req->session = g_new0(guint8, opt_req->session_len); g_memmove(opt_req->session, p, opt_req->session_len); fields = purple_request_fields_new(); group = purple_request_field_group_new(NULL); purple_request_fields_add_group(fields, group); field = purple_request_field_image_new("captcha_img", _("Captcha Image"), url_text+header_len, content_len); purple_request_field_group_add_field(group, field); field = purple_request_field_string_new("captcha_code", _("Enter code"), "", FALSE); purple_request_field_string_set_masked(field, FALSE); purple_request_field_group_add_field(group, field); purple_request_fields(account, _("QQ Captcha Verification"), _("QQ Captcha Verification"), _("Enter the text from the image"), fields, _("OK"), G_CALLBACK(auth_token_captcha_input_ok_cb), _("Cancel"), G_CALLBACK(auth_token_captcha_input_cancel_cb), account, NULL, NULL, opt_req); }
static void plainprpl_change_address(PurpleBlistNode *node, gpointer userdata) { PurpleBuddy *buddy; plain_buddy_state *bstate; char *request_str; const char *addr_str; PurpleRequestFields *fields; PurpleRequestFieldGroup *group; PurpleRequestField *field; fields = purple_request_fields_new(); group = purple_request_field_group_new(NULL); purple_request_fields_add_group(fields, group); buddy = (PurpleBuddy *) node; bstate = purple_buddy_get_protocol_data(buddy); if (bstate) { addr_str = purple_blist_node_get_string(PURPLE_BLIST_NODE(buddy), "addr_str"); field = purple_request_field_string_new("addr_str", _("Address"), addr_str, FALSE); purple_request_field_string_set_masked(field, FALSE); purple_request_field_group_add_field(group, field); request_str = g_strdup_printf("Address to reach buddy '%s'.", buddy->name); purple_request_fields(buddy->account, "Change Address", request_str, NULL, fields, _("OK"), G_CALLBACK(plainprpl_change_address_ok), _("Cancel"), G_CALLBACK(plainprpl_change_address_cancel), NULL, NULL, NULL, (void *) buddy ); g_free(request_str); } else { purple_debug_info("plainprpl", "Buddy %s has no bstate set.\n", buddy->name); } }