You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
75 lines
1.6 KiB
75 lines
1.6 KiB
package Net::OSCAR::Chat; |
|
|
|
|
|
$VERSION = '0.62'; |
|
|
|
use strict; |
|
use Carp; |
|
|
|
use Net::OSCAR::TLV; |
|
use Net::OSCAR::Callbacks; |
|
use vars qw(@ISA $VERSION); |
|
use Net::OSCAR::Common qw(:all); |
|
use Net::OSCAR::OldPerl; |
|
@ISA = qw(Net::OSCAR::Connection); |
|
|
|
sub invite($$;$) { |
|
my($self, $who, $message) = @_; |
|
my $packet = ""; |
|
$message ||= "Join me in this Buddy Chat"; |
|
|
|
$self->log_print(OSCAR_DBG_DEBUG, "Inviting $who to join us."); |
|
|
|
$packet .= randchars(8); |
|
$packet .= pack("nCa*", 2, length($who), $who); |
|
|
|
my %tlv; |
|
tie %tlv, "Net::OSCAR::TLV"; |
|
|
|
%tlv = ( |
|
0x5 => pack("n18 a* n2 a* n5 C a* n3", |
|
0, 0x7EAF, 0x3A00, 0xB23A, 0, 0x748F, 0x2420, 0x6287, |
|
0x11D1, 0x8222, 0x4445, 0x5354, 0, 0xA, 2, 1, 0xD, |
|
length("us-ascii"), "us-ascii", 0xC, length($message), $message, |
|
0xF, 0, 0x2711, 9+length($self->{url}), |
|
$self->{exchange}, length($self->{url}), |
|
$self->{url}, 0, 3, 0 |
|
) |
|
); |
|
$packet .= tlv_encode(\%tlv); |
|
|
|
$self->{session}->{bos}->snac_put(family => 0x04, subtype => 0x06, data => $packet); |
|
} |
|
|
|
sub chat_send($$;$$) { |
|
my($self, $msg, $noreflect, $away) = @_; |
|
my $packet = ""; |
|
|
|
my %tlv; |
|
my %mtlv; |
|
tie %tlv, "Net::OSCAR::TLV"; |
|
tie %mtlv, "Net::OSCAR::TLV"; |
|
|
|
$packet .= randchars(8); |
|
$packet .= pack("n", 3); # channel |
|
|
|
%mtlv = ( |
|
0x02 => "us-ascii", |
|
0x03 => "", |
|
0x01 => $msg |
|
); |
|
%tlv = (0x01 => ""); |
|
$tlv{0x06} = "" unless $noreflect; |
|
$tlv{0x07} = "" if $away; |
|
$tlv{0x05} = tlv_encode(\%mtlv); |
|
$packet .= tlv_encode(\%tlv); |
|
|
|
$self->snac_put(family => 0x0E, subtype => 0x05, data => $packet); |
|
} |
|
|
|
sub part($) { shift->disconnect(); } |
|
sub url($) { shift->{url}; } |
|
sub name($) { shift->{name}; } |
|
sub exchange($) { shift->{exchange}; } |
|
|
|
1;
|
|
|