4 * Copyright (c) 2007-2009 by Art Cancro
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 3 of the License, or
9 * (at your option) any later version.
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
16 * You should have received a copy of the GNU General Public License
17 * along with this program; if not, write to the Free Software
18 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
21 typedef struct _citxmpp { /* Information about the current session */
22 XML_Parser xp; /* XML parser instance for incoming client stream */
23 char server_name[256]; /* who they think we are */
27 char client_jid[256]; /* "full JID" of the client */
28 int last_event_processed;
30 char iq_type[256]; /* for <iq> stanzas */
34 char iq_client_username[256]; /* username requested by the client (NON SASL ONLY) */
35 char iq_client_password[256]; /* password requested by the client (NON SASL ONLY) */
36 char iq_client_resource[256]; /* resource name requested by the client */
37 int iq_session; /* nonzero == client is requesting a session */
38 char iq_query_xmlns[256]; /* Namespace of <query> */
40 char sasl_auth_mech[32]; /* SASL auth mechanism requested by the client */
43 char *message_body; /* Message body in transit */
44 int html_tag_level; /* <html> tag nesting level */
46 int bind_requested; /* In this stanza, client is asking server to bind a resource. */
47 int ping_requested; /* In this stanza, client is pinging the server. */
50 #define XMPP ((citxmpp *)CC->session_specific_data)
53 struct xmpp_event *next;
58 int session_which_generated_this_event;
61 extern struct xmpp_event *xmpp_queue;
62 extern int queue_event_seq;
69 void xmpp_cleanup_function(void);
70 void xmpp_greeting(void);
71 void xmpp_command_loop(void);
72 void xmpp_async_loop(void);
73 void xmpp_sasl_auth(char *, char *);
74 void xmpp_output_auth_mechs(void);
75 void xmpp_query_namespace(char *, char *, char *, char *);
76 void xmpp_wholist_presence_dump(void);
77 void xmpp_output_incoming_messages(void);
78 void xmpp_queue_event(int, char *);
79 void xmpp_process_events(void);
80 void xmpp_presence_notify(char *, int);
81 void xmpp_roster_item(struct CitContext *);
82 void xmpp_send_message(char *, char *);
83 void xmpp_non_sasl_authenticate(char *, char *, char *, char *);
84 void xmpp_massacre_roster(void);
85 void xmpp_delete_old_buddies_who_no_longer_exist_from_the_client_roster(void);
86 int xmpp_is_visible(struct CitContext *from, struct CitContext *to_whom);