1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
|
// ---------------------------------------------------------------------------80
// ICQ plugin for Miranda Instant Messenger
// ________________________________________
//
// Copyright © 2000-2001 Richard Hughes, Roland Rabien, Tristan Van de Vreede
// Copyright © 2001-2002 Jon Keating, Richard Hughes
// Copyright © 2002-2004 Martin Öberg, Sam Kothari, Robert Rainwater
// Copyright © 2004-2010 Joe Kucera
//
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License
// as published by the Free Software Foundation; either version 2
// of the License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
//
// -----------------------------------------------------------------------------
// DESCRIPTION:
//
// Global constants and default settings are defined here
//
// -----------------------------------------------------------------------------
// Most of the protocol constants follow the naming conventions of the
// Oscar documentation at http://iserverd.khstu.ru/oscar/index.html
// BIG THANKS to Alexandr for maintaining this site and to everyone
// in the ICQ devel community who have helped to collect the data.
#ifndef __ICQ_CONSTANTS_H
#define __ICQ_CONSTANTS_H
/* Static icon indexes */
#define ISI_AUTH_REQUEST 0
#define ISI_AUTH_GRANT 1
#define ISI_AUTH_REVOKE 2
#define ISI_ADD_TO_SERVLIST 3
/* Contact menu item indexes */
#define ICMI_AUTH_REQUEST 0
#define ICMI_AUTH_GRANT 1
#define ICMI_AUTH_REVOKE 2
#define ICMI_ADD_TO_SERVLIST 3
#define ICMI_XSTATUS_DETAILS 4
#define ICMI_OPEN_PROFILE 5
/* Some default settings */
#define DEFAULT_SERVER_PORT 5190
#define DEFAULT_SERVER_PORT_SSL 443
#define DEFAULT_SERVER_HOST "login.icq.com"
#define DEFAULT_SERVER_HOST_SSL "slogin.icq.com"
#define DEFAULT_SS_ENABLED 1
#define DEFAULT_SS_ADDSERVER 1
#define DEFAULT_SS_LOAD 0
#define DEFAULT_SS_STORE 1
#define DEFAULT_SS_GROUP "General"
#define DEFAULT_SECURE_LOGIN 1
#define DEFAULT_SECURE_CONNECTION 1
#define DEFAULT_KEEPALIVE_ENABLED 1
#define DEFAULT_AIM_ENABLED 1
#define DEFAULT_UTF_ENABLED 2 // everything unicode is default
#define DEFAULT_ANSI_CODEPAGE CP_ACP
#define DEFAULT_DCMSG_ENABLED 1 // passive dc messaging is default
#define DEFAULT_TEMPVIS_ENABLED 1 // temporary visible is enabled by default
#define DEFAULT_MTN_ENABLED 1
#define DEFAULT_AVATARS_ENABLED 1
#define DEFAULT_LOAD_AVATARS 1
#define DEFAULT_BIGGER_AVATARS 0
#define DEFAULT_AVATARS_CHECK 1
#define DEFAULT_XSTATUS_ENABLED 0
#define DEFAULT_XSTATUS_AUTO 1
#define DEFAULT_XSTATUS_RESET 0
#define DEFAULT_MOODS_ENABLED 1
#define DEFAULT_KILLSPAM_ENABLED 1
#define DEFAULT_SLOWSEND 1
#define DEFAULT_ONLYSERVERACKS 1
#define DEFAULT_POPUPS_ENABLED 1
#define DEFAULT_SPAM_POPUPS_ENABLED 1
#define DEFAULT_LOG_POPUPS_ENABLED 1
#define DEFAULT_POPUPS_SYS_ICONS 1
#define DEFAULT_LOG0_TEXT_COLORS RGB(0,0,0) // LOG_NOTE
#define DEFAULT_LOG0_BACK_COLORS RGB(255,255,255)
#define DEFAULT_LOG0_TIMEOUT 0
#define DEFAULT_LOG1_TEXT_COLORS RGB(0,0,0) // LOG_WARNING
#define DEFAULT_LOG1_BACK_COLORS RGB(255,255,255)
#define DEFAULT_LOG1_TIMEOUT 0
#define DEFAULT_LOG2_TEXT_COLORS RGB(0,0,0) // LOG_ERROR
#define DEFAULT_LOG2_BACK_COLORS RGB(255,255,255)
#define DEFAULT_LOG2_TIMEOUT 0
#define DEFAULT_LOG3_TEXT_COLORS RGB(0,0,0) // LOG_FATAL
#define DEFAULT_LOG3_BACK_COLORS RGB(255,255,255)
#define DEFAULT_LOG3_TIMEOUT 0
#define DEFAULT_SPAM_TEXT_COLORS RGB(193,0,38)
#define DEFAULT_SPAM_BACK_COLORS RGB(213,209,208)
#define DEFAULT_SPAM_TIMEOUT 0
#define DEFAULT_POPUPS_WIN_COLORS 0
#define DEFAULT_POPUPS_DEF_COLORS (BYTE)!DEFAULT_POPUPS_WIN_COLORS
/* Database setting names */
#define DBSETTING_CAPABILITIES "caps"
// Contact's server-list items
#define DBSETTING_SERVLIST_ID "ServerId"
#define DBSETTING_SERVLIST_GROUP "SrvGroupId"
#define DBSETTING_SERVLIST_PERMIT "SrvPermitId"
#define DBSETTING_SERVLIST_DENY "SrvDenyId"
#define DBSETTING_SERVLIST_IGNORE "SrvIgnoreId"
// Owner's server-list items
#define DBSETTING_SERVLIST_PRIVACY "SrvVisibilityID"
#define DBSETTING_SERVLIST_PHOTO "SrvPhotoID"
#define DBSETTING_SERVLIST_AVATAR "SrvAvatarID"
#define DBSETTING_SERVLIST_METAINFO "SrvMetaInfoID"
#define DBSETTING_SERVLIST_UNHANDLED "SrvUnhandledIDList"
// Contact's data from server-list
#define DBSETTING_SERVLIST_DATA "ServerData"
// User Details
#define DBSETTING_METAINFO_TOKEN "MetaInfoToken"
#define DBSETTING_METAINFO_TIME "MetaInfoTime"
#define DBSETTING_METAINFO_SAVED "InfoTS"
// Status Note & Mood
#define DBSETTING_STATUS_NOTE "StatusNote"
#define DBSETTING_STATUS_NOTE_TIME "StatusNoteTS"
#define DBSETTING_STATUS_MOOD "StatusMood"
// Custom Status
#define DBSETTING_XSTATUS_ID "XStatusId"
#define DBSETTING_XSTATUS_NAME "XStatusName"
#define DBSETTING_XSTATUS_MSG "XStatusMsg"
// Status FLAGS (used to determine status of other users)
#define ICQ_STATUSF_ONLINE 0x0000
#define ICQ_STATUSF_AWAY 0x0001
#define ICQ_STATUSF_DND 0x0002
#define ICQ_STATUSF_NA 0x0004
#define ICQ_STATUSF_OCCUPIED 0x0010
#define ICQ_STATUSF_FFC 0x0020
#define ICQ_STATUSF_INVISIBLE 0x0100
// Status values (used to set own status)
#define ICQ_STATUS_ONLINE 0x0000
#define ICQ_STATUS_AWAY 0x0001
#define ICQ_STATUS_NA 0x0005
#define ICQ_STATUS_OCCUPIED 0x0011
#define ICQ_STATUS_DND 0x0013
#define ICQ_STATUS_FFC 0x0020
#define ICQ_STATUS_INVISIBLE 0x0100
#define STATUS_WEBAWARE 0x0001 // Status webaware flag
#define STATUS_SHOWIP 0x0002 // Status show ip flag
#define STATUS_BIRTHDAY 0x0008 // User birthday flag
#define STATUS_WEBFRONT 0x0020 // User active webfront flag
#define STATUS_DCDISABLED 0x0100 // Direct connection not supported
#define STATUS_DCAUTH 0x1000 // Direct connection upon authorization
#define STATUS_DCCONT 0x2000 // DC only with contact users
// Typing notification statuses
#define MTN_FINISHED 0x0000
#define MTN_TYPED 0x0001
#define MTN_BEGUN 0x0002
#define MTN_WINDOW_CLOSED 0x000F
// Ascii Capability IDs
#define CAP_RTFMSGS "{97B12751-243C-4334-AD22-D6ABF73F1492}"
#define CAP_UTF8MSGS "{0946134E-4C7F-11D1-8222-444553540000}"
// Binary Capability Sizes
#define BINARY_CAP_SIZE 16
#define BINARY_SHORT_CAP_SIZE 2
// Binary Capability IDs
#define CAP_SRV_RELAY 0x09, 0x46, 0x13, 0x49, 0x4c, 0x7f, 0x11, 0xd1, 0x82, 0x22, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00
#define CAP_UTF 0x09, 0x46, 0x13, 0x4e, 0x4c, 0x7f, 0x11, 0xd1, 0x82, 0x22, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00
#define CAP_RTF 0x97, 0xb1, 0x27, 0x51, 0x24, 0x3c, 0x43, 0x34, 0xad, 0x22, 0xd6, 0xab, 0xf7, 0x3f, 0x14, 0x92
#define CAP_CONTACTS 0x09, 0x46, 0x13, 0x4b, 0x4c, 0x7f, 0x11, 0xd1, 0x82, 0x22, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00
#define CAP_TYPING 0x56, 0x3f, 0xc8, 0x09, 0x0b, 0x6f, 0x41, 0xbd, 0x9f, 0x79, 0x42, 0x26, 0x09, 0xdf, 0xa2, 0xf3
#define CAP_ICQDIRECT 0x09, 0x46, 0x13, 0x44, 0x4c, 0x7f, 0x11, 0xd1, 0x82, 0x22, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00
#define CAP_XTRAZ 0x1A, 0x09, 0x3C, 0x6C, 0xD7, 0xFD, 0x4E, 0xC5, 0x9D, 0x51, 0xA6, 0x47, 0x4E, 0x34, 0xF5, 0xA0
#define CAP_OSCAR_FILE 0x09, 0x46, 0x13, 0x43, 0x4C, 0x7F, 0x11, 0xD1, 0x82, 0x22, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00
// Miranda IM Capability bitmask
#define CAPF_SRV_RELAY 0x00000001
#define CAPF_UTF 0x00000002
#define CAPF_RTF 0x00000004
#define CAPF_CONTACTS 0x00000010
#define CAPF_TYPING 0x00000020
#define CAPF_ICQDIRECT 0x00000080
#define CAPF_XTRAZ 0x00000100
#define CAPF_OSCAR_FILE 0x00000400
#define CAPF_STATUS_MESSAGES 0x10000000
#define CAPF_STATUS_MOOD 0x40000000
#define CAPF_XSTATUS 0x80000000
// Message Capability IDs
#define MCAP_SRV_RELAY_FMT_s 0x09461349, 0x4c7f11d1, 0x82224445, 0x53540000
#define MCAP_REVERSE_DC_REQ_s 0x09461344, 0x4c7f11d1, 0x82224445, 0x53540000
#define MCAP_FILE_TRANSFER_s 0x09461343, 0x4c7f11d1, 0x82224445, 0x53540000
#define MCAP_CONTACTS_s 0x0946134b, 0x4c7f11d1, 0x82224445, 0x53540000
// Plugin Type GUIDs
#define PSIG_MESSAGE_s 0x00000000, 0x00000000, 0x00000000, 0x00000000
#define PSIG_INFO_PLUGIN_s 0xa0e93f37, 0x4fe9d311, 0xbcd20004, 0xac96dd96
#define PSIG_STATUS_PLUGIN_s 0x10cf40d1, 0x4fe9d311, 0xbcd20004, 0xac96dd96
// Plugin Message GUIDs
#define PMSG_QUERY_INFO_s 0xF002BF71, 0x4371D311, 0x8DD20010, 0x4B06462E
#define PMSG_QUERY_STATUS_s 0x10180670, 0x5471D311, 0x8DD20010, 0x4B06462E
// Message types
#define MTYPE_PLAIN 0x01 // Plain text (simple) message
#define MTYPE_CHAT 0x02 // Chat request message
#define MTYPE_FILEREQ 0x03 // File request / file ok message
#define MTYPE_URL 0x04 // URL message (0xFE formatted)
#define MTYPE_AUTHREQ 0x06 // Authorization request message (0xFE formatted)
#define MTYPE_AUTHDENY 0x07 // Authorization denied message (0xFE formatted)
#define MTYPE_AUTHOK 0x08 // Authorization given message (empty)
#define MTYPE_SERVER 0x09 // Message from OSCAR server (0xFE formatted)
#define MTYPE_ADDED 0x0C // "You-were-added" message (0xFE formatted)
#define MTYPE_WWP 0x0D // Web pager message (0xFE formatted)
#define MTYPE_EEXPRESS 0x0E // Email express message (0xFE formatted)
#define MTYPE_CONTACTS 0x13 // Contact list message
#define MTYPE_PLUGIN 0x1A // Plugin message described by text string
#define MTYPE_AUTOONLINE 0xE7 // Auto online message (internal only)
#define MTYPE_AUTOAWAY 0xE8 // Auto away message
#define MTYPE_AUTOBUSY 0xE9 // Auto occupied message
#define MTYPE_AUTONA 0xEA // Auto not available message
#define MTYPE_AUTODND 0xEB // Auto do not disturb message
#define MTYPE_AUTOFFC 0xEC // Auto free for chat message
// Internal Message types
#define MTYPE_UNKNOWN 0x00 // Unknown message
#define MTYPE_GREETINGCARD 0x101 // Greeting Card
#define MTYPE_REQUESTCONTACTS 0x102 // Request for Contacts
#define MTYPE_MESSAGE 0x103 // Message+
#define MTYPE_STATUSMSGEXT 0x104 // StatusMsgExt (2003b)
#define MTYPE_SMS_MESSAGE 0x110 // SMS message from Mobile
#define MTYPE_SCRIPT_INVITATION 0x201 // Xtraz Invitation
#define MTYPE_SCRIPT_DATA 0x202 // Xtraz Message
#define MTYPE_SCRIPT_NOTIFY 0x208 // Xtraz Response
#define MTYPE_REVERSE_REQUEST 0x401 // Reverse DC request
// Message Plugin Type GUIDs
#define MGTYPE_MESSAGE_s 0xBE6B7305, 0x0FC2104F, 0xA6DE4DB1, 0xE3564B0E
#define MGTYPE_STATUSMSGEXT_s 0x811a18bc, 0x0e6c1847, 0xa5916f18, 0xdcc76f1a
#define MGTYPE_FILE_s 0xF02D12D9, 0x3091D311, 0x8DD70010, 0x4B06462E
#define MGTYPE_WEBURL_s 0x371C5872, 0xE987D411, 0xA4C100D0, 0xB759B1D9
#define MGTYPE_CONTACTS_s 0x2A0E7D46, 0x7676D411, 0xBCE60004, 0xAC961EA6
#define MGTYPE_GREETING_CARD_s 0x01E53B48, 0x2AE4D111, 0xB6790060, 0x97E1E294
#define MGTYPE_CHAT_s 0xBFF720B2, 0x378ED411, 0xBD280004, 0xAC96D905
#define MGTYPE_SMS_MESSAGE_s 0x0e28f600, 0x11e7d311, 0xbcf30004, 0xac969dc2
#define MGTYPE_XTRAZ_SCRIPT_s 0x3b60b3ef, 0xd82a6c45, 0xa4e09c5a, 0x5e67e865
// Message Plugin Sub-Type IDs
#define MGTYPE_STANDARD_SEND 0x0000
#define MGTYPE_CONTACTS_REQUEST 0x0002
#define MGTYPE_SCRIPT_INVITATION 0x0001
#define MGTYPE_SCRIPT_DATA 0x0002
#define MGTYPE_SCRIPT_USER_REMOVE 0x0004
#define MGTYPE_SCRIPT_NOTIFY 0x0008
#define MGTYPE_UNDEFINED 0xFFFF
/* Channels */
#define ICQ_LOGIN_CHAN 0x01
#define ICQ_DATA_CHAN 0x02
#define ICQ_ERROR_CHAN 0x03
#define ICQ_CLOSE_CHAN 0x04
#define ICQ_PING_CHAN 0x05
/* Families */
#define ICQ_SERVICE_FAMILY 0x0001
#define ICQ_LOCATION_FAMILY 0x0002
#define ICQ_BUDDY_FAMILY 0x0003
#define ICQ_MSG_FAMILY 0x0004
#define ICQ_BOS_FAMILY 0x0009
#define ICQ_LOOKUP_FAMILY 0x000a
#define ICQ_STATS_FAMILY 0x000b
#define ICQ_CHAT_NAVIGATION_FAMILY 0x000d
#define ICQ_CHAT_FAMILY 0x000e
#define ICQ_AVATAR_FAMILY 0x0010
#define ICQ_LISTS_FAMILY 0x0013
#define ICQ_EXTENSIONS_FAMILY 0x0015
#define ICQ_AUTHORIZATION_FAMILY 0x0017
#define ICQ_DIRECTORY_FAMILY 0x0025
/* Subtypes for Service Family 0x0001 */
#define ICQ_ERROR 0x0001
#define ICQ_CLIENT_READY 0x0002
#define ICQ_SERVER_READY 0x0003
#define ICQ_CLIENT_NEW_SERVICE 0x0004
#define ICQ_SERVER_REDIRECT_SERVICE 0x0005
#define ICQ_CLIENT_REQ_RATE_INFO 0x0006
#define ICQ_SERVER_RATE_INFO 0x0007
#define ICQ_CLIENT_RATE_ACK 0x0008
#define ICQ_SERVER_RATE_CHANGE 0x000a
#define ICQ_SERVER_PAUSE 0x000b
#define ICQ_CLIENT_PAUSE_ACK 0x000c
#define ICQ_SERVER_RESUME 0x000d
#define ICQ_CLIENT_REQINFO 0x000e
#define ICQ_SERVER_NAME_INFO 0x000f
#define ICQ_SERVER_EVIL_NOTICE 0x0010
#define ICQ_CLIENT_SET_IDLE 0x0011
#define ICQ_SERVER_MIGRATIONREQ 0x0012
#define ICQ_SERVER_MOTD 0x0013
#define ICQ_CLIENT_FAMILIES 0x0017
#define ICQ_SERVER_FAMILIES2 0x0018
#define ICQ_CLIENT_SET_STATUS 0x001e
#define ICQ_SERVER_EXTSTATUS 0x0021
/* Subtypes for Location Family 0x0002 */
#define ICQ_LOCATION_CLI_REQ_RIGHTS 0x0002
#define ICQ_LOCATION_RIGHTS_REPLY 0x0003
#define ICQ_LOCATION_SET_USER_INFO 0x0004
#define ICQ_LOCATION_REQ_USER_INFO 0x0005
#define ICQ_LOCATION_USR_INFO_REPLY 0x0006
#define ICQ_LOCATION_QRY_USER_INFO 0x0015
/* Subtypes for Buddy Family 0x0003 */
#define ICQ_USER_CLI_REQBUDDY 0x0002
#define ICQ_USER_SRV_REPLYBUDDY 0x0003
#define ICQ_USER_ADDTOLIST 0x0004 /* deprecated */
#define ICQ_USER_REMOVEFROMLIST 0x0005 /* deprecated */
#define ICQ_USER_NOTIFY_REJECTED 0x000a
#define ICQ_USER_ONLINE 0x000b
#define ICQ_USER_OFFLINE 0x000c
#define ICQ_USER_ADDTOTEMPLIST 0x000f
#define ICQ_USER_REMOVEFROMTEMPLIST 0x0010
/* Subtypes for Message Family 0x0004 */
#define ICQ_MSG_SRV_ERROR 0x0001
#define ICQ_MSG_CLI_SETPARAMS 0x0002
#define ICQ_MSG_CLI_RESETPARAMS 0x0003
#define ICQ_MSG_CLI_REQICBM 0x0004
#define ICQ_MSG_SRV_REPLYICBM 0x0005
#define ICQ_MSG_SRV_SEND 0x0006
#define ICQ_MSG_SRV_RECV 0x0007
#define ICQ_MSG_SRV_MISSED_MESSAGE 0x000A
#define ICQ_MSG_RESPONSE 0x000B
#define ICQ_MSG_SRV_ACK 0x000C
#define ICQ_MSG_CLI_REQ_OFFLINE 0x0010
#define ICQ_MSG_MTN 0x0014
#define ICQ_MSG_SRV_OFFLINE_REPLY 0x0017
/* Subtypes for Privacy Family 0x0009 */
#define ICQ_PRIVACY_REQ_RIGHTS 0x0002
#define ICQ_PRIVACY_RIGHTS_REPLY 0x0003
#define ICQ_CLI_ADDVISIBLE 0x0005
#define ICQ_CLI_REMOVEVISIBLE 0x0006
#define ICQ_CLI_ADDINVISIBLE 0x0007
#define ICQ_CLI_REMOVEINVISIBLE 0x0008
#define ICQ_PRIVACY_SERVICE_ERROR 0x0009
#define ICQ_CLI_ADDTEMPVISIBLE 0x000A
#define ICQ_CLI_REMOVETEMPVISIBLE 0x000B
/* Subtypes for Lookup Family 0x000a */
#define ICQ_LOOKUP_REQUEST 0x0002
#define ICQ_LOOKUP_EMAIL_REPLY 0x0003
/* Subtypes for Stats Family 0x000b */
#define ICQ_STATS_MINREPORTINTERVAL 0x0002
/* Subtypes for Avatar Family 0x0010 */
#define ICQ_AVATAR_ERROR 0x0001
#define ICQ_AVATAR_UPLOAD_REQUEST 0x0002
#define ICQ_AVATAR_UPLOAD_ACK 0x0003
#define ICQ_AVATAR_GET_REQUEST 0x0006
#define ICQ_AVATAR_GET_REPLY 0x0007
/* Subtypes for Server Lists Family 0x0013 */
#define ICQ_LISTS_ERROR 0x0001
#define ICQ_LISTS_CLI_REQLISTS 0x0002
#define ICQ_LISTS_SRV_REPLYLISTS 0x0003
#define ICQ_LISTS_CLI_REQUEST 0x0004
#define ICQ_LISTS_CLI_CHECK 0x0005
#define ICQ_LISTS_LIST 0x0006
#define ICQ_LISTS_GOTLIST 0x0007
#define ICQ_LISTS_ADDTOLIST 0x0008
#define ICQ_LISTS_UPDATEGROUP 0x0009
#define ICQ_LISTS_REMOVEFROMLIST 0x000A
#define ICQ_LISTS_ACK 0x000E
#define ICQ_LISTS_UPTODATE 0x000F
#define ICQ_LISTS_CLI_MODIFYSTART 0x0011
#define ICQ_LISTS_CLI_MODIFYEND 0x0012
#define ICQ_LISTS_GRANTAUTH 0x0014
#define ICQ_LISTS_AUTHGRANTED 0x0015
#define ICQ_LISTS_REVOKEAUTH 0x0016
#define ICQ_LISTS_REQUESTAUTH 0x0018
#define ICQ_LISTS_AUTHREQUEST 0x0019
#define ICQ_LISTS_CLI_AUTHRESPONSE 0x001A
#define ICQ_LISTS_SRV_AUTHRESPONSE 0x001B
#define ICQ_LISTS_YOUWEREADDED 0x001C
/* Subtypes for ICQ Extensions Family 0x0015 */
#define ICQ_META_ERROR 0x0001
#define ICQ_META_CLI_REQUEST 0x0002
#define ICQ_META_SRV_REPLY 0x0003
#define ICQ_META_SRV_UPDATE 0x0004
/* Subtypes for Authorization Family 0x0017 */
#define ICQ_SIGNON_ERROR 0x0001
#define ICQ_SIGNON_LOGIN_REQUEST 0x0002
#define ICQ_SIGNON_LOGIN_REPLY 0x0003
#define ICQ_SIGNON_REGISTRATION_REQ 0x0004
#define ICQ_SIGNON_NEW_UIN 0x0005
#define ICQ_SIGNON_AUTH_REQUEST 0x0006
#define ICQ_SIGNON_AUTH_KEY 0x0007
#define ICQ_SIGNON_REQUEST_IMAGE 0x000C
#define ICQ_SIGNON_REG_AUTH_IMAGE 0x000D
// Class constants
#define CLASS_UNCONFIRMED 0x0001
#define CLASS_ADMINISTRATOR 0x0002
#define CLASS_AOL 0x0004
#define CLASS_COMMERCIAL 0x0008
#define CLASS_FREE 0x0010
#define CLASS_AWAY 0x0020
#define CLASS_ICQ 0x0040
#define CLASS_WIRELESS 0x0080
#define CLASS_FORWARDING 0x0200
#define CLASS_BOT 0x0400
// Reply types for SNAC 15/02 & 15/03
#define CLI_DELETE_OFFLINE_MSGS_REQ 0x003E
#define CLI_META_INFO_REQ 0x07D0
#define SRV_META_INFO_REPLY 0x07DA
// Reply subtypes for SNAC 15/02 & 15/03
#define META_PROCESSING_ERROR 0x0001 // Meta processing error server reply
#define META_SMS_DELIVERY_RECEIPT 0x0096 // Server SMS response (delivery receipt)
#define META_SET_PASSWORD_ACK 0x00AA // Set user password server ack
#define META_UNREGISTER_ACK 0x00B4 // Unregister account server ack
#define META_BASIC_USERINFO 0x00C8 // User basic info reply
#define META_WORK_USERINFO 0x00D2 // User work info reply
#define META_MORE_USERINFO 0x00DC // User more info reply
#define META_NOTES_USERINFO 0x00E6 // User notes (about) info reply
#define META_EMAIL_USERINFO 0x00EB // User extended email info reply
#define META_INTERESTS_USERINFO 0x00F0 // User interests info reply
#define META_AFFILATIONS_USERINFO 0x00FA // User past/affilations info reply
#define META_SHORT_USERINFO 0x0104 // Short user information reply
#define META_HPAGECAT_USERINFO 0x010E // User homepage category information reply
#define SRV_USER_FOUND 0x01A4 // Search: user found reply
#define SRV_LAST_USER_FOUND 0x01AE // Search: last user found reply
#define META_REGISTRATION_STATS_ACK 0x0302 // Registration stats ack
#define SRV_RANDOM_FOUND 0x0366 // Random search server reply
#define META_SET_PASSWORD_REQ 0x042E // Set user password request
#define META_REQUEST_FULL_INFO 0x04B2 // Request full user info
#define META_REQUEST_SHORT_INFO 0x04BA // Request short user info
#define META_REQUEST_SELF_INFO 0x04D0 // Request full self user info
#define META_SEARCH_GENERIC 0x055F // Search user by details (TLV)
#define META_SEARCH_UIN 0x0569 // Search user by UIN (TLV)
#define META_SEARCH_EMAIL 0x0573 // Search user by E-mail (TLV)
#define META_DIRECTORY_QUERY 0x0FA0
#define META_DIRECTORY_DATA 0x0FAA
#define META_DIRECTORY_RESPONSE 0x0FB4
#define META_DIRECTORY_UPDATE 0x0FD2
#define META_DIRECTORY_UPDATE_ACK 0x0FDC
#define META_XML_INFO 0x08A2 // Server variable requested via xml
#define META_SET_FULLINFO_REQ 0x0C3A // Set full user info request
#define META_SET_FULLINFO_ACK 0x0C3F // Server ack for set fullinfo command
#define META_SPAM_REPORT_ACK 0x2012 // Server ack for user spam report
// Subtypes for Directory meta requests (family 0x5b9)
#define DIRECTORY_QUERY_INFO 0x0002
#define DIRECTORY_SET_INFO 0x0003
#define DIRECTORY_QUERY_MULTI_INFO 0x0006
#define DIRECTORY_QUERY_INFO_ACK 0x0009
#define DIRECTORY_SET_INFO_ACK 0x000A
// TLV types
// SECURITY flags
#define TLV_AUTH 0x02F8 // uint8 User authorization permissions
#define TLV_WEBAWARE 0x030C // uint8 User 'show web status' permissions
// SEARCH only TLVs
#define TLV_AGERANGE 0x0168 // acombo Age range to search
#define TLV_KEYWORDS 0x0226 // sstring Whitepages search keywords string
#define TLV_ONLINEONLY 0x0230 // uint8 Search only online users flag
#define TLV_UIN 0x0136 // uint32 User uin
// common
#define TLV_FIRSTNAME 0x0140 // sstring User firstname
#define TLV_LASTNAME 0x014A // sstring User lastname
#define TLV_NICKNAME 0x0154 // sstring User nickname
#define TLV_EMAIL 0x015E // ecombo User email
#define TLV_GENDER 0x017C // uint8 User gender
#define TLV_MARITAL 0x033E // uint8 User marital status
#define TLV_LANGUAGE 0x0186 // uint16 User spoken language
#define TLV_CITY 0x0190 // sstring User home city name
#define TLV_STATE 0x019A // sstring User home state abbr
#define TLV_COUNTRY 0x01A4 // uint16 User home country code
#define TLV_COMPANY 0x01AE // sstring User work company name
#define TLV_DEPARTMENT 0x01B8 // sstring User work department name
#define TLV_POSITION 0x01C2 // sstring User work position (title)
#define TLV_OCUPATION 0x01CC // uint16 User work ocupation code
#define TLV_PASTINFO 0x01D6 // icombo User affilations node
#define TLV_AFFILATIONS 0x01FE // icombo User past info node
#define TLV_INTERESTS 0x01EA // icombo User interests node
#define TLV_HOMEPAGE 0x0212 // sstring User homepage category/keywords
// changeinfo
#define TLV_AGE 0x0172 // uint16 User age
#define TLV_URL 0x0213 // sstring User homepage url
#define TLV_BIRTH 0x023A // bcombo User birthday info (year, month, day)
#define TLV_ABOUT 0x0258 // sstring User notes (about) text
#define TLV_STREET 0x0262 // sstring User home street address
#define TLV_ZIPCODE 0x026D // sstring User home zip code
#define TLV_PHONE 0x0276 // sstring User home phone number
#define TLV_FAX 0x0280 // sstring User home fax number
#define TLV_MOBILE 0x028A // sstring User home cellular phone number
#define TLV_WORKSTREET 0x0294 // sstring User work street address
#define TLV_WORKCITY 0x029E // sstring User work city name
#define TLV_WORKSTATE 0x02A8 // sstring User work state name
#define TLV_WORKCOUNTRY 0x02B2 // uint16 User work country code
#define TLV_WORKZIPCODE 0x02BD // sstring User work zip code
#define TLV_WORKPHONE 0x02C6 // sstring User work phone number
#define TLV_WORKFAX 0x02D0 // sstring User work fax number
#define TLV_WORKURL 0x02DA // sstring User work webpage url
#define TLV_TIMEZONE 0x0316 // uint8 User GMT offset
#define TLV_ORGCITY 0x0320 // sstring User originally from city
#define TLV_ORGSTATE 0x032A // sstring User originally from state
#define TLV_ORGCOUNTRY 0x0334 // uint16 User originally from country (code)
#define TLV_ALLOWSPAM 0x0348 // uint8
#define TLV_CODEPAGE 0x0352 // uint16 Codepage used for details
/* Direct packet types */
#define PEER_INIT 0xFF
#define PEER_INIT_ACK 0x01
#define PEER_MSG_INIT 0x03
#define PEER_MSG 0x02
#define PEER_FILE_INIT 0x00
#define PEER_FILE_INIT_ACK 0x01
#define PEER_FILE_NEXTFILE 0x02
#define PEER_FILE_RESUME 0x03
#define PEER_FILE_STOP 0x04
#define PEER_FILE_SPEED 0x05
#define PEER_FILE_DATA 0x06
/* Direct command types */
#define DIRECT_CANCEL 0x07D0 /* 2000 TCP cancel previous file/chat request */
#define DIRECT_ACK 0x07DA /* 2010 TCP acknowledge message packet */
#define DIRECT_MESSAGE 0x07EE /* 2030 TCP message */
// DC types
#define DC_DISABLED 0x0000 // Direct connection disabled / auth required
#define DC_HTTPS 0x0001 // Direct connection thru firewall or https proxy
#define DC_SOCKS 0x0002 // Direct connection thru socks4/5 proxy server
#define DC_NORMAL 0x0004 // Normal direct connection (without proxy/firewall)
#define DC_WEB 0x0006 // Web client - no direct connection
// Message flags
#define MFLAG_NORMAL 0x01 // Normal message
#define MFLAG_AUTO 0x03 // Auto-message flag
#define MFLAG_MULTI 0x80 // This is multiple recipients message
// Some SSI constants
#define SSI_ITEM_BUDDY 0x0000 // Buddy record (name: uin for ICQ and screenname for AIM)
#define SSI_ITEM_GROUP 0x0001 // Group record
#define SSI_ITEM_PERMIT 0x0002 // Permit record ("Allow" list in AIM, and "Visible" list in ICQ)
#define SSI_ITEM_DENY 0x0003 // Deny record ("Block" list in AIM, and "Invisible" list in ICQ)
#define SSI_ITEM_VISIBILITY 0x0004 // Permit/deny settings or/and bitmask of the AIM classes
#define SSI_ITEM_PRESENCE 0x0005 // Presence info (if others can see your idle status, etc)
#define SSI_ITEM_CLIENTDATA 0x0009 // Client specific, e.g. ICQ2k shortcut bar items
#define SSI_ITEM_IGNORE 0x000e // Ignore list record.
#define SSI_ITEM_LASTUPDATE 0x000f // Item that contain roster update time (name: "LastUpdateDate")
#define SSI_ITEM_NONICQ 0x0010 // Non-ICQ contact (to send SMS). Name: 1#EXT, 2#EXT, etc
#define SSI_ITEM_UNKNOWN2 0x0011 // Unknown.
#define SSI_ITEM_IMPORTTIME 0x0013 // Item that contain roster import time (name: "Import time")
#define SSI_ITEM_BUDDYICON 0x0014 // Buddy icon info. (names: "1", "8", etc. according ot the icon type)
#define SSI_ITEM_SAVED 0x0019
#define SSI_ITEM_PREAUTH 0x001B
#define SSI_ITEM_METAINFO 0x0020 // Owner Details' token & last update time
#define SSI_TLV_AWAITING_AUTH 0x0066 // Contact not authorized in list
#define SSI_TLV_NOT_IN_LIST 0x006A // Always empty
#define SSI_TLV_UNKNOWN 0x006D // WTF ?
#define SSI_TLV_SUBITEMS 0x00C8 // List of sub-items IDs
#define SSI_TLV_VISIBILITY 0x00CA
#define SSI_TLV_SHORTCUT 0x00CD
#define SSI_TLV_TIMESTAMP 0x00D4 // Import Timestamp
#define SSI_TLV_AVATARHASH 0x00D5
#define SSI_TLV_NAME 0x0131 // Custom contact nickname
#define SSI_TLV_GROUP_OPENNED 0x0134
#define SSI_TLV_EMAIL 0x0137 // Custom contact email
#define SSI_TLV_PHONE 0x0138 // Custom contact phone number
#define SSI_TLV_PHONE_CELLULAR 0x0139 // Custom contact cellphone number
#define SSI_TLV_PHONE_SMS 0x013A // Custom contact SMS number
#define SSI_TLV_COMMENT 0x013C // User comment
#define SSI_TLV_METAINFO_TOKEN 0x015C // Privacy token for Contact's details
#define SSI_TLV_METAINFO_TIME 0x015D // Contact's details last update time
#define MAX_SSI_TLV_NAME_SIZE 0x40
#define MAX_SSI_TLV_COMMENT_SIZE 0x50
// Client ID constants (internal)
#define CLID_GENERIC 0x00 // Generic clients (eg. older official clients)
#define CLID_ALTERNATIVE 0x01 // Clients not using tick for MsgID (most third-party clients)
#define CLID_MIRANDA 0x02 // Hey, that's mate!
#define CLID_ICQ6 0x10 // Mark ICQ6 as it has some non obvious limitations!
// Internal Constants
#define ICQ_PROTOCOL_NAME LPGEN("ICQ")
#define ICQ_PLUG_VERSION __VERSION_DWORD
#define ICQ_VERSION 8 // Protocol version
#define DC_TYPE DC_NORMAL // Used for DC settings
#define MAX_CONTACTSSEND 15
#define MAX_MESSAGESNACSIZE 8000
#define CLIENTRATELIMIT 0
#define COOKIE_TIMEOUT 3600 // One hour
#define KEEPALIVE_INTERVAL 57000 // One minute
#define WEBFRONTPORT 0x50
#define CLIENTFEATURES 0x3
#define URL_FORGOT_PASSWORD "https://www.icq.com/password/"
#define URL_REGISTER "https://www.icq.com/register/"
#define FLAP_MARKER 0x2a
#define CLIENT_MD5_STRING "AOL Instant Messenger (SM)"
#define UNIQUEIDSETTING "UIN"
#define UINMAXLEN 11 // DWORD string max len + 1
#define PASSWORDMAXLEN 128
#define OSCAR_PROXY_HOST "ars.icq.com"
#define OSCAR_PROXY_VERSION 0x044A
#define CLIENT_ID_STRING "ICQ Client" // Client identification, mimic ICQ 6.5
#define CLIENT_ID_CODE 0x010a
#define CLIENT_VERSION_MAJOR 0x0014
#define CLIENT_VERSION_MINOR 0x0034
#define CLIENT_VERSION_LESSER 0x0000
#define CLIENT_VERSION_BUILD 0x0c18
#define CLIENT_DISTRIBUTION 0x00000611
#define CLIENT_LANGUAGE "en"
#define CLIENT_COUNTRY "us"
#endif /* __ICQ_CONSTANTS_H */
|