source: perl/modules/AIM/lib/Net/OSCAR/XML/Protocol.xml @ a1c2f06

barnowl_perlaim
Last change on this file since a1c2f06 was 7a1c90d, checked in by Geoffrey Thomas <geofft@mit.edu>, 16 years ago
Skeleton AIM module, and Net::OSCAR 1.925
  • Property mode set to 100644
File size: 29.7 KB
Line 
1<?xml version="1.0"?>
2<!DOCTYPE oscar SYSTEM "Protocol.dtd">
3
4<oscar>
5
6        <!-- OSCAR primitives -->
7
8        <define name="flap">
9                <byte>42</byte> <!-- FLAP packet start indicator -->
10                <byte name="channel">2</byte>
11                <word name="seqno" />
12                <data length_prefix="word" name="msg" />
13        </define>
14
15        <define name="snac">
16                <word name="family" />
17                <word name="subtype" />
18                <byte name="flags1" />
19                <byte name="flags2" />
20                <dword name="reqid" />
21                <data name="data" />
22        </define>
23
24        <define name="TLV">
25                <word name="type" />
26                <data length_prefix="word" name="data" />
27        </define>
28        <define name="subtyped_TLV">
29                <word name="type" />
30                <byte name="subtype" />
31                <data length_prefix="byte" name="data" />
32        </define>
33
34
35        <define name="userinfo">
36                <data name="screenname" length_prefix="byte" />
37                <word name="evil" />
38                <tlvchain count_prefix="word">
39                        <tlv type="1"><word name="flags" /></tlv>
40                        <tlv type="2"><dword name="membersince" /></tlv>
41                        <tlv type="3"><dword name="onsince" /></tlv>
42                        <tlv type="4"><word name="idle" /></tlv>
43                        <tlv type="13"><data length="16" count="-1" name="capabilities" /></tlv>
44                        <tlv type="25"><data length="2" count="-1" name="shortcaps" /></tlv>
45                        <tlv type="29">
46                                <tlvchain subtyped="yes">
47                                        <tlv type="1" subtype="1"><data name="icon_md5sum" /></tlv>
48                                        <tlv type="2" subtype="-1"><data length_prefix="word" name="extended_status" /></tlv>
49                                </tlvchain>
50                        </tlv>
51               
52                        <tlv type="5"> <!-- Only found in channel 3 IMs, why is it in this structure??? -->
53                                <tlvchain>
54                                        <tlv type="12"><data name="invitation_message" /></tlv>
55                                        <tlv type="10001">
56                                                <word />
57                                                <data length_prefix="byte" name="chat_url" />
58                                        </tlv>
59                                </tlvchain>
60                        </tlv> 
61
62
63                        <!-- Self-info only -->
64                        <tlv type="15"><dword name="session_length" /></tlv>
65                        <tlv type="10"><dword name="ip" /></tlv>
66
67                        <!-- This contains a second copy of this structure - why?! -->
68                        <tlv type="512" name="sub_info" />
69                </tlvchain>
70        </define>
71
72
73        <!-- Random protocol crap -->
74
75        <define name="service_request" family="1" subtype="4">
76                <word name="type" />
77
78                <!-- Chat extra -->
79                <tlvchain>
80                        <tlv type="1" name="chat">
81                                <word name="exchange" />
82                                <data length_prefix="byte" name="url" />
83                                <word>0</word>
84                        </tlv>
85                </tlvchain>
86        </define>
87        <define name="error" family="-1" subtype="1">
88                <word name="errno" />
89                <tlvchain>
90                        <tlv type="4"><data name="error_details" /></tlv>
91                </tlvchain>
92        </define>
93        <define name="service_redirect_response" family="1" subtype="5">
94                <tlvchain>
95                        <tlv type="13"><word name="service_type" /></tlv>
96                        <tlv type="6"><data name="auth_cookie" /></tlv>
97                        <tlv type="5"><data name="server_ip" /></tlv>
98                </tlvchain>
99        </define>
100
101
102        <!-- Signing on -->
103
104        <define name="BOS_signon" family="0" subtype="1" channel="1" flags2="6">
105                <data name="cookie" />
106        </define>
107
108        <define name="signon" family="23" subtype="2">
109                <tlvchain>
110                        <tlv type="1"><data name="screenname" /></tlv>
111
112                        <!-- For AIM-style signons -->
113                        <tlv type="37"><data name="auth_response" /></tlv>
114                        <!--
115                           Set this if the password was hashed before putting
116                           it into the auth_response
117                        -->
118                        <tlv type="76"><data name="pass_is_hashed" /></tlv>
119
120                        <!-- For ICQ-style signons -->
121                        <tlv type="2"><data name="password" /></tlv>
122
123                        <tlv type="3"><data name="clistr" /></tlv>
124                        <tlv type="22"><word name="supermajor" /></tlv>
125                        <tlv type="23"><word name="major" /></tlv>
126                        <tlv type="24"><word name="minor" /></tlv>
127                        <tlv type="25"><word name="subminor" /></tlv>
128                        <tlv type="26"><word name="build" /></tlv>
129                        <tlv type="20"><dword name="subbuild" /></tlv>
130                        <tlv type="15"><data>en</data></tlv>
131                        <tlv type="14"><data>us</data></tlv>
132                        <tlv type="74"><byte>1</byte></tlv>
133                </tlvchain>
134        </define>
135        <define name="ICQ_signon_request" channel="1">
136                <dword>1</dword>
137                <ref name="signon" />
138        </define>
139
140        <define name="initial_signon_request" family="23" subtype="6">
141                <tlvchain>
142                        <tlv type="1"><data name="screenname" /></tlv>
143                        <tlv type="75" default_generate="yes" />
144                        <tlv type="90" default_generate="yes" />
145                </tlvchain>
146        </define>
147
148        <!-- How server sends challenge for challenge/response authentication to client -->
149        <define name="authentication_key" family="23" subtype="7">
150                <data name="key" length_prefix="word" />
151        </define>
152
153        <!-- Random crap that's part of signon, protocol negotiation -->
154        <define name="authorization_response" family="23" subtype="3">
155                <tlvchain>
156                        <!-- If there's an error -->
157                        <tlv type="8"><word name="error" /></tlv>
158                        <tlv type="4"><data name="error_details" /></tlv>
159
160                        <!-- Basic info -->
161                        <tlv type="1"><data name="screenname" /></tlv>
162                        <tlv type="17"><data name="email" /></tlv>
163                        <tlv type="6"><data name="auth_cookie" /></tlv>
164                        <tlv type="5"><data name="server_ip" /></tlv>
165
166                        <!-- Other stuff -->
167                        <tlv type="19"><word name="registration_status" /></tlv>
168                        <tlv type="84"><data name="password_change_url" /></tlv>
169                </tlvchain>
170        </define>
171        <define name="rate_class_info">
172                <word name="class_id" />
173                <dword name="window_size" />
174                <data name="levels">
175                        <dword name="clear" />
176                        <dword name="alert" />
177                        <dword name="limit" />
178                        <dword name="disconnect" />
179                        <dword name="current" />
180                        <dword name="max" />
181                </data>
182                <dword name="last_time" />
183                <byte name="current_state" />
184        </define>
185        <define name="rate_info_response" family="1" subtype="7">
186                <data count_prefix="word" name="classes">
187                        <ref name="rate_class_info" />
188                </data>
189                <data count="-1" name="classmembers">
190                        <word name="class_id" />
191                        <data count_prefix="word" name="snacs">
192                                <word name="family" />
193                                <word name="subtype" />
194                        </data>
195                </data>
196        </define>
197        <define name="rate_acknowledgement" family="1" subtype="8">
198                <word count="-1" name="classes" />
199        </define>
200        <define name="personal_info_request" family="1" subtype="14" />
201        <define name="buddylist_rights_request" family="19" subtype="2" />
202        <define name="buddylist_request" family="19" subtype="4" />
203
204        <define name="locate_rights_request" family="2" subtype="2" />
205        <define name="locate_rights_response" family="2" subtype="3">
206                <tlvchain>
207                        <tlv type="1"><word name="max_profile_len">1024</word></tlv>
208                        <tlv type="2"><word name="max_capabilities">16</word></tlv>
209                        <tlv type="3"><word>10</word></tlv>
210                        <tlv type="4"><word>4096</word></tlv>
211                </tlvchain>
212        </define>
213
214        <define name="buddy_rights_request" family="3" subtype="2" />
215        <define name="buddy_rights_response" family="3" subtype="3">
216                <tlvchain>
217                        <tlv type="1"><word name="maxbuddies">600</word></tlv>
218                        <tlv type="2"><word name="maxwatchers">750</word></tlv>
219                        <tlv type="3"><word name="maxnotifies">512</word></tlv>
220                </tlvchain>
221        </define>
222
223        <define name="IM_parameters">
224                <word name="channel">0</word>
225                <dword name="flags">3</dword>
226                <word name="max_size">8000</word>
227                <word name="max_send_warn">999</word>
228                <word name="max_recv_warn">999</word>
229                <word name="min_msg_interval">0</word>
230                <word>0</word>
231        </define>
232        <define name="add_IM_parameters" family="4" subtype="2"><ref name="IM_parameters" /></define>
233        <define name="IM_parameter_request" family="4" subtype="4"><ref name="IM_parameters" /></define>
234        <define name="IM_parameter_response" family="4" subtype="5"><ref name="IM_parameters" /></define>
235
236        <define name="BOS_rights_request" family="9" subtype="2" />
237        <define name="BOS_rights_response" family="9" subtype="3">
238                <tlvchain>
239                        <tlv type="1"><word name="max_permits">200</word></tlv>
240                        <tlv type="2"><word name="max_denies">200</word></tlv>
241                </tlvchain>
242        </define>
243
244        <define name="self_information" family="1" subtype="15"><ref name="userinfo" /></define>
245        <define name="minimum_report_interval" family="11" subtype="2" />
246        <define name="MOTD" family="1" subtype="19" />
247        <define name="server_ready" family="1" subtype="3">
248                <word count="-1" name="families" />
249        </define>
250        <define name="set_service_versions" family="1" subtype="23">
251                <data count="-1" name="service">
252                        <word name="service_id" />
253                        <word name="service_version" />
254                </data>
255        </define>
256        <define name="set_tool_versions" family="1" subtype="2">
257                <data count="-1" name="service">
258                        <word name="service_id" />
259                        <word name="service_version" />
260                        <word name="tool_id" />
261                        <word name="tool_version" />
262                </data>
263        </define>
264        <define name="rate_info_request" family="1" subtype="6" />
265        <define name="rate_change" family="1" subtype="10">
266                <enum type="word" name="message_type">
267                        <edef name="change" value="1" />
268                        <edef name="warning" value="2" />
269                        <edef name="alert" value="3" />
270                        <edef name="clear" value="4" />
271                </enum>
272                <ref name="rate_class_info" />
273        </define>
274        <define name="outgoing_warning" family="4" subtype="8">
275                <word name="is_anonymous" />
276                <data name="screenname" length_prefix="byte" />
277        </define>
278        <define name="incoming_warning" family="1" subtype="16">
279                <word name="new_level" />
280                <ref name="userinfo" />
281        </define>
282        <define name="memory_request" family="1" subtype="31" /> <!-- This was an attempt to block third-party clients by requesting MD5s of portions of the AIM.EXE binary; it is no longer used, huzzah -->
283        <define name="host_versions" family="1" subtype="24">
284                <data count="-1" name="server">
285                        <word name="service_id" />
286                        <word name="service_version" />
287                </data>
288        </define>
289        <define name="buddylist_done" family="19" subtype="7" />
290
291
292
293        <!-- Buddylist stuff -->
294
295        <define name="buddylist_3_response" family="19" subtype="3">
296                <tlvchain>
297                        <tlv type="4"><word count="-1" name="maximums" /></tlv>
298                        <tlv type="2"><word>254</word></tlv>
299                        <tlv type="3"><word>508</word></tlv>
300                        <tlv type="5"><word>0</word></tlv>
301                        <tlv type="6"><word>97</word></tlv>
302                        <tlv type="7"><word>10</word></tlv>
303                </tlvchain>
304        </define>
305        <define name="buddylist" family="19" subtype="6"> <!-- This is supremely weird and fucked up, no bloody way we'll be able to get it in the XML; notably, it is split across multiple SNACs, but not on any sort of coherent boundary, and you have to slice random bits off the front and back...  See OSCAR/Callbacks.pm handler for this protobit. -->
306                <data name="data" />           
307        </define>
308        <define name="buddylist_modification_acknowledgement" family="19" subtype="14">
309                <word name="error" count="-1" />
310        </define>
311        <define name="buddylist_error" family="19" subtype="15">
312                <data name="data" />
313        </define>
314
315        <!-- Packets are limited to 8k in size, which we could exceed if we try to put too many
316                modifications into one packet.  Since we need to flatten one modification at a time
317                and stop when we hit the size cap, this stuff is a bit peculiar. -->
318        <define name="buddylist_modification">
319                <data name="entry_name" length_prefix="word" />
320                <word name="group_id" />
321                <word name="buddy_id" />
322                <word name="entry_type" />
323                <data name="entry_data" length_prefix="word" />
324        </define>
325        <define name="buddylist_add" family="19" subtype="8"><data name="mods" /></define>
326        <define name="buddylist_modify" family="19" subtype="9"><data name="mods" /></define>
327        <define name="buddylist_delete" family="19" subtype="10"><data name="mods" /></define>
328
329        <!-- We also provide this more regular version for use in parsing changes sent by the server -->
330        <define name="buddylist_change">
331                <data name="changes" count="-1">
332                        <ref name="buddylist_modification" />
333                </data>
334        </define>
335
336        <define name="start_buddylist_modifications" family="19" subtype="17" />
337        <define name="end_buddylist_modifications" family="19" subtype="18" />
338       
339
340
341        <!-- User information -->
342
343        <define name="get_info" family="2" subtype="21">
344                <word>0</word>
345                <word>1</word>
346                <data length_prefix="byte" name="screenname" />
347        </define>
348        <define name="get_away" family="2" subtype="21">
349                <word>0</word>
350                <word>3</word>
351                <data length_prefix="byte" name="screenname" />
352        </define>
353        <define name="incoming_profile" family="2" subtype="6">
354                <ref name="userinfo" />
355                <tlvchain>
356                        <tlv type="2"><data name="profile" /></tlv>
357                        <tlv type="4"><data name="awaymsg" /></tlv>
358                </tlvchain>
359        </define>
360
361        <define name="set_info" family="2" subtype="4">
362                <tlvchain>
363                        <tlv type="1"><data name="profile_mimetype" /></tlv>
364                        <tlv type="2"><data name="profile" /></tlv>
365
366                        <tlv type="3"><data name="awaymsg_mimetype" /></tlv>
367                        <tlv type="4"><data name="awaymsg" /></tlv>
368
369                        <tlv type="5"><data name="capabilities" length="16" count="-1" /></tlv>
370                        <tlv type="6">
371                                <tlvchain><tlv type="4"><word>2</word></tlv></tlvchain>
372                        </tlv>
373                </tlvchain>
374        </define>
375
376        <define name="set_idle" family="1" subtype="17">
377                <dword name="duration" />
378        </define>
379
380        <!-- Extended information -->
381
382        <define name="typing_notification" family="4" subtype="20">
383                <dword>0</dword>
384                <dword>0</dword>
385                <word>1</word>
386                <data length_prefix="byte" name="screenname" />
387                <word name="typing_status" />
388        </define>
389
390        <define name="incoming_extended_information" family="1" subtype="33">
391                <!-- Gee, thank you for this wonderful structure, AOL...  Love you too. -->
392                <!-- Only one item in the TLV chain will be present, client should key off of which one -->
393                <tlvchain subtyped="yes">
394                        <tlv type="0" subtype="65"><data name="upload_checksum" /></tlv>
395                        <tlv type="1" subtype="65"><data name="upload_checksum" /></tlv>
396
397                        <tlv type="0" subtype="129"><data name="resend_checksum" /></tlv>
398                        <tlv type="1" subtype="129"><data name="resend_checksum" /></tlv>
399
400                        <tlv type="2" subtype="-1"><data length_prefix="word" name="status_message" /></tlv>
401                </tlvchain>
402        </define>
403
404        <define name="set_extended_status" family="1" subtype="30">
405                <tlvchain>
406                        <tlv type="29" name="status_message">
407                                <word>2</word>
408                                <byte>4</byte>
409                                <data length_prefix="byte">
410                                        <data length_prefix="word" name="message" />
411                                        <word>0</word>
412                                </data>
413                        </tlv>
414                        <tlv type="6" name="stealth">
415                                <!--
416                                   0x100 is the 'stealth' flag
417                                   Presumably there are other things that can go here...
418                                -->
419                                <dword name="state" />
420                        </tlv>
421                </tlvchain>
422        </define>
423
424        <define name="icon_upload" family="16" subtype="2">
425                <tlvchain>
426                        <tlv type="1"><data name="icon" /></tlv>
427                </tlvchain>
428        </define>
429
430
431
432        <!-- Buddylist -->
433
434        <define name="buddy_status_update" family="3" subtype="11">
435                <ref name="userinfo" />
436        </define>
437        <define name="buddy_signoff" family="3" subtype="12">
438                <data length_prefix="byte" name="screenname" />
439        </define>
440
441
442        <!-- IMs -->
443
444        <define name="standard_IM_header">
445                <data length="8" name="cookie" />
446                <word name="channel">1</word>
447        </define>
448        <define name="standard_IM_footer">
449                <tlvchain>
450                        <tlv type="2">
451                                <tlvchain>
452                                        <tlv type="1281">
453                                                <word>257</word>
454                                                <word>257</word>
455                                        </tlv>
456                                        <tlv type="257">
457                                                <word>0</word>
458                                                <word>0</word>
459                                                <data name="message" />
460                                        </tlv>
461                                </tlvchain>
462                        </tlv>
463                        <tlv type="4" name="is_automatic" />
464                        <tlv type="3" name="request_server_confirmation" />
465                        <tlv type="11" name="supports_typing_status" />
466                        <tlv type="8" name="icon_data">
467                                <dword name="icon_length" />
468                                <word>1</word>
469                                <word name="icon_checksum" />
470                                <dword name="icon_timestamp" />
471                        </tlv>
472                </tlvchain>
473        </define>
474        <define name="rendezvous_IM">
475                <tlvchain>
476                        <tlv type="5">
477                                <enum type="word" name="status"> 
478                                        <edef name="propose" value="0" />
479                                        <edef name="cancel" value="1" />
480                                        <edef name="accept" value="2" />
481                                </enum>
482
483                                <data length="8" name="cookie" />
484
485                                <!-- Indicates request type -->
486                                <data length="16" name="capability" />
487
488                                <tlvchain>
489                                        <!-- 1 == push, 2 == pull -->
490                                        <tlv type="10"><word name="push_pull" /></tlv>
491                                        <tlv type="11"><word name="error" /></tlv>
492                                        <tlv type="15" default_generate="yes" />
493
494                                        <!-- File transfer stuff -->
495                                        <tlv type="2"><dword name="client_1_ip" /></tlv>
496                                        <tlv type="3"><dword name="client_2_ip" /></tlv>
497                                        <tlv type="4"><dword name="client_external_ip" /></tlv>
498                                        <tlv type="5"><word name="port" /></tlv>
499                                        <tlv type="22"><dword name="proxy_ip" /></tlv>
500
501
502                                        <!-- Proposal message -->
503                                        <tlv type="12"><data name="invitation_msg" /></tlv>
504                                        <tlv type="13"><data name="charset">us-ascii</data></tlv>
505                                        <tlv type="14"><byte name="language">48</byte></tlv>
506
507                                        <!-- See 'rendezvous service-specific data' -->
508                                        <tlv type="10001"><data name="svcdata" /></tlv>
509                                        <tlv type="10002"><data name="svcdata_charset" /></tlv>
510                                </tlvchain>
511                        </tlv>
512                </tlvchain>
513        </define>
514
515        <define name="incoming_IM" family="4" subtype="7">
516                <ref name="standard_IM_header" />
517                <ref name="userinfo" />
518                <data name="message_body" />
519        </define>
520        <define name="outgoing_IM" family="4" subtype="6">
521                <ref name="standard_IM_header" />
522                <data name="screenname" length_prefix="byte" />
523                <data name="message_body" />
524        </define>
525
526        <define name="IM_acknowledgement" family="4" subtype="12">
527                <data length="8" name="cookie" />
528                <word name="channel" />
529                <data length_prefix="byte" name="screenname" />
530        </define>
531
532
533
534        <!-- Chat -->
535
536        <define name="chat_invitation_accept" family="13" subtype="4">
537                <word name="exchange">4</word>
538                <data length_prefix="byte" name="url" />
539                <word>0</word>
540                <byte>2</byte>
541        </define>
542        <define name="chat_invitation_decline" family="4" subtype="11">
543                <data length="8" name="cookie" />
544                <word name="channel">2</word>
545                <data length_prefix="byte" name="screenname" />
546                <tlvchain>
547                        <!-- 0=not supported, 1=declined, 2=client is not accepting transfers -->
548                        <tlv type="3"><word name="code">1</word></tlv>
549                </tlvchain>
550        </define>
551
552        <define name="chat_navigator_rights_request" family="13" subtype="2" />
553        <define name="chat_navigator_room_create" family="13" subtype="8">
554                <ref name="chat_room_info" />
555        </define>
556
557        <define name="chat_data">
558                <tlvchain count_prefix="word">
559                        <tlv type="106"><data name="name" /></tlv>
560                        <tlv type="111"><word name="occupant_count" /></tlv>
561                        <tlv type="115" name="occupants" count="-1">
562                                <ref name="userinfo" />
563                        </tlv>
564
565                        <tlv type="209"><word name="max_msg_len" /></tlv>
566                        <tlv type="211"><data name="name" /></tlv>
567                        <tlv type="214"><data name="charset">us-ascii</data></tlv>
568                        <tlv type="215" default_generate="yes"><data name="language">en</data></tlv>
569                        <tlv type="219"><data name="encoding" /></tlv>
570                </tlvchain>
571        </define>
572        <define name="chat_room_info">
573                <word name="exchange" />
574                <data length_prefix="byte" name="url">create</data>
575                <word name="instance">65535</word>
576                <byte name="detail_level">1</byte>
577                <ref name="chat_data" />
578        </define>
579                <word />
580                <data length_prefix="byte">
581                        <byte />
582                        <data name="name" />
583                </data>
584                <word />
585                <byte name="detail_level" />
586                <tlvchain count_prefix="word">
587                        <tlv type="111"><word name="occupant_count" /></tlv>
588                        <tlv type="115">
589                                <data name="occupants" count="-1">
590                                        <ref name="userinfo" />
591                                </data>
592                        </tlv>
593                </tlvchain>
594
595
596        <define name="chat_navigator_response" family="13" subtype="9">
597                <tlvchain>
598                        <!-- These two come from the 'chat navigator rights request' -->
599                        <tlv type="2"><byte name="max_concurrent_rooms" /></tlv>
600                        <tlv type="3" count="-1" name="exchange">
601                                <word name="exchange" />
602                                <ref name="chat_data" />
603                        </tlv>
604
605                        <!-- These two come from the create room request -->
606                        <tlv type="4" count="-1" name="room">
607                                <ref name="chat_room_info" />
608                        </tlv>
609                </tlvchain>
610        </define>
611
612
613        <define name="chat_room_status" family="14" subtype="2">
614                <ref name="chat_room_info" />
615        </define>
616        <define name="chat_buddy_arrival" family="14" subtype="3">
617                <data name="arrivals" count="-1">
618                        <ref name="userinfo" />
619                </data>
620        </define>
621        <define name="chat_buddy_departure" family="14" subtype="4">
622                <data name="departures" count="-1" length_prefix="byte" />
623        </define>
624
625
626        <define name="chat_IM">
627                <data length="8" name="cookie" />
628                <word>3</word> <!-- channel -->
629                <tlvchain>
630                        <tlv type="1" default_generate="yes" />
631                        <tlv type="3"><data name="sender" length_prefix="byte" /></tlv>
632                        <tlv type="6" name="reflect" />
633                        <tlv type="7" name="is_automatic" />
634                        <tlv type="5">
635                                <tlvchain>
636                                        <tlv type="4"><data name="type">text/x-aolrtf</data></tlv>
637                                        <tlv type="2"><data name="charset">us-ascii</data></tlv>
638                                        <tlv type="3"><data name="language">en</data></tlv>
639                                        <tlv type="5"><data>binary</data></tlv>
640                                        <tlv type="1"><data name="message" /></tlv>
641                                </tlvchain>
642                        </tlv>
643                </tlvchain>
644        </define>
645        <define name="outgoing_chat_IM" family="14" subtype="5"><ref name="chat_IM" /></define>
646        <define name="incoming_chat_IM" family="14" subtype="6"><ref name="chat_IM" /></define>
647
648
649
650        <!-- Administrative services -->
651
652        <define name="admin_request_response" family="7" subtype="5">
653                <word name="request_type" />
654                <tlvchain count_prefix="word">
655                        <tlv type="1"><data name="new_screenname" /></tlv>
656                        <tlv type="17"><data name="new_email" /></tlv>
657                        <tlv type="8"><word name="error_code" /></tlv>
658                        <tlv type="4"><data name="error_url" /></tlv>
659                        <tlv type="3"><word name="subrequest" /></tlv>
660                </tlvchain>
661        </define>
662        <define name="buddy_icon_uploaded" family="16" subtype="3" />
663        <define name="buddy_icon_download" family="16" subtype="4">
664                <data name="screenname" length_prefix="byte" />
665                <byte>1</byte>
666                <word>1</word>
667                <byte>1</byte>
668                <data name="md5sum" length_prefix="byte" />
669        </define>
670        <define name="buddy_icon_downloaded" family="16" subtype="5">
671                <data name="screenname" length_prefix="byte" />
672                <word name="flags" />
673                <byte name="number" />
674                <data name="checksum" length_prefix="byte" />
675                <data name="icon" length_prefix="word" />
676        </define>
677
678        <define name="confirm_account_request" family="7" subtype="6" />
679        <define name="confirm_account_response" family="7" subtype="7">
680                <!-- If present and 19, indicates error, otherwise success -->
681                <word name="status" />
682        </define>
683
684        <define name="change_account_info" family="7" subtype="4">
685                <!-- Not all of these need to be present. -->
686                <tlvchain>
687                        <tlv type="1"><data name="new_screenname" /></tlv>
688
689                        <tlv type="17"><data name="new_email" /></tlv>
690
691                        <tlv type="2"><data name="newpass" /></tlv>
692                        <tlv type="18"><data name="oldpass" /></tlv>
693                </tlvchain>
694        </define>
695
696
697        <!-- ICQ -->
698
699        <define name="ICQ_meta">
700                <tlvchain>
701                        <tlv type="1">
702                                <data length_prefix="word" prefix_order="vax" >
703                                        <dword name="our_uin" order="vax" />
704                                        <word name="type" order="vax" />
705                                        <word name="seqno" order="vax" />
706                                        <data name="typedata" />
707                                </data>
708                        </tlv>
709                </tlvchain>
710        </define>
711        <define name="ICQ_meta_request" family="21" subtype="2"><ref name="ICQ_meta" /></define>
712        <define name="ICQ_meta_response" family="21" subtype="3"><ref name="ICQ_meta" /></define>
713
714        <!-- Type 2000 -->
715        <define name="ICQ_meta_info_request">
716                <word name="subtype" order="vax">1202</word>
717                <dword name="uin" order="vax" />
718        </define>
719
720
721        <!-- Type 2010 -->
722        <define name="ICQ_meta_info_response">
723                <word name="subtype" order="vax" />
724
725                <!-- 10 == success -->
726                <byte name="status" />
727
728                <data name="response_data" />
729        </define>
730
731        <!-- Type 2010 subtypes -->
732
733        <!-- 200 -->
734        <define name="ICQ_meta_info_response:_basic">
735                <data name="nickname" length_prefix="word" prefix_order="vax" null_terminated="yes" />
736                <data name="firstname" length_prefix="word" prefix_order="vax" null_terminated="yes" />
737                <data name="lastname" length_prefix="word" prefix_order="vax" null_terminated="yes" />
738                <data name="email" length_prefix="word" prefix_order="vax" null_terminated="yes" />
739
740                <data name="home">
741                        <data name="city" length_prefix="word" prefix_order="vax" null_terminated="yes" />
742                        <data name="state" length_prefix="word" prefix_order="vax" null_terminated="yes" />
743                        <data name="phone_num" length_prefix="word" prefix_order="vax" null_terminated="yes" />
744                        <data name="fax_num" length_prefix="word" prefix_order="vax" null_terminated="yes" />
745                        <data name="address" length_prefix="word" prefix_order="vax" null_terminated="yes" />
746                        <data name="cell_phone_num" length_prefix="word" prefix_order="vax" null_terminated="yes" />
747                        <data name="zip_code" length_prefix="word" prefix_order="vax" null_terminated="yes" />
748                        <word name="country_code" order="vax" />
749                </data>
750
751                <byte name="gmt_offset" />
752                <byte name="authorization" />
753                <byte name="web_aware" />
754                <byte name="direct_connect_permissions" />
755                <byte name="publish_primary_email" />
756        </define>
757        <!-- 210 -->
758        <define name="ICQ_meta_info_response:_office">
759                <data name="city" length_prefix="word" prefix_order="vax" null_terminated="yes" />
760                <data name="state" length_prefix="word" prefix_order="vax" null_terminated="yes" />
761                <data name="phone_num" length_prefix="word" prefix_order="vax" null_terminated="yes" />
762                <data name="fax_num" length_prefix="word" prefix_order="vax" null_terminated="yes" />
763                <data name="address" length_prefix="word" prefix_order="vax" null_terminated="yes" />
764                <data name="zip_code" length_prefix="word" prefix_order="vax" null_terminated="yes" />
765                <word name="country_code" order="vax" />
766
767                <data name="company" length_prefix="word" prefix_order="vax" null_terminated="yes" />
768                <data name="department" length_prefix="word" prefix_order="vax" null_terminated="yes" />
769                <data name="position" length_prefix="word" prefix_order="vax" null_terminated="yes" />
770                <word name="occupation" order="vax" />
771                <data name="office_website" length_prefix="word" prefix_order="vax" null_terminated="yes" />
772        </define>
773        <!-- 220 -->
774        <define name="ICQ_meta_info_response:_background">
775                <word name="age" order="vax" />
776                <byte name="gender" />
777                <data name="homepage" length_prefix="word" prefix_order="vax" null_terminated="yes" />
778                <word name="birth_year" order="vax" />
779                <byte name="birth_month" />
780                <byte name="bith_day" />
781                <byte name="language_1" />
782                <byte name="language_2" />
783                <byte name="language_3" />
784                <word />
785                <data name="origin_city" length_prefix="word" prefix_order="vax" null_terminated="yes" />
786                <data name="origin_state" length_prefix="word" prefix_order="vax" null_terminated="yes" />
787                <word name="origin_country" order="vax" />
788                <byte name="marital_status" />
789        </define>
790        <!-- 230 -->
791        <define name="ICQ_meta_info_response:_notes">
792                <data name="notes" length_prefix="word" prefix_order="vax" null_terminated="yes" />
793        </define>
794        <!-- 235 -->
795        <define name="ICQ_meta_info_response:_email">
796                <data count_prefix="byte" name="addresses">
797                        <byte name="publish" />
798                        <data name="address" length_prefix="word" prefix_order="vax" null_terminated="yes" />
799                </data>
800        </define>
801        <!-- 240 -->
802        <define name="ICQ_meta_info_response:_interests">
803                <data count_prefix="byte" name="interests">
804                        <word name="category" order="vax" />
805                        <data name="interest" length_prefix="word" prefix_order="vax" null_terminated="yes" />
806                </data>
807        </define>
808        <!-- 250 -->
809        <define name="ICQ_meta_info_response:_affiliations">
810                <data count_prefix="byte" name="past_affiliations">
811                        <word name="category" order="vax" />
812                        <data name="keyword" length_prefix="word" prefix_order="vax" null_terminated="yes" />
813                </data>
814                <data count_prefix="byte" name="affiliations">
815                        <word name="category" order="vax" />
816                        <data name="keyword" length_prefix="word" prefix_order="vax" null_terminated="yes" />
817                </data>
818        </define>
819        <!-- 270 -->
820        <define name="ICQ_meta_info_response:_homepage">
821                <byte name="enabled" />
822                <word name="category" order="vax" />
823                <data name="keywords" length_prefix="word" prefix_order="vax" null_terminated="yes" />
824                <byte />
825        </define>
826
827
828        <!-- Rendezvous service-specific data -->
829        <define name="chat_invite_rendezvous_data">
830                <word name="exchange">4</word>
831                <data length_prefix="byte" name="url" />
832                <word>0</word>
833        </define>
834        <define name="file_transfer_rendezvous_data">
835                <!-- 1 if only sending a single file, otherwise 2 -->
836                <word name="file_count_status" />
837                <word name="file_count" />
838                <dword name="size" />
839                <data count="-1" null_terminated="yes" name="files" />
840        </define>
841        <define name="buddy_list_transfer_rendezvous_data">
842                <data count="-1" name="group">
843                        <data length_prefix="word" name="name" />
844                        <data count_prefix="word" name="buddies">
845                                <data length_prefix="word" name="name" />
846                        </data>
847                </data>
848        </define>
849
850
851        <!-- Direct-connect and file transfer stuff -->
852        <define name="file_transfer_header">
853                <data length="4">OFT2</data>
854                <word name="header_length">256</word>
855
856                <!-- 0x0101 for syn, 0x0202 for ack, 0x0204 for fin -->
857                <word name="type" />
858
859                <data length="8" name="cookie" />
860
861                <word name="encrypt">0</word>
862                <word name="compress">0</word>
863                <word name="file_count" />
864                <word name="files_left" />
865                <word name="part_count">1</word>
866                <word name="parts_left">1</word>
867                <dword name="byte_count" />
868                <dword name="bytes_left" />
869                <dword name="mtime" />
870                <dword name="checksum" />
871                <dword name="received_initial_checksum">4294901760</dword>
872                <dword name="received_size">0</dword>
873                <dword name="ctime" />
874                <dword name="initial_checksum">4294901760</dword>
875                <dword name="bytes_received" />
876                <dword name="received_checksum" />
877                <data length="32" pad="0" name="client_id">Cool FileXfer</data>
878                <byte name="flags">32</byte>
879                <byte name="name_offset">28</byte>
880                <byte name="size_offset">17</byte>
881                <data length="69" pad="0" />
882                <data length="16" pad="0" name="mac_file_info" />
883                <word name="encoding">0</word>
884                <word name="language">0</word>
885                <data length="64" pad="0" name="filename" />
886        </define>
887
888
889        <!-- Migration: See http://iserverd1.khstu.ru/oscar/sequences.html#migration -->
890        <define name="pause" family="1" subtype="11" />
891        <define name="pause_ack" family="1" subtype="12">
892                <word count="-1" name="families" />
893        </define>
894        <define name="unpause" family="1" subtype="13" />
895        <define name="migrate" family="1" subtype="18">
896                <word count_prefix="word" name="families" />
897                <tlvchain>
898                        <tlv type="5"><data name="peer" /></tlv>
899                        <tlv type="6"><data name="cookie" /></tlv>
900                </tlvchain>
901        </define>
902
903
904        <!-- Direct connect proxy -->
905        <!-- In front of any of these is a 16-bit network order length -->
906        <define name="direct_connect_proxy_hdr">
907                <word name="magic">1098</word>
908                <word name="msg_type" />
909                <dword>0</dword>
910                <data name="data" />
911        </define>
912        <define name="direct_connect_proxy_init"> <!-- msg_type 2 -->
913                <ref name="direct_connect_proxy_hdr" />
914                <word>0</word>
915                <data length_prefix="byte" name="screenname" />
916                <data length="8" name="cookie" />
917                <tlvchain>
918                        <tlv type="1"><data name="capability" /></tlv>
919                </tlvchain>
920        </define>
921        <define name="direct_connect_proxy_reply"> <!-- msg_type 3 -->
922                <ref name="direct_connect_proxy_hdr" />
923                <word>544</word>
924                <word name="port" />
925                <dword name="ip" />
926        </define>
927</oscar>
928
Note: See TracBrowser for help on using the repository browser.