#!/usr/bin/env perl use strict; use warnings; use Hook::LexWrap; use YAML; =head1 DESCRIPTION =cut use Net::Jabber; my $client = Net::Jabber::Client->new(debuglevel=>1); my $status = $client->Connect( hostname => "jabber.mit.edu", tls => 1, port => 5222, componentname => 'mit.edu' ); if(!$status) { die("Couldn't connect to serverx"); } else { print "Connected!\n"; } use Authen::SASL; use Authen::SASL::Cyrus; # wrap 'Authen::SASL::Cyrus::client_new', # pre => # sub {splice @_, -1, 0, ('xmpp', 'jabber.mit.edu'); warn YAML::Dump(\@_)}; { no warnings 'redefine'; my $old_new = *Authen::SASL::new{CODE}; *Authen::SASL::new = sub { my $self = shift; my %args = (@_); delete $args{callback}{authname}; $old_new->($self, %args); }; my $old_client_new = *Authen::SASL::Cyrus::client_new{CODE}; *Authen::SASL::Cyrus::client_new = sub {$old_client_new->(@_, 'xmpp', 'jabber.mit.edu')}; } my @result = $client->AuthSend(username => 'nelhage@mit.edu', resource => 'netjabber'); print join(",", @result);