⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 libxmpp.c

📁 Linux下的多协议即时通讯程序源代码
💻 C
字号:
/* purple * * Purple is the legal property of its developers, whose names are too numerous * to list here.  Please refer to the COPYRIGHT file distributed with this * source distribution. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA * *//* libxmpp is the XMPP protocol plugin. It is linked against libjabbercommon, * which may be used to support other protocols (Bonjour) which may need to * share code. */#include "accountopt.h"#include "internal.h"#include "version.h"#include "iq.h"#include "jabber.h"#include "chat.h"#include "message.h"#include "roster.h"#include "si.h"#include "message.h"#include "presence.h"#include "google.h"static PurplePluginProtocolInfo prpl_info ={#ifdef HAVE_CYRUS_SASL	OPT_PROTO_CHAT_TOPIC | OPT_PROTO_UNIQUE_CHATNAME |	OPT_PROTO_MAIL_CHECK | OPT_PROTO_PASSWORD_OPTIONAL,#else	OPT_PROTO_CHAT_TOPIC | OPT_PROTO_UNIQUE_CHATNAME | OPT_PROTO_MAIL_CHECK,#endif	NULL,							/* user_splits */	NULL,							/* protocol_options */	{"png,gif,jpeg", 32, 32, 96, 96, 8191, PURPLE_ICON_SCALE_SEND | PURPLE_ICON_SCALE_DISPLAY}, /* icon_spec */	jabber_list_icon,				/* list_icon */	jabber_list_emblem,			/* list_emblems */	jabber_status_text,				/* status_text */	jabber_tooltip_text,			/* tooltip_text */	jabber_status_types,			/* status_types */	jabber_blist_node_menu,			/* blist_node_menu */	jabber_chat_info,				/* chat_info */	jabber_chat_info_defaults,		/* chat_info_defaults */	jabber_login,					/* login */	jabber_close,					/* close */	jabber_message_send_im,			/* send_im */	jabber_set_info,				/* set_info */	jabber_send_typing,				/* send_typing */	jabber_buddy_get_info,			/* get_info */	jabber_presence_send,			/* set_status */	jabber_idle_set,				/* set_idle */	NULL,							/* change_passwd */	jabber_roster_add_buddy,		/* add_buddy */	NULL,							/* add_buddies */	jabber_roster_remove_buddy,		/* remove_buddy */	NULL,							/* remove_buddies */	NULL,							/* add_permit */	jabber_google_roster_add_deny,				/* add_deny */	NULL,							/* rem_permit */	jabber_google_roster_rem_deny,				/* rem_deny */	NULL,							/* set_permit_deny */	jabber_chat_join,				/* join_chat */	NULL,							/* reject_chat */	jabber_get_chat_name,			/* get_chat_name */	jabber_chat_invite,				/* chat_invite */	jabber_chat_leave,				/* chat_leave */	NULL,							/* chat_whisper */	jabber_message_send_chat,		/* chat_send */	jabber_keepalive,				/* keepalive */	jabber_register_account,		/* register_user */	jabber_buddy_get_info_chat,		/* get_cb_info */	NULL,							/* get_cb_away */	jabber_roster_alias_change,		/* alias_buddy */	jabber_roster_group_change,		/* group_buddy */	jabber_roster_group_rename,		/* rename_group */	NULL,							/* buddy_free */	jabber_convo_closed,			/* convo_closed */	jabber_normalize,				/* normalize */	jabber_set_buddy_icon,			/* set_buddy_icon */	NULL,							/* remove_group */	jabber_chat_buddy_real_name,	/* get_cb_real_name */	jabber_chat_set_topic,			/* set_chat_topic */	jabber_find_blist_chat,			/* find_blist_chat */	jabber_roomlist_get_list,		/* roomlist_get_list */	jabber_roomlist_cancel,			/* roomlist_cancel */	NULL,							/* roomlist_expand_category */	NULL,							/* can_receive_file */	jabber_si_xfer_send,			/* send_file */	jabber_si_new_xfer,				/* new_xfer */	jabber_offline_message,			/* offline_message */	NULL,							/* whiteboard_prpl_ops */	jabber_prpl_send_raw,			/* send_raw */	jabber_roomlist_room_serialize, /* roomlist_room_serialize */	/* padding */	NULL,	NULL,	NULL,	NULL};static gboolean load_plugin(PurplePlugin *plugin){	purple_signal_register(plugin, "jabber-receiving-xmlnode",			purple_marshal_VOID__POINTER_POINTER, NULL, 2,			purple_value_new(PURPLE_TYPE_SUBTYPE, PURPLE_SUBTYPE_CONNECTION),			purple_value_new_outgoing(PURPLE_TYPE_SUBTYPE, PURPLE_SUBTYPE_XMLNODE));	purple_signal_register(plugin, "jabber-sending-xmlnode",			purple_marshal_VOID__POINTER_POINTER, NULL, 2,			purple_value_new(PURPLE_TYPE_SUBTYPE, PURPLE_SUBTYPE_CONNECTION),			purple_value_new_outgoing(PURPLE_TYPE_SUBTYPE, PURPLE_SUBTYPE_XMLNODE));	purple_signal_register(plugin, "jabber-sending-text",			     purple_marshal_VOID__POINTER_POINTER, NULL, 2,			     purple_value_new(PURPLE_TYPE_SUBTYPE, PURPLE_SUBTYPE_CONNECTION),			     purple_value_new_outgoing(PURPLE_TYPE_STRING));			   	return TRUE;}static gboolean unload_plugin(PurplePlugin *plugin){	purple_signal_unregister(plugin, "jabber-receiving-xmlnode");	purple_signal_unregister(plugin, "jabber-sending-xmlnode");		purple_signal_unregister(plugin, "jabber-sending-text");		return TRUE;}static PurplePluginInfo info ={	PURPLE_PLUGIN_MAGIC,	PURPLE_MAJOR_VERSION,	PURPLE_MINOR_VERSION,	PURPLE_PLUGIN_PROTOCOL,                             /**< type           */	NULL,                                             /**< ui_requirement */	0,                                                /**< flags          */	NULL,                                             /**< dependencies   */	PURPLE_PRIORITY_DEFAULT,                            /**< priority       */	"prpl-jabber",                                    /**< id             */	"XMPP",                                           /**< name           */	VERSION,                                          /**< version        */	                                                  /**  summary        */	N_("XMPP Protocol Plugin"),	                                                  /**  description    */	N_("XMPP Protocol Plugin"),	NULL,                                             /**< author         */	PURPLE_WEBSITE,                                     /**< homepage       */	load_plugin,                                      /**< load           */	unload_plugin,                                    /**< unload         */	NULL,                                             /**< destroy        */	NULL,                                             /**< ui_info        */	&prpl_info,                                       /**< extra_info     */	NULL,                                             /**< prefs_info     */	jabber_actions,	/* padding */	NULL,	NULL,	NULL,	NULL};static voidinit_plugin(PurplePlugin *plugin){        PurpleAccountUserSplit *split;        PurpleAccountOption *option;	/* Translators: 'domain' is used here in the context of Internet domains, e.g. pidgin.im */        split = purple_account_user_split_new(_("Domain"), NULL, '@');        prpl_info.user_splits = g_list_append(prpl_info.user_splits, split);        split = purple_account_user_split_new(_("Resource"), "Home", '/');        prpl_info.user_splits = g_list_append(prpl_info.user_splits, split);        option = purple_account_option_bool_new(_("Force old (port 5223) SSL"), "old_ssl", FALSE);        prpl_info.protocol_options = g_list_append(prpl_info.protocol_options,                        option);        option = purple_account_option_bool_new(                        _("Allow plaintext auth over unencrypted streams"),                        "auth_plain_in_clear", FALSE);        prpl_info.protocol_options = g_list_append(prpl_info.protocol_options,                        option);        option = purple_account_option_int_new(_("Connect port"), "port", 5222);        prpl_info.protocol_options = g_list_append(prpl_info.protocol_options,                        option);        option = purple_account_option_string_new(_("Connect server"),                        "connect_server", NULL);        prpl_info.protocol_options = g_list_append(prpl_info.protocol_options,                        option);        jabber_init_plugin(plugin);        purple_prefs_remove("/plugins/prpl/jabber");        /* XXX - If any other plugin wants SASL this won't be good ... */#ifdef HAVE_CYRUS_SASL        sasl_client_init(NULL);#endif        jabber_register_commands();        jabber_iq_init();}PURPLE_INIT_PLUGIN(jabber, init_plugin, info);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -