Changeset 8f2ce3a
- Timestamp:
- Dec 26, 2006, 12:59:00 AM (18 years ago)
- Branches:
- master, barnowl_perlaim, debian, release-1.10, release-1.4, release-1.5, release-1.6, release-1.7, release-1.8, release-1.9
- Children:
- bed4ff1
- Parents:
- b699e9b
- git-author:
- Nelson Elhage <nelhage@mit.edu> (12/24/06 14:17:13)
- git-committer:
- Nelson Elhage <nelhage@mit.edu> (12/26/06 00:59:00)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
perl/modules/jabber.pl
rea67541 r8f2ce3a 39 39 my $jidStr = shift; 40 40 41 my %args = (); 42 if(owl::getvar('debug') eq 'on') { 43 $args{debuglevel} = 1; 44 $args{debugfile} = 'jabber.log'; 45 } 46 my $client = Net::Jabber::Client->new(%args); 47 48 $self->{Client}->{$jidStr} = $client; 49 $self->{Roster}->{$jidStr} = $client->Roster(); 50 return $client; 41 $self->{Client}->{$jidStr} = 42 Net::Jabber::Client->new( 43 debuglevel => owl::getvar('debug') eq 'on' ? 1 : 0, 44 debugfile => 'jabber.log' 45 ); 46 my $refConn = \$self->{Client}->{$jidStr}; 47 $self->{Roster}->{$jidStr} = $$refConn->Roster(); 48 return $refConn; 51 49 } 52 50 … … 54 52 my $self = shift; 55 53 my $jidStr = shift; 56 return 0 unless exists $self->{Client}->{$jidStr}; 57 58 $self->{Client}->{$jidStr}->Disconnect(); 59 delete $self->{Roster}->{$jidStr}; 60 delete $self->{Client}->{$jidStr}; 61 62 return 1; 54 my $ret = 0; 55 foreach my $j ( keys %{ $self->{Client} } ) { 56 if ($j eq $jidStr) { 57 $self->{Client}->{$j}->Disconnect(); 58 delete $self->{Roster}->{$j}; 59 delete $self->{Client}->{$j}; 60 $ret = 1; 61 } 62 } 63 return $ret; 63 64 } 64 65 … … 76 77 my $self = shift; 77 78 my $jidStr = shift; 78 return exists $self->{Client}->{$jidStr}; 79 foreach my $j ( keys %{ $self->{Client} } ) { 80 return 1 if ($j eq $jidStr); 81 } 82 return 0; 79 83 } 80 84 … … 88 92 } 89 93 90 sub getConn ectionFromSid {94 sub getConnRefFromSid { 91 95 my $self = shift; 92 96 my $sid = shift; 93 foreach my $c (values %{ $self->{Client} }) { 94 return $c if $c->{SESSION}->{id} eq $sid; 97 foreach my $j ( keys %{ $self->{Client} } ) { 98 if ($self->{Client}->{$j}->{SESSION}->{id} eq $sid) { 99 return \$self->{Client}->{$j}; 100 } 95 101 } 96 102 return undef; 97 103 } 98 104 99 sub getConn ectionFromJidStr {105 sub getConnRefFromJidStr { 100 106 my $self = shift; 101 107 my $jidStr = shift; 102 return $self->{Client}->{$jidStr}; 103 } 104 105 sub getRosterFromSid { 108 foreach my $j ( keys %{ $self->{Client} } ) { 109 if ($jidStr eq $j) { 110 return \$self->{Client}->{$j}; 111 } 112 } 113 return undef; 114 } 115 116 sub getRosterRefFromSid { 106 117 my $self = shift; 107 118 my $sid = shift; 108 foreach my $j ( $self->getJids ) { 109 return $self->{Roster}->{$j} 110 if $self->{Client}->{$j}->{SESSION}->{id} eq $sid; 119 foreach my $j ( keys %{ $self->{Client} } ) { 120 if ($self->{Client}->{$j}->{SESSION}->{id} eq $sid) { 121 return \$self->{Roster}->{$j}; 122 } 111 123 } 112 124 return undef; 113 125 } 114 126 115 sub getRoster FromJidStr {127 sub getRosterRefFromJidStr { 116 128 my $self = shift; 117 129 my $jidStr = shift; 118 return $self->{Roster}->{$jidStr}; 130 foreach my $j ( keys %{ $self->{Client} } ) { 131 if ($jidStr eq $j) { 132 return \$self->{Roster}->{$j}; 133 } 134 } 119 135 return undef; 120 136 } … … 145 161 146 162 foreach my $jid ( $conn->getJids() ) { 147 my $client = $conn->getConn ectionFromJidStr($jid);163 my $client = $conn->getConnRefFromJidStr($jid); 148 164 149 165 my $status = $client->Process(0); … … 193 209 return "" unless $jid; 194 210 my $blist = ""; 195 my $roster = $conn->getRoster FromJidStr($jid);196 if ($ roster) {211 my $roster = $conn->getRosterRefFromJidStr($jid); 212 if ($$roster) { 197 213 $blist .= "\n" . boldify("Jabber Roster for $jid\n"); 198 214 … … 335 351 normal => sub { owl_jabber::process_incoming_normal_message(@_) } 336 352 ); 337 $ client->SetPresenceCallBacks(353 $$client->SetPresenceCallBacks( 338 354 # available => sub { owl_jabber::process_presence_available(@_) }, 339 355 # unavailable => sub { owl_jabber::process_presence_available(@_) }, … … 363 379 } 364 380 else { 365 $ conn->getRosterFromJidStr($jidStr)->fetch();366 $ client->PresenceSend( priority => 1 );381 ${ $conn->getRosterRefFromJidStr($jidStr) }->fetch(); 382 $$client->PresenceSend( priority => 1 ); 367 383 queue_admin_msg("Connected to jabber as $jidStr"); 368 384 } … … 554 570 } 555 571 556 $ conn->getConnectionFromJidStr($jid)->Send($presence);572 ${ $conn->getConnRefFromJidStr($jid) }->Send($presence); 557 573 } 558 574 … … 563 579 die("Usage: jmuc part {muc} [-a account]") unless $muc; 564 580 565 $conn->getConnectionFromJidStr($jid)->PresenceSend( to => $muc, type => 'unavailable' ); 581 ${ $conn->getConnRefFromJidStr($jid) } 582 ->PresenceSend( to => $muc, type => 'unavailable' ); 566 583 queue_admin_msg("$jid has left $muc."); 567 584 } … … 581 598 $x->AddInvite(); 582 599 $x->GetInvite()->SetTo($invite_jid); 583 $ conn->getConnectionFromJidStr($jid)->Send($message);600 ${ $conn->getConnRefFromJidStr($jid) }->Send($message); 584 601 queue_admin_msg("$jid has invited $invite_jid to $muc."); 585 602 } … … 596 613 $x->SetType('submit'); 597 614 598 $ conn->getConnectionFromJidStr($jid)->Send($iq);615 ${ $conn->getConnRefFromJidStr($jid) }->Send($iq); 599 616 queue_admin_msg("Accepted default instant configuration for $muc"); 600 617 } … … 660 677 my $baseJid = baseJID($jid); 661 678 662 my $roster = $conn->getRoster FromJidStr($jid);679 my $roster = $conn->getRosterRefFromJidStr($jid); 663 680 664 681 # Adding lots of users with the same name is a bad idea. … … 669 686 670 687 foreach my $to (@ARGV) { 671 jroster_add($jid, $name, \@groups, $purgeGroups, ($to)) unless ($ roster->exists($to));688 jroster_add($jid, $name, \@groups, $purgeGroups, ($to)) unless ($$roster->exists($to)); 672 689 673 690 $p->SetTo($to); 674 $ conn->getConnectionFromJidStr($jid)->Send($p);691 ${ $conn->getConnRefFromJidStr($jid) }->Send($p); 675 692 queue_admin_msg("You ($baseJid) have requested a subscription to ($to)'s presence."); 676 693 } … … 688 705 foreach my $to (@ARGV) { 689 706 $p->SetTo($to); 690 $ conn->getConnectionFromJidStr($jid)->Send($p);707 ${ $conn->getConnRefFromJidStr($jid) }->Send($p); 691 708 queue_admin_msg("You ($baseJid) have unsubscribed from ($to)'s presence."); 692 709 } … … 700 717 my $baseJid = baseJID($jid); 701 718 702 my $roster = $conn->getRoster FromJidStr($jid);719 my $roster = $conn->getRosterRefFromJidStr($jid); 703 720 704 721 # Adding lots of users with the same name is a bad idea. … … 706 723 707 724 foreach my $to (@ARGV) { 708 my %jq = $ roster->query($to);725 my %jq = $$roster->query($to); 709 726 my $iq = new Net::XMPP::IQ; 710 727 $iq->SetType('set'); … … 730 747 $item->put_attrib(jid => $to); 731 748 $item->put_attrib(name => $name) if $name; 732 $ conn->getConnectionFromJidStr($jid)->Send($iq);749 ${ $conn->getConnRefFromJidStr($jid) }->Send($iq); 733 750 my $msg = "$baseJid: " 734 751 . ($name ? "$name ($to)" : "($to)") … … 754 771 foreach my $to (@ARGV) { 755 772 $item->put_attrib(jid => $to); 756 $ conn->getConnectionFromJidStr($jid)->Send($iq);773 ${ $conn->getConnRefFromJidStr($jid) }->Send($iq); 757 774 queue_admin_msg("You ($baseJid) have removed ($to) from your roster."); 758 775 } … … 770 787 foreach my $to (@ARGV) { 771 788 $p->SetTo($to); 772 $ conn->getConnectionFromJidStr($jid)->Send($p);789 ${ $conn->getConnRefFromJidStr($jid) }->Send($p); 773 790 queue_admin_msg("($to) has been subscribed to your ($baseJid) presence."); 774 791 } … … 786 803 foreach my $to (@ARGV) { 787 804 $p->SetTo($to); 788 $ conn->getConnectionFromJidStr($jid)->Send($p);805 ${ $conn->getConnRefFromJidStr($jid) }->Send($p); 789 806 queue_admin_msg("($to) has been unsubscribed from your ($baseJid) presence."); 790 807 } … … 809 826 810 827 my $m = j2o( $j, { direction => 'out' } ); 811 if ( $vars{jwrite}{type} ne 'groupchat' && owl::getvar('displayoutgoing') eq 'on') { 828 if ( $vars{jwrite}{type} ne 'groupchat' ) { 829 830 #XXX TODO: Check for displayoutgoing. 812 831 owl::queue_message($m); 813 832 } 814 833 815 834 if ($vars{jwrite}{sid} && $conn->sidExists( $vars{jwrite}{sid} )) { 816 $ conn->getConnectionFromSid($vars{jwrite}{sid})->Send($j);835 ${ $conn->getConnRefFromSid($vars{jwrite}{sid}) }->Send($j); 817 836 } 818 837 else { 819 $ conn->getConnectionFromJidStr($vars{jwrite}{from})->Send($j);838 ${ $conn->getConnRefFromJidStr($vars{jwrite}{from}) }->Send($j); 820 839 } 821 840 … … 949 968 $to eq $cJid->GetJID('full')) { 950 969 my $reply = $p->Reply(type=>"unsubscribed"); 951 $ conn->getConnectionFromJidStr($jid)->Send($reply);970 ${ $conn->getConnRefFromJidStr($jid) }->Send($reply); 952 971 return; 953 972 }
Note: See TracChangeset
for help on using the changeset viewer.