1 #ifndef _TOC_H 2 #define _TOC_H 3 4 #include <stdio.h> 5 #include <stdlib.h> 6 #include <sys/time.h> 7 #include "ll.h" 8 9 /* TOC DEFS */ 10 #define FLAPON "FLAPON\r\n\r\n" 11 #define MSG_LEN 2048 12 #define BUF_LEN MSG_LEN 13 #define MAX_OUTPUT_MSG_LEN 4096 14 #define BUF_LONG BUF_LEN * 2 15 #define LANGUAGE "english" 16 #define REVISION "gaim-libtoc:$Revision: 40 $" 17 #define ROAST "Tic/Toc" 18 #define TOC_HOST "toc.oscar.aol.com" 19 #define TOC_PORT 9898 20 #define AUTH_HOST "login.oscar.aol.com" 21 #define AUTH_PORT 5190 22 #define LAGOMETER_STR "123CHECKLAG456" 23 24 /* connection states */ 25 #define STATE_OFFLINE 0 26 #define STATE_FLAPON 1 27 #define STATE_SIGNON_REQUEST 2 28 #define STATE_SIGNON_ACK 3 29 #define STATE_CONFIG 4 30 #define STATE_ONLINE 5 31 32 /* communication types */ 33 #define TYPE_SIGNON 1 34 #define TYPE_DATA 2 35 #define TYPE_ERROR 3 36 #define TYPE_SIGNOFF 4 37 #define TYPE_KEEPALIVE 5 38 39 /* permit modes */ 40 #define PERMIT_PERMITALL 1 41 #define PERMIT_DENYALL 2 42 #define PERMIT_PERMITSOME 3 43 #define PERMIT_DENYSOME 4 44 45 /* User Types */ 46 #define UC_AOL 1 47 #define UC_ADMIN 2 48 #define UC_UNCONFIRMED 4 49 #define UC_NORMAL 8 50 #define UC_UNAVAILABLE 16 51 52 53 /* INTERFACE */ 54 55 #define TOC_HANDLE 1 56 #define TOC_RAW_HANDLE 2 57 58 /* The following can be handlers in either normal or raw mode */ 59 60 #define TOC_SIGN_ON 0 61 #define TOC_CONFIG 1 62 #define TOC_NICK 2 63 #define TOC_IM_IN 3 64 #define TOC_UPDATE_BUDDY 4 65 #define TOC_ERROR 5 66 #define TOC_EVILED 6 67 #define TOC_CHAT_JOIN 7 68 #define TOC_CHAT_IN 8 69 #define TOC_CHAT_UPDATE_BUDDY 9 70 #define TOC_CHAT_INVITE 10 71 #define TOC_CHAT_LEFT 11 72 #define TOC_GOTO_URL 12 73 #define TOC_DIR_STATUS 13 74 75 /* TEMP */ 76 #define TOC_REINSTALL_TIMER 19 77 78 /* Special HANDLES -- can only be used in Normal mode */ 79 80 #define TOC_SOCKFD 20 81 #define TOC_RM_SOCKFD 21 82 #define TOC_RECIEVED_IM TOC_IM_IN 83 #define TOC_BUDDY_LOGGED_ON 22 84 #define TOC_BUDDY_LOGGED_OFF 23 85 #define TOC_CONNECT_MSGS 24 86 #define TOC_TRANSLATED_ERROR 25 87 #define TOC_BUDDY_LEFT_CHAT 26 88 #define TOC_BUDDY_JOIN_CHAT 27 89 #define TOC_LAG_UPDATE 28 90 #define TOC_WENT_IDLE 29 91 92 93 #define TOC_DEBUG_LOG "/tmp/aim-bx.log" 94 95 /* structs */ 96 struct sflap_hdr { 97 unsigned char ast; 98 unsigned char type; 99 unsigned short seqno; 100 unsigned short len; 101 }; 102 103 struct signon { 104 unsigned int ver; 105 unsigned short tag; 106 unsigned short namelen; 107 char username[80]; 108 }; 109 110 111 struct buddy { 112 char name[80]; 113 int present; 114 int log_timer; 115 int evil; 116 time_t signon; 117 time_t idle; 118 int uc; 119 }; 120 121 122 struct group { 123 char name[80]; 124 LL members; 125 }; 126 127 struct buddy_chat { 128 LL in_room; 129 LL ignored; 130 int makesound; 131 int id; 132 int init_chat; 133 char name[80]; 134 }; 135 136 137 138 /* toc.c */ 139 int toc_login(char *username, char *password); 140 int toc_signon(char *username, char *password); 141 int wait_reply(char *buffer, int buflen); 142 unsigned char *roast_password(char *pass); 143 char *print_header(void *hdr_v); 144 int toc_wait_signon(); 145 char *toc_wait_config(); 146 int sflap_send(char *buf, int olen, int type); 147 int toc_signoff(); 148 void toc_close(); 149 void toc_build_config(char *s, int len); 150 void parse_toc_buddy_list(char *); 151 void translate_toc_error_code(char *c); 152 153 extern int state; 154 /* extern int inpa; */ 155 156 157 /* util.c */ 158 void set_state(int i); 159 int escape_message(char *msg); 160 char *normalize(char *s); 161 void strdown(char *s); 162 int escape_text(char *msg); 163 void toc_debug_printf(char *fmt, ...); 164 void toc_msg_printf(int type, char *fmt, ...); 165 char *strip_html(char *text); 166 167 168 /* network.c */ 169 unsigned int *get_address(char *hostname); 170 int connect_address(unsigned int addy, unsigned short port); 171 172 173 /* server.c */ 174 void serv_finish_login(); 175 void serv_add_buddy(char *name); 176 void serv_remove_buddy(char *name); 177 void serv_set_info(char *info); 178 void serv_get_info(char *name); 179 int serv_got_im(char *name, char *message, int away); 180 void serv_add_buddies(LL buddies); 181 void serv_send_im(char *name, char *message); 182 void serv_got_update(char *name, int loggedin, int evil, time_t signon, time_t idle, int type); 183 void serv_close(); 184 void serv_save_config(); 185 void serv_warn(char *name, int anon); 186 void serv_add_permit(char *); 187 void serv_add_deny(char *); 188 void serv_set_permit_deny(); 189 void serv_got_joined_chat(int id, char *name); 190 void serv_got_chat_left(int id); 191 void serv_accept_chat(int); 192 void serv_join_chat(int, char *); 193 void serv_chat_invite(int, char *, char *); 194 void serv_chat_leave(int); 195 void serv_chat_whisper(int, char *, char *); 196 void serv_chat_send(int, char *); 197 void serv_chat_warn(int id, char *user, int anon); 198 void serv_get_dir(char *name); 199 void serv_set_dir(char *first, char *middle, char *last, char *maiden, char *city, char *state, char *country, char *email, int web); 200 void serv_dir_search(char *first, char *middle, char *last, char *maiden, char *city, char *state, char *country, char *email); 201 void serv_touch_idle(); 202 void serv_set_idle(int time); 203 int check_idle(); 204 void serv_set_away(char *message); 205 206 extern int idle_timer; 207 extern time_t login_time; 208 extern int is_idle; 209 extern int lag_ms; 210 extern int permdeny; 211 extern int my_evil; 212 extern int is_away; 213 extern int time_to_idle; 214 215 216 /* misc.c */ 217 void save_prefs(); 218 void misc_free_group(void *); 219 void misc_free_buddy_chat(void *); 220 void misc_free_invited_chats(void *); 221 222 extern char aim_host[512]; 223 extern int aim_port; 224 extern char login_host[512]; 225 extern int login_port; 226 extern char toc_addy[16]; 227 extern char aim_username[80]; 228 extern char aim_password[16]; 229 extern char *quad_addr; 230 extern char debug_buff[1024]; 231 extern char user_info[2048]; 232 extern int registered; 233 extern char *USER_CLASSES[5]; 234 extern char *PERMIT_MODES[4]; 235 236 237 /* buddy.c */ 238 struct buddy *add_buddy(char *group, char *buddy); 239 struct buddy *find_buddy(char *who); 240 struct group *add_group(char *group); 241 struct group *find_group(char *group); 242 int user_add_buddy(char *group,char *buddy); 243 int user_remove_buddy(char *buddy); 244 int remove_group(char *group, char *newgroup, int mode); 245 int add_permit(char *sn); 246 int remove_permit(char *sn); 247 int add_deny(char *sn); 248 int remove_deny(char *sn); 249 int buddy_chat_invite(char *chat, char *buddy, char *msg); 250 void buddy_chat_join(char *chan); 251 int buddy_chat_leave(char *chan); 252 struct buddy_chat *find_buddy_chat(char *chat); 253 struct buddy_chat *buddy_chat_getbyid(int id); 254 int buddy_chat_warn(char *chat, char *user, int anon); 255 256 extern LL groups; 257 extern LL permit; /* The list of people permitted */ 258 extern LL deny; /* The list of people denied */ 259 extern LL buddy_chats; 260 extern LL invited_chats; 261 262 263 /* inteface.c */ 264 void init_toc(); 265 void init_lists(); 266 int install_handler(int type, int (*func)(int, char **)); 267 int install_raw_handler(int type, int (*func)(int, char *)); 268 int use_handler(int mode,int type, void *args); 269 270 extern int (*TOC_RAW_HANDLERS[30])(int, char *); 271 extern int (*TOC_HANDLERS[30])(int, char **); 272 273 274 /* EXTERNAL FUNCTIONS */ 275 276 extern int toc_add_input_stream(int,int (*)(int)); 277 extern int toc_remove_input_stream(int); 278 279 #endif // _TOC_H 280