diff options
Diffstat (limited to 'protocols/msn/msn.h')
| -rw-r--r-- | protocols/msn/msn.h | 170 | 
1 files changed, 80 insertions, 90 deletions
diff --git a/protocols/msn/msn.h b/protocols/msn/msn.h index 438b2174..6022bc31 100644 --- a/protocols/msn/msn.h +++ b/protocols/msn/msn.h @@ -1,4 +1,4 @@ -  /********************************************************************\ +/********************************************************************\    * BitlBee -- An IRC to other IM-networks gateway                     *    *                                                                    *    * Copyright 2002-2012 Wilmer van der Gaast and others                * @@ -34,9 +34,9 @@  #define SB_KEEPALIVE_MESSAGE "\r\r\rDONT HANG UP ON ME!\r\r\r"  #ifdef DEBUG_MSN -#define debug( text... ) imcb_log( ic, text ); +#define debug(text ...) imcb_log(ic, text);  #else -#define debug( text... ) +#define debug(text ...)  #endif  /* This should be MSN Messenger 7.0.0813 @@ -68,30 +68,29 @@  #define MSN_CAP2        0x0000  #define MSN_MESSAGE_HEADERS "MIME-Version: 1.0\r\n" \ -                            "Content-Type: text/plain; charset=UTF-8\r\n" \ -                            "User-Agent: BitlBee " BITLBEE_VERSION "\r\n" \ -                            "X-MMS-IM-Format: FN=MS%20Shell%20Dlg; EF=; CO=0; CS=0; PF=0\r\n" \ -                            "\r\n" +	"Content-Type: text/plain; charset=UTF-8\r\n" \ +	"User-Agent: BitlBee " BITLBEE_VERSION "\r\n" \ +	"X-MMS-IM-Format: FN=MS%20Shell%20Dlg; EF=; CO=0; CS=0; PF=0\r\n" \ +	"\r\n"  #define MSN_TYPING_HEADERS "MIME-Version: 1.0\r\n" \ -                           "Content-Type: text/x-msmsgscontrol\r\n" \ -                           "TypingUser: %s\r\n" \ -                           "\r\n\r\n" +	"Content-Type: text/x-msmsgscontrol\r\n" \ +	"TypingUser: %s\r\n" \ +	"\r\n\r\n"  #define MSN_NUDGE_HEADERS "MIME-Version: 1.0\r\n" \ -			  "Content-Type: text/x-msnmsgr-datacast\r\n" \ -			  "\r\n" \ -			  "ID: 1\r\n" \ -			  "\r\n" +	"Content-Type: text/x-msnmsgr-datacast\r\n" \ +	"\r\n" \ +	"ID: 1\r\n" \ +	"\r\n"  #define MSN_SB_KEEPALIVE_HEADERS "MIME-Version: 1.0\r\n" \ -                                 "Content-Type: text/x-ping\r\n" \ -                                 "\r\n\r\n" +	"Content-Type: text/x-ping\r\n" \ +	"\r\n\r\n"  #define PROFILE_URL "http://members.msn.com/" -typedef enum -{ +typedef enum {  	MSN_GOT_PROFILE = 1,  	MSN_GOT_PROFILE_DN = 2,  	MSN_DONE_ADL = 4, @@ -99,43 +98,41 @@ typedef enum  	MSN_EMAIL_UNVERIFIED = 16,  } msn_flags_t; -struct msn_handler_data -{ +struct msn_handler_data {  	int fd, inpa;  	int rxlen;  	char *rxq; -	 +  	int msglen;  	char *cmd_text; -	 +  	/* Either ic or sb */  	gpointer data; -	 -	int (*exec_command) ( struct msn_handler_data *handler, char **cmd, int count ); -	int (*exec_message) ( struct msn_handler_data *handler, char *msg, int msglen, char **cmd, int count ); + +	int (*exec_command) (struct msn_handler_data *handler, char **cmd, int count); +	int (*exec_message) (struct msn_handler_data *handler, char *msg, int msglen, char **cmd, int count);  }; -struct msn_data -{ +struct msn_data {  	struct im_connection *ic; -	 +  	struct msn_handler_data ns[1];  	msn_flags_t flags; -	 +  	int trId;  	char *tokens[4];  	char *lock_key, *pp_policy;  	char *uuid; -	 +  	GSList *msgq, *grpq, *soapq;  	GSList *switchboards;  	int sb_failures;  	time_t first_sb_failure; -	 +  	const struct msn_away_state *away_state;  	GSList *groups;  	char *profile_rid; -	 +  	/* Mostly used for sending the ADL command; since MSNP13 the client  	   is responsible for downloading the contact list and then sending  	   it to the MSNP server. */ @@ -143,54 +140,48 @@ struct msn_data  	int adl_todo;  }; -struct msn_switchboard -{ +struct msn_switchboard {  	struct im_connection *ic; -	 +  	/* The following two are also in the handler. TODO: Clean up. */  	int fd;  	gint inp;  	struct msn_handler_data *handler;  	gint keepalive; -	 +  	int trId;  	int ready; -	 +  	int session;  	char *key; -	 +  	GSList *msgq;  	char *who;  	struct groupchat *chat;  }; -struct msn_away_state -{ +struct msn_away_state {  	char code[4];  	char name[16];  }; -struct msn_status_code -{ +struct msn_status_code {  	int number;  	char *text;  	int flags;  }; -struct msn_message -{ +struct msn_message {  	char *who;  	char *text;  }; -struct msn_groupadd -{ +struct msn_groupadd {  	char *who;  	char *group;  }; -typedef enum -{ +typedef enum {  	MSN_BUDDY_FL = 1,   /* Warning: FL,AL,BL *must* be 1,2,4. */  	MSN_BUDDY_AL = 2,  	MSN_BUDDY_BL = 4, @@ -200,14 +191,12 @@ typedef enum  	MSN_BUDDY_FED = 512,  } msn_buddy_flags_t; -struct msn_buddy_data -{ +struct msn_buddy_data {  	char *cid;  	msn_buddy_flags_t flags;  }; -struct msn_group -{ +struct msn_group {  	char *name;  	char *id;  }; @@ -215,8 +204,8 @@ struct msn_group  /* Bitfield values for msn_status_code.flags */  #define STATUS_FATAL            1  #define STATUS_SB_FATAL         2 -#define STATUS_SB_IM_SPARE	4	/* Make one-to-one conversation switchboard available again, invite failed. */ -#define STATUS_SB_CHAT_SPARE	8	/* Same, but also for groupchats (not used yet). */ +#define STATUS_SB_IM_SPARE      4       /* Make one-to-one conversation switchboard available again, invite failed. */ +#define STATUS_SB_CHAT_SPARE    8       /* Same, but also for groupchats (not used yet). */  extern int msn_chat_id;  extern const struct msn_away_state msn_away_state_list[]; @@ -231,47 +220,48 @@ extern GSList *msn_connections;  extern GSList *msn_switchboards;  /* ns.c */ -int msn_ns_write( struct im_connection *ic, int fd, const char *fmt, ... ) G_GNUC_PRINTF( 3, 4 ); -gboolean msn_ns_connect( struct im_connection *ic, struct msn_handler_data *handler, const char *host, int port ); -void msn_ns_close( struct msn_handler_data *handler ); -void msn_auth_got_passport_token( struct im_connection *ic, const char *token, const char *error ); -void msn_auth_got_contact_list( struct im_connection *ic ); -int msn_ns_finish_login( struct im_connection *ic ); -int msn_ns_sendmessage( struct im_connection *ic, struct bee_user *bu, const char *text ); -void msn_ns_oim_send_queue( struct im_connection *ic, GSList **msgq ); +int msn_ns_write(struct im_connection *ic, int fd, const char *fmt, ...) G_GNUC_PRINTF(3, 4); +gboolean msn_ns_connect(struct im_connection *ic, struct msn_handler_data *handler, const char *host, int port); +void msn_ns_close(struct msn_handler_data *handler); +void msn_auth_got_passport_token(struct im_connection *ic, const char *token, const char *error); +void msn_auth_got_contact_list(struct im_connection *ic); +int msn_ns_finish_login(struct im_connection *ic); +int msn_ns_sendmessage(struct im_connection *ic, struct bee_user *bu, const char *text); +void msn_ns_oim_send_queue(struct im_connection *ic, GSList **msgq);  /* msn_util.c */ -int msn_buddy_list_add( struct im_connection *ic, msn_buddy_flags_t list, const char *who, const char *realname_, const char *group ); -int msn_buddy_list_remove( struct im_connection *ic, msn_buddy_flags_t list, const char *who, const char *group ); -void msn_buddy_ask( bee_user_t *bu ); -char **msn_linesplit( char *line ); -int msn_handler( struct msn_handler_data *h ); -void msn_msgq_purge( struct im_connection *ic, GSList **list ); -char *msn_p11_challenge( char *challenge ); -gint msn_domaintree_cmp( gconstpointer a_, gconstpointer b_ ); -struct msn_group *msn_group_by_name( struct im_connection *ic, const char *name ); -struct msn_group *msn_group_by_id( struct im_connection *ic, const char *id ); -int msn_ns_set_display_name( struct im_connection *ic, const char *value ); -const char *msn_normalize_handle( const char *handle ); +int msn_buddy_list_add(struct im_connection *ic, msn_buddy_flags_t list, const char *who, const char *realname_, +                       const char *group); +int msn_buddy_list_remove(struct im_connection *ic, msn_buddy_flags_t list, const char *who, const char *group); +void msn_buddy_ask(bee_user_t *bu); +char **msn_linesplit(char *line); +int msn_handler(struct msn_handler_data *h); +void msn_msgq_purge(struct im_connection *ic, GSList **list); +char *msn_p11_challenge(char *challenge); +gint msn_domaintree_cmp(gconstpointer a_, gconstpointer b_); +struct msn_group *msn_group_by_name(struct im_connection *ic, const char *name); +struct msn_group *msn_group_by_id(struct im_connection *ic, const char *id); +int msn_ns_set_display_name(struct im_connection *ic, const char *value); +const char *msn_normalize_handle(const char *handle);  /* tables.c */ -const struct msn_away_state *msn_away_state_by_number( int number ); -const struct msn_away_state *msn_away_state_by_code( char *code ); -const struct msn_away_state *msn_away_state_by_name( char *name ); -const struct msn_status_code *msn_status_by_number( int number ); +const struct msn_away_state *msn_away_state_by_number(int number); +const struct msn_away_state *msn_away_state_by_code(char *code); +const struct msn_away_state *msn_away_state_by_name(char *name); +const struct msn_status_code *msn_status_by_number(int number);  /* sb.c */ -int msn_sb_write( struct msn_switchboard *sb, const char *fmt, ... ) G_GNUC_PRINTF( 2, 3 );; -struct msn_switchboard *msn_sb_create( struct im_connection *ic, char *host, int port, char *key, int session ); -struct msn_switchboard *msn_sb_by_handle( struct im_connection *ic, const char *handle ); -struct msn_switchboard *msn_sb_by_chat( struct groupchat *c ); -struct msn_switchboard *msn_sb_spare( struct im_connection *ic ); -int msn_sb_sendmessage( struct msn_switchboard *sb, char *text ); -struct groupchat *msn_sb_to_chat( struct msn_switchboard *sb ); -void msn_sb_destroy( struct msn_switchboard *sb ); -gboolean msn_sb_connected( gpointer data, gint source, b_input_condition cond ); -int msn_sb_write_msg( struct im_connection *ic, struct msn_message *m ); -void msn_sb_start_keepalives( struct msn_switchboard *sb, gboolean initial ); -void msn_sb_stop_keepalives( struct msn_switchboard *sb ); +int msn_sb_write(struct msn_switchboard *sb, const char *fmt, ...) G_GNUC_PRINTF(2, 3);; +struct msn_switchboard *msn_sb_create(struct im_connection *ic, char *host, int port, char *key, int session); +struct msn_switchboard *msn_sb_by_handle(struct im_connection *ic, const char *handle); +struct msn_switchboard *msn_sb_by_chat(struct groupchat *c); +struct msn_switchboard *msn_sb_spare(struct im_connection *ic); +int msn_sb_sendmessage(struct msn_switchboard *sb, char *text); +struct groupchat *msn_sb_to_chat(struct msn_switchboard *sb); +void msn_sb_destroy(struct msn_switchboard *sb); +gboolean msn_sb_connected(gpointer data, gint source, b_input_condition cond); +int msn_sb_write_msg(struct im_connection *ic, struct msn_message *m); +void msn_sb_start_keepalives(struct msn_switchboard *sb, gboolean initial); +void msn_sb_stop_keepalives(struct msn_switchboard *sb);  #endif //_MSN_H  | 
