|
Evan@653
|
1 |
/* include/libgadu.h. Generated from libgadu.h.in by configure. */ |
|
Evan@653
|
2 |
/* $Id: libgadu.h.in,v 1.5.2.1 2007-04-21 23:44:25 wojtekka Exp $ */ |
|
Evan@653
|
3 |
|
|
Evan@653
|
4 |
/* |
|
Evan@653
|
5 |
* (C) Copyright 2001-2003 Wojtek Kaniewski <wojtekka@irc.pl> |
|
Evan@653
|
6 |
* Robert J. Wo�ny <speedy@ziew.org> |
|
Evan@653
|
7 |
* Arkadiusz Mi�kiewicz <arekm@pld-linux.org> |
|
Evan@653
|
8 |
* Tomasz Chili� <chilek@chilan.com> |
|
Evan@653
|
9 |
* Piotr Wysocki <wysek@linux.bydg.org> |
|
Evan@653
|
10 |
* Dawid Jarosz <dawjar@poczta.onet.pl> |
|
Evan@653
|
11 |
* |
|
Evan@653
|
12 |
* This program is free software; you can redistribute it and/or modify |
|
Evan@653
|
13 |
* it under the terms of the GNU Lesser General Public License Version |
|
Evan@653
|
14 |
* 2.1 as published by the Free Software Foundation. |
|
Evan@653
|
15 |
* |
|
Evan@653
|
16 |
* This program is distributed in the hope that it will be useful, |
|
Evan@653
|
17 |
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
Evan@653
|
18 |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
Evan@653
|
19 |
* GNU Lesser General Public License for more details. |
|
Evan@653
|
20 |
* |
|
Evan@653
|
21 |
* You should have received a copy of the GNU Lesser General Public |
|
Evan@653
|
22 |
* License along with this program; if not, write to the Free Software |
|
Evan@653
|
23 |
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, |
|
Evan@653
|
24 |
* USA. |
|
Evan@653
|
25 |
*/ |
|
Evan@653
|
26 |
|
|
Evan@653
|
27 |
#ifndef __GG_LIBGADU_H |
|
Evan@653
|
28 |
#define __GG_LIBGADU_H |
|
Evan@653
|
29 |
|
|
Evan@653
|
30 |
#ifdef __cplusplus |
|
Evan@653
|
31 |
#ifdef _WIN32 |
|
Evan@653
|
32 |
#pragma pack(push, 1) |
|
Evan@653
|
33 |
#endif |
|
Evan@653
|
34 |
extern "C" { |
|
Evan@653
|
35 |
#endif |
|
Evan@653
|
36 |
|
|
Evan@653
|
37 |
#include <sys/types.h> |
|
Evan@653
|
38 |
#include <stdio.h> |
|
Evan@653
|
39 |
#include <stdarg.h> |
|
Evan@653
|
40 |
|
|
Evan@653
|
41 |
/* Defined if libgadu was compiled for bigendian machine. */ |
|
Evan@653
|
42 |
#define GG_CONFIG_BIGENDIAN |
|
Evan@653
|
43 |
|
|
Evan@653
|
44 |
/* Defined if this machine has gethostbyname_r(). */ |
|
Evan@653
|
45 |
/* #undef GG_CONFIG_HAVE_GETHOSTBYNAME_R */ |
|
Evan@653
|
46 |
|
|
Evan@653
|
47 |
/* Defined if libgadu was compiled and linked with pthread support. */ |
|
Evan@653
|
48 |
/* #undef GG_CONFIG_HAVE_PTHREAD */ |
|
Evan@653
|
49 |
|
|
Evan@653
|
50 |
/* Defined if this machine has C99-compiliant vsnprintf(). */ |
|
Evan@653
|
51 |
#define GG_CONFIG_HAVE_C99_VSNPRINTF |
|
Evan@653
|
52 |
|
|
Evan@653
|
53 |
/* Defined if this machine has va_copy(). */ |
|
Evan@653
|
54 |
#define GG_CONFIG_HAVE_VA_COPY |
|
Evan@653
|
55 |
|
|
Evan@653
|
56 |
/* Defined if this machine has __va_copy(). */ |
|
Evan@653
|
57 |
#define GG_CONFIG_HAVE___VA_COPY |
|
Evan@653
|
58 |
|
|
Evan@653
|
59 |
/* Defined if this machine supports long long. */ |
|
Evan@653
|
60 |
#define GG_CONFIG_HAVE_LONG_LONG |
|
Evan@653
|
61 |
|
|
Evan@653
|
62 |
/* Defined if libgadu was compiled and linked with TLS support. */ |
|
Evan@653
|
63 |
#define GG_CONFIG_HAVE_OPENSSL |
|
Evan@653
|
64 |
|
|
Evan@653
|
65 |
/* Defined if uintX_t types are defined in <stdint.h>. */ |
|
Evan@653
|
66 |
#define GG_CONFIG_HAVE_STDINT_H |
|
Evan@653
|
67 |
|
|
Evan@653
|
68 |
/* Defined if uintX_t types are defined in <inttypes.h>. */ |
|
Evan@653
|
69 |
/* #undef GG_CONFIG_HAVE_INTTYPES_H */ |
|
Evan@653
|
70 |
|
|
Evan@653
|
71 |
/* Defined if uintX_t types are defined in <sys/inttypes.h>. */ |
|
Evan@653
|
72 |
/* #undef GG_CONFIG_HAVE_SYS_INTTYPES_H */ |
|
Evan@653
|
73 |
|
|
Evan@653
|
74 |
/* Defined if uintX_t types are defined in <sys/int_types.h>. */ |
|
Evan@653
|
75 |
/* #undef GG_CONFIG_HAVE_SYS_INT_TYPES_H */ |
|
Evan@653
|
76 |
|
|
Evan@653
|
77 |
/* Defined if uintX_t types are defined in <sys/types.h>. */ |
|
Evan@653
|
78 |
/* #undef GG_CONFIG_HAVE_SYS_TYPES_H */ |
|
Evan@653
|
79 |
|
|
Evan@653
|
80 |
#ifdef GG_CONFIG_HAVE_OPENSSL |
|
Evan@653
|
81 |
#include <openssl/ssl.h> |
|
Evan@653
|
82 |
#endif |
|
Evan@653
|
83 |
|
|
Evan@653
|
84 |
#ifdef GG_CONFIG_HAVE_STDINT_H |
|
Evan@653
|
85 |
#include <stdint.h> |
|
Evan@653
|
86 |
#else |
|
Evan@653
|
87 |
# ifdef GG_CONFIG_HAVE_INTTYPES_H |
|
Evan@653
|
88 |
# include <inttypes.h> |
|
Evan@653
|
89 |
# else |
|
Evan@653
|
90 |
# ifdef GG_CONFIG_HAVE_SYS_INTTYPES_H |
|
Evan@653
|
91 |
# include <sys/inttypes.h> |
|
Evan@653
|
92 |
# else |
|
Evan@653
|
93 |
# ifdef GG_CONFIG_HAVE_SYS_INT_TYPES_H |
|
Evan@653
|
94 |
# include <sys/int_types.h> |
|
Evan@653
|
95 |
# else |
|
Evan@653
|
96 |
# ifdef GG_CONFIG_HAVE_SYS_TYPES_H |
|
Evan@653
|
97 |
# include <sys/types.h> |
|
Evan@653
|
98 |
# else |
|
Evan@653
|
99 |
|
|
Evan@653
|
100 |
#ifndef __AC_STDINT_H |
|
Evan@653
|
101 |
#define __AC_STDINT_H |
|
Evan@653
|
102 |
|
|
Evan@653
|
103 |
/* ISO C 9X: 7.18 Integer types <stdint.h> */ |
|
Evan@653
|
104 |
|
|
Evan@653
|
105 |
typedef unsigned char uint8_t; |
|
Evan@653
|
106 |
typedef unsigned short uint16_t; |
|
Evan@653
|
107 |
typedef unsigned int uint32_t; |
|
Evan@653
|
108 |
|
|
Evan@653
|
109 |
#ifndef __CYGWIN__ |
|
Evan@653
|
110 |
#define __int8_t_defined |
|
Evan@653
|
111 |
typedef signed char int8_t; |
|
Evan@653
|
112 |
typedef signed short int16_t; |
|
Evan@653
|
113 |
typedef signed int int32_t; |
|
Evan@653
|
114 |
#endif |
|
Evan@653
|
115 |
|
|
Evan@653
|
116 |
#endif /* __AC_STDINT_H */ |
|
Evan@653
|
117 |
|
|
Evan@653
|
118 |
# endif |
|
Evan@653
|
119 |
# endif |
|
Evan@653
|
120 |
# endif |
|
Evan@653
|
121 |
# endif |
|
Evan@653
|
122 |
#endif |
|
Evan@653
|
123 |
|
|
Evan@653
|
124 |
/* |
|
Evan@653
|
125 |
* typedef uin_t |
|
Evan@653
|
126 |
* |
|
Evan@653
|
127 |
* typ reprezentuj�cy numer osoby. |
|
Evan@653
|
128 |
*/ |
|
Evan@653
|
129 |
typedef uint32_t uin_t; |
|
Evan@653
|
130 |
|
|
Evan@653
|
131 |
/* |
|
Evan@653
|
132 |
* og� struktura opisuj�ca r� sesje. przydatna w klientach. |
|
Evan@653
|
133 |
*/ |
|
Evan@653
|
134 |
#define gg_common_head(x) \ |
|
Evan@653
|
135 |
int fd; /* podgl�dany deskryptor */ \ |
|
Evan@653
|
136 |
int check; /* sprawdzamy zapis czy odczyt */ \ |
|
Evan@653
|
137 |
int state; /* aktualny stan maszynki */ \ |
|
Evan@653
|
138 |
int error; /* kod b�� dla GG_STATE_ERROR */ \ |
|
Evan@653
|
139 |
int type; /* rodzaj sesji */ \ |
|
Evan@653
|
140 |
int id; /* identyfikator */ \ |
|
Evan@653
|
141 |
int timeout; /* sugerowany timeout w sekundach */ \ |
|
Evan@653
|
142 |
int (*callback)(x*); /* callback przy zmianach */ \ |
|
Evan@653
|
143 |
void (*destroy)(x*); /* funkcja niszczenia */ |
|
Evan@653
|
144 |
|
|
Evan@653
|
145 |
struct gg_common { |
|
Evan@653
|
146 |
gg_common_head(struct gg_common) |
|
Evan@653
|
147 |
}; |
|
Evan@653
|
148 |
|
|
Evan@653
|
149 |
struct gg_image_queue; |
|
Evan@653
|
150 |
|
|
Evan@653
|
151 |
/* |
|
Evan@653
|
152 |
* struct gg_session |
|
Evan@653
|
153 |
* |
|
Evan@653
|
154 |
* struktura opisuj�ca dan� sesj�tworzona przez gg_login(), zwalniana |
|
Evan@653
|
155 |
* przez gg_free_session(). |
|
Evan@653
|
156 |
*/ |
|
Evan@653
|
157 |
struct gg_session { |
|
Evan@653
|
158 |
gg_common_head(struct gg_session) |
|
Evan@653
|
159 |
|
|
Evan@653
|
160 |
int async; /* czy po��czenie jest asynchroniczne */ |
|
Evan@653
|
161 |
int pid; /* pid procesu resolvera */ |
|
Evan@653
|
162 |
int port; /* port, z kt� si��czymy */ |
|
Evan@653
|
163 |
int seq; /* numer sekwencyjny ostatniej wiadomo�ci */ |
|
Evan@653
|
164 |
int last_pong; /* czas otrzymania ostatniego ping/pong */ |
|
Evan@653
|
165 |
int last_event; /* czas otrzymania ostatniego pakietu */ |
|
Evan@653
|
166 |
|
|
Evan@653
|
167 |
struct gg_event *event; /* zdarzenie po ->callback() */ |
|
Evan@653
|
168 |
|
|
Evan@653
|
169 |
uint32_t proxy_addr; /* adres proxy, keszowany */ |
|
Evan@653
|
170 |
uint16_t proxy_port; /* port proxy */ |
|
Evan@653
|
171 |
|
|
Evan@653
|
172 |
uint32_t hub_addr; /* adres huba po resolvni�u */ |
|
Evan@653
|
173 |
uint32_t server_addr; /* adres serwera, od huba */ |
|
Evan@653
|
174 |
|
|
Evan@653
|
175 |
uint32_t client_addr; /* adres klienta */ |
|
Evan@653
|
176 |
uint16_t client_port; /* port, na kt� klient s�ucha */ |
|
Evan@653
|
177 |
|
|
Evan@653
|
178 |
uint32_t external_addr; /* adres zewnetrzny klienta */ |
|
Evan@653
|
179 |
uint16_t external_port; /* port zewnetrzny klienta */ |
|
Evan@653
|
180 |
|
|
Evan@653
|
181 |
uin_t uin; /* numerek klienta */ |
|
Evan@653
|
182 |
char *password; /* i jego has�o. zwalniane automagicznie */ |
|
Evan@653
|
183 |
|
|
Evan@653
|
184 |
int initial_status; /* pocz�tkowy stan klienta */ |
|
Evan@653
|
185 |
int status; /* aktualny stan klienta */ |
|
Evan@653
|
186 |
|
|
Evan@653
|
187 |
char *recv_buf; /* bufor na otrzymywane pakiety */ |
|
Evan@653
|
188 |
int recv_done; /* ile ju� wczytano do bufora */ |
|
Evan@653
|
189 |
int recv_left; /* i ile jeszcze trzeba wczyta�/ |
|
Evan@653
|
190 |
|
|
Evan@653
|
191 |
int protocol_version; /* wersja u�ywanego protoko�u */ |
|
Evan@653
|
192 |
char *client_version; /* wersja u�ywanego klienta */ |
|
Evan@653
|
193 |
int last_sysmsg; /* ostatnia wiadomo��ystemowa */ |
|
Evan@653
|
194 |
|
|
Evan@653
|
195 |
char *initial_descr; /* pocz�tkowy opis stanu klienta */ |
|
Evan@653
|
196 |
|
|
Evan@653
|
197 |
void *resolver; /* wska�nik na informacje resolvera */ |
|
Evan@653
|
198 |
|
|
Evan@653
|
199 |
char *header_buf; /* bufor na pocz�tek nag�� */ |
|
Evan@653
|
200 |
unsigned int header_done;/* ile ju� mamy */ |
|
Evan@653
|
201 |
|
|
Evan@653
|
202 |
#ifdef GG_CONFIG_HAVE_OPENSSL |
|
Evan@653
|
203 |
SSL *ssl; /* sesja TLS */ |
|
Evan@653
|
204 |
SSL_CTX *ssl_ctx; /* kontekst sesji? */ |
|
Evan@653
|
205 |
#else |
|
Evan@653
|
206 |
void *ssl; /* zachowujemy ABI */ |
|
Evan@653
|
207 |
void *ssl_ctx; |
|
Evan@653
|
208 |
#endif |
|
Evan@653
|
209 |
|
|
Evan@653
|
210 |
int image_size; /* maksymalny rozmiar obrazk� KiB */ |
|
Evan@653
|
211 |
|
|
Evan@653
|
212 |
char *userlist_reply; /* fragment odpowiedzi listy kontakt�/ |
|
Evan@653
|
213 |
|
|
Evan@653
|
214 |
int userlist_blocks; /* na ile kawa�k�odzielono list�ontakt�/ |
|
Evan@653
|
215 |
|
|
Evan@653
|
216 |
struct gg_image_queue *images; /* aktualnie wczytywane obrazki */ |
|
Evan@653
|
217 |
}; |
|
Evan@653
|
218 |
|
|
Evan@653
|
219 |
/* |
|
Evan@653
|
220 |
* struct gg_http |
|
Evan@653
|
221 |
* |
|
Evan@653
|
222 |
* og� struktura opisuj�ca stan wszystkich operacji HTTP. tworzona |
|
Evan@653
|
223 |
* przez gg_http_connect(), zwalniana przez gg_http_free(). |
|
Evan@653
|
224 |
*/ |
|
Evan@653
|
225 |
struct gg_http { |
|
Evan@653
|
226 |
gg_common_head(struct gg_http) |
|
Evan@653
|
227 |
|
|
Evan@653
|
228 |
int async; /* czy po��czenie asynchroniczne */ |
|
Evan@653
|
229 |
int pid; /* pid procesu resolvera */ |
|
Evan@653
|
230 |
int port; /* port, z kt� si��czymy */ |
|
Evan@653
|
231 |
|
|
Evan@653
|
232 |
char *query; /* bufor zapytania http */ |
|
Evan@653
|
233 |
char *header; /* bufor nag�� */ |
|
Evan@653
|
234 |
int header_size; /* rozmiar wczytanego nag�� */ |
|
Evan@653
|
235 |
char *body; /* bufor otrzymanych informacji */ |
|
Evan@653
|
236 |
unsigned int body_size; /* oczekiwana ilo��nformacji */ |
|
Evan@653
|
237 |
|
|
Evan@653
|
238 |
void *data; /* dane danej operacji http */ |
|
Evan@653
|
239 |
|
|
Evan@653
|
240 |
char *user_data; /* dane u�ytkownika, nie s� zwalniane przez gg_http_free() */ |
|
Evan@653
|
241 |
|
|
Evan@653
|
242 |
void *resolver; /* wska�nik na informacje resolvera */ |
|
Evan@653
|
243 |
|
|
Evan@653
|
244 |
unsigned int body_done; /* ile ju� tre�ci odebrano? */ |
|
Evan@653
|
245 |
}; |
|
Evan@653
|
246 |
|
|
Evan@653
|
247 |
#ifdef __GNUC__ |
|
Evan@653
|
248 |
#define GG_PACKED __attribute__ ((packed)) |
|
Evan@653
|
249 |
#else |
|
Evan@653
|
250 |
#define GG_PACKED |
|
Evan@653
|
251 |
#endif |
|
Evan@653
|
252 |
|
|
Evan@653
|
253 |
#define GG_MAX_PATH 276 |
|
Evan@653
|
254 |
|
|
Evan@653
|
255 |
/* |
|
Evan@653
|
256 |
* struct gg_file_info |
|
Evan@653
|
257 |
* |
|
Evan@653
|
258 |
* odpowiednik windowsowej struktury WIN32_FIND_DATA niezb�ej przy |
|
Evan@653
|
259 |
* wysy�aniu plik� */ |
|
Evan@653
|
260 |
struct gg_file_info { |
|
Evan@653
|
261 |
uint32_t mode; /* dwFileAttributes */ |
|
Evan@653
|
262 |
uint32_t ctime[2]; /* ftCreationTime */ |
|
Evan@653
|
263 |
uint32_t atime[2]; /* ftLastAccessTime */ |
|
Evan@653
|
264 |
uint32_t mtime[2]; /* ftLastWriteTime */ |
|
Evan@653
|
265 |
uint32_t size_hi; /* nFileSizeHigh */ |
|
Evan@653
|
266 |
uint32_t size; /* nFileSizeLow */ |
|
Evan@653
|
267 |
uint32_t reserved0; /* dwReserved0 */ |
|
Evan@653
|
268 |
uint32_t reserved1; /* dwReserved1 */ |
|
Evan@653
|
269 |
unsigned char filename[GG_MAX_PATH - 14]; /* cFileName */ |
|
Evan@653
|
270 |
unsigned char short_filename[14]; /* cAlternateFileName */ |
|
Evan@653
|
271 |
} GG_PACKED; |
|
Evan@653
|
272 |
|
|
Evan@653
|
273 |
/* |
|
Evan@653
|
274 |
* struct gg_dcc |
|
Evan@653
|
275 |
* |
|
Evan@653
|
276 |
* struktura opisuj�ca nas�uchuj�ce gniazdo po��cze��y klientami. |
|
Evan@653
|
277 |
* tworzona przez gg_dcc_socket_create(), zwalniana przez gg_dcc_free(). |
|
Evan@653
|
278 |
*/ |
|
Evan@653
|
279 |
struct gg_dcc { |
|
Evan@653
|
280 |
gg_common_head(struct gg_dcc) |
|
Evan@653
|
281 |
|
|
Evan@653
|
282 |
struct gg_event *event; /* opis zdarzenia */ |
|
Evan@653
|
283 |
|
|
Evan@653
|
284 |
int active; /* czy to my si��czymy? */ |
|
Evan@653
|
285 |
int port; /* port, na kt� siedzi */ |
|
Evan@653
|
286 |
uin_t uin; /* uin klienta */ |
|
Evan@653
|
287 |
uin_t peer_uin; /* uin drugiej strony */ |
|
Evan@653
|
288 |
int file_fd; /* deskryptor pliku */ |
|
Evan@653
|
289 |
unsigned int offset; /* offset w pliku */ |
|
Evan@653
|
290 |
unsigned int chunk_size;/* rozmiar kawa�ka */ |
|
Evan@653
|
291 |
unsigned int chunk_offset;/* offset w aktualnym kawa�ku */ |
|
Evan@653
|
292 |
struct gg_file_info file_info; |
|
Evan@653
|
293 |
/* informacje o pliku */ |
|
Evan@653
|
294 |
int established; /* po��czenie ustanowione */ |
|
Evan@653
|
295 |
char *voice_buf; /* bufor na pakiet po��czenia g�osowego */ |
|
Evan@653
|
296 |
int incoming; /* po��czenie przychodz�ce */ |
|
Evan@653
|
297 |
char *chunk_buf; /* bufor na kawa�ek danych */ |
|
Evan@653
|
298 |
uint32_t remote_addr; /* adres drugiej strony */ |
|
Evan@653
|
299 |
uint16_t remote_port; /* port drugiej strony */ |
|
Evan@653
|
300 |
}; |
|
Evan@653
|
301 |
|
|
Evan@653
|
302 |
/* |
|
Evan@653
|
303 |
* enum gg_session_t |
|
Evan@653
|
304 |
* |
|
Evan@653
|
305 |
* rodzaje sesji. |
|
Evan@653
|
306 |
*/ |
|
Evan@653
|
307 |
enum gg_session_t { |
|
Evan@653
|
308 |
GG_SESSION_GG = 1, /* po��czenie z serwerem gg */ |
|
Evan@653
|
309 |
GG_SESSION_HTTP, /* og� sesja http */ |
|
Evan@653
|
310 |
GG_SESSION_SEARCH, /* szukanie */ |
|
Evan@653
|
311 |
GG_SESSION_REGISTER, /* rejestrowanie */ |
|
Evan@653
|
312 |
GG_SESSION_REMIND, /* przypominanie has�a */ |
|
Evan@653
|
313 |
GG_SESSION_PASSWD, /* zmiana has�a */ |
|
Evan@653
|
314 |
GG_SESSION_CHANGE, /* zmiana informacji o sobie */ |
|
Evan@653
|
315 |
GG_SESSION_DCC, /* og� po��czenie DCC */ |
|
Evan@653
|
316 |
GG_SESSION_DCC_SOCKET, /* nas�uchuj�cy socket */ |
|
Evan@653
|
317 |
GG_SESSION_DCC_SEND, /* wysy�anie pliku */ |
|
Evan@653
|
318 |
GG_SESSION_DCC_GET, /* odbieranie pliku */ |
|
Evan@653
|
319 |
GG_SESSION_DCC_VOICE, /* rozmowa g�osowa */ |
|
Evan@653
|
320 |
GG_SESSION_USERLIST_GET, /* pobieranie userlisty */ |
|
Evan@653
|
321 |
GG_SESSION_USERLIST_PUT, /* wysy�anie userlisty */ |
|
Evan@653
|
322 |
GG_SESSION_UNREGISTER, /* usuwanie konta */ |
|
Evan@653
|
323 |
GG_SESSION_USERLIST_REMOVE, /* usuwanie userlisty */ |
|
Evan@653
|
324 |
GG_SESSION_TOKEN, /* pobieranie tokenu */ |
|
Evan@653
|
325 |
|
|
Evan@653
|
326 |
GG_SESSION_USER0 = 256, /* zdefiniowana dla u�ytkownika */ |
|
Evan@653
|
327 |
GG_SESSION_USER1, /* j.w. */ |
|
Evan@653
|
328 |
GG_SESSION_USER2, /* j.w. */ |
|
Evan@653
|
329 |
GG_SESSION_USER3, /* j.w. */ |
|
Evan@653
|
330 |
GG_SESSION_USER4, /* j.w. */ |
|
Evan@653
|
331 |
GG_SESSION_USER5, /* j.w. */ |
|
Evan@653
|
332 |
GG_SESSION_USER6, /* j.w. */ |
|
Evan@653
|
333 |
GG_SESSION_USER7 /* j.w. */ |
|
Evan@653
|
334 |
}; |
|
Evan@653
|
335 |
|
|
Evan@653
|
336 |
/* |
|
Evan@653
|
337 |
* enum gg_state_t |
|
Evan@653
|
338 |
* |
|
Evan@653
|
339 |
* opisuje stan asynchronicznej maszyny. |
|
Evan@653
|
340 |
*/ |
|
Evan@653
|
341 |
enum gg_state_t { |
|
Evan@653
|
342 |
/* wsp� */ |
|
Evan@653
|
343 |
GG_STATE_IDLE = 0, /* nie powinno wyst�pi�*/ |
|
Evan@653
|
344 |
GG_STATE_RESOLVING, /* wywo�a� gethostbyname() */ |
|
Evan@653
|
345 |
GG_STATE_CONNECTING, /* wywo�a� connect() */ |
|
Evan@653
|
346 |
GG_STATE_READING_DATA, /* czeka na dane http */ |
|
Evan@653
|
347 |
GG_STATE_ERROR, /* wyst�pi� b��d. kod w x->error */ |
|
Evan@653
|
348 |
|
|
Evan@653
|
349 |
/* gg_session */ |
|
Evan@653
|
350 |
GG_STATE_CONNECTING_HUB, /* wywo�a� connect() na huba */ |
|
Evan@653
|
351 |
GG_STATE_CONNECTING_GG, /* wywo�a� connect() na serwer */ |
|
Evan@653
|
352 |
GG_STATE_READING_KEY, /* czeka na klucz */ |
|
Evan@653
|
353 |
GG_STATE_READING_REPLY, /* czeka na odpowied� */ |
|
Evan@653
|
354 |
GG_STATE_CONNECTED, /* po��czy� si�/ |
|
Evan@653
|
355 |
|
|
Evan@653
|
356 |
/* gg_http */ |
|
Evan@653
|
357 |
GG_STATE_SENDING_QUERY, /* wysy�a zapytanie http */ |
|
Evan@653
|
358 |
GG_STATE_READING_HEADER, /* czeka na nag�� http */ |
|
Evan@653
|
359 |
GG_STATE_PARSING, /* przetwarza dane */ |
|
Evan@653
|
360 |
GG_STATE_DONE, /* sko�� */ |
|
Evan@653
|
361 |
|
|
Evan@653
|
362 |
/* gg_dcc */ |
|
Evan@653
|
363 |
GG_STATE_LISTENING, /* czeka na po��czenia */ |
|
Evan@653
|
364 |
GG_STATE_READING_UIN_1, /* czeka na uin peera */ |
|
Evan@653
|
365 |
GG_STATE_READING_UIN_2, /* czeka na sw�in */ |
|
Evan@653
|
366 |
GG_STATE_SENDING_ACK, /* wysy�a potwierdzenie dcc */ |
|
Evan@653
|
367 |
GG_STATE_READING_ACK, /* czeka na potwierdzenie dcc */ |
|
Evan@653
|
368 |
GG_STATE_READING_REQUEST, /* czeka na komend�/ |
|
Evan@653
|
369 |
GG_STATE_SENDING_REQUEST, /* wysy�a komend�/ |
|
Evan@653
|
370 |
GG_STATE_SENDING_FILE_INFO, /* wysy�a informacje o pliku */ |
|
Evan@653
|
371 |
GG_STATE_READING_PRE_FILE_INFO, /* czeka na pakiet przed file_info */ |
|
Evan@653
|
372 |
GG_STATE_READING_FILE_INFO, /* czeka na informacje o pliku */ |
|
Evan@653
|
373 |
GG_STATE_SENDING_FILE_ACK, /* wysy�a potwierdzenie pliku */ |
|
Evan@653
|
374 |
GG_STATE_READING_FILE_ACK, /* czeka na potwierdzenie pliku */ |
|
Evan@653
|
375 |
GG_STATE_SENDING_FILE_HEADER, /* wysy�a nag�� pliku */ |
|
Evan@653
|
376 |
GG_STATE_READING_FILE_HEADER, /* czeka na nag�� */ |
|
Evan@653
|
377 |
GG_STATE_GETTING_FILE, /* odbiera plik */ |
|
Evan@653
|
378 |
GG_STATE_SENDING_FILE, /* wysy�a plik */ |
|
Evan@653
|
379 |
GG_STATE_READING_VOICE_ACK, /* czeka na potwierdzenie voip */ |
|
Evan@653
|
380 |
GG_STATE_READING_VOICE_HEADER, /* czeka na rodzaj bloku voip */ |
|
Evan@653
|
381 |
GG_STATE_READING_VOICE_SIZE, /* czeka na rozmiar bloku voip */ |
|
Evan@653
|
382 |
GG_STATE_READING_VOICE_DATA, /* czeka na dane voip */ |
|
Evan@653
|
383 |
GG_STATE_SENDING_VOICE_ACK, /* wysy�a potwierdzenie voip */ |
|
Evan@653
|
384 |
GG_STATE_SENDING_VOICE_REQUEST, /* wysy�a ��danie voip */ |
|
Evan@653
|
385 |
GG_STATE_READING_TYPE, /* czeka na typ po��czenia */ |
|
Evan@653
|
386 |
|
|
Evan@653
|
387 |
/* nowe. bez sensu jest to API. */ |
|
Evan@653
|
388 |
GG_STATE_TLS_NEGOTIATION /* negocjuje po��czenie TLS */ |
|
Evan@653
|
389 |
}; |
|
Evan@653
|
390 |
|
|
Evan@653
|
391 |
/* |
|
Evan@653
|
392 |
* enum gg_check_t |
|
Evan@653
|
393 |
* |
|
Evan@653
|
394 |
* informuje, co proces klienta powinien sprawdzi�a deskryptorze danego |
|
Evan@653
|
395 |
* po��czenia. |
|
Evan@653
|
396 |
*/ |
|
Evan@653
|
397 |
enum gg_check_t { |
|
Evan@653
|
398 |
GG_CHECK_NONE = 0, /* nic. nie powinno wyst�pi�/ |
|
Evan@653
|
399 |
GG_CHECK_WRITE = 1, /* sprawdzamy mo�liwo��apisu */ |
|
Evan@653
|
400 |
GG_CHECK_READ = 2 /* sprawdzamy mo�liwo��dczytu */ |
|
Evan@653
|
401 |
}; |
|
Evan@653
|
402 |
|
|
Evan@653
|
403 |
/* |
|
Evan@653
|
404 |
* struct gg_login_params |
|
Evan@653
|
405 |
* |
|
Evan@653
|
406 |
* parametry gg_login(). przeniesiono do struktury, �eby unikn��roblem�* z ci�g�ymi zmianami API, gdy dodano co� nowego do protoko�u. |
|
Evan@653
|
407 |
*/ |
|
Evan@653
|
408 |
struct gg_login_params { |
|
Evan@653
|
409 |
uin_t uin; /* numerek */ |
|
Evan@653
|
410 |
char *password; /* has�o */ |
|
Evan@653
|
411 |
int async; /* asynchroniczne sockety? */ |
|
Evan@653
|
412 |
int status; /* pocz�tkowy status klienta */ |
|
Evan@653
|
413 |
char *status_descr; /* opis statusu */ |
|
Evan@653
|
414 |
uint32_t server_addr; /* adres serwera gg */ |
|
Evan@653
|
415 |
uint16_t server_port; /* port serwera gg */ |
|
Evan@653
|
416 |
uint32_t client_addr; /* adres dcc klienta */ |
|
Evan@653
|
417 |
uint16_t client_port; /* port dcc klienta */ |
|
Evan@653
|
418 |
int protocol_version; /* wersja protoko�u */ |
|
Evan@653
|
419 |
char *client_version; /* wersja klienta */ |
|
Evan@653
|
420 |
int has_audio; /* czy ma d�wi� */ |
|
Evan@653
|
421 |
int last_sysmsg; /* ostatnia wiadomo��ystemowa */ |
|
Evan@653
|
422 |
uint32_t external_addr; /* adres widziany na zewnatrz */ |
|
Evan@653
|
423 |
uint16_t external_port; /* port widziany na zewnatrz */ |
|
Evan@653
|
424 |
int tls; /* czy ��czymy po TLS? */ |
|
Evan@653
|
425 |
int image_size; /* maksymalny rozmiar obrazka w KiB */ |
|
Evan@653
|
426 |
int era_omnix; /* czy udawa�lienta era omnix? */ |
|
Evan@653
|
427 |
|
|
Evan@653
|
428 |
char dummy[6 * sizeof(int)]; /* miejsce na kolejnych 6 zmiennych, |
|
Evan@653
|
429 |
* �eby z dodaniem parametru nie |
|
Evan@653
|
430 |
* zmienia� si�ozmiar struktury */ |
|
Evan@653
|
431 |
}; |
|
Evan@653
|
432 |
|
|
Evan@653
|
433 |
struct gg_session *gg_login(const struct gg_login_params *p); |
|
Evan@653
|
434 |
void gg_free_session(struct gg_session *sess); |
|
Evan@653
|
435 |
void gg_logoff(struct gg_session *sess); |
|
Evan@653
|
436 |
int gg_change_status(struct gg_session *sess, int status); |
|
Evan@653
|
437 |
int gg_change_status_descr(struct gg_session *sess, int status, const char *descr); |
|
Evan@653
|
438 |
int gg_change_status_descr_time(struct gg_session *sess, int status, const char *descr, int time); |
|
Evan@653
|
439 |
int gg_send_message(struct gg_session *sess, int msgclass, uin_t recipient, const unsigned char *message); |
|
Evan@653
|
440 |
int gg_send_message_richtext(struct gg_session *sess, int msgclass, uin_t recipient, const unsigned char *message, const unsigned char *format, int formatlen); |
|
Evan@653
|
441 |
int gg_send_message_confer(struct gg_session *sess, int msgclass, int recipients_count, uin_t *recipients, const unsigned char *message); |
|
Evan@653
|
442 |
int gg_send_message_confer_richtext(struct gg_session *sess, int msgclass, int recipients_count, uin_t *recipients, const unsigned char *message, const unsigned char *format, int formatlen); |
|
Evan@653
|
443 |
int gg_send_message_ctcp(struct gg_session *sess, int msgclass, uin_t recipient, const unsigned char *message, int message_len); |
|
Evan@653
|
444 |
int gg_ping(struct gg_session *sess); |
|
Evan@653
|
445 |
int gg_userlist_request(struct gg_session *sess, char type, const char *request); |
|
Evan@653
|
446 |
int gg_image_request(struct gg_session *sess, uin_t recipient, int size, uint32_t crc32); |
|
Evan@653
|
447 |
int gg_image_reply(struct gg_session *sess, uin_t recipient, const char *filename, const char *image, int size); |
|
Evan@653
|
448 |
|
|
Evan@653
|
449 |
uint32_t gg_crc32(uint32_t crc, const unsigned char *buf, int len); |
|
Evan@653
|
450 |
|
|
Evan@653
|
451 |
struct gg_image_queue { |
|
Evan@653
|
452 |
uin_t sender; /* nadawca obrazka */ |
|
Evan@653
|
453 |
uint32_t size; /* rozmiar */ |
|
Evan@653
|
454 |
uint32_t crc32; /* suma kontrolna */ |
|
Evan@653
|
455 |
char *filename; /* nazwa pliku */ |
|
Evan@653
|
456 |
char *image; /* bufor z obrazem */ |
|
Evan@653
|
457 |
uint32_t done; /* ile ju� wczytano */ |
|
Evan@653
|
458 |
|
|
Evan@653
|
459 |
struct gg_image_queue *next; /* nast�y na li�cie */ |
|
Evan@653
|
460 |
}; |
|
Evan@653
|
461 |
|
|
Evan@653
|
462 |
/* |
|
Evan@653
|
463 |
* enum gg_event_t |
|
Evan@653
|
464 |
* |
|
Evan@653
|
465 |
* rodzaje zdarze�*/ |
|
Evan@653
|
466 |
enum gg_event_t { |
|
Evan@653
|
467 |
GG_EVENT_NONE = 0, /* nic si�ie wydarzy�o */ |
|
Evan@653
|
468 |
GG_EVENT_MSG, /* otrzymano wiadomo��/ |
|
Evan@653
|
469 |
GG_EVENT_NOTIFY, /* kto� si�ojawi� */ |
|
Evan@653
|
470 |
GG_EVENT_NOTIFY_DESCR, /* kto� si�ojawi� z opisem */ |
|
Evan@653
|
471 |
GG_EVENT_STATUS, /* kto� zmieni� stan */ |
|
Evan@653
|
472 |
GG_EVENT_ACK, /* potwierdzenie wys�ania wiadomo�ci */ |
|
Evan@653
|
473 |
GG_EVENT_PONG, /* pakiet pong */ |
|
Evan@653
|
474 |
GG_EVENT_CONN_FAILED, /* po��czenie si�ie uda�o */ |
|
Evan@653
|
475 |
GG_EVENT_CONN_SUCCESS, /* po��czenie si�owiod�o */ |
|
Evan@653
|
476 |
GG_EVENT_DISCONNECT, /* serwer zrywa po��czenie */ |
|
Evan@653
|
477 |
|
|
Evan@653
|
478 |
GG_EVENT_DCC_NEW, /* nowe po��czenie mi�y klientami */ |
|
Evan@653
|
479 |
GG_EVENT_DCC_ERROR, /* b��d po��czenia mi�y klientami */ |
|
Evan@653
|
480 |
GG_EVENT_DCC_DONE, /* zako�no po��czenie */ |
|
Evan@653
|
481 |
GG_EVENT_DCC_CLIENT_ACCEPT, /* moment akceptacji klienta */ |
|
Evan@653
|
482 |
GG_EVENT_DCC_CALLBACK, /* klient si�o��czy� na ��danie */ |
|
Evan@653
|
483 |
GG_EVENT_DCC_NEED_FILE_INFO, /* nale�y wype�ni�ile_info */ |
|
Evan@653
|
484 |
GG_EVENT_DCC_NEED_FILE_ACK, /* czeka na potwierdzenie pliku */ |
|
Evan@653
|
485 |
GG_EVENT_DCC_NEED_VOICE_ACK, /* czeka na potwierdzenie rozmowy */ |
|
Evan@653
|
486 |
GG_EVENT_DCC_VOICE_DATA, /* ramka danych rozmowy g�osowej */ |
|
Evan@653
|
487 |
|
|
Evan@653
|
488 |
GG_EVENT_PUBDIR50_SEARCH_REPLY, /* odpowiedz wyszukiwania */ |
|
Evan@653
|
489 |
GG_EVENT_PUBDIR50_READ, /* odczytano w�asne dane z katalogu */ |
|
Evan@653
|
490 |
GG_EVENT_PUBDIR50_WRITE, /* wpisano w�asne dane do katalogu */ |
|
Evan@653
|
491 |
|
|
Evan@653
|
492 |
GG_EVENT_STATUS60, /* kto� zmieni� stan w GG 6.0 */ |
|
Evan@653
|
493 |
GG_EVENT_NOTIFY60, /* kto� si�ojawi� w GG 6.0 */ |
|
Evan@653
|
494 |
GG_EVENT_USERLIST, /* odpowied� listy kontakt� GG 6.0 */ |
|
Evan@653
|
495 |
GG_EVENT_IMAGE_REQUEST, /* pro�ba o wys�anie obrazka GG 6.0 */ |
|
Evan@653
|
496 |
GG_EVENT_IMAGE_REPLY, /* podes�any obrazek GG 6.0 */ |
|
Evan@653
|
497 |
GG_EVENT_DCC_ACK /* potwierdzenie transmisji */ |
|
Evan@653
|
498 |
}; |
|
Evan@653
|
499 |
|
|
Evan@653
|
500 |
#define GG_EVENT_SEARCH50_REPLY GG_EVENT_PUBDIR50_SEARCH_REPLY |
|
Evan@653
|
501 |
|
|
Evan@653
|
502 |
/* |
|
Evan@653
|
503 |
* enum gg_failure_t |
|
Evan@653
|
504 |
* |
|
Evan@653
|
505 |
* okre�la pow�ieudanego po��czenia. |
|
Evan@653
|
506 |
*/ |
|
Evan@653
|
507 |
enum gg_failure_t { |
|
Evan@653
|
508 |
GG_FAILURE_RESOLVING = 1, /* nie znaleziono serwera */ |
|
Evan@653
|
509 |
GG_FAILURE_CONNECTING, /* nie mo�na si�o��czy�/ |
|
Evan@653
|
510 |
GG_FAILURE_INVALID, /* serwer zwr� nieprawid�owe dane */ |
|
Evan@653
|
511 |
GG_FAILURE_READING, /* zerwano po��czenie podczas odczytu */ |
|
Evan@653
|
512 |
GG_FAILURE_WRITING, /* zerwano po��czenie podczas zapisu */ |
|
Evan@653
|
513 |
GG_FAILURE_PASSWORD, /* nieprawid�owe has�o */ |
|
Evan@653
|
514 |
GG_FAILURE_404, /* XXX nieu�ywane */ |
|
Evan@653
|
515 |
GG_FAILURE_TLS, /* b��d negocjacji TLS */ |
|
Evan@653
|
516 |
GG_FAILURE_NEED_EMAIL, /* serwer roz��czy� nas z pro�b� o zmian�maila */ |
|
Evan@653
|
517 |
GG_FAILURE_INTRUDER, /* za du�o pr�o��czenia si� nieprawid�owym has�em */ |
|
Evan@653
|
518 |
GG_FAILURE_UNAVAILABLE /* serwery s� wy��czone */ |
|
Evan@653
|
519 |
}; |
|
Evan@653
|
520 |
|
|
Evan@653
|
521 |
/* |
|
Evan@653
|
522 |
* enum gg_error_t |
|
Evan@653
|
523 |
* |
|
Evan@653
|
524 |
* okre�la rodzaj b�� wywo�anego przez dan� operacj�nie zawiera |
|
Evan@653
|
525 |
* przesadnie szczeg�ych informacji o powodzie b��, by nie komplikowa�* obs�ugi b��w. je�li wymagana jest wi�za dok�adno��nale�y sprawdzi�* zawarto��miennej errno. |
|
Evan@653
|
526 |
*/ |
|
Evan@653
|
527 |
enum gg_error_t { |
|
Evan@653
|
528 |
GG_ERROR_RESOLVING = 1, /* b��d znajdowania hosta */ |
|
Evan@653
|
529 |
GG_ERROR_CONNECTING, /* b��d �aczenia si�/ |
|
Evan@653
|
530 |
GG_ERROR_READING, /* b��d odczytu */ |
|
Evan@653
|
531 |
GG_ERROR_WRITING, /* b��d wysy�ania */ |
|
Evan@653
|
532 |
|
|
Evan@653
|
533 |
GG_ERROR_DCC_HANDSHAKE, /* b��d negocjacji */ |
|
Evan@653
|
534 |
GG_ERROR_DCC_FILE, /* b��d odczytu/zapisu pliku */ |
|
Evan@653
|
535 |
GG_ERROR_DCC_EOF, /* plik si�ko��? */ |
|
Evan@653
|
536 |
GG_ERROR_DCC_NET, /* b��d wysy�ania/odbierania */ |
|
Evan@653
|
537 |
GG_ERROR_DCC_REFUSED /* po��czenie odrzucone przez usera */ |
|
Evan@653
|
538 |
}; |
|
Evan@653
|
539 |
|
|
Evan@653
|
540 |
/* |
|
Evan@653
|
541 |
* struktury dotycz�ce wyszukiwania w GG 5.0. NIE NALE�Y SI�DO NICH |
|
Evan@653
|
542 |
* ODWO�YWA�BEZPO�REDNIO! do dost� do nich s�u�� funkcje gg_pubdir50_*() |
|
Evan@653
|
543 |
*/ |
|
Evan@653
|
544 |
struct gg_pubdir50_entry { |
|
Evan@653
|
545 |
int num; |
|
Evan@653
|
546 |
char *field; |
|
Evan@653
|
547 |
char *value; |
|
Evan@653
|
548 |
}; |
|
Evan@653
|
549 |
|
|
Evan@653
|
550 |
struct gg_pubdir50_s { |
|
Evan@653
|
551 |
int count; |
|
Evan@653
|
552 |
uin_t next; |
|
Evan@653
|
553 |
int type; |
|
Evan@653
|
554 |
uint32_t seq; |
|
Evan@653
|
555 |
struct gg_pubdir50_entry *entries; |
|
Evan@653
|
556 |
int entries_count; |
|
Evan@653
|
557 |
}; |
|
Evan@653
|
558 |
|
|
Evan@653
|
559 |
/* |
|
Evan@653
|
560 |
* typedef gg_pubdir_50_t |
|
Evan@653
|
561 |
* |
|
Evan@653
|
562 |
* typ opisuj�cy zapytanie lub wynik zapytania katalogu publicznego |
|
Evan@653
|
563 |
* z protoko�u GG 5.0. nie nale�y si�dwo�ywa�ezpo�rednio do jego |
|
Evan@653
|
564 |
* p�- s�u�� do tego funkcje gg_pubdir50_*() |
|
Evan@653
|
565 |
*/ |
|
Evan@653
|
566 |
typedef struct gg_pubdir50_s *gg_pubdir50_t; |
|
Evan@653
|
567 |
|
|
Evan@653
|
568 |
/* |
|
Evan@653
|
569 |
* struct gg_event |
|
Evan@653
|
570 |
* |
|
Evan@653
|
571 |
* struktura opisuj�ca rodzaj zdarzenia. wychodzi z gg_watch_fd() lub |
|
Evan@653
|
572 |
* z gg_dcc_watch_fd() |
|
Evan@653
|
573 |
*/ |
|
Evan@653
|
574 |
struct gg_event { |
|
Evan@653
|
575 |
int type; /* rodzaj zdarzenia -- gg_event_t */ |
|
Evan@653
|
576 |
union { /* @event */ |
|
Evan@653
|
577 |
struct gg_notify_reply *notify; /* informacje o li�cie kontakt�- GG_EVENT_NOTIFY */ |
|
Evan@653
|
578 |
|
|
Evan@653
|
579 |
enum gg_failure_t failure; /* b��d po��czenia -- GG_EVENT_FAILURE */ |
|
Evan@653
|
580 |
|
|
Evan@653
|
581 |
struct gg_dcc *dcc_new; /* nowe po��czenie bezpo�rednie -- GG_EVENT_DCC_NEW */ |
|
Evan@653
|
582 |
|
|
Evan@653
|
583 |
int dcc_error; /* b��d po��czenia bezpo�redniego -- GG_EVENT_DCC_ERROR */ |
|
Evan@653
|
584 |
|
|
Evan@653
|
585 |
gg_pubdir50_t pubdir50; /* wynik operacji zwi�zanej z katalogiem publicznym -- GG_EVENT_PUBDIR50_* */ |
|
Evan@653
|
586 |
|
|
Evan@653
|
587 |
struct { /* @msg odebrano wiadomo��- GG_EVENT_MSG */ |
|
Evan@653
|
588 |
uin_t sender; /* numer nadawcy */ |
|
Evan@653
|
589 |
int msgclass; /* klasa wiadomo�ci */ |
|
Evan@653
|
590 |
time_t time; /* czas nadania */ |
|
Evan@653
|
591 |
unsigned char *message; /* tre��iadomo�ci */ |
|
Evan@653
|
592 |
|
|
Evan@653
|
593 |
int recipients_count; /* ilo��dbiorc�onferencji */ |
|
Evan@653
|
594 |
uin_t *recipients; /* odbiorcy konferencji */ |
|
Evan@653
|
595 |
|
|
Evan@653
|
596 |
int formats_length; /* d�ugo��nformacji o formatowaniu tekstu */ |
|
Evan@653
|
597 |
void *formats; /* informacje o formatowaniu tekstu */ |
|
Evan@653
|
598 |
} msg; |
|
Evan@653
|
599 |
|
|
Evan@653
|
600 |
struct { /* @notify_descr informacje o li�cie kontakt� opisami stanu -- GG_EVENT_NOTIFY_DESCR */ |
|
Evan@653
|
601 |
struct gg_notify_reply *notify; /* informacje o li�cie kontakt�/ |
|
Evan@653
|
602 |
char *descr; /* opis stanu */ |
|
Evan@653
|
603 |
} notify_descr; |
|
Evan@653
|
604 |
|
|
Evan@653
|
605 |
struct { /* @status zmiana stanu -- GG_EVENT_STATUS */ |
|
Evan@653
|
606 |
uin_t uin; /* numer */ |
|
Evan@653
|
607 |
uint32_t status; /* nowy stan */ |
|
Evan@653
|
608 |
char *descr; /* opis stanu */ |
|
Evan@653
|
609 |
} status; |
|
Evan@653
|
610 |
|
|
Evan@653
|
611 |
struct { /* @status60 zmiana stanu -- GG_EVENT_STATUS60 */ |
|
Evan@653
|
612 |
uin_t uin; /* numer */ |
|
Evan@653
|
613 |
int status; /* nowy stan */ |
|
Evan@653
|
614 |
uint32_t remote_ip; /* adres ip */ |
|
Evan@653
|
615 |
uint16_t remote_port; /* port */ |
|
Evan@653
|
616 |
int version; /* wersja klienta */ |
|
Evan@653
|
617 |
int image_size; /* maksymalny rozmiar grafiki w KiB */ |
|
Evan@653
|
618 |
char *descr; /* opis stanu */ |
|
Evan@653
|
619 |
time_t time; /* czas powrotu */ |
|
Evan@653
|
620 |
} status60; |
|
Evan@653
|
621 |
|
|
Evan@653
|
622 |
struct { /* @notify60 informacja o li�cie kontakt�- GG_EVENT_NOTIFY60 */ |
|
Evan@653
|
623 |
uin_t uin; /* numer */ |
|
Evan@653
|
624 |
int status; /* stan */ |
|
Evan@653
|
625 |
uint32_t remote_ip; /* adres ip */ |
|
Evan@653
|
626 |
uint16_t remote_port; /* port */ |
|
Evan@653
|
627 |
int version; /* wersja klienta */ |
|
Evan@653
|
628 |
int image_size; /* maksymalny rozmiar grafiki w KiB */ |
|
Evan@653
|
629 |
char *descr; /* opis stanu */ |
|
Evan@653
|
630 |
time_t time; /* czas powrotu */ |
|
Evan@653
|
631 |
} *notify60; |
|
Evan@653
|
632 |
|
|
Evan@653
|
633 |
struct { /* @ack potwierdzenie wiadomo�ci -- GG_EVENT_ACK */ |
|
Evan@653
|
634 |
uin_t recipient; /* numer odbiorcy */ |
|
Evan@653
|
635 |
int status; /* stan dor�enia wiadomo�ci */ |
|
Evan@653
|
636 |
int seq; /* numer sekwencyjny wiadomo�ci */ |
|
Evan@653
|
637 |
} ack; |
|
Evan@653
|
638 |
|
|
Evan@653
|
639 |
struct { /* @dcc_voice_data otrzymano dane d�wi�we -- GG_EVENT_DCC_VOICE_DATA */ |
|
Evan@653
|
640 |
uint8_t *data; /* dane d�wi�we */ |
|
Evan@653
|
641 |
int length; /* ilo��anych d�wi�wych */ |
|
Evan@653
|
642 |
} dcc_voice_data; |
|
Evan@653
|
643 |
|
|
Evan@653
|
644 |
struct { /* @userlist odpowied� listy kontakt�erwera */ |
|
Evan@653
|
645 |
char type; /* rodzaj odpowiedzi */ |
|
Evan@653
|
646 |
char *reply; /* tre��dpowiedzi */ |
|
Evan@653
|
647 |
} userlist; |
|
Evan@653
|
648 |
|
|
Evan@653
|
649 |
struct { /* @image_request pro�ba o obrazek */ |
|
Evan@653
|
650 |
uin_t sender; /* nadawca pro�by */ |
|
Evan@653
|
651 |
uint32_t size; /* rozmiar obrazka */ |
|
Evan@653
|
652 |
uint32_t crc32; /* suma kontrolna */ |
|
Evan@653
|
653 |
} image_request; |
|
Evan@653
|
654 |
|
|
Evan@653
|
655 |
struct { /* @image_reply odpowied� z obrazkiem */ |
|
Evan@653
|
656 |
uin_t sender; /* nadawca odpowiedzi */ |
|
Evan@653
|
657 |
uint32_t size; /* rozmiar obrazka */ |
|
Evan@653
|
658 |
uint32_t crc32; /* suma kontrolna */ |
|
Evan@653
|
659 |
char *filename; /* nazwa pliku */ |
|
Evan@653
|
660 |
char *image; /* bufor z obrazkiem */ |
|
Evan@653
|
661 |
} image_reply; |
|
Evan@653
|
662 |
} event; |
|
Evan@653
|
663 |
}; |
|
Evan@653
|
664 |
|
|
Evan@653
|
665 |
struct gg_event *gg_watch_fd(struct gg_session *sess); |
|
Evan@653
|
666 |
void gg_event_free(struct gg_event *e); |
|
Evan@653
|
667 |
#define gg_free_event gg_event_free |
|
Evan@653
|
668 |
|
|
Evan@653
|
669 |
/* |
|
Evan@653
|
670 |
* funkcje obs�ugi listy kontakt� */ |
|
Evan@653
|
671 |
int gg_notify_ex(struct gg_session *sess, uin_t *userlist, char *types, int count); |
|
Evan@653
|
672 |
int gg_notify(struct gg_session *sess, uin_t *userlist, int count); |
|
Evan@653
|
673 |
int gg_add_notify_ex(struct gg_session *sess, uin_t uin, char type); |
|
Evan@653
|
674 |
int gg_add_notify(struct gg_session *sess, uin_t uin); |
|
Evan@653
|
675 |
int gg_remove_notify_ex(struct gg_session *sess, uin_t uin, char type); |
|
Evan@653
|
676 |
int gg_remove_notify(struct gg_session *sess, uin_t uin); |
|
Evan@653
|
677 |
|
|
Evan@653
|
678 |
/* |
|
Evan@653
|
679 |
* funkcje obs�ugi http. |
|
Evan@653
|
680 |
*/ |
|
Evan@653
|
681 |
struct gg_http *gg_http_connect(const char *hostname, int port, int async, const char *method, const char *path, const char *header); |
|
Evan@653
|
682 |
int gg_http_watch_fd(struct gg_http *h); |
|
Evan@653
|
683 |
void gg_http_stop(struct gg_http *h); |
|
Evan@653
|
684 |
void gg_http_free(struct gg_http *h); |
|
Evan@653
|
685 |
void gg_http_free_fields(struct gg_http *h); |
|
Evan@653
|
686 |
#define gg_free_http gg_http_free |
|
Evan@653
|
687 |
|
|
Evan@653
|
688 |
/* |
|
Evan@653
|
689 |
* struktury opisuj�ca kryteria wyszukiwania dla gg_search(). nieaktualne, |
|
Evan@653
|
690 |
* zast�pione przez gg_pubdir50_t. pozostawiono je dla zachowania ABI. |
|
Evan@653
|
691 |
*/ |
|
Evan@653
|
692 |
struct gg_search_request { |
|
Evan@653
|
693 |
int active; |
|
Evan@653
|
694 |
unsigned int start; |
|
Evan@653
|
695 |
char *nickname; |
|
Evan@653
|
696 |
char *first_name; |
|
Evan@653
|
697 |
char *last_name; |
|
Evan@653
|
698 |
char *city; |
|
Evan@653
|
699 |
int gender; |
|
Evan@653
|
700 |
int min_birth; |
|
Evan@653
|
701 |
int max_birth; |
|
Evan@653
|
702 |
char *email; |
|
Evan@653
|
703 |
char *phone; |
|
Evan@653
|
704 |
uin_t uin; |
|
Evan@653
|
705 |
}; |
|
Evan@653
|
706 |
|
|
Evan@653
|
707 |
struct gg_search { |
|
Evan@653
|
708 |
int count; |
|
Evan@653
|
709 |
struct gg_search_result *results; |
|
Evan@653
|
710 |
}; |
|
Evan@653
|
711 |
|
|
Evan@653
|
712 |
struct gg_search_result { |
|
Evan@653
|
713 |
uin_t uin; |
|
Evan@653
|
714 |
char *first_name; |
|
Evan@653
|
715 |
char *last_name; |
|
Evan@653
|
716 |
char *nickname; |
|
Evan@653
|
717 |
int born; |
|
Evan@653
|
718 |
int gender; |
|
Evan@653
|
719 |
char *city; |
|
Evan@653
|
720 |
int active; |
|
Evan@653
|
721 |
}; |
|
Evan@653
|
722 |
|
|
Evan@653
|
723 |
#define GG_GENDER_NONE 0 |
|
Evan@653
|
724 |
#define GG_GENDER_FEMALE 1 |
|
Evan@653
|
725 |
#define GG_GENDER_MALE 2 |
|
Evan@653
|
726 |
|
|
Evan@653
|
727 |
/* |
|
Evan@653
|
728 |
* funkcje wyszukiwania. |
|
Evan@653
|
729 |
*/ |
|
Evan@653
|
730 |
struct gg_http *gg_search(const struct gg_search_request *r, int async); |
|
Evan@653
|
731 |
int gg_search_watch_fd(struct gg_http *f); |
|
Evan@653
|
732 |
void gg_free_search(struct gg_http *f); |
|
Evan@653
|
733 |
#define gg_search_free gg_free_search |
|
Evan@653
|
734 |
|
|
Evan@653
|
735 |
const struct gg_search_request *gg_search_request_mode_0(char *nickname, char *first_name, char *last_name, char *city, int gender, int min_birth, int max_birth, int active, int start); |
|
Evan@653
|
736 |
const struct gg_search_request *gg_search_request_mode_1(char *email, int active, int start); |
|
Evan@653
|
737 |
const struct gg_search_request *gg_search_request_mode_2(char *phone, int active, int start); |
|
Evan@653
|
738 |
const struct gg_search_request *gg_search_request_mode_3(uin_t uin, int active, int start); |
|
Evan@653
|
739 |
void gg_search_request_free(struct gg_search_request *r); |
|
Evan@653
|
740 |
|
|
Evan@653
|
741 |
/* |
|
Evan@653
|
742 |
* funkcje obs�ugi katalogu publicznego zgodne z GG 5.0. tym razem funkcje |
|
Evan@653
|
743 |
* zachowuj� pewien poziom abstrakcji, �eby unikn��mian ABI przy zmianach |
|
Evan@653
|
744 |
* w protokole. |
|
Evan@653
|
745 |
* |
|
Evan@653
|
746 |
* NIE NALE�Y SI�ODWO�YWA�DO P� gg_pubdir50_t BEZPO�REDNIO! |
|
Evan@653
|
747 |
*/ |
|
Evan@653
|
748 |
uint32_t gg_pubdir50(struct gg_session *sess, gg_pubdir50_t req); |
|
Evan@653
|
749 |
gg_pubdir50_t gg_pubdir50_new(int type); |
|
Evan@653
|
750 |
int gg_pubdir50_add(gg_pubdir50_t req, const char *field, const char *value); |
|
Evan@653
|
751 |
int gg_pubdir50_seq_set(gg_pubdir50_t req, uint32_t seq); |
|
Evan@653
|
752 |
const char *gg_pubdir50_get(gg_pubdir50_t res, int num, const char *field); |
|
Evan@653
|
753 |
int gg_pubdir50_type(gg_pubdir50_t res); |
|
Evan@653
|
754 |
int gg_pubdir50_count(gg_pubdir50_t res); |
|
Evan@653
|
755 |
uin_t gg_pubdir50_next(gg_pubdir50_t res); |
|
Evan@653
|
756 |
uint32_t gg_pubdir50_seq(gg_pubdir50_t res); |
|
Evan@653
|
757 |
void gg_pubdir50_free(gg_pubdir50_t res); |
|
Evan@653
|
758 |
|
|
Evan@653
|
759 |
#define GG_PUBDIR50_UIN "FmNumber" |
|
Evan@653
|
760 |
#define GG_PUBDIR50_STATUS "FmStatus" |
|
Evan@653
|
761 |
#define GG_PUBDIR50_FIRSTNAME "firstname" |
|
Evan@653
|
762 |
#define GG_PUBDIR50_LASTNAME "lastname" |
|
Evan@653
|
763 |
#define GG_PUBDIR50_NICKNAME "nickname" |
|
Evan@653
|
764 |
#define GG_PUBDIR50_BIRTHYEAR "birthyear" |
|
Evan@653
|
765 |
#define GG_PUBDIR50_CITY "city" |
|
Evan@653
|
766 |
#define GG_PUBDIR50_GENDER "gender" |
|
Evan@653
|
767 |
#define GG_PUBDIR50_GENDER_FEMALE "1" |
|
Evan@653
|
768 |
#define GG_PUBDIR50_GENDER_MALE "2" |
|
Evan@653
|
769 |
#define GG_PUBDIR50_GENDER_SET_FEMALE "2" |
|
Evan@653
|
770 |
#define GG_PUBDIR50_GENDER_SET_MALE "1" |
|
Evan@653
|
771 |
#define GG_PUBDIR50_ACTIVE "ActiveOnly" |
|
Evan@653
|
772 |
#define GG_PUBDIR50_ACTIVE_TRUE "1" |
|
Evan@653
|
773 |
#define GG_PUBDIR50_START "fmstart" |
|
Evan@653
|
774 |
#define GG_PUBDIR50_FAMILYNAME "familyname" |
|
Evan@653
|
775 |
#define GG_PUBDIR50_FAMILYCITY "familycity" |
|
Evan@653
|
776 |
|
|
Evan@653
|
777 |
int gg_pubdir50_handle_reply(struct gg_event *e, const char *packet, int length); |
|
Evan@653
|
778 |
|
|
Evan@653
|
779 |
/* |
|
Evan@653
|
780 |
* struct gg_pubdir |
|
Evan@653
|
781 |
* |
|
Evan@653
|
782 |
* operacje na katalogu publicznym. |
|
Evan@653
|
783 |
*/ |
|
Evan@653
|
784 |
struct gg_pubdir { |
|
Evan@653
|
785 |
int success; /* czy si�da�o */ |
|
Evan@653
|
786 |
uin_t uin; /* otrzymany numerek. 0 je�li b��d */ |
|
Evan@653
|
787 |
}; |
|
Evan@653
|
788 |
|
|
Evan@653
|
789 |
/* og� funkcje, nie powinny by��ywane */ |
|
Evan@653
|
790 |
int gg_pubdir_watch_fd(struct gg_http *f); |
|
Evan@653
|
791 |
void gg_pubdir_free(struct gg_http *f); |
|
Evan@653
|
792 |
#define gg_free_pubdir gg_pubdir_free |
|
Evan@653
|
793 |
|
|
Evan@653
|
794 |
struct gg_token { |
|
Evan@653
|
795 |
int width; /* szeroko��brazka */ |
|
Evan@653
|
796 |
int height; /* wysoko��brazka */ |
|
Evan@653
|
797 |
int length; /* ilo��nak� tokenie */ |
|
Evan@653
|
798 |
char *tokenid; /* id tokenu */ |
|
Evan@653
|
799 |
}; |
|
Evan@653
|
800 |
|
|
Evan@653
|
801 |
/* funkcje dotycz�ce token�/ |
|
Evan@653
|
802 |
struct gg_http *gg_token(int async); |
|
Evan@653
|
803 |
int gg_token_watch_fd(struct gg_http *h); |
|
Evan@653
|
804 |
void gg_token_free(struct gg_http *h); |
|
Evan@653
|
805 |
|
|
Evan@653
|
806 |
/* rejestracja nowego numerka */ |
|
Evan@653
|
807 |
struct gg_http *gg_register(const char *email, const char *password, int async); |
|
Evan@653
|
808 |
struct gg_http *gg_register2(const char *email, const char *password, const char *qa, int async); |
|
Evan@653
|
809 |
struct gg_http *gg_register3(const char *email, const char *password, const char *tokenid, const char *tokenval, int async); |
|
Evan@653
|
810 |
#define gg_register_watch_fd gg_pubdir_watch_fd |
|
Evan@653
|
811 |
#define gg_register_free gg_pubdir_free |
|
Evan@653
|
812 |
#define gg_free_register gg_pubdir_free |
|
Evan@653
|
813 |
|
|
Evan@653
|
814 |
struct gg_http *gg_unregister(uin_t uin, const char *password, const char *email, int async); |
|
Evan@653
|
815 |
struct gg_http *gg_unregister2(uin_t uin, const char *password, const char *qa, int async); |
|
Evan@653
|
816 |
struct gg_http *gg_unregister3(uin_t uin, const char *password, const char *tokenid, const char *tokenval, int async); |
|
Evan@653
|
817 |
#define gg_unregister_watch_fd gg_pubdir_watch_fd |
|
Evan@653
|
818 |
#define gg_unregister_free gg_pubdir_free |
|
Evan@653
|
819 |
|
|
Evan@653
|
820 |
/* przypomnienie has�a e-mailem */ |
|
Evan@653
|
821 |
struct gg_http *gg_remind_passwd(uin_t uin, int async); |
|
Evan@653
|
822 |
struct gg_http *gg_remind_passwd2(uin_t uin, const char *tokenid, const char *tokenval, int async); |
|
Evan@653
|
823 |
struct gg_http *gg_remind_passwd3(uin_t uin, const char *email, const char *tokenid, const char *tokenval, int async); |
|
Evan@653
|
824 |
#define gg_remind_passwd_watch_fd gg_pubdir_watch_fd |
|
Evan@653
|
825 |
#define gg_remind_passwd_free gg_pubdir_free |
|
Evan@653
|
826 |
#define gg_free_remind_passwd gg_pubdir_free |
|
Evan@653
|
827 |
|
|
Evan@653
|
828 |
/* zmiana has�a */ |
|
Evan@653
|
829 |
struct gg_http *gg_change_passwd(uin_t uin, const char *passwd, const char *newpasswd, const char *newemail, int async); |
|
Evan@653
|
830 |
struct gg_http *gg_change_passwd2(uin_t uin, const char *passwd, const char *newpasswd, const char *email, const char *newemail, int async); |
|
Evan@653
|
831 |
struct gg_http *gg_change_passwd3(uin_t uin, const char *passwd, const char *newpasswd, const char *qa, int async); |
|
Evan@653
|
832 |
struct gg_http *gg_change_passwd4(uin_t uin, const char *email, const char *passwd, const char *newpasswd, const char *tokenid, const char *tokenval, int async); |
|
Evan@653
|
833 |
#define gg_change_passwd_free gg_pubdir_free |
|
Evan@653
|
834 |
#define gg_free_change_passwd gg_pubdir_free |
|
Evan@653
|
835 |
|
|
Evan@653
|
836 |
/* |
|
Evan@653
|
837 |
* struct gg_change_info_request |
|
Evan@653
|
838 |
* |
|
Evan@653
|
839 |
* opis ��dania zmiany informacji w katalogu publicznym. |
|
Evan@653
|
840 |
*/ |
|
Evan@653
|
841 |
struct gg_change_info_request { |
|
Evan@653
|
842 |
char *first_name; /* imi�/ |
|
Evan@653
|
843 |
char *last_name; /* nazwisko */ |
|
Evan@653
|
844 |
char *nickname; /* pseudonim */ |
|
Evan@653
|
845 |
char *email; /* email */ |
|
Evan@653
|
846 |
int born; /* rok urodzenia */ |
|
Evan@653
|
847 |
int gender; /* p�e�/ |
|
Evan@653
|
848 |
char *city; /* miasto */ |
|
Evan@653
|
849 |
}; |
|
Evan@653
|
850 |
|
|
Evan@653
|
851 |
struct gg_change_info_request *gg_change_info_request_new(const char *first_name, const char *last_name, const char *nickname, const char *email, int born, int gender, const char *city); |
|
Evan@653
|
852 |
void gg_change_info_request_free(struct gg_change_info_request *r); |
|
Evan@653
|
853 |
|
|
Evan@653
|
854 |
struct gg_http *gg_change_info(uin_t uin, const char *passwd, const struct gg_change_info_request *request, int async); |
|
Evan@653
|
855 |
#define gg_change_pubdir_watch_fd gg_pubdir_watch_fd |
|
Evan@653
|
856 |
#define gg_change_pubdir_free gg_pubdir_free |
|
Evan@653
|
857 |
#define gg_free_change_pubdir gg_pubdir_free |
|
Evan@653
|
858 |
|
|
Evan@653
|
859 |
/* |
|
Evan@653
|
860 |
* funkcje dotycz�ce listy kontakt�a serwerze. |
|
Evan@653
|
861 |
*/ |
|
Evan@653
|
862 |
struct gg_http *gg_userlist_get(uin_t uin, const char *password, int async); |
|
Evan@653
|
863 |
int gg_userlist_get_watch_fd(struct gg_http *f); |
|
Evan@653
|
864 |
void gg_userlist_get_free(struct gg_http *f); |
|
Evan@653
|
865 |
|
|
Evan@653
|
866 |
struct gg_http *gg_userlist_put(uin_t uin, const char *password, const char *contacts, int async); |
|
Evan@653
|
867 |
int gg_userlist_put_watch_fd(struct gg_http *f); |
|
Evan@653
|
868 |
void gg_userlist_put_free(struct gg_http *f); |
|
Evan@653
|
869 |
|
|
Evan@653
|
870 |
struct gg_http *gg_userlist_remove(uin_t uin, const char *password, int async); |
|
Evan@653
|
871 |
int gg_userlist_remove_watch_fd(struct gg_http *f); |
|
Evan@653
|
872 |
void gg_userlist_remove_free(struct gg_http *f); |
|
Evan@653
|
873 |
|
|
Evan@653
|
874 |
|
|
Evan@653
|
875 |
|
|
Evan@653
|
876 |
/* |
|
Evan@653
|
877 |
* funkcje dotycz�ce komunikacji mi�y klientami. |
|
Evan@653
|
878 |
*/ |
|
Evan@653
|
879 |
extern int gg_dcc_port; /* port, na kt� nas�uchuje klient */ |
|
Evan@653
|
880 |
extern unsigned long gg_dcc_ip; /* adres, na kt� nas�uchuje klient */ |
|
Evan@653
|
881 |
|
|
Evan@653
|
882 |
int gg_dcc_request(struct gg_session *sess, uin_t uin); |
|
Evan@653
|
883 |
|
|
Evan@653
|
884 |
struct gg_dcc *gg_dcc_send_file(uint32_t ip, uint16_t port, uin_t my_uin, uin_t peer_uin); |
|
Evan@653
|
885 |
struct gg_dcc *gg_dcc_get_file(uint32_t ip, uint16_t port, uin_t my_uin, uin_t peer_uin); |
|
Evan@653
|
886 |
struct gg_dcc *gg_dcc_voice_chat(uint32_t ip, uint16_t port, uin_t my_uin, uin_t peer_uin); |
|
Evan@653
|
887 |
void gg_dcc_set_type(struct gg_dcc *d, int type); |
|
Evan@653
|
888 |
int gg_dcc_fill_file_info(struct gg_dcc *d, const char *filename); |
|
Evan@653
|
889 |
int gg_dcc_fill_file_info2(struct gg_dcc *d, const char *filename, const char *local_filename); |
|
Evan@653
|
890 |
int gg_dcc_voice_send(struct gg_dcc *d, char *buf, int length); |
|
Evan@653
|
891 |
|
|
Evan@653
|
892 |
#define GG_DCC_VOICE_FRAME_LENGTH 195 |
|
Evan@653
|
893 |
#define GG_DCC_VOICE_FRAME_LENGTH_505 326 |
|
Evan@653
|
894 |
|
|
Evan@653
|
895 |
struct gg_dcc *gg_dcc_socket_create(uin_t uin, uint16_t port); |
|
Evan@653
|
896 |
#define gg_dcc_socket_free gg_free_dcc |
|
Evan@653
|
897 |
#define gg_dcc_socket_watch_fd gg_dcc_watch_fd |
|
Evan@653
|
898 |
|
|
Evan@653
|
899 |
struct gg_event *gg_dcc_watch_fd(struct gg_dcc *d); |
|
Evan@653
|
900 |
|
|
Evan@653
|
901 |
void gg_dcc_free(struct gg_dcc *c); |
|
Evan@653
|
902 |
#define gg_free_dcc gg_dcc_free |
|
Evan@653
|
903 |
|
|
Evan@653
|
904 |
/* |
|
Evan@653
|
905 |
* je�li chcemy sobie podebugowa�wystarczy ustawi�gg_debug_level'. |
|
Evan@653
|
906 |
* niestety w miar�rzybywania wpis�gg_debug(...)' nie chcia�o mi |
|
Evan@653
|
907 |
* si�stawia�dpowiednich leveli, wi�wi�zo��z�a do _MISC. |
|
Evan@653
|
908 |
*/ |
|
Evan@653
|
909 |
extern int gg_debug_level; /* poziom debugowania. mapa bitowa sta�ych GG_DEBUG_* */ |
|
Evan@653
|
910 |
|
|
Evan@653
|
911 |
/* |
|
Evan@653
|
912 |
* mo�na poda�ska�nik do funkcji obs�uguj�cej wywo�ania gg_debug(). |
|
Evan@653
|
913 |
* nieoficjalne, nieudokumentowane, mo�e si�mieni�je�li kto� jest |
|
Evan@653
|
914 |
* zainteresowany, niech da zna�a ekg-devel. |
|
Evan@653
|
915 |
*/ |
|
Evan@653
|
916 |
extern void (*gg_debug_handler)(int level, const char *format, va_list ap); |
|
Evan@653
|
917 |
extern void (*gg_debug_handler_session)(struct gg_session *sess, int level, const char *format, va_list ap); |
|
Evan@653
|
918 |
|
|
Evan@653
|
919 |
/* |
|
Evan@653
|
920 |
* mo�na poda�lik, do kt�o b� zapisywane teksty z gg_debug(). |
|
Evan@653
|
921 |
*/ |
|
Evan@653
|
922 |
extern FILE *gg_debug_file; |
|
Evan@653
|
923 |
|
|
Evan@653
|
924 |
#define GG_DEBUG_NET 1 |
|
Evan@653
|
925 |
#define GG_DEBUG_TRAFFIC 2 |
|
Evan@653
|
926 |
#define GG_DEBUG_DUMP 4 |
|
Evan@653
|
927 |
#define GG_DEBUG_FUNCTION 8 |
|
Evan@653
|
928 |
#define GG_DEBUG_MISC 16 |
|
Evan@653
|
929 |
|
|
Evan@653
|
930 |
#ifdef GG_DEBUG_DISABLE |
|
Evan@653
|
931 |
#define gg_debug(x, y...) do { } while(0) |
|
Evan@653
|
932 |
#define gg_debug_session(z, x, y...) do { } while(0) |
|
Evan@653
|
933 |
#else |
|
Evan@653
|
934 |
void gg_debug(int level, const char *format, ...); |
|
Evan@653
|
935 |
void gg_debug_session(struct gg_session *sess, int level, const char *format, ...); |
|
Evan@653
|
936 |
#endif |
|
Evan@653
|
937 |
|
|
Evan@653
|
938 |
const char *gg_libgadu_version(void); |
|
Evan@653
|
939 |
|
|
Evan@653
|
940 |
/* |
|
Evan@653
|
941 |
* konfiguracja http proxy. |
|
Evan@653
|
942 |
*/ |
|
Evan@653
|
943 |
extern int gg_proxy_enabled; /* w��cza obs�ug�roxy */ |
|
Evan@653
|
944 |
extern char *gg_proxy_host; /* okre�la adres serwera proxy */ |
|
Evan@653
|
945 |
extern int gg_proxy_port; /* okre�la port serwera proxy */ |
|
Evan@653
|
946 |
extern char *gg_proxy_username; /* okre�la nazw��ytkownika przy autoryzacji serwera proxy */ |
|
Evan@653
|
947 |
extern char *gg_proxy_password; /* okre�la has�o u�ytkownika przy autoryzacji serwera proxy */ |
|
Evan@653
|
948 |
extern int gg_proxy_http_only; /* w��cza obs�ug�roxy wy��cznie dla us�ug HTTP */ |
|
Evan@653
|
949 |
|
|
Evan@653
|
950 |
|
|
Evan@653
|
951 |
/* |
|
Evan@653
|
952 |
* adres, z kt�o �lemy pakiety (np ��czymy si� serwerem) |
|
Evan@653
|
953 |
* u�ywany przy gg_connect() |
|
Evan@653
|
954 |
*/ |
|
Evan@653
|
955 |
extern unsigned long gg_local_ip; |
|
Evan@653
|
956 |
/* |
|
Evan@653
|
957 |
* ------------------------------------------------------------------------- |
|
Evan@653
|
958 |
* poni�ej znajduj� si�ewn�zne sprawy biblioteki. zwyk�y klient nie |
|
Evan@653
|
959 |
* powinien ich w og�rusza�bo i nie ma po co. wszystko mo�na za�atwi�* procedurami wy�szego poziomu, kt�h definicje znajduj� si�a pocz�tku |
|
Evan@653
|
960 |
* tego pliku. |
|
Evan@653
|
961 |
* ------------------------------------------------------------------------- |
|
Evan@653
|
962 |
*/ |
|
Evan@653
|
963 |
|
|
Evan@653
|
964 |
#ifdef GG_CONFIG_HAVE_PTHREAD |
|
Evan@653
|
965 |
int gg_resolve_pthread(int *fd, void **resolver, const char *hostname); |
|
Evan@653
|
966 |
void gg_resolve_pthread_cleanup(void *resolver, int kill); |
|
Evan@653
|
967 |
#endif |
|
Evan@653
|
968 |
|
|
Evan@653
|
969 |
#ifdef _WIN32 |
|
Evan@653
|
970 |
int gg_thread_socket(int thread_id, int socket); |
|
Evan@653
|
971 |
#endif |
|
Evan@653
|
972 |
|
|
Evan@653
|
973 |
int gg_resolve(int *fd, int *pid, const char *hostname); |
|
Evan@653
|
974 |
|
|
Evan@653
|
975 |
#ifdef __GNUC__ |
|
Evan@653
|
976 |
char *gg_saprintf(const char *format, ...) __attribute__ ((format (printf, 1, 2))); |
|
Evan@653
|
977 |
#else |
|
Evan@653
|
978 |
char *gg_saprintf(const char *format, ...); |
|
Evan@653
|
979 |
#endif |
|
Evan@653
|
980 |
|
|
Evan@653
|
981 |
char *gg_vsaprintf(const char *format, va_list ap); |
|
Evan@653
|
982 |
|
|
Evan@653
|
983 |
#define gg_alloc_sprintf gg_saprintf |
|
Evan@653
|
984 |
|
|
Evan@653
|
985 |
char *gg_get_line(char **ptr); |
|
Evan@653
|
986 |
|
|
Evan@653
|
987 |
int gg_connect(void *addr, int port, int async); |
|
Evan@653
|
988 |
struct in_addr *gg_gethostbyname(const char *hostname); |
|
Evan@653
|
989 |
char *gg_read_line(int sock, char *buf, int length); |
|
Evan@653
|
990 |
void gg_chomp(char *line); |
|
Evan@653
|
991 |
char *gg_urlencode(const char *str); |
|
Evan@653
|
992 |
int gg_http_hash(const char *format, ...); |
|
Evan@653
|
993 |
int gg_read(struct gg_session *sess, char *buf, int length); |
|
Evan@653
|
994 |
int gg_write(struct gg_session *sess, const char *buf, int length); |
|
Evan@653
|
995 |
void *gg_recv_packet(struct gg_session *sess); |
|
Evan@653
|
996 |
int gg_send_packet(struct gg_session *sess, int type, ...); |
|
Evan@653
|
997 |
unsigned int gg_login_hash(const unsigned char *password, unsigned int seed); |
|
Evan@653
|
998 |
uint32_t gg_fix32(uint32_t x); |
|
Evan@653
|
999 |
uint16_t gg_fix16(uint16_t x); |
|
Evan@653
|
1000 |
#define fix16 gg_fix16 |
|
Evan@653
|
1001 |
#define fix32 gg_fix32 |
|
Evan@653
|
1002 |
char *gg_proxy_auth(void); |
|
Evan@653
|
1003 |
char *gg_base64_encode(const char *buf); |
|
Evan@653
|
1004 |
char *gg_base64_decode(const char *buf); |
|
Evan@653
|
1005 |
int gg_image_queue_remove(struct gg_session *s, struct gg_image_queue *q, int freeq); |
|
Evan@653
|
1006 |
|
|
Evan@653
|
1007 |
#define GG_APPMSG_HOST "appmsg.gadu-gadu.pl" |
|
Evan@653
|
1008 |
#define GG_APPMSG_PORT 80 |
|
Evan@653
|
1009 |
#define GG_PUBDIR_HOST "pubdir.gadu-gadu.pl" |
|
Evan@653
|
1010 |
#define GG_PUBDIR_PORT 80 |
|
Evan@653
|
1011 |
#define GG_REGISTER_HOST "register.gadu-gadu.pl" |
|
Evan@653
|
1012 |
#define GG_REGISTER_PORT 80 |
|
Evan@653
|
1013 |
#define GG_REMIND_HOST "retr.gadu-gadu.pl" |
|
Evan@653
|
1014 |
#define GG_REMIND_PORT 80 |
|
Evan@653
|
1015 |
|
|
Evan@653
|
1016 |
#define GG_DEFAULT_PORT 8074 |
|
Evan@653
|
1017 |
#define GG_HTTPS_PORT 443 |
|
Evan@653
|
1018 |
#define GG_HTTP_USERAGENT "Mozilla/4.7 [en] (Win98; I)" |
|
Evan@653
|
1019 |
|
|
Evan@653
|
1020 |
#define GG_DEFAULT_CLIENT_VERSION "6, 1, 0, 158" |
|
Evan@653
|
1021 |
#define GG_DEFAULT_PROTOCOL_VERSION 0x24 |
|
Evan@653
|
1022 |
#define GG_DEFAULT_TIMEOUT 30 |
|
Evan@653
|
1023 |
#define GG_HAS_AUDIO_MASK 0x40000000 |
|
Evan@653
|
1024 |
#define GG_ERA_OMNIX_MASK 0x04000000 |
|
Evan@653
|
1025 |
#define GG_LIBGADU_VERSION "CVS" |
|
Evan@653
|
1026 |
|
|
Evan@653
|
1027 |
#define GG_DEFAULT_DCC_PORT 1550 |
|
Evan@653
|
1028 |
|
|
Evan@653
|
1029 |
struct gg_header { |
|
Evan@653
|
1030 |
uint32_t type; /* typ pakietu */ |
|
Evan@653
|
1031 |
uint32_t length; /* d�ugo��eszty pakietu */ |
|
Evan@653
|
1032 |
} GG_PACKED; |
|
Evan@653
|
1033 |
|
|
Evan@653
|
1034 |
#define GG_WELCOME 0x0001 |
|
Evan@653
|
1035 |
#define GG_NEED_EMAIL 0x0014 |
|
Evan@653
|
1036 |
|
|
Evan@653
|
1037 |
struct gg_welcome { |
|
Evan@653
|
1038 |
uint32_t key; /* klucz szyfrowania has�a */ |
|
Evan@653
|
1039 |
} GG_PACKED; |
|
Evan@653
|
1040 |
|
|
Evan@653
|
1041 |
#define GG_LOGIN 0x000c |
|
Evan@653
|
1042 |
|
|
Evan@653
|
1043 |
struct gg_login { |
|
Evan@653
|
1044 |
uint32_t uin; /* m�umerek */ |
|
Evan@653
|
1045 |
uint32_t hash; /* hash has�a */ |
|
Evan@653
|
1046 |
uint32_t status; /* status na dzie�bry */ |
|
Evan@653
|
1047 |
uint32_t version; /* moja wersja klienta */ |
|
Evan@653
|
1048 |
uint32_t local_ip; /* m�dres ip */ |
|
Evan@653
|
1049 |
uint16_t local_port; /* port, na kt� s�ucham */ |
|
Evan@653
|
1050 |
} GG_PACKED; |
|
Evan@653
|
1051 |
|
|
Evan@653
|
1052 |
#define GG_LOGIN_EXT 0x0013 |
|
Evan@653
|
1053 |
|
|
Evan@653
|
1054 |
struct gg_login_ext { |
|
Evan@653
|
1055 |
uint32_t uin; /* m�umerek */ |
|
Evan@653
|
1056 |
uint32_t hash; /* hash has�a */ |
|
Evan@653
|
1057 |
uint32_t status; /* status na dzie�bry */ |
|
Evan@653
|
1058 |
uint32_t version; /* moja wersja klienta */ |
|
Evan@653
|
1059 |
uint32_t local_ip; /* m�dres ip */ |
|
Evan@653
|
1060 |
uint16_t local_port; /* port, na kt� s�ucham */ |
|
Evan@653
|
1061 |
uint32_t external_ip; /* zewn�zny adres ip */ |
|
Evan@653
|
1062 |
uint16_t external_port; /* zewn�zny port */ |
|
Evan@653
|
1063 |
} GG_PACKED; |
|
Evan@653
|
1064 |
|
|
Evan@653
|
1065 |
#define GG_LOGIN60 0x0015 |
|
Evan@653
|
1066 |
|
|
Evan@653
|
1067 |
struct gg_login60 { |
|
Evan@653
|
1068 |
uint32_t uin; /* m�umerek */ |
|
Evan@653
|
1069 |
uint32_t hash; /* hash has�a */ |
|
Evan@653
|
1070 |
uint32_t status; /* status na dzie�bry */ |
|
Evan@653
|
1071 |
uint32_t version; /* moja wersja klienta */ |
|
Evan@653
|
1072 |
uint8_t dunno1; /* 0x00 */ |
|
Evan@653
|
1073 |
uint32_t local_ip; /* m�dres ip */ |
|
Evan@653
|
1074 |
uint16_t local_port; /* port, na kt� s�ucham */ |
|
Evan@653
|
1075 |
uint32_t external_ip; /* zewn�zny adres ip */ |
|
Evan@653
|
1076 |
uint16_t external_port; /* zewn�zny port */ |
|
Evan@653
|
1077 |
uint8_t image_size; /* maksymalny rozmiar grafiki w KiB */ |
|
Evan@653
|
1078 |
uint8_t dunno2; /* 0xbe */ |
|
Evan@653
|
1079 |
} GG_PACKED; |
|
Evan@653
|
1080 |
|
|
Evan@653
|
1081 |
#define GG_LOGIN_OK 0x0003 |
|
Evan@653
|
1082 |
|
|
Evan@653
|
1083 |
#define GG_LOGIN_FAILED 0x0009 |
|
Evan@653
|
1084 |
|
|
Evan@653
|
1085 |
#define GG_PUBDIR50_REQUEST 0x0014 |
|
Evan@653
|
1086 |
|
|
Evan@653
|
1087 |
#define GG_PUBDIR50_WRITE 0x01 |
|
Evan@653
|
1088 |
#define GG_PUBDIR50_READ 0x02 |
|
Evan@653
|
1089 |
#define GG_PUBDIR50_SEARCH 0x03 |
|
Evan@653
|
1090 |
#define GG_PUBDIR50_SEARCH_REQUEST GG_PUBDIR50_SEARCH |
|
Evan@653
|
1091 |
#define GG_PUBDIR50_SEARCH_REPLY 0x05 |
|
Evan@653
|
1092 |
|
|
Evan@653
|
1093 |
struct gg_pubdir50_request { |
|
Evan@653
|
1094 |
uint8_t type; /* GG_PUBDIR50_* */ |
|
Evan@653
|
1095 |
uint32_t seq; /* czas wys�ania zapytania */ |
|
Evan@653
|
1096 |
} GG_PACKED; |
|
Evan@653
|
1097 |
|
|
Evan@653
|
1098 |
#define GG_PUBDIR50_REPLY 0x000e |
|
Evan@653
|
1099 |
|
|
Evan@653
|
1100 |
struct gg_pubdir50_reply { |
|
Evan@653
|
1101 |
uint8_t type; /* GG_PUBDIR50_* */ |
|
Evan@653
|
1102 |
uint32_t seq; /* czas wys�ania zapytania */ |
|
Evan@653
|
1103 |
} GG_PACKED; |
|
Evan@653
|
1104 |
|
|
Evan@653
|
1105 |
#define GG_NEW_STATUS 0x0002 |
|
Evan@653
|
1106 |
|
|
Evan@653
|
1107 |
#define GG_STATUS_NOT_AVAIL 0x0001 /* niedost�y */ |
|
Evan@653
|
1108 |
#define GG_STATUS_NOT_AVAIL_DESCR 0x0015 /* niedost�y z opisem (4.8) */ |
|
Evan@653
|
1109 |
#define GG_STATUS_AVAIL 0x0002 /* dost�y */ |
|
Evan@653
|
1110 |
#define GG_STATUS_AVAIL_DESCR 0x0004 /* dost�y z opisem (4.9) */ |
|
Evan@653
|
1111 |
#define GG_STATUS_BUSY 0x0003 /* zaj� */ |
|
Evan@653
|
1112 |
#define GG_STATUS_BUSY_DESCR 0x0005 /* zaj� z opisem (4.8) */ |
|
Evan@653
|
1113 |
#define GG_STATUS_INVISIBLE 0x0014 /* niewidoczny (4.6) */ |
|
Evan@653
|
1114 |
#define GG_STATUS_INVISIBLE_DESCR 0x0016 /* niewidoczny z opisem (4.9) */ |
|
Evan@653
|
1115 |
#define GG_STATUS_BLOCKED 0x0006 /* zablokowany */ |
|
Evan@653
|
1116 |
|
|
Evan@653
|
1117 |
#define GG_STATUS_FRIENDS_MASK 0x8000 /* tylko dla znajomych (4.6) */ |
|
Evan@653
|
1118 |
|
|
Evan@653
|
1119 |
#define GG_STATUS_DESCR_MAXSIZE 70 |
|
Evan@653
|
1120 |
|
|
Evan@653
|
1121 |
/* |
|
Evan@653
|
1122 |
* makra do �atwego i szybkiego sprawdzania stanu. |
|
Evan@653
|
1123 |
*/ |
|
Evan@653
|
1124 |
|
|
Evan@653
|
1125 |
/* GG_S_F() tryb tylko dla znajomych */ |
|
Evan@653
|
1126 |
#define GG_S_F(x) (((x) & GG_STATUS_FRIENDS_MASK) != 0) |
|
Evan@653
|
1127 |
|
|
Evan@653
|
1128 |
/* GG_S() stan bez uwzgl�ienia trybu tylko dla znajomych */ |
|
Evan@653
|
1129 |
#define GG_S(x) ((x) & ~GG_STATUS_FRIENDS_MASK) |
|
Evan@653
|
1130 |
|
|
Evan@653
|
1131 |
/* GG_S_A() dost�y */ |
|
Evan@653
|
1132 |
#define GG_S_A(x) (GG_S(x) == GG_STATUS_AVAIL || GG_S(x) == GG_STATUS_AVAIL_DESCR) |
|
Evan@653
|
1133 |
|
|
Evan@653
|
1134 |
/* GG_S_NA() niedost�y */ |
|
Evan@653
|
1135 |
#define GG_S_NA(x) (GG_S(x) == GG_STATUS_NOT_AVAIL || GG_S(x) == GG_STATUS_NOT_AVAIL_DESCR) |
|
Evan@653
|
1136 |
|
|
Evan@653
|
1137 |
/* GG_S_B() zaj� */ |
|
Evan@653
|
1138 |
#define GG_S_B(x) (GG_S(x) == GG_STATUS_BUSY || GG_S(x) == GG_STATUS_BUSY_DESCR) |
|
Evan@653
|
1139 |
|
|
Evan@653
|
1140 |
/* GG_S_I() niewidoczny */ |
|
Evan@653
|
1141 |
#define GG_S_I(x) (GG_S(x) == GG_STATUS_INVISIBLE || GG_S(x) == GG_STATUS_INVISIBLE_DESCR) |
|
Evan@653
|
1142 |
|
|
Evan@653
|
1143 |
/* GG_S_D() stan opisowy */ |
|
Evan@653
|
1144 |
#define GG_S_D(x) (GG_S(x) == GG_STATUS_NOT_AVAIL_DESCR || GG_S(x) == GG_STATUS_AVAIL_DESCR || GG_S(x) == GG_STATUS_BUSY_DESCR || GG_S(x) == GG_STATUS_INVISIBLE_DESCR) |
|
Evan@653
|
1145 |
|
|
Evan@653
|
1146 |
/* GG_S_BL() blokowany lub blokuj�cy */ |
|
Evan@653
|
1147 |
#define GG_S_BL(x) (GG_S(x) == GG_STATUS_BLOCKED) |
|
Evan@653
|
1148 |
|
|
Evan@653
|
1149 |
struct gg_new_status { |
|
Evan@653
|
1150 |
uint32_t status; /* na jaki zmieni�*/ |
|
Evan@653
|
1151 |
} GG_PACKED; |
|
Evan@653
|
1152 |
|
|
Evan@653
|
1153 |
#define GG_NOTIFY_FIRST 0x000f |
|
Evan@653
|
1154 |
#define GG_NOTIFY_LAST 0x0010 |
|
Evan@653
|
1155 |
|
|
Evan@653
|
1156 |
#define GG_NOTIFY 0x0010 |
|
Evan@653
|
1157 |
|
|
Evan@653
|
1158 |
struct gg_notify { |
|
Evan@653
|
1159 |
uint32_t uin; /* numerek danej osoby */ |
|
Evan@653
|
1160 |
uint8_t dunno1; /* rodzaj wpisu w li�cie */ |
|
Evan@653
|
1161 |
} GG_PACKED; |
|
Evan@653
|
1162 |
|
|
Evan@653
|
1163 |
#define GG_USER_OFFLINE 0x01 /* b�iemy niewidoczni dla u�ytkownika */ |
|
Evan@653
|
1164 |
#define GG_USER_NORMAL 0x03 /* zwyk�y u�ytkownik */ |
|
Evan@653
|
1165 |
#define GG_USER_BLOCKED 0x04 /* zablokowany u�ytkownik */ |
|
Evan@653
|
1166 |
|
|
Evan@653
|
1167 |
#define GG_LIST_EMPTY 0x0012 |
|
Evan@653
|
1168 |
|
|
Evan@653
|
1169 |
#define GG_NOTIFY_REPLY 0x000c /* tak, to samo co GG_LOGIN */ |
|
Evan@653
|
1170 |
|
|
Evan@653
|
1171 |
struct gg_notify_reply { |
|
Evan@653
|
1172 |
uint32_t uin; /* numerek */ |
|
Evan@653
|
1173 |
uint32_t status; /* status danej osoby */ |
|
Evan@653
|
1174 |
uint32_t remote_ip; /* adres ip delikwenta */ |
|
Evan@653
|
1175 |
uint16_t remote_port; /* port, na kt� s�ucha klient */ |
|
Evan@653
|
1176 |
uint32_t version; /* wersja klienta */ |
|
Evan@653
|
1177 |
uint16_t dunno2; /* znowu port? */ |
|
Evan@653
|
1178 |
} GG_PACKED; |
|
Evan@653
|
1179 |
|
|
Evan@653
|
1180 |
#define GG_NOTIFY_REPLY60 0x0011 |
|
Evan@653
|
1181 |
|
|
Evan@653
|
1182 |
struct gg_notify_reply60 { |
|
Evan@653
|
1183 |
uint32_t uin; /* numerek plus flagi w MSB */ |
|
Evan@653
|
1184 |
uint8_t status; /* status danej osoby */ |
|
Evan@653
|
1185 |
uint32_t remote_ip; /* adres ip delikwenta */ |
|
Evan@653
|
1186 |
uint16_t remote_port; /* port, na kt� s�ucha klient */ |
|
Evan@653
|
1187 |
uint8_t version; /* wersja klienta */ |
|
Evan@653
|
1188 |
uint8_t image_size; /* maksymalny rozmiar grafiki w KiB */ |
|
Evan@653
|
1189 |
uint8_t dunno1; /* 0x00 */ |
|
Evan@653
|
1190 |
} GG_PACKED; |
|
Evan@653
|
1191 |
|
|
Evan@653
|
1192 |
#define GG_STATUS60 0x000f |
|
Evan@653
|
1193 |
|
|
Evan@653
|
1194 |
struct gg_status60 { |
|
Evan@653
|
1195 |
uint32_t uin; /* numerek plus flagi w MSB */ |
|
Evan@653
|
1196 |
uint8_t status; /* status danej osoby */ |
|
Evan@653
|
1197 |
uint32_t remote_ip; /* adres ip delikwenta */ |
|
Evan@653
|
1198 |
uint16_t remote_port; /* port, na kt� s�ucha klient */ |
|
Evan@653
|
1199 |
uint8_t version; /* wersja klienta */ |
|
Evan@653
|
1200 |
uint8_t image_size; /* maksymalny rozmiar grafiki w KiB */ |
|
Evan@653
|
1201 |
uint8_t dunno1; /* 0x00 */ |
|
Evan@653
|
1202 |
} GG_PACKED; |
|
Evan@653
|
1203 |
|
|
Evan@653
|
1204 |
#define GG_ADD_NOTIFY 0x000d |
|
Evan@653
|
1205 |
#define GG_REMOVE_NOTIFY 0x000e |
|
Evan@653
|
1206 |
|
|
Evan@653
|
1207 |
struct gg_add_remove { |
|
Evan@653
|
1208 |
uint32_t uin; /* numerek */ |
|
Evan@653
|
1209 |
uint8_t dunno1; /* bitmapa */ |
|
Evan@653
|
1210 |
} GG_PACKED; |
|
Evan@653
|
1211 |
|
|
Evan@653
|
1212 |
#define GG_STATUS 0x0002 |
|
Evan@653
|
1213 |
|
|
Evan@653
|
1214 |
struct gg_status { |
|
Evan@653
|
1215 |
uint32_t uin; /* numerek */ |
|
Evan@653
|
1216 |
uint32_t status; /* nowy stan */ |
|
Evan@653
|
1217 |
} GG_PACKED; |
|
Evan@653
|
1218 |
|
|
Evan@653
|
1219 |
#define GG_SEND_MSG 0x000b |
|
Evan@653
|
1220 |
|
|
Evan@653
|
1221 |
#define GG_CLASS_QUEUED 0x0001 |
|
Evan@653
|
1222 |
#define GG_CLASS_OFFLINE GG_CLASS_QUEUED |
|
Evan@653
|
1223 |
#define GG_CLASS_MSG 0x0004 |
|
Evan@653
|
1224 |
#define GG_CLASS_CHAT 0x0008 |
|
Evan@653
|
1225 |
#define GG_CLASS_CTCP 0x0010 |
|
Evan@653
|
1226 |
#define GG_CLASS_ACK 0x0020 |
|
Evan@653
|
1227 |
#define GG_CLASS_EXT GG_CLASS_ACK /* kompatybilno��stecz */ |
|
Evan@653
|
1228 |
|
|
Evan@653
|
1229 |
#define GG_MSG_MAXSIZE 2000 |
|
Evan@653
|
1230 |
|
|
Evan@653
|
1231 |
struct gg_send_msg { |
|
Evan@653
|
1232 |
uint32_t recipient; |
|
Evan@653
|
1233 |
uint32_t seq; |
|
Evan@653
|
1234 |
uint32_t msgclass; |
|
Evan@653
|
1235 |
} GG_PACKED; |
|
Evan@653
|
1236 |
|
|
Evan@653
|
1237 |
struct gg_msg_richtext { |
|
Evan@653
|
1238 |
uint8_t flag; |
|
Evan@653
|
1239 |
uint16_t length; |
|
Evan@653
|
1240 |
} GG_PACKED; |
|
Evan@653
|
1241 |
|
|
Evan@653
|
1242 |
struct gg_msg_richtext_format { |
|
Evan@653
|
1243 |
uint16_t position; |
|
Evan@653
|
1244 |
uint8_t font; |
|
Evan@653
|
1245 |
} GG_PACKED; |
|
Evan@653
|
1246 |
|
|
Evan@653
|
1247 |
struct gg_msg_richtext_image { |
|
Evan@653
|
1248 |
uint16_t unknown1; |
|
Evan@653
|
1249 |
uint32_t size; |
|
Evan@653
|
1250 |
uint32_t crc32; |
|
Evan@653
|
1251 |
} GG_PACKED; |
|
Evan@653
|
1252 |
|
|
Evan@653
|
1253 |
#define GG_FONT_BOLD 0x01 |
|
Evan@653
|
1254 |
#define GG_FONT_ITALIC 0x02 |
|
Evan@653
|
1255 |
#define GG_FONT_UNDERLINE 0x04 |
|
Evan@653
|
1256 |
#define GG_FONT_COLOR 0x08 |
|
Evan@653
|
1257 |
#define GG_FONT_IMAGE 0x80 |
|
Evan@653
|
1258 |
|
|
Evan@653
|
1259 |
struct gg_msg_richtext_color { |
|
Evan@653
|
1260 |
uint8_t red; |
|
Evan@653
|
1261 |
uint8_t green; |
|
Evan@653
|
1262 |
uint8_t blue; |
|
Evan@653
|
1263 |
} GG_PACKED; |
|
Evan@653
|
1264 |
|
|
Evan@653
|
1265 |
struct gg_msg_recipients { |
|
Evan@653
|
1266 |
uint8_t flag; |
|
Evan@653
|
1267 |
uint32_t count; |
|
Evan@653
|
1268 |
} GG_PACKED; |
|
Evan@653
|
1269 |
|
|
Evan@653
|
1270 |
struct gg_msg_image_request { |
|
Evan@653
|
1271 |
uint8_t flag; |
|
Evan@653
|
1272 |
uint32_t size; |
|
Evan@653
|
1273 |
uint32_t crc32; |
|
Evan@653
|
1274 |
} GG_PACKED; |
|
Evan@653
|
1275 |
|
|
Evan@653
|
1276 |
struct gg_msg_image_reply { |
|
Evan@653
|
1277 |
uint8_t flag; |
|
Evan@653
|
1278 |
uint32_t size; |
|
Evan@653
|
1279 |
uint32_t crc32; |
|
Evan@653
|
1280 |
/* char filename[]; */ |
|
Evan@653
|
1281 |
/* char image[]; */ |
|
Evan@653
|
1282 |
} GG_PACKED; |
|
Evan@653
|
1283 |
|
|
Evan@653
|
1284 |
#define GG_SEND_MSG_ACK 0x0005 |
|
Evan@653
|
1285 |
|
|
Evan@653
|
1286 |
#define GG_ACK_BLOCKED 0x0001 |
|
Evan@653
|
1287 |
#define GG_ACK_DELIVERED 0x0002 |
|
Evan@653
|
1288 |
#define GG_ACK_QUEUED 0x0003 |
|
Evan@653
|
1289 |
#define GG_ACK_MBOXFULL 0x0004 |
|
Evan@653
|
1290 |
#define GG_ACK_NOT_DELIVERED 0x0006 |
|
Evan@653
|
1291 |
|
|
Evan@653
|
1292 |
struct gg_send_msg_ack { |
|
Evan@653
|
1293 |
uint32_t status; |
|
Evan@653
|
1294 |
uint32_t recipient; |
|
Evan@653
|
1295 |
uint32_t seq; |
|
Evan@653
|
1296 |
} GG_PACKED; |
|
Evan@653
|
1297 |
|
|
Evan@653
|
1298 |
#define GG_RECV_MSG 0x000a |
|
Evan@653
|
1299 |
|
|
Evan@653
|
1300 |
struct gg_recv_msg { |
|
Evan@653
|
1301 |
uint32_t sender; |
|
Evan@653
|
1302 |
uint32_t seq; |
|
Evan@653
|
1303 |
uint32_t time; |
|
Evan@653
|
1304 |
uint32_t msgclass; |
|
Evan@653
|
1305 |
} GG_PACKED; |
|
Evan@653
|
1306 |
|
|
Evan@653
|
1307 |
#define GG_PING 0x0008 |
|
Evan@653
|
1308 |
|
|
Evan@653
|
1309 |
#define GG_PONG 0x0007 |
|
Evan@653
|
1310 |
|
|
Evan@653
|
1311 |
#define GG_DISCONNECTING 0x000b |
|
Evan@653
|
1312 |
|
|
Evan@653
|
1313 |
#define GG_USERLIST_REQUEST 0x0016 |
|
Evan@653
|
1314 |
|
|
Evan@653
|
1315 |
#define GG_USERLIST_PUT 0x00 |
|
Evan@653
|
1316 |
#define GG_USERLIST_PUT_MORE 0x01 |
|
Evan@653
|
1317 |
#define GG_USERLIST_GET 0x02 |
|
Evan@653
|
1318 |
|
|
Evan@653
|
1319 |
struct gg_userlist_request { |
|
Evan@653
|
1320 |
uint8_t type; |
|
Evan@653
|
1321 |
} GG_PACKED; |
|
Evan@653
|
1322 |
|
|
Evan@653
|
1323 |
#define GG_USERLIST_REPLY 0x0010 |
|
Evan@653
|
1324 |
|
|
Evan@653
|
1325 |
#define GG_USERLIST_PUT_REPLY 0x00 |
|
Evan@653
|
1326 |
#define GG_USERLIST_PUT_MORE_REPLY 0x02 |
|
Evan@653
|
1327 |
#define GG_USERLIST_GET_REPLY 0x06 |
|
Evan@653
|
1328 |
#define GG_USERLIST_GET_MORE_REPLY 0x04 |
|
Evan@653
|
1329 |
|
|
Evan@653
|
1330 |
struct gg_userlist_reply { |
|
Evan@653
|
1331 |
uint8_t type; |
|
Evan@653
|
1332 |
} GG_PACKED; |
|
Evan@653
|
1333 |
|
|
Evan@653
|
1334 |
/* |
|
Evan@653
|
1335 |
* pakiety, sta�e, struktury dla DCC |
|
Evan@653
|
1336 |
*/ |
|
Evan@653
|
1337 |
|
|
Evan@653
|
1338 |
struct gg_dcc_tiny_packet { |
|
Evan@653
|
1339 |
uint8_t type; /* rodzaj pakietu */ |
|
Evan@653
|
1340 |
} GG_PACKED; |
|
Evan@653
|
1341 |
|
|
Evan@653
|
1342 |
struct gg_dcc_small_packet { |
|
Evan@653
|
1343 |
uint32_t type; /* rodzaj pakietu */ |
|
Evan@653
|
1344 |
} GG_PACKED; |
|
Evan@653
|
1345 |
|
|
Evan@653
|
1346 |
struct gg_dcc_big_packet { |
|
Evan@653
|
1347 |
uint32_t type; /* rodzaj pakietu */ |
|
Evan@653
|
1348 |
uint32_t dunno1; /* niewiadoma */ |
|
Evan@653
|
1349 |
uint32_t dunno2; /* niewiadoma */ |
|
Evan@653
|
1350 |
} GG_PACKED; |
|
Evan@653
|
1351 |
|
|
Evan@653
|
1352 |
/* |
|
Evan@653
|
1353 |
* p�co, nie znamy dok�adnie protoko�u. nie wiemy, co czemu odpowiada. |
|
Evan@653
|
1354 |
* nazwy s� niepowa�ne i tymczasowe. |
|
Evan@653
|
1355 |
*/ |
|
Evan@653
|
1356 |
#define GG_DCC_WANT_FILE 0x0003 /* peer chce plik */ |
|
Evan@653
|
1357 |
#define GG_DCC_HAVE_FILE 0x0001 /* wi�mu damy */ |
|
Evan@653
|
1358 |
#define GG_DCC_HAVE_FILEINFO 0x0003 /* niech ma informacje o pliku */ |
|
Evan@653
|
1359 |
#define GG_DCC_GIMME_FILE 0x0006 /* peer jest pewny */ |
|
Evan@653
|
1360 |
#define GG_DCC_CATCH_FILE 0x0002 /* wysy�amy plik */ |
|
Evan@653
|
1361 |
|
|
Evan@653
|
1362 |
#define GG_DCC_FILEATTR_READONLY 0x0020 |
|
Evan@653
|
1363 |
|
|
Evan@653
|
1364 |
#define GG_DCC_TIMEOUT_SEND 1800 /* 30 minut */ |
|
Evan@653
|
1365 |
#define GG_DCC_TIMEOUT_GET 1800 /* 30 minut */ |
|
Evan@653
|
1366 |
#define GG_DCC_TIMEOUT_FILE_ACK 300 /* 5 minut */ |
|
Evan@653
|
1367 |
#define GG_DCC_TIMEOUT_VOICE_ACK 300 /* 5 minut */ |
|
Evan@653
|
1368 |
|
|
Evan@653
|
1369 |
#ifdef __cplusplus |
|
Evan@653
|
1370 |
} |
|
Evan@653
|
1371 |
#ifdef _WIN32 |
|
Evan@653
|
1372 |
#pragma pack(pop) |
|
Evan@653
|
1373 |
#endif |
|
Evan@653
|
1374 |
#endif |
|
Evan@653
|
1375 |
|
|
Evan@653
|
1376 |
#endif /* __GG_LIBGADU_H */ |
|
Evan@653
|
1377 |
|
|
Evan@653
|
1378 |
/* |
|
Evan@653
|
1379 |
* Local variables: |
|
Evan@653
|
1380 |
* c-indentation-style: k&r |
|
Evan@653
|
1381 |
* c-basic-offset: 8 |
|
Evan@653
|
1382 |
* indent-tabs-mode: notnil |
|
Evan@653
|
1383 |
* End: |
|
Evan@653
|
1384 |
* |
|
Evan@653
|
1385 |
* vim: shiftwidth=8: |
|
Evan@653
|
1386 |
*/ |
|
Evan@653
|
1387 |
|
Evan@653
|
1388 |
|
Evan@653
|
1389 |
|
Evan@653
|
1390 |
|
Evan@653
|
1391 |
|
Evan@653
|
1392 |
|
Evan@653
|
1393 |
| | | | | | |