Mercurial > pidgin.yaz
comparison libpurple/protocols/jabber/jabber.c @ 23603:05d3447fb34e
disapproval of revision '3d39da6c8014095cac3a0741bf6fc26219e7aff8'
author | Daniel Atallah <daniel.atallah@gmail.com> |
---|---|
date | Thu, 17 Jul 2008 04:49:35 +0000 |
parents | aaaff38e144f |
children |
comparison
equal
deleted
inserted
replaced
23602:aaaff38e144f | 23603:05d3447fb34e |
---|---|
59 | 59 |
60 #define JABBER_CONNECT_STEPS (js->gsc ? 9 : 5) | 60 #define JABBER_CONNECT_STEPS (js->gsc ? 9 : 5) |
61 | 61 |
62 static PurplePlugin *my_protocol = NULL; | 62 static PurplePlugin *my_protocol = NULL; |
63 GList *jabber_features = NULL; | 63 GList *jabber_features = NULL; |
64 static GSList *registered_commands = NULL; | |
65 | 64 |
66 static void jabber_unregister_account_cb(JabberStream *js); | 65 static void jabber_unregister_account_cb(JabberStream *js); |
67 | 66 |
68 static void jabber_stream_init(JabberStream *js) | 67 static void jabber_stream_init(JabberStream *js) |
69 { | 68 { |
1387 void jabber_idle_set(PurpleConnection *gc, int idle) | 1386 void jabber_idle_set(PurpleConnection *gc, int idle) |
1388 { | 1387 { |
1389 JabberStream *js = gc->proto_data; | 1388 JabberStream *js = gc->proto_data; |
1390 | 1389 |
1391 js->idle = idle ? time(NULL) - idle : idle; | 1390 js->idle = idle ? time(NULL) - idle : idle; |
1392 } | |
1393 | |
1394 void jabber_features_uninit(void) { | |
1395 for(; jabber_features; jabber_features = g_list_delete_link(jabber_features, jabber_features)) { | |
1396 JabberFeature *feat = (JabberFeature*)jabber_features->data; | |
1397 g_free(feat->shortname); | |
1398 g_free(feat->namespace); | |
1399 g_free(feat); | |
1400 } | |
1401 } | 1391 } |
1402 | 1392 |
1403 void jabber_add_feature(const char *shortname, const char *namespace, JabberFeatureEnabled cb) { | 1393 void jabber_add_feature(const char *shortname, const char *namespace, JabberFeatureEnabled cb) { |
1404 JabberFeature *feat; | 1394 JabberFeature *feat; |
1405 | 1395 |
2346 gboolean jabber_offline_message(const PurpleBuddy *buddy) | 2336 gboolean jabber_offline_message(const PurpleBuddy *buddy) |
2347 { | 2337 { |
2348 return TRUE; | 2338 return TRUE; |
2349 } | 2339 } |
2350 | 2340 |
2351 void jabber_unregister_commands(void) { | |
2352 for(; registered_commands; registered_commands = g_slist_delete_link(registered_commands, registered_commands)) { | |
2353 purple_cmd_unregister(GPOINTER_TO_INT(registered_commands->data)); | |
2354 } | |
2355 } | |
2356 | |
2357 void jabber_register_commands(void) | 2341 void jabber_register_commands(void) |
2358 { | 2342 { |
2359 PurpleCmdId cid; | 2343 purple_cmd_register("config", "", PURPLE_CMD_P_PRPL, |
2360 | |
2361 cid = purple_cmd_register("config", "", PURPLE_CMD_P_PRPL, | |
2362 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY, | 2344 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY, |
2363 "prpl-jabber", jabber_cmd_chat_config, | 2345 "prpl-jabber", jabber_cmd_chat_config, |
2364 _("config: Configure a chat room."), NULL); | 2346 _("config: Configure a chat room."), NULL); |
2365 if (cid > 0) | 2347 purple_cmd_register("configure", "", PURPLE_CMD_P_PRPL, |
2366 registered_commands = g_slist_prepend(registered_commands, GINT_TO_POINTER(cid)); | |
2367 cid = purple_cmd_register("configure", "", PURPLE_CMD_P_PRPL, | |
2368 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY, | 2348 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY, |
2369 "prpl-jabber", jabber_cmd_chat_config, | 2349 "prpl-jabber", jabber_cmd_chat_config, |
2370 _("configure: Configure a chat room."), NULL); | 2350 _("configure: Configure a chat room."), NULL); |
2371 if (cid > 0) | 2351 purple_cmd_register("nick", "s", PURPLE_CMD_P_PRPL, |
2372 registered_commands = g_slist_prepend(registered_commands, GINT_TO_POINTER(cid)); | |
2373 cid = purple_cmd_register("nick", "s", PURPLE_CMD_P_PRPL, | |
2374 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY, | 2352 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY, |
2375 "prpl-jabber", jabber_cmd_chat_nick, | 2353 "prpl-jabber", jabber_cmd_chat_nick, |
2376 _("nick <new nickname>: Change your nickname."), | 2354 _("nick <new nickname>: Change your nickname."), |
2377 NULL); | 2355 NULL); |
2378 if (cid > 0) | 2356 purple_cmd_register("part", "s", PURPLE_CMD_P_PRPL, |
2379 registered_commands = g_slist_prepend(registered_commands, GINT_TO_POINTER(cid)); | |
2380 cid = purple_cmd_register("part", "s", PURPLE_CMD_P_PRPL, | |
2381 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY | | 2357 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY | |
2382 PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS, "prpl-jabber", | 2358 PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS, "prpl-jabber", |
2383 jabber_cmd_chat_part, _("part [room]: Leave the room."), | 2359 jabber_cmd_chat_part, _("part [room]: Leave the room."), |
2384 NULL); | 2360 NULL); |
2385 if (cid > 0) | 2361 purple_cmd_register("register", "", PURPLE_CMD_P_PRPL, |
2386 registered_commands = g_slist_prepend(registered_commands, GINT_TO_POINTER(cid)); | |
2387 cid = purple_cmd_register("register", "", PURPLE_CMD_P_PRPL, | |
2388 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY, | 2362 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY, |
2389 "prpl-jabber", jabber_cmd_chat_register, | 2363 "prpl-jabber", jabber_cmd_chat_register, |
2390 _("register: Register with a chat room."), NULL); | 2364 _("register: Register with a chat room."), NULL); |
2391 if (cid > 0) | |
2392 registered_commands = g_slist_prepend(registered_commands, GINT_TO_POINTER(cid)); | |
2393 /* XXX: there needs to be a core /topic cmd, methinks */ | 2365 /* XXX: there needs to be a core /topic cmd, methinks */ |
2394 cid = purple_cmd_register("topic", "s", PURPLE_CMD_P_PRPL, | 2366 purple_cmd_register("topic", "s", PURPLE_CMD_P_PRPL, |
2395 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY | | 2367 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY | |
2396 PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS, "prpl-jabber", | 2368 PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS, "prpl-jabber", |
2397 jabber_cmd_chat_topic, | 2369 jabber_cmd_chat_topic, |
2398 _("topic [new topic]: View or change the topic."), | 2370 _("topic [new topic]: View or change the topic."), |
2399 NULL); | 2371 NULL); |
2400 if (cid > 0) | 2372 purple_cmd_register("ban", "ws", PURPLE_CMD_P_PRPL, |
2401 registered_commands = g_slist_prepend(registered_commands, GINT_TO_POINTER(cid)); | |
2402 cid = purple_cmd_register("ban", "ws", PURPLE_CMD_P_PRPL, | |
2403 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY | | 2373 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY | |
2404 PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS, "prpl-jabber", | 2374 PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS, "prpl-jabber", |
2405 jabber_cmd_chat_ban, | 2375 jabber_cmd_chat_ban, |
2406 _("ban <user> [reason]: Ban a user from the room."), | 2376 _("ban <user> [reason]: Ban a user from the room."), |
2407 NULL); | 2377 NULL); |
2408 if (cid > 0) | 2378 purple_cmd_register("affiliate", "ws", PURPLE_CMD_P_PRPL, |
2409 registered_commands = g_slist_prepend(registered_commands, GINT_TO_POINTER(cid)); | |
2410 cid = purple_cmd_register("affiliate", "ws", PURPLE_CMD_P_PRPL, | |
2411 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY | | 2379 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY | |
2412 PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS, "prpl-jabber", | 2380 PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS, "prpl-jabber", |
2413 jabber_cmd_chat_affiliate, | 2381 jabber_cmd_chat_affiliate, |
2414 _("affiliate <user> <owner|admin|member|outcast|none>: Set a user's affiliation with the room."), | 2382 _("affiliate <user> <owner|admin|member|outcast|none>: Set a user's affiliation with the room."), |
2415 NULL); | 2383 NULL); |
2416 if (cid > 0) | 2384 purple_cmd_register("role", "ws", PURPLE_CMD_P_PRPL, |
2417 registered_commands = g_slist_prepend(registered_commands, GINT_TO_POINTER(cid)); | |
2418 cid = purple_cmd_register("role", "ws", PURPLE_CMD_P_PRPL, | |
2419 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY | | 2385 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY | |
2420 PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS, "prpl-jabber", | 2386 PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS, "prpl-jabber", |
2421 jabber_cmd_chat_role, | 2387 jabber_cmd_chat_role, |
2422 _("role <user> <moderator|participant|visitor|none>: Set a user's role in the room."), | 2388 _("role <user> <moderator|participant|visitor|none>: Set a user's role in the room."), |
2423 NULL); | 2389 NULL); |
2424 if (cid > 0) | 2390 purple_cmd_register("invite", "ws", PURPLE_CMD_P_PRPL, |
2425 registered_commands = g_slist_prepend(registered_commands, GINT_TO_POINTER(cid)); | |
2426 cid = purple_cmd_register("invite", "ws", PURPLE_CMD_P_PRPL, | |
2427 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY | | 2391 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY | |
2428 PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS, "prpl-jabber", | 2392 PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS, "prpl-jabber", |
2429 jabber_cmd_chat_invite, | 2393 jabber_cmd_chat_invite, |
2430 _("invite <user> [message]: Invite a user to the room."), | 2394 _("invite <user> [message]: Invite a user to the room."), |
2431 NULL); | 2395 NULL); |
2432 if (cid > 0) | 2396 purple_cmd_register("join", "ws", PURPLE_CMD_P_PRPL, |
2433 registered_commands = g_slist_prepend(registered_commands, GINT_TO_POINTER(cid)); | |
2434 cid = purple_cmd_register("join", "ws", PURPLE_CMD_P_PRPL, | |
2435 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY | | 2397 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY | |
2436 PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS, "prpl-jabber", | 2398 PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS, "prpl-jabber", |
2437 jabber_cmd_chat_join, | 2399 jabber_cmd_chat_join, |
2438 _("join: <room> [password]: Join a chat on this server."), | 2400 _("join: <room> [password]: Join a chat on this server."), |
2439 NULL); | 2401 NULL); |
2440 if (cid > 0) | 2402 purple_cmd_register("kick", "ws", PURPLE_CMD_P_PRPL, |
2441 registered_commands = g_slist_prepend(registered_commands, GINT_TO_POINTER(cid)); | |
2442 cid = purple_cmd_register("kick", "ws", PURPLE_CMD_P_PRPL, | |
2443 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY | | 2403 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY | |
2444 PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS, "prpl-jabber", | 2404 PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS, "prpl-jabber", |
2445 jabber_cmd_chat_kick, | 2405 jabber_cmd_chat_kick, |
2446 _("kick <user> [reason]: Kick a user from the room."), | 2406 _("kick <user> [reason]: Kick a user from the room."), |
2447 NULL); | 2407 NULL); |
2448 if (cid > 0) | 2408 purple_cmd_register("msg", "ws", PURPLE_CMD_P_PRPL, |
2449 registered_commands = g_slist_prepend(registered_commands, GINT_TO_POINTER(cid)); | |
2450 cid = purple_cmd_register("msg", "ws", PURPLE_CMD_P_PRPL, | |
2451 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY, | 2409 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY, |
2452 "prpl-jabber", jabber_cmd_chat_msg, | 2410 "prpl-jabber", jabber_cmd_chat_msg, |
2453 _("msg <user> <message>: Send a private message to another user."), | 2411 _("msg <user> <message>: Send a private message to another user."), |
2454 NULL); | 2412 NULL); |
2455 if (cid > 0) | 2413 purple_cmd_register("ping", "w", PURPLE_CMD_P_PRPL, |
2456 registered_commands = g_slist_prepend(registered_commands, GINT_TO_POINTER(cid)); | |
2457 cid = purple_cmd_register("ping", "w", PURPLE_CMD_P_PRPL, | |
2458 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_IM | | 2414 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_IM | |
2459 PURPLE_CMD_FLAG_PRPL_ONLY, | 2415 PURPLE_CMD_FLAG_PRPL_ONLY, |
2460 "prpl-jabber", jabber_cmd_ping, | 2416 "prpl-jabber", jabber_cmd_ping, |
2461 _("ping <jid>: Ping a user/component/server."), | 2417 _("ping <jid>: Ping a user/component/server."), |
2462 NULL); | 2418 NULL); |
2463 if (cid > 0) | 2419 purple_cmd_register("buzz", "s", PURPLE_CMD_P_PRPL, |
2464 registered_commands = g_slist_prepend(registered_commands, GINT_TO_POINTER(cid)); | |
2465 cid = purple_cmd_register("buzz", "s", PURPLE_CMD_P_PRPL, | |
2466 PURPLE_CMD_FLAG_IM | PURPLE_CMD_FLAG_PRPL_ONLY, | 2420 PURPLE_CMD_FLAG_IM | PURPLE_CMD_FLAG_PRPL_ONLY, |
2467 "prpl-jabber", jabber_cmd_buzz, | 2421 "prpl-jabber", jabber_cmd_buzz, |
2468 _("buzz: Buzz a user to get their attention"), NULL); | 2422 _("buzz: Buzz a user to get their attention"), NULL); |
2469 if (cid > 0) | |
2470 registered_commands = g_slist_prepend(registered_commands, GINT_TO_POINTER(cid)); | |
2471 } | 2423 } |
2472 | 2424 |
2473 void | 2425 void |
2474 jabber_init_plugin(PurplePlugin *plugin) | 2426 jabber_init_plugin(PurplePlugin *plugin) |
2475 { | 2427 { |