90a5127dafc74952f915b317315bd38d2c4b22b5
[citadel.git] / citadel / modules / jabber / serv_xmpp.h
1 /*
2  * $Id$
3  *
4  */
5
6 struct citxmpp {                        /* Information about the current session */
7         XML_Parser xp;                  /* XML parser instance for incoming client stream */
8         char server_name[256];          /* who they think we are */
9         char *chardata;
10         int chardata_len;
11         int chardata_alloc;
12         char client_jid[256];           /* "full JID" of the client */
13         int last_event_processed;
14
15         char iq_type[256];              /* for <iq> stanzas */
16         char iq_id[256];
17         char iq_from[256];
18         char iq_to[256];
19         char iq_client_username[256];   /* username requested by the client (NON SASL ONLY) */
20         char iq_client_password[256];   /* password requested by the client (NON SASL ONLY) */
21         char iq_client_resource[256];   /* resource name requested by the client */
22         int iq_session;                 /* nonzero == client is requesting a session */
23         char iq_query_xmlns[256];       /* Namespace of <query> */
24
25         char sasl_auth_mech[32];        /* SASL auth mechanism requested by the client */
26
27         char message_to[256];
28         char *message_body;             /* Message body in transit */
29         int html_tag_level;             /* <html> tag nesting level */
30
31         int bind_requested;             /* In this stanza, client is asking server to bind a resource. */
32 };
33
34 #define XMPP ((struct citxmpp *)CC->session_specific_data)
35
36 struct xmpp_event {
37         struct xmpp_event *next;
38         int event_seq;
39         time_t event_time;
40         int event_type;
41         char event_jid[256];
42         int session_which_generated_this_event;
43 };
44
45 extern struct xmpp_event *xmpp_queue;
46 extern int queue_event_seq;
47
48 enum {
49         XMPP_EVT_LOGIN,
50         XMPP_EVT_LOGOUT
51 };
52
53 void xmpp_cleanup_function(void);
54 void xmpp_greeting(void);
55 void xmpp_command_loop(void);
56 void xmpp_async_loop(void);
57 void xmpp_sasl_auth(char *, char *);
58 void xmpp_output_auth_mechs(void);
59 void xmpp_query_namespace(char *, char *, char *, char *);
60 void jabber_wholist_presence_dump(void);
61 void jabber_output_incoming_messages(void);
62 void xmpp_queue_event(int, char *);
63 void xmpp_process_events(void);
64 void xmpp_presence_notify(char *, int);
65 void jabber_roster_item(struct CitContext *);
66 void jabber_send_message(char *, char *);
67 void jabber_non_sasl_authenticate(char *, char *, char *, char *);