line |
stmt |
bran |
cond |
sub |
pod |
time |
code |
1
|
|
|
|
|
|
|
=pod |
2
|
|
|
|
|
|
|
|
3
|
|
|
|
|
|
|
=head1 NAME |
4
|
|
|
|
|
|
|
|
5
|
|
|
|
|
|
|
Net::OSCAR::Constants -- internal Net::OSCAR constants |
6
|
|
|
|
|
|
|
|
7
|
|
|
|
|
|
|
=head1 VERSION |
8
|
|
|
|
|
|
|
|
9
|
|
|
|
|
|
|
version 1.928 |
10
|
|
|
|
|
|
|
|
11
|
|
|
|
|
|
|
=cut |
12
|
|
|
|
|
|
|
|
13
|
|
|
|
|
|
|
package Net::OSCAR::Constants; |
14
|
|
|
|
|
|
|
BEGIN { |
15
|
5
|
|
|
5
|
|
149
|
$Net::OSCAR::Constants::VERSION = '1.928'; |
16
|
|
|
|
|
|
|
} |
17
|
|
|
|
|
|
|
|
18
|
|
|
|
|
|
|
$REVISION = '$Revision$'; |
19
|
|
|
|
|
|
|
|
20
|
5
|
|
|
5
|
|
26
|
use strict; |
|
5
|
|
|
|
|
8
|
|
|
5
|
|
|
|
|
168
|
|
21
|
5
|
|
|
5
|
|
26
|
use vars qw(@ISA @EXPORT); |
|
5
|
|
|
|
|
7
|
|
|
5
|
|
|
|
|
357
|
|
22
|
5
|
|
|
5
|
|
28
|
use Scalar::Util qw(dualvar); |
|
5
|
|
|
|
|
8
|
|
|
5
|
|
|
|
|
272
|
|
23
|
5
|
|
|
5
|
|
1860
|
use Net::OSCAR::TLV; |
|
5
|
|
|
|
|
11
|
|
|
5
|
|
|
|
|
582
|
|
24
|
|
|
|
|
|
|
require Exporter; |
25
|
|
|
|
|
|
|
@ISA = qw(Exporter); |
26
|
|
|
|
|
|
|
|
27
|
|
|
|
|
|
|
@EXPORT = qw( |
28
|
|
|
|
|
|
|
FLAP_CHAN_NEWCONN FLAP_CHAN_SNAC FLAP_CHAN_ERR FLAP_CHAN_CLOSE |
29
|
|
|
|
|
|
|
CONNTYPE_LOGIN CONNTYPE_BOS CONNTYPE_ADMIN CONNTYPE_CHAT CONNTYPE_CHATNAV CONNTYPE_ICON CONNTYPE_DIRECT_IN CONNTYPE_DIRECT_OUT CONNTYPE_SERVER |
30
|
|
|
|
|
|
|
OSCAR_CAPS OSCAR_CAPS_INVERSE OSCAR_CAPS_SHORT_INVERSE OSCAR_TOOLDATA |
31
|
|
|
|
|
|
|
GROUP_PERMIT GROUP_DENY BUDTYPES ERRORS |
32
|
|
|
|
|
|
|
|
33
|
|
|
|
|
|
|
ICQ_META_INFO ICQ_META_INFO_INVERSE |
34
|
|
|
|
|
|
|
); |
35
|
|
|
|
|
|
|
|
36
|
|
|
|
|
|
|
|
37
|
5
|
|
|
5
|
|
25
|
use constant FLAP_CHAN_NEWCONN => dualvar(0x01, "new connection"); |
|
5
|
|
|
|
|
9
|
|
|
5
|
|
|
|
|
323
|
|
38
|
5
|
|
|
5
|
|
23
|
use constant FLAP_CHAN_SNAC => dualvar(0x02, "SNAC"); |
|
5
|
|
|
|
|
9
|
|
|
5
|
|
|
|
|
285
|
|
39
|
5
|
|
|
5
|
|
24
|
use constant FLAP_CHAN_ERR => dualvar(0x03, "error"); |
|
5
|
|
|
|
|
6
|
|
|
5
|
|
|
|
|
272
|
|
40
|
5
|
|
|
5
|
|
21
|
use constant FLAP_CHAN_CLOSE => dualvar(0x04, "close connection"); |
|
5
|
|
|
|
|
21
|
|
|
5
|
|
|
|
|
228
|
|
41
|
|
|
|
|
|
|
|
42
|
5
|
|
|
5
|
|
27
|
use constant CONNTYPE_LOGIN => dualvar(0, "login service"); |
|
5
|
|
|
|
|
6
|
|
|
5
|
|
|
|
|
247
|
|
43
|
5
|
|
|
5
|
|
23
|
use constant CONNTYPE_BOS => dualvar(0x2, "basic OSCAR services"); |
|
5
|
|
|
|
|
6
|
|
|
5
|
|
|
|
|
247
|
|
44
|
5
|
|
|
5
|
|
22
|
use constant CONNTYPE_ADMIN => dualvar(0x7, "administrative service"); |
|
5
|
|
|
|
|
18
|
|
|
5
|
|
|
|
|
227
|
|
45
|
5
|
|
|
5
|
|
21
|
use constant CONNTYPE_CHAT => dualvar(0xE, "chat connection"); |
|
5
|
|
|
|
|
8
|
|
|
5
|
|
|
|
|
268
|
|
46
|
5
|
|
|
5
|
|
22
|
use constant CONNTYPE_CHATNAV => dualvar(0xD, "chat navigator"); |
|
5
|
|
|
|
|
8
|
|
|
5
|
|
|
|
|
239
|
|
47
|
5
|
|
|
5
|
|
28
|
use constant CONNTYPE_ICON => dualvar(0x10, "icon service"); |
|
5
|
|
|
|
|
7
|
|
|
5
|
|
|
|
|
262
|
|
48
|
5
|
|
|
5
|
|
23
|
use constant CONNTYPE_DIRECT_IN => dualvar(0xfe, "direct connect listener"); |
|
5
|
|
|
|
|
8
|
|
|
5
|
|
|
|
|
253
|
|
49
|
5
|
|
|
5
|
|
22
|
use constant CONNTYPE_DIRECT_OUT => dualvar(0xff, "direct connect connection"); |
|
5
|
|
|
|
|
8
|
|
|
5
|
|
|
|
|
351
|
|
50
|
5
|
|
|
5
|
|
30
|
use constant CONNTYPE_SERVER => dualvar(0xfd, "OSCAR server"); |
|
5
|
|
|
|
|
17
|
|
|
5
|
|
|
|
|
201
|
|
51
|
|
|
|
|
|
|
|
52
|
5
|
|
|
5
|
|
32
|
use constant GROUP_PERMIT => 0x0002; |
|
5
|
|
|
|
|
8
|
|
|
5
|
|
|
|
|
208
|
|
53
|
5
|
|
|
5
|
|
24
|
use constant GROUP_DENY => 0x0003; |
|
5
|
|
|
|
|
8
|
|
|
5
|
|
|
|
|
4857
|
|
54
|
|
|
|
|
|
|
|
55
|
80
|
|
|
|
|
207
|
use constant OSCAR_CAPS => { |
56
|
80
|
|
|
|
|
153
|
chat => {description => "chatrooms", value => pack("C*", map{hex($_)} split(/[ \t\n]+/, |
57
|
|
|
|
|
|
|
"0x74 0x8F 0x24 0x20 0x62 0x87 0x11 0xD1 0x82 0x22 0x44 0x45 0x53 0x54 0x00 0x00"))}, |
58
|
80
|
|
|
|
|
166
|
interoperate => {description => "ICQ/AIM interoperation", value => pack("C*", map{hex($_)} split(/[ \t\n]+/, |
59
|
|
|
|
|
|
|
"0x09 0x46 0x13 0x4d 0x4c 0x7f 0x11 0xd1 0x82 0x22 0x44 0x45 0x53 0x54 0x00 0x00"))}, |
60
|
80
|
|
|
|
|
163
|
extstatus => {description => "iChat extended status messages", value => pack("C*", map{hex($_)} split(/[ \t\n]+/, |
61
|
|
|
|
|
|
|
"0x09 0x46 0x00 0x00 0x4c 0x7f 0x11 0xd1 0x82 0x22 0x44 0x45 0x53 0x54 0x00 0x00"))}, |
62
|
80
|
|
|
|
|
154
|
buddyicon => {description => "buddy icons", value => pack("C*", map{hex($_)} split(/[ \t\n]+/, |
63
|
|
|
|
|
|
|
"0x09 0x46 0x13 0x46 0x4c 0x7f 0x11 0xd1 0x82 0x22 0x44 0x45 0x53 0x54 0x00 0x00"))}, |
64
|
80
|
|
|
|
|
157
|
fileshare => {description => "file sharing", value => pack("C*", map{hex($_)} split(/[ \t\n]+/, |
65
|
|
|
|
|
|
|
"0x09 0x46 0x13 0x48 0x4c 0x7f 0x11 0xd1 0x82 0x22 0x44 0x45 0x53 0x54 0x00 0x00"))}, |
66
|
80
|
|
|
|
|
156
|
filexfer => {description => "file transfers", value => pack("C*", map{hex($_)} split(/[ \t\n]+/, |
67
|
|
|
|
|
|
|
"0x09 0x46 0x13 0x43 0x4c 0x7f 0x11 0xd1 0x82 0x22 0x44 0x45 0x53 0x54 0x00 0x00"))}, |
68
|
80
|
|
|
|
|
164
|
secureim => {description => "encrypted IM", value => pack("C*", map{hex($_)} split(/[ \t\n,]+/, |
69
|
|
|
|
|
|
|
"0x09, 0x46, 0x00, 0x01, 0x4c, 0x7f, 0x11, 0xd1, 0x82, 0x22, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00"))}, |
70
|
80
|
|
|
|
|
169
|
hiptop => {description => "hiptop", value => pack("C*", map{hex($_)} split(/[ \t\n,]+/, |
71
|
|
|
|
|
|
|
"0x09, 0x46, 0x13, 0x23, 0x4c, 0x7f, 0x11, 0xd1, 0x82, 0x22, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00"))}, |
72
|
80
|
|
|
|
|
158
|
voice => {description => "voice chat", value => pack("C*", map{hex($_)} split(/[ \t\n,]+/, |
73
|
|
|
|
|
|
|
"0x09, 0x46, 0x13, 0x41, 0x4c, 0x7f, 0x11, 0xd1, 0x82, 0x22, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00"))}, |
74
|
80
|
|
|
|
|
142
|
icq => {description => "EveryBuddy ICQ support", value => pack("C*", map{hex($_)} split(/[ \t\n,]+/, |
75
|
|
|
|
|
|
|
"0x09, 0x46, 0x13, 0x44, 0x4c, 0x7f, 0x11, 0xd1, 0x82, 0x22, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00"))}, |
76
|
80
|
|
|
|
|
163
|
directim => {description => "direct IM", value => pack("C*", map{hex($_)} split(/[ \t\n,]+/, |
77
|
|
|
|
|
|
|
"0x09, 0x46, 0x13, 0x45, 0x4c, 0x7f, 0x11, 0xd1, 0x82, 0x22, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00"))}, |
78
|
80
|
|
|
|
|
170
|
addins => {description => "add-ins", value => pack("C*", map{hex($_)} split(/[ \t\n,]+/, |
79
|
|
|
|
|
|
|
"0x09, 0x46, 0x13, 0x47, 0x4c, 0x7f, 0x11, 0xd1, 0x82, 0x22, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00"))}, |
80
|
80
|
|
|
|
|
146
|
icqrelay => {description => "ICQ server relay", value => pack("C*", map{hex($_)} split(/[ \t\n,]+/, |
81
|
|
|
|
|
|
|
"0x09, 0x46, 0x13, 0x49, 0x4c, 0x7f, 0x11, 0xd1, 0x82, 0x22, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00"))}, |
82
|
80
|
|
|
|
|
329
|
games => {description => "games", value => pack("C*", map{hex($_)} split(/[ \t\n,]+/, |
83
|
|
|
|
|
|
|
"0x09, 0x46, 0x13, 0x4a, 0x4c, 0x7f, 0x11, 0xd1, 0x82, 0x22, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00"))}, |
84
|
80
|
|
|
|
|
140
|
games2 => {description => "games 2", value => pack("C*", map{hex($_)} split(/[ \t\n,]+/, |
85
|
|
|
|
|
|
|
"0x09, 0x46, 0x13, 0x4a, 0x4c, 0x7f, 0x11, 0xd1, 0x22, 0x82, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00"))}, |
86
|
80
|
|
|
|
|
160
|
sendlist => {description => "buddy list sending", value => pack("C*", map{hex($_)} split(/[ \t\n,]+/, |
87
|
|
|
|
|
|
|
"0x09, 0x46, 0x13, 0x4b, 0x4c, 0x7f, 0x11, 0xd1, 0x82, 0x22, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00"))}, |
88
|
80
|
|
|
|
|
169
|
icqutf8 => {description => "ICQ UTF-8", value => pack("C*", map{hex($_)} split(/[ \t\n,]+/, |
89
|
|
|
|
|
|
|
"0x09, 0x46, 0x13, 0x4e, 0x4c, 0x7f, 0x11, 0xd1, 0x82, 0x22, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00"))}, |
90
|
80
|
|
|
|
|
192
|
icqutf8old => {description => "old ICQ UTF-8", value => pack("C*", map{hex($_)} split(/[ \t\n,]+/, |
91
|
|
|
|
|
|
|
"0x2e, 0x7a, 0x64, 0x75, 0xfa, 0xdf, 0x4d, 0xc8, 0x88, 0x6f, 0xea, 0x35, 0x95, 0xfd, 0xb6, 0xdf"))}, |
92
|
80
|
|
|
|
|
173
|
icqrtf => {description => "ICQ RTF", value => pack("C*", map{hex($_)} split(/[ \t\n,]+/, |
93
|
|
|
|
|
|
|
"0x97, 0xb1, 0x27, 0x51, 0x24, 0x3c, 0x43, 0x34, 0xad, 0x22, 0xd6, 0xab, 0xf7, 0x3f, 0x14, 0x92"))}, |
94
|
80
|
|
|
|
|
164
|
apinfo => {description => "AP info", value => pack("C*", map{hex($_)} split(/[ \t\n,]+/, |
95
|
|
|
|
|
|
|
"0xaa, 0x4a, 0x32, 0xb5, 0xf8, 0x84, 0x48, 0xc6, 0xa3, 0xd7, 0x8c, 0x50, 0x97, 0x19, 0xfd, 0x5b"))}, |
96
|
80
|
|
|
|
|
161
|
trilliancrypt => {description => "Trillian encryption", value => pack("C*", map{hex($_)} split(/[ \t\n,]+/, |
97
|
|
|
|
|
|
|
"0xf2, 0xe7, 0xc7, 0xf4, 0xfe, 0xad, 0x4d, 0xfb, 0xb2, 0x35, 0x36, 0x79, 0x8b, 0xdf, 0x00, 0x00"))}, |
98
|
80
|
|
|
|
|
911
|
secureim => {description => "SecureIM encryption", value => pack("C*", map{hex($_)} split(/[ \t\n,]+/, |
99
|
|
|
|
|
|
|
"0x09 0x46 0x01 0xff 0x4c 0x7f 0x11 0xd1 0x82 0x22 0x44 0x45 0x53 0x54 0x00 0x00"))}, |
100
|
5
|
|
|
|
|
83
|
video => {description => "A/V chat", value => pack("C*", map{hex($_)} split(/[ \t\n,]+/, |
101
|
|
|
|
|
|
|
"0x09 0x46 0x01 0x05 0x4c 0x7f 0x11 0xd1 0x82 0x22 0x44 0x45 0x53 0x54 0x00 0x00"))}, |
102
|
5
|
|
|
5
|
|
31
|
}; |
|
5
|
|
|
|
|
11
|
|
103
|
5
|
|
|
5
|
|
27
|
use constant OSCAR_CAPS_INVERSE => { map { OSCAR_CAPS()->{$_}->{value} => $_ } keys %{OSCAR_CAPS()} }; |
|
5
|
|
|
|
|
9
|
|
|
5
|
|
|
|
|
9
|
|
|
110
|
|
|
|
|
740
|
|
|
5
|
|
|
|
|
32
|
|
104
|
5
|
|
|
5
|
|
27
|
use constant OSCAR_CAPS_SHORT_INVERSE => { map { substr(OSCAR_CAPS()->{$_}->{value}, 2, 2) => $_ } keys %{OSCAR_CAPS()} }; |
|
5
|
|
|
|
|
9
|
|
|
5
|
|
|
|
|
10
|
|
|
110
|
|
|
|
|
1400
|
|
|
5
|
|
|
|
|
24
|
|
105
|
|
|
|
|
|
|
|
106
|
5
|
|
|
|
|
11659
|
use constant OSCAR_TOOLDATA => tlv( |
107
|
|
|
|
|
|
|
0x0001 => {version => 0x0004, toolid => 0x0110, toolversion => 0x08E5}, |
108
|
|
|
|
|
|
|
0x0013 => {version => 0x0003, toolid => 0x0110, toolversion => 0x08E5}, |
109
|
|
|
|
|
|
|
0x0002 => {version => 0x0001, toolid => 0x0110, toolversion => 0x08E5}, |
110
|
|
|
|
|
|
|
0x0003 => {version => 0x0001, toolid => 0x0110, toolversion => 0x08E5}, |
111
|
|
|
|
|
|
|
0x0004 => {version => 0x0001, toolid => 0x0110, toolversion => 0x08E5}, |
112
|
|
|
|
|
|
|
0x0005 => {version => 0x0001, toolid => 0x0001, toolversion => 0x0001, nobos => 1}, |
113
|
|
|
|
|
|
|
0x0006 => {version => 0x0001, toolid => 0x0110, toolversion => 0x08E5}, |
114
|
|
|
|
|
|
|
0x0007 => {version => 0x0001, toolid => 0x0010, toolversion => 0x08E5, nobos => 1}, |
115
|
|
|
|
|
|
|
0x0008 => {version => 0x0001, toolid => 0x0104, toolversion => 0x0001}, |
116
|
|
|
|
|
|
|
0x0009 => {version => 0x0001, toolid => 0x0110, toolversion => 0x08E5}, |
117
|
|
|
|
|
|
|
0x000A => {version => 0x0001, toolid => 0x0110, toolversion => 0x08E5}, |
118
|
|
|
|
|
|
|
0x000B => {version => 0x0001, toolid => 0x0110, toolversion => 0x08E5}, |
119
|
|
|
|
|
|
|
0x000C => {version => 0x0001, toolid => 0x0104, toolversion => 0x0001, nobos => 1}, |
120
|
|
|
|
|
|
|
0x000D => {version => 0x0001, toolid => 0x0010, toolversion => 0x08E5, nobos => 1}, |
121
|
|
|
|
|
|
|
0x000E => {version => 0x0001, toolid => 0x0010, toolversion => 0x08E5, nobos => 1}, |
122
|
|
|
|
|
|
|
0x000F => {version => 0x0001, toolid => 0x0010, toolversion => 0x08E5, nobos => 1}, |
123
|
|
|
|
|
|
|
0x0010 => {version => 0x0001, toolid => 0x0010, toolversion => 0x08E5, nobos => 1}, |
124
|
|
|
|
|
|
|
0x0015 => {version => 0x0001, toolid => 0x0110, toolversion => 0x047C, nobos => 1}, |
125
|
|
|
|
|
|
|
0x0017 => {version => 0x0000, toolid => 0x0000, toolversion => 0x0000, nobos => 1}, |
126
|
|
|
|
|
|
|
0x0018 => {version => 0x0001, toolid => 0x0010, toolversion => 0x08E5, nobos => 1}, |
127
|
|
|
|
|
|
|
0xFFFF => {version => 0x0000, toolid => 0x0000, toolversion => 0x0000, nobos => 1}, |
128
|
5
|
|
|
5
|
|
35
|
); |
|
5
|
|
|
|
|
7
|
|
129
|
|
|
|
|
|
|
|
130
|
5
|
|
|
5
|
|
41
|
use constant BUDTYPES => ("buddy", "group", "permit entry", "deny entry", "visibility/misc. data", "presence", undef, undef, undef, undef, undef, undef, undef, undef, undef, undef, undef, undef, undef, undef, "buddy icon data"); |
|
5
|
|
|
|
|
8
|
|
|
5
|
|
|
|
|
527
|
|
131
|
|
|
|
|
|
|
|
132
|
5
|
|
|
5
|
|
26
|
use constant ERRORS => split(/\n/, <
|
|
5
|
|
|
|
|
8
|
|
|
5
|
|
|
|
|
809
|
|
133
|
|
|
|
|
|
|
Invalid error |
134
|
|
|
|
|
|
|
Invalid SNAC |
135
|
|
|
|
|
|
|
Sending too fast to host |
136
|
|
|
|
|
|
|
Sending too fast to client |
137
|
|
|
|
|
|
|
%s is not logged in, so the attempted operation (sending an IM, getting user information) was unsuccessful |
138
|
|
|
|
|
|
|
Service unavailable |
139
|
|
|
|
|
|
|
Service not defined |
140
|
|
|
|
|
|
|
Obsolete SNAC |
141
|
|
|
|
|
|
|
Not supported by host |
142
|
|
|
|
|
|
|
Not supported by client |
143
|
|
|
|
|
|
|
Refused by client |
144
|
|
|
|
|
|
|
Reply too big |
145
|
|
|
|
|
|
|
Responses lost |
146
|
|
|
|
|
|
|
Request denied |
147
|
|
|
|
|
|
|
Busted SNAC payload |
148
|
|
|
|
|
|
|
Insufficient rights |
149
|
|
|
|
|
|
|
%s is in your permit or deny list |
150
|
|
|
|
|
|
|
Too evil (sender) |
151
|
|
|
|
|
|
|
Too evil (receiver) |
152
|
|
|
|
|
|
|
User temporarily unavailable |
153
|
|
|
|
|
|
|
No match |
154
|
|
|
|
|
|
|
List overflow |
155
|
|
|
|
|
|
|
Request ambiguous |
156
|
|
|
|
|
|
|
Queue full |
157
|
|
|
|
|
|
|
Not while on AOL |
158
|
|
|
|
|
|
|
Unknown error 25 |
159
|
|
|
|
|
|
|
Unknown error 26 |
160
|
|
|
|
|
|
|
Unknown error 27 |
161
|
|
|
|
|
|
|
Unknown error 28 |
162
|
|
|
|
|
|
|
There have been too many recent signons from this address. Please wait a few minutes and try again. |
163
|
|
|
|
|
|
|
EOF |
164
|
|
|
|
|
|
|
|
165
|
|
|
|
|
|
|
|
166
|
5
|
|
|
|
|
456
|
use constant ICQ_META_INFO => { |
167
|
|
|
|
|
|
|
basic => 200, |
168
|
|
|
|
|
|
|
office => 210, |
169
|
|
|
|
|
|
|
background => 220, |
170
|
|
|
|
|
|
|
notes => 230, |
171
|
|
|
|
|
|
|
email => 235, |
172
|
|
|
|
|
|
|
interests => 240, |
173
|
|
|
|
|
|
|
affiliations => 250, |
174
|
|
|
|
|
|
|
homepage => 270 |
175
|
5
|
|
|
5
|
|
25
|
}; |
|
5
|
|
|
|
|
9
|
|
176
|
5
|
|
|
5
|
|
25
|
use constant ICQ_META_INFO_INVERSE => { map { ICQ_META_INFO()->{$_} => $_ } keys %{ICQ_META_INFO()} }; |
|
5
|
|
|
|
|
7
|
|
|
5
|
|
|
|
|
7
|
|
|
40
|
|
|
|
|
390
|
|
|
5
|
|
|
|
|
21
|
|
177
|
|
|
|
|
|
|
|
178
|
|
|
|
|
|
|
1; |