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