src/protocols/oscar/oscar.c

changeset 4337
f74d112ccb7c
parent 4336
35df0f5d8651
child 4342
a352530e1a6a
equal deleted inserted replaced
4336:35df0f5d8651 4337:f74d112ccb7c
2056 * Authorization Functions 2056 * Authorization Functions
2057 * Most of these are callbacks from dialogs. They're used by both 2057 * Most of these are callbacks from dialogs. They're used by both
2058 * methods of authorization (SSI and old-school channel 4 ICBM) 2058 * methods of authorization (SSI and old-school channel 4 ICBM)
2059 */ 2059 */
2060 /* When you ask other people for authorization */ 2060 /* When you ask other people for authorization */
2061 static void gaim_auth_request(struct name_data *data) { 2061 static void gaim_auth_request(struct name_data *data, char *msg) {
2062 struct gaim_connection *gc = data->gc; 2062 struct gaim_connection *gc = data->gc;
2063 2063
2064 if (g_slist_find(connections, gc)) { 2064 if (g_slist_find(connections, gc)) {
2065 struct oscar_data *od = gc->proto_data; 2065 struct oscar_data *od = gc->proto_data;
2066 struct buddy *buddy = find_buddy(gc, data->name); 2066 struct buddy *buddy = find_buddy(gc, data->name);
2067 struct group *group = find_group_by_buddy(gc, data->name); 2067 struct group *group = find_group_by_buddy(gc, data->name);
2068 if (buddy && group) { 2068 if (buddy && group) {
2069 debug_printf("ssi: adding buddy %s to group %s\n", buddy->name, group->name); 2069 debug_printf("ssi: adding buddy %s to group %s\n", buddy->name, group->name);
2070 aim_ssi_sendauthrequest(od->sess, od->conn, data->name, "Please authorize me so I can add you to my buddy list."); 2070 aim_ssi_sendauthrequest(od->sess, od->conn, data->name, msg ? msg : _("Please authorize me so I can add you to my buddy list."));
2071 if (!aim_ssi_itemlist_finditem(od->sess->ssi.local, group->name, buddy->name, AIM_SSI_TYPE_BUDDY)) 2071 if (!aim_ssi_itemlist_finditem(od->sess->ssi.local, group->name, buddy->name, AIM_SSI_TYPE_BUDDY))
2072 aim_ssi_addbuddy(od->sess, od->conn, buddy->name, group->name, get_buddy_alias_only(buddy), NULL, NULL, 1); 2072 aim_ssi_addbuddy(od->sess, od->conn, buddy->name, group->name, get_buddy_alias_only(buddy), NULL, NULL, 1);
2073 } 2073 }
2074 } 2074 }
2075 2075 }
2076 gaim_free_name_data(data); 2076
2077 static void gaim_auth_request_msgprompt(struct name_data *data) {
2078 do_prompt_dialog(_("Authorization Request Message:"), _("Please authorize me!"), data, gaim_auth_request, gaim_free_name_data);
2077 } 2079 }
2078 2080
2079 static void gaim_auth_dontrequest(struct name_data *data) { 2081 static void gaim_auth_dontrequest(struct name_data *data) {
2080 struct gaim_connection *gc = data->gc; 2082 struct gaim_connection *gc = data->gc;
2081 2083
2100 2102
2101 dialog_msg = g_strdup_printf(_("The user %s requires authorization before being added to a buddy list. Do you want to send an authorization request?"), nombre); 2103 dialog_msg = g_strdup_printf(_("The user %s requires authorization before being added to a buddy list. Do you want to send an authorization request?"), nombre);
2102 data->gc = gc; 2104 data->gc = gc;
2103 data->name = g_strdup(name); 2105 data->name = g_strdup(name);
2104 data->nick = NULL; 2106 data->nick = NULL;
2105 do_ask_dialog(_("Request Authorization"), dialog_msg, data, _("Request Authorization"), gaim_auth_request, _("Cancel"), gaim_auth_dontrequest, my_protocol->plug ? my_protocol->plug->handle : NULL, FALSE); 2107 do_ask_dialog(_("Request Authorization"), dialog_msg, data, _("Request Authorization"), gaim_auth_request_msgprompt, _("Cancel"), gaim_auth_dontrequest, my_protocol->plug ? my_protocol->plug->handle : NULL, FALSE);
2106 2108
2107 g_free(dialog_msg); 2109 g_free(dialog_msg);
2108 g_free(nombre); 2110 g_free(nombre);
2109 } 2111 }
2110 2112
2128 2130
2129 gaim_free_name_data(data); 2131 gaim_free_name_data(data);
2130 } 2132 }
2131 2133
2132 /* When other people ask you for authorization */ 2134 /* When other people ask you for authorization */
2133 static void gaim_auth_dontgrant(struct name_data *data) { 2135 static void gaim_auth_dontgrant(struct name_data *data, char *msg) {
2134 struct gaim_connection *gc = data->gc; 2136 struct gaim_connection *gc = data->gc;
2135 2137
2136 if (g_slist_find(connections, gc)) { 2138 if (g_slist_find(connections, gc)) {
2137 struct oscar_data *od = gc->proto_data; 2139 struct oscar_data *od = gc->proto_data;
2138 gchar *message;
2139 message = g_strdup_printf(_("No reason given."));
2140 #ifdef NOSSI 2140 #ifdef NOSSI
2141 aim_send_im_ch4(od->sess, data->name, AIM_ICQMSG_AUTHDENIED, message); 2141 aim_send_im_ch4(od->sess, data->name, AIM_ICQMSG_AUTHDENIED, msg ? msg : _("No reason given."));
2142 #else 2142 #else
2143 aim_ssi_sendauthreply(od->sess, od->conn, data->name, 0x00, message); 2143 aim_ssi_sendauthreply(od->sess, od->conn, data->name, 0x00, msg ? msg : _("No reason given."));
2144 #endif 2144 #endif
2145 g_free(message); 2145 }
2146 } 2146 }
2147 2147
2148 gaim_free_name_data(data); 2148 static void gaim_auth_dontgrant_msgprompt(struct name_data *data) {
2149 do_prompt_dialog(_("Authorization Denied Message:"), _("No reason given."), data, gaim_auth_dontgrant, gaim_free_name_data);
2149 } 2150 }
2150 2151
2151 /* When someone sends you contacts */ 2152 /* When someone sends you contacts */
2152 static void gaim_icq_contactadd(struct name_data *data) { 2153 static void gaim_icq_contactadd(struct name_data *data) {
2153 struct gaim_connection *gc = data->gc; 2154 struct gaim_connection *gc = data->gc;
2206 } break; 2207 } break;
2207 2208
2208 case 0x06: { /* Someone requested authorization */ 2209 case 0x06: { /* Someone requested authorization */
2209 if (i >= 6) { 2210 if (i >= 6) {
2210 struct name_data *data = g_new(struct name_data, 1); 2211 struct name_data *data = g_new(struct name_data, 1);
2211 gchar *dialog_msg = g_strdup_printf(_("The user %lu wants to add you to their buddy list for the following reason: %s"), args->uin, msg2[5] ? msg2[5] : _("No reason given.")); 2212 gchar *dialog_msg = g_strdup_printf(_("The user %lu wants to add you to their buddy list for the following reason:\n%s"), args->uin, msg2[5] ? msg2[5] : _("No reason given."));
2212 debug_printf("Received an authorization request from UIN %lu\n", args->uin); 2213 debug_printf("Received an authorization request from UIN %lu\n", args->uin);
2213 data->gc = gc; 2214 data->gc = gc;
2214 data->name = g_strdup_printf("%lu", args->uin); 2215 data->name = g_strdup_printf("%lu", args->uin);
2215 data->nick = NULL; 2216 data->nick = NULL;
2216 do_ask_dialog(_("Authorization Request"), dialog_msg, data, _("Authorize"), gaim_auth_grant, _("Deny"), gaim_auth_dontgrant, my_protocol->plug ? my_protocol->plug->handle : NULL, FALSE); 2217 do_ask_dialog(_("Authorization Request"), dialog_msg, data, _("Authorize"), gaim_auth_grant, _("Deny"), gaim_auth_dontgrant_msgprompt, my_protocol->plug ? my_protocol->plug->handle : NULL, FALSE);
2217 g_free(dialog_msg); 2218 g_free(dialog_msg);
2218 } 2219 }
2219 } break; 2220 } break;
2220 2221
2221 case 0x07: { /* Someone has denied you authorization */ 2222 case 0x07: { /* Someone has denied you authorization */
4356 if (buddy && (get_buddy_alias_only(buddy))) 4357 if (buddy && (get_buddy_alias_only(buddy)))
4357 nombre = g_strdup_printf("%s (%s)", sn, get_buddy_alias_only(buddy)); 4358 nombre = g_strdup_printf("%s (%s)", sn, get_buddy_alias_only(buddy));
4358 else 4359 else
4359 nombre = g_strdup(sn); 4360 nombre = g_strdup(sn);
4360 4361
4361 dialog_msg = g_strdup_printf(_("The user %s wants to add you to their buddy list for the following reason: %s"), nombre, msg ? msg : _("No reason given.")); 4362 dialog_msg = g_strdup_printf(_("The user %s wants to add you to their buddy list for the following reason:\n%s"), nombre, msg ? msg : _("No reason given."));
4362 data = g_new(struct name_data, 1); 4363 data = g_new(struct name_data, 1);
4363 data->gc = gc; 4364 data->gc = gc;
4364 data->name = g_strdup(sn); 4365 data->name = g_strdup(sn);
4365 data->nick = NULL; 4366 data->nick = NULL;
4366 do_ask_dialog(_("Authorization Request"), dialog_msg, data, _("Authorize"), gaim_auth_grant, _("Deny"), gaim_auth_dontgrant, my_protocol->plug ? my_protocol->plug->handle : NULL, FALSE); 4367 do_ask_dialog(_("Authorization Request"), dialog_msg, data, _("Authorize"), gaim_auth_grant, _("Deny"), gaim_auth_dontgrant_msgprompt, my_protocol->plug ? my_protocol->plug->handle : NULL, FALSE);
4367 4368
4368 g_free(dialog_msg); 4369 g_free(dialog_msg);
4369 g_free(nombre); 4370 g_free(nombre);
4370 4371
4371 return 1; 4372 return 1;
5188 struct buddy *buddy = curb->data; 5189 struct buddy *buddy = curb->data;
5189 if (aim_ssi_waitingforauth(od->sess->ssi.local, group->name, buddy->name)) { 5190 if (aim_ssi_waitingforauth(od->sess->ssi.local, group->name, buddy->name)) {
5190 if (get_buddy_alias_only(buddy)) 5191 if (get_buddy_alias_only(buddy))
5191 nombre = g_strdup_printf(" %s (%s)", buddy->name, get_buddy_alias_only(buddy)); 5192 nombre = g_strdup_printf(" %s (%s)", buddy->name, get_buddy_alias_only(buddy));
5192 else 5193 else
5193 nombre = g_strdup(buddy->name); 5194 nombre = g_strdup_printf(" %s", buddy->name);
5194 tmp = g_strdup_printf("%s<BR>%s", text, nombre); 5195 tmp = g_strdup_printf("%s<BR>%s", text, nombre);
5195 g_free(text); 5196 g_free(text);
5196 text = tmp; 5197 text = tmp;
5197 g_free(nombre); 5198 g_free(nombre);
5198 num++; 5199 num++;

mercurial